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;
     });
 }
Exemple #2
0
 /**
  * @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());
     }
 }
Exemple #3
0
 /**
  * @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']);
         }
     }
 }
Exemple #4
0
 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();
 }
Exemple #5
0
 /**
  * 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');
//    }
Exemple #7
0
 /**
  * @param Route $route
  */
 public function add(Route $route)
 {
     parent::addRoute($route->getVerb(), $route->getUrl(), $route->getAction());
     $this->route_objects[] = $route;
     return $this;
 }
Exemple #8
0
<?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();
Exemple #9
0
 /**
  * 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);
 }
Exemple #11
0
$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();
Exemple #13
0
<?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();