public function resolve(RequestInterface $request, Context $context) { $sql = 'SELECT id, methods, path, controller, config FROM fusio_routes WHERE status = 1 AND methods LIKE :method'; $method = $request->getMethod(); $pathMatcher = new PathMatcher($request->getUri()->getPath()); $result = $this->connection->fetchAll($sql, array('method' => '%' . $method . '%')); foreach ($result as $row) { $parameters = array(); if (in_array($method, explode('|', $row['methods'])) && $pathMatcher->match($row['path'], $parameters)) { $config = $row['config']; $config = !empty($config) ? unserialize($config) : null; $context->set(Context::KEY_FRAGMENT, $parameters); $context->set(Context::KEY_PATH, $row['path']); $context->set(Context::KEY_SOURCE, $row['controller']); $context->set('fusio.config', $config); $context->set('fusio.routeId', $row['id']); return $request; } } return null; }
public function resolve(RequestInterface $request, ResponseInterface $response, Context $context) { $source = $context->get(Context::KEY_SOURCE); if (strpos($source, '::') !== false) { list($className, $method) = explode('::', $source, 2); } else { $className = $source; $method = null; } $context->set(Context::KEY_CLASS, $className); $context->set(Context::KEY_METHOD, $method); return $this->factory->getController($className, $request, $response, $context); }
protected function getResource() { $request = $this->getMock('PSX\\Http\\RequestInterface'); $response = $this->getMock('PSX\\Http\\ResponseInterface'); $context = new Context(); $context->set(Context::KEY_PATH, '/foo/bar'); $documentation = Environment::getService('controller_factory')->getController('PSX\\Controller\\Foo\\Application\\SchemaApi\\VersionViewController', $request, $response, $context)->getDocumentation(); return $documentation->getResource($documentation->getLatestVersion()); }
/** * @expectedException \ReflectionException */ public function testClassNotExist() { $context = new Context(); $context->set(Context::KEY_SOURCE, 'Foo::bar'); $request = new Request(new Url('http://127.0.0.1'), 'GET'); $response = new Response(); $simple = new DependencyInjector(Environment::getService('controller_factory')); $simple->resolve($request, $response, $context); }
public function testEventRouteMatched() { $logger = $this->getLogger(); $logger->expects($this->once())->method('info')->with($this->equalTo('Route matched GET /foo.htm -> stdClass')); $context = new Context(); $context->set(Context::KEY_SOURCE, 'stdClass'); $request = new Request(new Uri('/foo.htm'), 'GET'); $eventDispatcher = new EventDispatcher(); $eventDispatcher->addSubscriber(new LogListener($logger)); $eventDispatcher->dispatch(Event::ROUTE_MATCHED, new RouteMatchedEvent($request, $context)); }
public function testExecuteControllerMethod() { $controller = $this->getMock('PSX\\ControllerInterface', array('onLoad', 'onDelete', 'onGet', 'onHead', 'onOptions', 'onPost', 'onPut', 'onTrace', 'processResponse', 'doFoo')); $controller->expects($this->once())->method('onLoad'); $controller->expects($this->once())->method('onGet'); $controller->expects($this->once())->method('doFoo'); $controller->expects($this->once())->method('processResponse'); $context = new Context(); $context->set(Context::KEY_METHOD, 'doFoo'); $request = new Request(new Url('http://localhost'), 'GET'); $response = new Response(); $filters = array(); $filters[] = new ControllerExecutor($controller, $context); $filterChain = new FilterChain($filters); $filterChain->handle($request, $response); }
protected function newContext(array $route) { $context = new Context(); $context->set(Context::KEY_PATH, $route[1]); return $context; }
public function onLoad() { $this->context->set(Context::KEY_SUPPORTED_WRITER, $this->getSupportedWriter()); }