/**
  * @inheritdoc
  */
 public function connect(Application $app)
 {
     /* @var ControllerCollection $controllers */
     $controllers = $app['controllers_factory'];
     $controllerProvider = $this;
     $controllers->get('/', function (Application $app, Request $request) {
         $factory = new CriteriaFromParameterBagFactory();
         $criteria = $factory->createCriteriaFromParameterBag($request->query);
         /** @var RepositoryInterface $search */
         $search = $app['variations.search'];
         $itemsPerPage = 5;
         $pageNumber = intval($request->query->get('page', 0));
         $variationIds = $search->getEventVariations($criteria, $itemsPerPage, $pageNumber);
         /** @var DocumentRepositoryInterface $jsonLDRepository */
         $jsonLDRepository = $app['variations.jsonld_repository'];
         $variations = [];
         foreach ($variationIds as $variationId) {
             $document = $jsonLDRepository->get($variationId);
             if ($document) {
                 $variations[] = $document->getBody();
             }
         }
         $totalItems = $search->countEventVariations($criteria);
         $pageUrlFactory = new PageUrlGenerator($request->query, $app['url_generator'], 'variations', 'page');
         return new JsonResponse(new PagedCollection($pageNumber, $itemsPerPage, $variations, $totalItems, $pageUrlFactory, true));
     })->bind('variations');
     $controllers->post('/', function (Application $app, Request $request) use($controllerProvider) {
         $deserializer = new CreateEventVariationJSONDeserializer();
         $deserializer->addUrlValidator(new DefaultUrlValidator($app['config']['event_url_regex'], $app['event_service']));
         $command = $deserializer->deserialize(new String($request->getContent()));
         $commandId = $app['event_command_bus']->dispatch($command);
         return $controllerProvider->getResponseForCommandId($commandId);
     })->before(function ($request) use($controllerProvider) {
         return $controllerProvider->requireJsonContent($request);
     });
     $controllers->patch('/{variation}', function (Request $request, Application $app, JsonDocument $variation) use($controllerProvider) {
         $variationId = new Id($variation->getId());
         $jsonCommand = new String($request->getContent());
         $deserializer = new EditDescriptionJSONDeserializer($variationId);
         $command = $deserializer->deserialize($jsonCommand);
         $commandId = $app['event_command_bus']->dispatch($command);
         return $controllerProvider->getResponseForCommandId($commandId);
     })->before(function ($request) use($controllerProvider) {
         return $controllerProvider->requireJsonContent($request);
     })->convert('variation', 'variations.id_to_document_converter:convert');
     $controllers->delete('/{variation}', function (Application $app, JsonDocument $variation) use($controllerProvider) {
         $variationId = new Id($variation->getId());
         $command = new DeleteEventVariation($variationId);
         $commandId = $app['event_command_bus']->dispatch($command);
         return $controllerProvider->getResponseForCommandId($commandId);
     })->convert('variation', 'variations.id_to_document_converter:convert');
     $controllers->get('/{variation}', function (Application $app, JsonDocument $variation) {
         $response = JsonLdResponse::create()->setContent($variation->getRawBody());
         return $response;
     })->convert('variation', 'variations.id_to_document_converter:convert');
     return $controllers;
 }
Beispiel #2
0
    if (false === $code) {
        // @todo 404 not found response
    }
    $labels = array(Resque_Job_Status::STATUS_WAITING => 'waiting', Resque_Job_Status::STATUS_RUNNING => 'running', Resque_Job_Status::STATUS_COMPLETE => 'complete', Resque_Job_Status::STATUS_FAILED => 'failed');
    return new Response($labels[$code]);
});
$app->get('place/{cdbid}', function (Request $request, Application $app, $cdbid) {
    /** @var \CultuurNet\UDB3\EntityServiceInterface $service */
    $service = $app['place_service'];
    $place = $service->getEntity($cdbid);
    $response = JsonLdResponse::create()->setContent($place)->setPublic()->setClientTtl(60 * 30)->setTtl(60 * 5);
    $response->headers->set('Vary', 'Origin');
    return $response;
})->bind('place');
$app->get('organizer/{cdbid}', function (Request $request, Application $app, $cdbid) {
    /** @var \CultuurNet\UDB3\EntityServiceInterface $service */
    $service = $app['organizer_service'];
    $organizer = $service->getEntity($cdbid);
    $response = JsonLdResponse::create()->setContent($organizer)->setPublic()->setClientTtl(60 * 30)->setTtl(60 * 5);
    $response->headers->set('Vary', 'Origin');
    return $response;
})->bind('organizer');
$app->mount('events/export', new \CultuurNet\UDB3\Silex\ExportEventsControllerProvider());
$app->get('swagger.json', function (Request $request) {
    $file = new SplFileInfo(__DIR__ . '/swagger.json');
    return new \Symfony\Component\HttpFoundation\BinaryFileResponse($file, 200, ['Content-Type' => 'application/json']);
});
$app->mount('saved-searches', new \CultuurNet\UDB3\Silex\SavedSearchesControllerProvider());
$app->mount('variations', new \CultuurNet\UDB3\Silex\VariationsControllerProvider());
$app->register(new \CultuurNet\UDB3\Silex\ErrorHandlerProvider());
$app->run();