/** * Should be run before routes are executed * Will abort if etag match is found * @param Route $route * @param Request $request * @param Response|null $response * @return Response|null * @throws HttpException */ public function before(Route $route, Request $request, $response = null) { /** * TODO implement other Request Methods */ if (!in_array($request->method(), ['GET', 'HEAD'])) { return null; } if ($this->routecache->checkClientHasValidCache()) { $response = new Response(); $response->setNotModified(); return $response; } $response = $this->routecache->getResponseFromCache(); if (empty($response)) { $route->after('cache.after'); } return $response; }
/** * Apply the applicable after filters to the route. * * @param \Illuminate\Routing\Controller $instance * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @param string $method * @return mixed */ protected function assignAfter($instance, $route, $request, $method) { foreach ($instance->getAfterFilters() as $filter) { // If the filter applies, we will add it to the route, since it has already been // registered on the filterer by the controller, and will just let the normal // router take care of calling these filters so we do not duplicate logics. if ($this->filterApplies($filter, $request, $method)) { $route->after($this->getAssignableAfter($filter)); } } }