/** * @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; }
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();