/** * Perform rate limiting before a request is executed. * * @param \Dingo\Api\Routing\Route $route * @param \Illuminate\Http\Request $request * @param int $limit * @param int $expires * * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException * * @return mixed */ public function filter(Route $route, Request $request, $limit = 0, $expires = 0) { if ($this->requestIsInternal($request)) { return; } $limit = $route->getRateLimit($limit); $expires = $route->getLimitExpiration($expires); $this->limiter->rateLimitRequest($request, $limit, $expires); if (!$this->limiter->requestWasRateLimited()) { return; } $this->attachAfterFilter(); if ($this->limiter->exceededRateLimit()) { throw new AccessDeniedHttpException(); } }