share(function (PhraseaApplication $app) { return (new V3ResultHelpers( $app['conf'], $app['media_accessor.subdef_url_generator'], $app['authentication'], $app['url_generator'] )); }); $app['controller.api.v3.records'] = $app->share(function (PhraseaApplication $app) { return (new V3RecordController($app)) ->setJsonBodyHelper($app['json.body_helper']) ->setDispatcher($app['dispatcher']) ; }); $app['controller.api.v3.search'] = $app->share(function (PhraseaApplication $app) { return (new V3SearchController($app)); }); $app['controller.api.v3.searchraw'] = $app->share(function (PhraseaApplication $app) { return (new V3SearchRawController($app)); }); $app['controller.api.v3.stories'] = $app->share(function (PhraseaApplication $app) { return (new V3StoriesController($app)); }); } public function boot(Application $app) { } public function connect(Application $app) { if (! $this->isApiEnabled($app)) { return $app['controllers_factory']; } /** @var ControllerCollection $controllers */ $controllers = $app['controllers_factory']; $controllers->before(new OAuthListener()); /** * @uses V3StoriesController::childrenAction_GET() * @uses V1Controller::ensureCanAccessToRecord() */ $controllers->get('/stories/{databox_id}/{record_id}/children/', 'controller.api.v3.stories:childrenAction_GET') ->before('controller.api.v1:ensureCanAccessToRecord') ->assert('databox_id', '\d+') ->assert('record_id', '\d+'); /** * nb : uses the record controller to get a story * @uses V3RecordController::indexAction_GET() * @uses V1Controller::ensureCanAccessToRecord() */ $controllers->get('/stories/{databox_id}/{record_id}/', 'controller.api.v3.records:indexAction_GET') ->before('controller.api.v1:ensureCanAccessToRecord') ->assert('databox_id', '\d+') ->assert('record_id', '\d+') ->value('must_be_story', true); /** * @uses V3SearchController::helloAction() */ $controllers->match('/hello/', 'controller.api.v3.searchraw:helloAction'); /** * @uses V3SearchController::searchAction() */ $controllers->match('/search/', 'controller.api.v3.search:searchAction'); /** * @uses V3SearchController::searchRawAction() */ $controllers->match('/searchraw/', 'controller.api.v3.searchraw:searchRawAction'); /** * @uses V3RecordController::indexAction_GET() */ $controllers->get('/records/{databox_id}/{record_id}/', 'controller.api.v3.records:indexAction_GET') ->before('controller.api.v1:ensureCanAccessToRecord') ->assert('databox_id', '\d+') ->assert('record_id', '\d+') ->bind('api.v3.records:indexAction_GET'); /** * @uses V3RecordController::indexAction_PATCH() * @uses V1Controller::ensureCanAccessToRecord() * @uses V1Controller::ensureCanModifyRecord() */ $controllers->patch('/records/{databox_id}/{record_id}/', 'controller.api.v3.records:indexAction_PATCH') ->before('controller.api.v1:ensureCanAccessToRecord') ->before('controller.api.v1:ensureCanModifyRecord') ->assert('databox_id', '\d+') ->assert('record_id', '\d+'); /** * @uses V3RecordController::indexAction_POST() * @uses V1Controller::ensureCanAccessToRecord() * @uses V1Controller::ensureCanModifyRecord() */ $controllers->post('/records/{base_id}/', 'controller.api.v3.records:indexAction_POST') ->assert('base_id', '\d+'); /** * @uses V1Controller::getBadRequestAction() */ $controllers->match('/records/{any_id}/{anyother_id}/setmetadatas/', 'controller.api.v1:getBadRequestAction'); return $controllers; } }