/** * Handle * * @param Request $request Request * @param Response $response Response * * @return Response Response */ public function handle(HttpMessages_CraftRequest $request, HttpMessages_CraftResponse $response) { $relay = new RelayBuilder(); $globalMiddleware = \Craft\craft()->config->get('globalMiddleware', 'httpmessages'); $routeMiddleware = $request->getRoute()->getMiddleware(); $dispatcher = $relay->newInstance(array_merge($globalMiddleware, $routeMiddleware)); return $dispatcher($request, $response); }
/** * Get Submitted Token * * @param Request $request Request * * @return void|HttMessages_Exception */ private function getSubmittedToken(Request $request) { $csrfTokenName = $this->config->get('csrfTokenName'); if ($request->hasHeader($csrfTokenName)) { return $request->getHeader($csrfTokenName)[0]; } if ($token = $request->getParam($csrfTokenName)) { return $token; } throw new HttpMessages_Exception("A valid csrf token was not submitted with your request."); }
/** * __invoke Magic Method * * @param Request $request Request * @param Response $response Response * @param callable $next Next * * @return Response Response */ public function __invoke(Request $request, Response $response, callable $next) { $config = $request->getRoute()->getMiddlewareConfig('validation'); $input = $request->getMethod() === 'GET' ? $request->getQueryParams() : $request->getParams(); try { $validator = $this->getValidator($config); $validator->assert($input); } catch (NestedValidationException $validation_exception) { $exception = new HttpMessages_Exception('Validation error.'); $exception->setErrors($validation_exception->getMessages()); $exception->setInput($input); throw $exception; } $response = $next($request, $response); return $response; }
/** * Get Cache Key * * @param Request $request Request * * @return string Cache Key */ private function getCacheKey(Request $request, $cache_duration) { $keys = array_merge($request->getQueryParams(), $request->getAttributes()); $cache_key = $request->getUri(); $cache_key .= $request->getMethod(); $cache_key .= $cache_duration; $cache_key .= serialize($keys); return md5($cache_key); }