<?php

declare(strict_types=1);

namespace Fennec\Routing;

use Fennec\Exception\FennecException;

/**
 * Levée quand un chemin correspond à une route enregistrée, mais pas avec la méthode HTTP demandée.
 */
final class MethodNotAllowedException extends FennecException
{
    /**
     * @param list<string> $allowedMethods Méthodes HTTP acceptées par la route correspondante.
     */
    public function __construct(
        string $path,
        string $method,
        public readonly array $allowedMethods,
    ) {
        parent::__construct(\sprintf(
            'Method "%s" not allowed for path "%s". Allowed: %s.',
            $method,
            $path,
            \implode(', ', $allowedMethods),
        ));
    }
}
