public function registerRoute(array $route) { $route['controller']->setHelpers($this->helpers); $this->router->addRoute($route['method'], $route['route'], function (Request $req, Response $resp, $args) use($route) { $route['controller']->setArgs($args); $route['controller']->setRequest(Request::createFromGlobals()); $route['controller']->setResponse($resp); $content = $route['controller']->action(); $resp = $route['controller']->getResponse(); $resp->setContent($content); return $resp; }); }
/** * @param RouteCollection $router * @param \ReflectionClass $class * @param \ReflectionMethod $method * @param mixed $docblock */ protected function registerRoute(RouteCollection $router, \ReflectionClass $class, \ReflectionMethod $method, $docblock) { if ($docblock instanceof Route) { $this->addVersionToRoute($docblock); $router->addRoute($docblock->method, $docblock->path, '\\' . $class->getName() . '::' . $method->getName()); } }
/** * @param array $configuration * * @throws NoRouteStrategyDefinedException */ public function __construct(array $configuration = []) { $this->configuration = new Configuration($configuration); $this->container = new Container($this->configuration['services']); $this->container->singleton(Configuration::class, $this->configuration); if (array_key_exists('route_strategy', $configuration) === false) { throw new NoRouteStrategyDefinedException(); } $routeStrategy = $configuration['route_strategy']; $this->router = new RouteCollection($this->container); $this->router->setStrategy(new $routeStrategy()); foreach ($this->configuration['routes'] as $collection) { foreach ($collection as $route) { $this->router->addRoute($route['method'], $route['pattern'], $route['controller']); } } }
public function bootstrap() { $router = new RouteCollection(); $routes = (require __DIR__ . '/Routes.php'); foreach ($routes as $route) { $controllerAction = implode(['RestlyFriendly\\Controllers\\', $route['controller'], '::', $route['action']]); $strategy = (isset($route['json']) and $route['json'] === FALSE) ? NULL : new RestfulStrategy(); $router->addRoute($route['method'], $route['endpoint'], $controllerAction, $strategy); } $request = Request::createFromGlobals(); $router->getDispatcher()->dispatch($request->getMethod(), $request->getPathInfo())->send(); }
/** * Add a route to the collection. * * @param string $method * @param string $route * @param string|\Closure $handler * @param \League\Route\Strategy\StrategyInterface $strategy * * @return RouteCollection */ public function addRoute($method, $route, $handler, StrategyInterface $strategy = null) { parent::addRoute($method, $route, $handler, $strategy); $this->routingTable[] = ['method' => $method, 'route' => $route, 'handler' => $handler]; return $this; }
<?php use League\Route\RouteCollection; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; // Create our route collection $router = new RouteCollection(); // Define the routes of the application $router->addRoute('GET', '/browse/{id}', function (Request $request, Response $response, array $args) use($twig) { return $response->setContent($twig->render('browse.twig')); }); $router->addRoute('GET', '/submit', function (Request $request, Response $response) use($twig) { return $response->setContent($twig->render('submit.twig')); }); // Pick the right one $dispatcher = $router->getDispatcher(); $response = $dispatcher->dispatch($request->getMethod(), $request->getPathInfo()); $response->send(); // if ($action === 'browse') { // echo $twig->render('browse.twig'); // } elseif ($action === 'submit') { // echo $twig->render('submit.twig'); // } elseif ($action === 'admin') { // echo $twig->render('admin.twig'); // } else { // echo $twig->render('browse.twig'); // }
/** * @param Route $route */ public function add(Route $route) { parent::addRoute($route->getVerb(), $route->getUrl(), $route->getAction()); $this->route_objects[] = $route; return $this; }
<?php use League\Route\RouteCollection; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; require __DIR__ . '/../vendor/autoload.php'; $router = new RouteCollection(); $routes = (include __DIR__ . '/routes.php'); foreach ($routes as $route) { $router->addRoute($route[0], $route[1], $route[2], $route[3]); } $dispatcher = $router->getDispatcher(); $request = Request::createFromGlobals(); try { $response = $dispatcher->dispatch($request->getMethod(), $request->getPathInfo()); } catch (Exception $e) { $response = new Response(); $response->headers->set('Content-Type', 'application/json'); $response->setContent(json_encode(['error' => $e->getMessage(), 'trace' => $e->getTrace()])); } $response->send();
/** * Add a OPTIONS route * * @param string $route * @param mixed $action * * @return void */ public function options($route, $action) { $this->router->addRoute('OPTIONS', $route, $action); }
/** * Create routes conforming to our calling convention. * * @param string $httpMethod * @param string $route * @param ControllerBase $handler * @param AbstractStrategy $strategy */ private function addRoute(string $httpMethod, string $route, ControllerBase $handler, AbstractStrategy $strategy = null) { $handlerStr = get_class($handler) . '::' . ucfirst($httpMethod); $this->router->addRoute($httpMethod, $route, $handlerStr, $strategy); }
$router = new RouteCollection(); $request = Request::createFromGlobals(); $hService = new \GuzzleHttp\Client(['base_uri' => 'https://usw-hotels-service.herokuapp.com']); $rService = new \GuzzleHttp\Client(['base_uri' => 'https://sheltered-cliffs-5863.herokuapp.com/']); $router->addRoute('GET', '/hotels', function (Request $request, $response, $args) use($hService, $rService, $request) { $expandString = $request->get('expand'); $expandList = explode(',', $expandString); try { $listing = $hService->get('/hotels')->getBody()->getContents(); $items = json_decode($listing); foreach ($items as $index => $item) { if (!is_object($item)) { throw new InvalidArgumentException('Invalid response from hotels query.'); } if (count($expandList) > 0 && in_array('ratings', $expandList)) { $ratingsListingResponse = $rService->get('/ratings?hotel=' . $item->identifier); $items[$index]->{'ratings'} = $ratingsListingResponse->getBody()->getContents(); } else { $items[$index]->{'@ratings'} = '/ratings?hotel=' . $item->identifier; } } $return = json_encode($items); } catch (\GuzzleHttp\Exception\BadResponseException $e) { $return = $e->getResponse()->getBody()->getContents(); $response->setStatusCode(400); } return $response->setContent($return); }); $router->addRoute('GET', '/rooms', function (Request $request, $response, $args) use($hService) { try { $return = $hService->get('/rooms')->getBody()->getContents(); } catch (\GuzzleHttp\Exception\BadResponseException $e) {
for ($i = 1; $i <= $roomsPerHotel; $i++) { $generatedName = $roomNumberGenerator(['hotelIdentifier' => $hotelIdentifier, 'number' => $i]); if ($roomIdentifier === $generatedName) { return $hotelIdentifier; } } } }); /** * Routes */ $router->addRoute('GET', '/hotels', function (Request $request, $response, $args) use($registry) { $demoList = $registry->get('config.posibile-hoteluri'); /** @var Closure $itemGenerator */ $itemGenerator = $registry->get('helper.generator-hotel-item-body'); $items = []; foreach ($demoList as $identifier) { $items[] = $itemGenerator($identifier); } return new Response($items, 200); }); $router->addRoute('GET', '/hotel/{identifier}', function (Request $request, $response, $args) use($registry) { $identifier = strtolower($args['identifier']); if (!in_array($identifier, $registry->get('config.posibile-hoteluri'), false)) { throw new \InvalidArgumentException('The requested entry does not exist.'); } /** @var Closure $itemGenerator */ $itemGenerator = $registry->get('helper.generator-hotel-item-body'); return new Response($itemGenerator($identifier), 200); }); $router->addRoute('GET', '/rooms', function (Request $request, $response, $args) use($registry) { $request = Request::createFromGlobals();
<?php use League\Route\RouteCollection; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; $router = new RouteCollection(); $router->addroute('GET', '/browse', function (Request $request, Response $response) use($twig) { return $response->setContent($twig->render('browse.twig')); }); $router->addroute('GET', '/submit', function (Request $request, Response $response) use($twig) { return $response->setContent($twig->render('submit.twig')); }); $router->addRoute('GET', '/panel', function (Request $request, Response $response) use($twig) { return $response->setContent($twig->render('admin.twig')); }); $router->addRoute('GET', '/random', function (Request $request, Response $response) use($twig) { return $response->setContent($twig->render('browse.twig')); }); $dispatcher = $router->getDispatcher(); $response = $dispatcher->dispatch($request->getMethod(), $request->getPathInfo()); $response->send();