/**
  * Map the redirect routes.
  *
  * @param Filesystem  $files
  * @param Application $application
  */
 public function map(Router $router, RedirectRepositoryInterface $redirects)
 {
     /* @var RedirectInterface $redirect */
     foreach ($redirects->all() as $redirect) {
         $router->any($redirect->getFrom(), ['uses' => 'Anomaly\\RedirectsModule\\Http\\Controller\\RedirectsController@handle', 'redirect' => $redirect->getId()]);
     }
 }
 /**
  * Map the redirect routes.
  *
  * @param UrlGenerator                $url
  * @param Router                      $router
  * @param Request                     $request
  * @param RedirectRepositoryInterface $redirects
  * @internal param Filesystem $files
  * @internal param Application $application
  */
 public function map(UrlGenerator $url, Router $router, Request $request, RedirectRepositoryInterface $redirects)
 {
     if ($request->segment(1) == 'admin') {
         return;
     }
     /* @var RedirectInterface $redirect */
     foreach ($redirects->sorted() as $redirect) {
         if (!starts_with($parsed = $redirect->getFrom(), ['http://', 'https://', '//'])) {
             $parsed = $url->to($redirect->getFrom());
         }
         $parsed = parse_url(preg_replace_callback("/\\{[a-z]+\\?\\}/", function ($matches) {
             return str_replace('?', '!', $matches[0]);
         }, $parsed));
         if (isset($parsed['host']) && $parsed['host'] == $request->getHost()) {
             /**
              * Route a domain redirect in a domain group.
              */
             $router->group(['domain' => $parsed['host']], function () use($parsed, $router, $redirect) {
                 $path = ltrim(preg_replace_callback("/\\{[a-z]+\\!\\}/", function ($matches) {
                     return str_replace('!', '?', $matches[0]);
                 }, $parsed['path']), '/');
                 $router->any($path ?: '/', ['uses' => 'Anomaly\\RedirectsModule\\Http\\Controller\\RedirectsController@handle', 'redirect' => $redirect->getId()])->where(['any' => '(.*)', 'path' => '(.*)']);
             });
         } else {
             /**
              * Route a standard redirect.
              */
             $router->any($redirect->getFrom(), ['uses' => 'Anomaly\\RedirectsModule\\Http\\Controller\\RedirectsController@handle', 'redirect' => $redirect->getId()])->where(['any' => '(.*)', 'path' => '(.*)']);
         }
     }
 }
 /**
  * Handle the command.
  *
  * @param RedirectRepositoryInterface $redirects
  * @param Redirector                  $redirector
  * @param Parser                      $parser
  * @param Route                       $route
  * @return \Illuminate\Http\RedirectResponse
  */
 public function handle(RedirectRepositoryInterface $redirects, Redirector $redirector, Parser $parser, Route $route)
 {
     $redirect = $redirects->find($this->id);
     $parameters = array_merge(array_map(function () {
         return null;
     }, array_flip($route->parameterNames())), $route->parameters());
     return $redirector->to($parser->parse($redirect->getTo(), $parameters), $redirect->getStatus(), [], $redirect->isSecure());
 }
 /**
  * Handle the command.
  *
  * @param RedirectRepositoryInterface $redirects
  * @param Application                 $application
  * @param RedirectsModule             $module
  * @param Filesystem                  $files
  */
 public function handle(RedirectRepositoryInterface $redirects, Application $application, RedirectsModule $module, Filesystem $files)
 {
     $files->makeDirectory($application->getStoragePath('redirects'), 0777, true, true);
     $files->put($application->getStoragePath('redirects/routes.php'), app('Anomaly\\Streams\\Platform\\Support\\String')->render($files->get($module->getPath('resources/assets/routes.template')), ['redirects' => $redirects->all()]));
 }
 /**
  * Handle the redirect.
  *
  * @param Route                       $route
  * @param RedirectResponse            $response
  * @param RedirectRepositoryInterface $redirects
  * @return \Illuminate\Http\RedirectResponse
  */
 public function handle(Route $route, RedirectResponse $response, RedirectRepositoryInterface $redirects)
 {
     return $response->create($redirects->find(array_get($route->getAction(), 'redirect')));
 }