/** * OPTIONS request should set Allow header */ public function testOptionsOne() { Request::setMethod(Request::METHOD_OPTIONS); Request::setRawParams([100042]); $this->processRest(); $this->assertEquals('HEAD,OPTIONS,GET,PATCH,PUT,DELETE', Response::getHeader('Allow')); }
/** * Process router by default rules * * Default routers examples * / * /:module/ * /:module/:controller/ * /:module/:controller/:key1/:value1/:key2/:value2... * * @return bool */ protected function processRoute() { $uri = Request::getCleanUri(); $uri = trim($uri, '/'); $params = explode('/', $uri); if (sizeof($params)) { Request::setModule(array_shift($params)); } if (sizeof($params)) { Request::setController(array_shift($params)); } if ($size = sizeof($params)) { // save raw params Request::setRawParams($params); // remove tail if ($size % 2 == 1) { array_pop($params); $size = sizeof($params); } // or use array_chunk and run another loop? for ($i = 0; $i < $size; $i = $i + 2) { Request::setParam($params[$i], $params[$i + 1]); } } return true; }
*/ namespace Application; use Application\Auth\Table; use Bluz\Proxy\Auth; use Bluz\Proxy\Request; return function ($resource, $id, $relation, $relationId) { /** * @var Bootstrap $this */ $this->useJson(); Auth::clearIdentity(); try { // authentication if ($token = $this->getRequest()->getParam('token')) { Table::getInstance()->authenticateToken($token); } $params = []; foreach ([$id, $relation, $relationId] as $param) { if (!is_null($param)) { $params[] = $param; } } Request::setRawParams($params); return $this->dispatch('api', $resource); } catch (\Exception $e) { // process exceptions here $this->getResponse()->setStatusCode($e->getCode()); return (object) ['error' => $e->getMessage()]; } };