public function boot(Application $app) { // Because they're at the root admin prefix we mount them directly instead to $app['np.admin.controllers'] $app->mount($app['np.admin.controllers.prefix'], new AuthRouting()); $app->mount($app['np.admin.controllers.prefix'], new AdminRouting()); $app->before(function () use($app) { $app['np.admin.theme'] = $app->share(function ($app) { if (isset($app['np.theme.manager'])) { $app['np.theme.manager']->get($app['np.admin.theme']); } }); }); // $app->on(ThemeEvents::THEME_MANAGER_INITIALIZED, function(Event $event) use ($app) { // $app['np.admin.theme'] = $app->share(function($app) { // if (isset($app['np.theme.manager']) // && $theme = $app['np.theme.manager']->getTheme($app['np.admin.theme'])) { // $javascripts = array(); // // add all extension js modules // $resources = $app['np.extension_manager']->collectMethodCalls('getResourceManifest'); // foreach ($resources as $resource) { // if (0 === strpos($resource, '/js')) { // $javascripts[] = $resource; // } // } // $theme->addJavaScripts($javascripts); // $app['np.theme.manager']->setTheme($theme); // return $theme; // } // }); // }); }
/** * Adds a single module * * @param Module $module */ public function add(Module $module) { if ($this->locked) { throw new \RuntimeException('Cannot register modules: the registry is already locked'); } $this->modules[] = $module; // A module is by its definition a Silex\ControllerProviderInterface so // is possible to pass it to Silex\Application::mount() method $this->app->mount($module->getPrefix(), $module); }
/** * {@inheritDoc} */ public function register(SilexApplication $app) { $app['payum.api.controller.root'] = $app->share(function () { return new RootController(); }); $app['payum.api.controller.payment'] = $app->share(function () use($app) { return new PaymentController($app['payum'], $app['api.view.payment_to_json_converter'], $app['form.factory'], $app['api.view.form_to_json_converter'], $app['url_generator']); }); $app['payum.api.controller.token'] = $app->share(function () use($app) { return new TokenController($app['payum'], $app['form.factory'], $app['api.view.token_to_json_converter'], $app['api.view.form_to_json_converter']); }); $app['payum.api.controller.gateway'] = $app->share(function () use($app) { return new GatewayController($app['form.factory'], $app['url_generator'], $app['api.view.form_to_json_converter'], $app['payum.gateway_config_storage'], $app['api.view.gateway_config_to_json_converter']); }); $app['payum.api.controller.gateway_meta'] = $app->share(function () use($app) { return new GatewayMetaController($app['form.factory'], $app['api.view.form_to_json_converter'], $app['payum']); }); $app->get('/', 'payum.api.controller.root:rootAction')->bind('api_root'); /** @var ControllerCollection $payments */ $payments = $app['controllers_factory']; $payments->get('/meta', 'payum.api.controller.payment:metaAction')->bind('payment_meta'); $payments->get('/{id}', 'payum.api.controller.payment:getAction')->bind('payment_get'); $payments->put('/{id}', 'payum.api.controller.payment:updateAction')->bind('payment_update'); $payments->delete('/{id}', 'payum.api.controller.payment:deleteAction')->bind('payment_delete'); $payments->post('/', 'payum.api.controller.payment:createAction')->bind('payment_create'); $payments->get('/', 'payum.api.controller.payment:allAction')->bind('payment_all'); $app->mount('/payments', $payments); /** @var ControllerCollection $gateways */ $gateways = $app['controllers_factory']; $gateways->get('/meta', 'payum.api.controller.gateway_meta:getAllAction')->bind('payment_factory_get_all'); $gateways->get('/', 'payum.api.controller.gateway:allAction')->bind('gateway_all'); $gateways->get('/{name}', 'payum.api.controller.gateway:getAction')->bind('gateway_get'); $gateways->delete('/{name}', 'payum.api.controller.gateway:deleteAction')->bind('gateway_delete'); $gateways->post('/', 'payum.api.controller.gateway:createAction')->bind('gateway_create'); $app->mount('/gateways', $gateways); /** @var ControllerCollection $tokens */ $tokens = $app['controllers_factory']; $tokens->post('/', 'payum.api.controller.token:createAction')->bind('token_create'); $app->mount('/tokens', $tokens); $gateways->before($app['api.parse_json_request']); $payments->before($app['api.parse_json_request']); $tokens->before($app['api.parse_json_request']); $gateways->before($app['api.parse_post_request']); $payments->before($app['api.parse_post_request']); $tokens->before($app['api.parse_post_request']); if ($app['debug']) { $gateways->after($app['api.view.pretty_print_json']); $payments->after($app['api.view.pretty_print_json']); $tokens->after($app['api.view.pretty_print_json']); } }
/** * Finish mounting process by sorting them and mounting them to application */ public function finish() { if ($this->isPropagationStopped()) { return; } krsort($this->priorities); foreach ($this->priorities as $priority) { foreach ($priority as $list) { list($prefix, $controllers) = $list; $this->app->mount($prefix, $controllers); } } $this->stopPropagation(); }
/** * Bootstrap Silex Application for tests * @method createApplication * @return $app Silex\Application */ public function createApplication() { $app = new Application(['dev' => true]); // errors error_reporting(E_ALL ^ E_STRICT); $app->error(function (Exception $e, $code) use($app) { return $app->json(['error' => $e->getMessage(), 'type' => get_class($e)], $code); }); // database $app->register(new DoctrineServiceProvider(), ['db.options' => ['driver' => 'pdo_sqlite', 'path' => __DIR__ . '/tests.db', 'charset' => 'UTF8']]); // jwt (json-web-token) $app['security.jwt'] = ['secret_key' => 'omg-so-secret-test-!', 'life_time' => 2592000, 'algorithm' => ['HS256'], 'options' => ['header_name' => 'X-Access-Token', 'username_claim' => 'email']]; $app->register(new SecurityServiceProvider()); $app->register(new SecurityJWTServiceProvider()); // mailer $app->register(new SwiftmailerServiceProvider(), ['swiftmailer.options' => ['host' => '127.0.0.1', 'port' => '1025']]); // twig $app->register(new TwigServiceProvider(), ['twig.path' => __DIR__ . '/../templates']); $app->register(new UrlGeneratorServiceProvider()); // simple-user-jwt $app['user.jwt.options'] = ['invite' => ['enabled' => true], 'forget' => ['enabled' => true], 'mailer' => ['enabled' => true, 'from' => ['email' => '*****@*****.**', 'name' => 'Test']]]; $app->register(new UserProvider()); // roles $app['security.role_hierarchy'] = ['ROLE_INVITED' => ['ROLE_USER'], 'ROLE_REGISTERED' => ['ROLE_INVITED', 'ROLE_ALLOW_INVITE'], 'ROLE_ADMIN' => ['ROLE_REGISTERED']]; // needed to parse user at each request $app['security.firewalls'] = ['login' => ['pattern' => 'register|login|forget|reset', 'anonymous' => true], 'secured' => ['pattern' => '.*$', 'users' => $app->share(function () use($app) { return $app['user.manager']; }), 'jwt' => ['use_forward' => true, 'require_previous_session' => false, 'stateless' => true]]]; // controller $app->mount('/', new UserProvider()); return $app; }
public function createApplication() { $app = new Application(); $app['debug'] = true; $app['session.test'] = true; $app['monolog.logfile'] = __DIR__ . '/../build/logs/dev.monolog.log'; $app['session.storage'] = new MockFileSessionStorage(); $app->register(new Provider\TwigServiceProvider()); $app->register(new Provider\ServiceControllerServiceProvider()); $app->register(new Provider\SecurityServiceProvider()); $app->register(new Provider\SessionServiceProvider()); $app->register(new Provider\UrlGeneratorServiceProvider()); $app->register(new Provider\MonologServiceProvider()); // Mock services $app->register(new MockSmsHandlerProvider()); $app['user.manager'] = $app->share(function () { return new MockUserProvider(); }); $smsLoginProvider = new SmsLoginProvider(); $app->register($smsLoginProvider); $app->mount('', $smsLoginProvider); $app->get('/', function () use($app) { return $app['twig']->render('home.twig', ['message' => 'Testing']); }); $app['security.firewalls'] = array('login' => array('pattern' => '^/login$'), 'secured_area' => array('pattern' => '^.*$', 'sms' => true, 'logout' => ['logout_path' => '/logout'], 'users' => $app->share(function ($app) { return $app['user.manager']; }))); $app['twig.templates'] = ['login.twig' => '<form action="{{ form_action }}" method="POST">{% if mobile is defined %}<p class="number">{{ mobile }}</p>' . '<input type="hidden" name="mobile" value="{{ mobile }}" />{% endif %}' . '<input type="password" placeholder="Secret code" name="code" />' . '<button class="btn btn-positive btn-block" name="submit">Login</button></form>', 'home.twig' => 'Homepage {{ message }}']; unset($app['exception_handler']); return $app; }
public function boot(Application $app) { $app->mount($app['widget.routes.prefix'], $this); /*$app->on('twig:render', function() use($app) { $app['twig']->addGlobal('widgetManager', $app['widget.manager']); });*/ }
/** * Bootstraps the application. * * This method is called after all services are registered * and should be used for "dynamic" configuration (whenever * a service must be requested). */ public function boot(Application $app) { $paths = $app['lazy.thumbnail.mount_paths']; foreach ($paths as $route => $data) { $realRoute = isset($data['route']) ? $data['route'] : $route; $app->mount($realRoute, $this->connect($app, $realRoute, $data)); } }
public function register(Application $app) { $app['company'] = $app->share(function () use($app) { $storage = new CompanyStorage($app); return new Service\Company($app, $storage); }); $app['building'] = $app->share(function () use($app) { $storage = new BuildingStorage($app); return new Service\Building($app, $storage); }); $app['rubric'] = $app->share(function () use($app) { $storage = new RubricStorage($app); return new Service\Rubric($app, $storage); }); $app->mount('/company', new CompanyController()); $app->mount('/building', new BuildingController()); $app->mount('/rubric', new RubricController()); }
public function process(Application $app, ReflectionClass $reflectionClass) { $controllerCollection = $app['controllers_factory']; /** @var AnnotationService $annotationService */ $annotationService = $app['annot']; $annotationService->processClassAnnotations($reflectionClass, $controllerCollection); $annotationService->processMethodAnnotations($reflectionClass, $controllerCollection); $app->mount($this->prefix, $controllerCollection); }
/** * Returns Silex Application instance. * * @return Application */ private function createApplication() { $app = new Application(); $controller = new ImageController(array('image_path' => __DIR__)); $app->register(new InterventionImageServiceProvider())->register(new UrlGeneratorServiceProvider()); //Automatic images mount $app->mount('/', $controller); return $app; }
/** * {@inheritdoc} */ public function createApplication() { $app = new Application(); $app['controller.thumbnails'] = new Controller(); $app->mount('/thumbs', $app['controller.thumbnails']); $app->register(new ServiceControllerServiceProvider()); $mock = $this->getMock('Bolt\\Thumbs\\ThumbnailResponder', ['respond'], [], '', false); $app['thumbnails'] = $mock; return $app; }
/** * Bootstraps the application. * * This method is called after all services are registered * and should be used for "dynamic" configuration (whenever * a service must be requested). */ public function boot(Application $app) { if (!isset($app[self::PROVIDER_KEY . '.controllersPath'])) { throw new \Exception(self::PROVIDER_NAME . ': Please configure ' . self::PROVIDER_KEY . '.controllersPath'); } $this->Parser = new Parser($app[self::PROVIDER_KEY . '.controllersPath'], $app[self::PROVIDER_KEY . '.recursiv']); $this->controllersAsApplicationAwareService = $app[self::PROVIDER_KEY . '.controllersAsApplicationAwareServices']; $this->controllers = $this->Parser->parseEmAll()->getParsedControllers(); $app->mount('/', $this); }
/** * Create scope controllers */ public function createScopeControllers() { $this->configLoader->load(); $silex = $this->silex; $manifests = $this->configLoader->getManifests(); foreach ($manifests as $scope => $manifest) { /** @var ControllerCollection $controllers_factory */ $controllers_factory = $this->silex['controllers_factory']; foreach ($manifest['routes'] as $http_method => $route) { $scope_path = $this->configLoader->getPath(); /** @var Controller $routeController */ $routeController = $controllers_factory->{$http_method}($route['route'], function (Request $request) use($silex, $scope, $manifest, $route, $scope_path) { //Scope container $scope_container = $silex['scopes'][$scope]; if (isset($silex['translator'])) { $scope_container['translator'] = $silex['translator']; } if (isset($silex['url_generator'])) { $scope_container['url_generator'] = $silex['url_generator']; } if (isset($silex['log_factory'])) { $scope_container['log_factory'] = $silex['log_factory']; } if (isset($silex['predis'])) { $scope_container['predis'] = $silex['predis']; } $silex['scopes'][$scope] = $scope_container; /** @var Twig_Loader_Filesystem $twig_loader_filesystem */ $twig_loader_filesystem = $silex['twig.loader.filesystem']; $twig_loader_filesystem->prependPath($scope_path . '/' . $scope . '/views'); //Create request $psr7Factory = new DiactorosFactory(); $psrRequest = $psr7Factory->createRequest($request); /** @var AbstractScopeController $scope_controller */ $namespace_controller = $this->scope_namespace . implode('\\', [$scope, 'controller', ucfirst($route['controller']) . 'Controller']); $scope_controller = $namespace_controller::create($manifest, $silex['scopes'][$scope], $psrRequest, $this->base_namespace); $scope_controller->setTwig($silex['twig']); $psrResponse = $scope_controller->execute($route['call']); //Create response $httpFoundationFactory = new HttpFoundationFactory(); $symfonyResponse = $httpFoundationFactory->createResponse($psrResponse); return $symfonyResponse; }); //Filter if (is_array($route['filter'])) { foreach ($route['filter'] as $filter) { $routeController->before($this->silex['filter_factory']->createFilter($scope, $filter)); } } //Bind $routeController->bind(implode('::', [$route['controller'], $route['call']])); } $this->silex->mount($manifest['mount'], $controllers_factory); } }
/** * Register service function. * * @param BaseApplication $app */ public function register(BaseApplication $app) { // Repository $app['orderpdf.repository.order_pdf'] = $app->share(function () use($app) { return $app['orm.em']->getRepository('Plugin\\OrderPdf\\Entity\\OrderPdf'); }); // Order pdf event $app['orderpdf.event.order_pdf'] = $app->share(function () use($app) { return new OrderPdf($app); }); // Order pdf legacy event $app['orderpdf.event.order_pdf_legacy'] = $app->share(function () use($app) { return new OrderPdfLegacy($app); }); // ============================================================ // コントローラの登録 // ============================================================ // 管理画面定義 $admin = $app['controllers_factory']; // 強制SSL if ($app['config']['force_ssl'] == Constant::ENABLED) { $admin->requireHttps(); } // 帳票の作成 $admin->match('/plugin/order-pdf', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::index')->bind('plugin_admin_order_pdf'); // PDFファイルダウンロード $admin->post('/plugin/order-pdf/download', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::download')->bind('plugin_admin_order_pdf_download'); $app->mount('/' . trim($app['config']['admin_route'], '/') . '/', $admin); // ============================================================ // Formの登録 // ============================================================ // 型登録 $app['form.types'] = $app->share($app->extend('form.types', function ($types) use($app) { $types[] = new OrderPdfType($app); return $types; })); // ----------------------------- // サービスの登録 // ----------------------------- // 帳票作成 $app['orderpdf.service.order_pdf'] = $app->share(function () use($app) { return new OrderPdfService($app); }); // ============================================================ // メッセージ登録 // ============================================================ $file = __DIR__ . '/../Resource/locale/message.' . $app['locale'] . '.yml'; if (file_exists($file)) { $app['translator']->addResource('yaml', $file, $app['locale']); } // initialize logger (for 3.0.0 - 3.0.8) if (!Version::isSupportMethod()) { eccube_log_init($app); } }
public function boot(Application $app) { // Define login route at admin root, no slash $app->get($app['np.admin.controllers.prefix'], 'np.admin.controller:loginAction')->bind('np_login'); // Mount all the admin controllers $app->mount($app['np.admin.controllers.prefix'], $app['np.admin.controllers']); // If logged in as admin, display admin controls $app->before(function () use($app) { $app['np.admin'] = $app['security']->isGranted('ROLE_ADMIN'); }); }
public function testMount() { $mounted = new ControllerCollection(new Route()); $mounted->get('/{name}', function ($name) { return new Response($name); }); $app = new Application(); $app->mount('/hello', $mounted); $response = $app->handle(Request::create('/hello/Silex')); $this->assertEquals('Silex', $response->getContent()); }
public function createApplication() { $app = new Application(); $app['debug'] = true; $app->register(new UrlGeneratorServiceProvider()); $app->register(new SessionServiceProvider(), array('session.test' => true)); $oauth = new GoogleOauth2Provider(); $app->register($oauth, array('google_oauth.client_id' => 'foo', 'google_oauth.client_secret' => 'bar')); $app->mount('/', $oauth); return $app; }
public function boot(Application $app) { /** @var ControllerCollection $api */ $api = $app['controllers_factory']; $app->mount('/api', $api); $api->before(function (Request $request) { if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { $data = json_decode($request->getContent(), true); $request->request->set('_json', $data ? $data : array()); } }); $api->post('/sample/get-hook', 'controllers.api.sample:getAction')->bind('api_sample_getHook'); /** @var ControllerCollection $tutorial */ $tutorial = $app['controllers_factory']; $app->mount('/tutorial', $tutorial); $tutorial->get('/{section}', 'controllers.tutorial.index:indexAction')->value('section', 'index')->bind('tutorial_index'); /** @var ControllerCollection $welcome */ $welcome = $app['controllers_factory']; $app->mount('/', $welcome); $welcome->get('/', 'controllers.welcome.index:indexAction')->bind('welcome_index'); }
/** * @inheritdoc */ public function register(Application $app) { $app->get('/', 'DashboardController:index')->bind('dashboard'); $app->post('/api', 'ApiController:save'); $app->get('/applications', 'ApplicationsController:index')->bind('applications'); $app->post('/applications/add', 'ApplicationsController:index')->bind('applications_add'); $app->get('/login', 'LoginController:index')->bind('login'); $app->get('/reports', 'ReportsController:index')->bind('reports'); $app->get('/reports/{id}', 'ReportsController:view')->bind('reports_view'); $app->get('/search/{query}', 'SearchController:query')->bind('search'); $app->get('/settings', 'SettingsController:index')->bind('settings'); $app->post('/settings/update', 'SettingsController:index')->bind('settings_update'); /** var $datatables \Silex\ControllerCollection */ $datatables = $app['controllers_factory']; $datatables->post('/applications', 'DatatablesController:applications')->bind('datatables_applications'); $datatables->post('/reports', 'DatatablesController:reports')->bind('datatables_reports'); $app->mount('/datatables', $datatables); /** var $delete \Silex\ControllerCollection */ $delete = $app['controllers_factory']; $delete->post('/applications', 'DeleteController:applications')->bind('delete_applications'); $delete->post('/reports', 'DeleteController:reports')->bind('delete_reports'); $app->mount('/delete', $delete); }
/** * Bootstraps the application. * * This method is called after all services are registered * and should be used for "dynamic" configuration (whenever * a service must be requested). */ public function boot(Application $app) { $app->register(new TwigServiceProvider(), array('twig.path' => $app['sentinel.twig.path'])); $app->mount('/', $this->connect($app)); // Get Projects $config = new ConfigServiceProvider(); $app['sentinel.config'] = $config->getConfig(); $app['sentinel.projects'] = $config->getProjects(); $app['sentinel.parameters'] = $config->getParameters(); $app['sentinel.flatprojects'] = $config->getProjects(true); $app['sentinel.series'] = $config->getSeries(); // Create Database $this->db = new MongoDatabase($app['sentinel.parameters']['mongo']); }
function buildAndRegisterRoutes(Application $app) { foreach ($app['api-modules'] as $module) { $moduleName = $module['dbs.options']; $mountPoint = $module['mountPoint']; // instantiate controller $app["query.{$moduleName}.controller"] = $app->share(function () use($app, $moduleName, $module) { return new QueryResourceController($app['em']($moduleName), $app['serializer'], $module); }); $api = $app['controllers_factory']; $api->get('/{resource}', "query.{$moduleName}.controller:get"); $api->get('/{resource}/{id}', "query.{$moduleName}.controller:get")->assert('id', '\\d+'); $app->mount($mountPoint, $api); } }
/** * @param Application $app */ public function boot(Application $app) { $app->mount('/', $this->connect($app)); if ($app['debug']) { $self = $this; $app->after(function (Request $request) use($app, $self) { $self->outOfRequestScopeTypes['request'] = get_class($request); }); $app->finish(function () use($app, $self) { if (!$self->processed) { $self->dump($app); } }, -1); } }
/** * Define as rotas do controlador. * * @param \ReflectionClass $reflection * @param string $bundle * @param array $filters */ private function defineControllerService(\ReflectionClass $reflection, $bundle, $filters) { $app = $this->app; $controllerPattern = "/" . strtolower($bundle) . "_/" . strtolower($reflection->getShortName()) . "/"; $controller = strtolower($reflection->getShortName()); $serviceName = strtolower($bundle . "." . $controller); $app[$serviceName] = $this->app->share(function () use($app, $reflection) { $controllerClass = $reflection->getName(); return new $controllerClass($app); }); ${$controller} = $this->app['controllers_factory']; $this->mapRoutes(${$controller}, $serviceName, $reflection); $this->setControllerFilters(${$controller}, $serviceName, $filters); $this->app->mount($controllerPattern, ${$controller}); }
/** * @param Application $app */ private function createControllers(Application $app) { $controllers = $this->recursiveGlob($this->controllerDir . "/*.php"); $nameSpace = str_replace('\\', '\\\\', $this->controllerNameSpace); foreach ($controllers as $controllerFileName) { $controllerName = str_replace("/", "\\", $controllerFileName); $className = preg_replace("#^.*\\\\({$nameSpace}\\\\.+)\\.php\$#", "\$1", $controllerName); $reflection = new \ReflectionClass($className); if ($reflection->implementsInterface('Silex\\ControllerProviderInterface') && $reflection->isInstantiable()) { $mountSpace = preg_replace("#^{$nameSpace}(.+){$reflection->getShortName()}\$#", "\$1", $className); $mountSpace = strtolower(str_replace('\\', '/', $mountSpace)); $app->mount($mountSpace, new $className()); } } }
protected function configureApplication(Application $app) { $app->register(new \Silex\Provider\ServiceControllerServiceProvider()); $app->register(new \Silex\Provider\SecurityServiceProvider()); $provider = new OAuthControllerServiceProvider(); $app->register($provider); $app->mount('/auth', $provider); $app['security.firewalls'] = ['healthcheck' => ['pattern' => '^/healthcheck', 'anonymous' => true, 'stateless' => true], 'auth' => ['pattern' => '^/auth', 'anonymous' => true, 'stateless' => true], 'api' => ['pattern' => '^/', 'soauth' => true, 'stateless' => true]]; $app->get('/healthcheck', function () { return 'All Good!'; }); $app->get('/api', function () { return 'Access Granted'; }); $app['logger'] = $this->getMockLogger(); }
public function boot(Application $app) { $blog = $app['controllers_factory']; $blog->get('/', 'np.blog.controller:postsAction')->bind('blog_get_posts')->value('page', 1); $blog->get('/page/{page}', 'np.blog.controller:postsAction')->assert('page', "\\d")->bind('blog_get_paged_posts'); $blog->get($app['np.blog.permalink_format'], 'np.blog.controller:postAction')->assert('year', "\\d\\d\\d\\d")->assert('month', "\\d\\d")->bind('blog_get_post'); $blog->get('/{year}', 'np.blog.controller:yearIndexAction')->assert('year', "\\d\\d\\d\\d")->bind('blog_get_year_index'); $blog->get('/{year}/{month}', 'np.blog.controller:monthIndexAction')->assert('year', "\\d\\d\\d\\d")->assert('month', "\\d\\d")->bind('blog_get_month_index'); $blog->get('/tags/{tag}', 'np.blog.controller:taggedPostsAction')->bind('blog_get_tag_index'); $blog->get('/archive', 'np.blog.controller:archiveAction')->bind('blog_get_archive'); $blog->get('/rss', 'np.blog.controller:rssAction')->bind('blog_rss'); // mount blog controllers $app->mount($app['np.blog.mount_point'], $blog); // create an index redirect $app->get($app['np.blog.mount_point'], function () use($app) { return $app->redirect($app['url_generator']->generate('blog_get_posts')); }); }
public function createApplication() { $response = new Response(json_encode(['access_token' => 'foo', 'token_type' => 'bearer', 'expires_in' => 0])); $clientProviderMock = $this->getMock('Euskadi31\\Component\\Security\\Storage\\ClientProviderInterface'); $clientMock = $this->getMock('Euskadi31\\Component\\Security\\Storage\\ClientInterface'); $grantTypeCollectionMock = $this->getMock('Euskadi31\\Component\\Security\\GrantType\\GrantTypeCollection'); $passwordGrantTypeMock = $this->getMockBuilder('Euskadi31\\Component\\Security\\GrantType\\PasswordGrantType')->disableOriginalConstructor()->getMock(); $passwordGrantTypeMock->method('getName')->will($this->returnValue('password')); $passwordGrantTypeMock->method('handle')->will($this->returnValue($response)); $clientMock->method('getGrantTypes')->will($this->returnValue(['password'])); $clientMock->method('getSecret')->will($this->returnValue('bar')); $clientProviderMock->method('get')->will($this->returnValue($clientMock)); $grantTypeCollectionMock->method('get')->will($this->returnValue($passwordGrantTypeMock)); $app = new Application(); $app['debug'] = true; //unset($app['exception_handler']); $app->mount('/', new TokenControllerProvider()); $app['oauth2.client.provider'] = function () use($clientProviderMock) { return $clientProviderMock; }; $app['oauth2.grant_types'] = function () use($grantTypeCollectionMock) { return $grantTypeCollectionMock; }; $app->error(function (Exception $exception, $code) use($app) { $e = FlattenException::create($exception); $headers = []; if ($exception instanceof HttpExceptionInterface) { $headers = $exception->getHeaders(); $code = $exception->getStatusCode(); } else { $code = $exception->getCode(); } if ($code < 100 || $code >= 600) { $code = 500; } $error = ['error' => ['message' => $exception->getMessage(), 'type' => join('', array_slice(explode('\\', get_class($exception)), -1)), 'code' => $code]]; if ($this->app['debug']) { $error['error']['exception'] = $e->toArray(); } return new Response($app->json($error, $code, $headers)); }); return $app; }
/** {@inheritdoc} */ public function register(Application $app) { $app['repo.order'] = $app->share(function (Application $app) { return new OrderRepository($app['db']); }); $app['service.order'] = $app->share(function (Application $app) { return new OrderService($app['repo.order'], $app['dispatcher']); }); $app['subscriber.order_domain'] = $app->share(function (Application $app) { return new OrderDomainEventSubscriber($app['repo.order']); }); $app['subscriber.domain_logger'] = $app->share(function (Application $app) { return new DomainLogger($app['api_logger']); }); /** @var EventDispatcherInterface $dispatcher */ $dispatcher = $app['dispatcher']; $dispatcher->addSubscriber($app['subscriber.domain_logger']); $dispatcher->addSubscriber($app['subscriber.order_domain']); $app->mount('/order', new OrderRoutesProvider()); }
public function boot(Application $app) { /* @var $api ControllerCollection */ $api = $app['controllers_factory']; $api->before(new RequestCleaner($app['purifier'])); $api->before(function (Request $request) { $request->headers->set('Accept', 'application/json'); if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { $data = json_decode($request->getContent(), true); $request->request->replace(is_array($data) ? $data : array()); } }); if ($app->config('application.secure_ssl')) { $api->requireHttps(); } $api->get('/me', 'controller.api.profile:handleShowSpeakerProfile'); $api->get('/talks', 'controller.api.talk:handleViewAllTalks'); $api->post('/talks', 'controller.api.talk:handleSubmitTalk'); $api->get('/talks/{id}', 'controller.api.talk:handleViewTalk'); $app->mount('/api', $api); }