name: ThrottleRequests
class_comment: null
dependencies:
- name: Closure
  type: class
  source: Closure
- name: RateLimiter
  type: class
  source: Illuminate\Cache\RateLimiter
- name: Unlimited
  type: class
  source: Illuminate\Cache\RateLimiting\Unlimited
- name: HttpResponseException
  type: class
  source: Illuminate\Http\Exceptions\HttpResponseException
- name: ThrottleRequestsException
  type: class
  source: Illuminate\Http\Exceptions\ThrottleRequestsException
- name: MissingRateLimiterException
  type: class
  source: Illuminate\Routing\Exceptions\MissingRateLimiterException
- name: Arr
  type: class
  source: Illuminate\Support\Arr
- name: InteractsWithTime
  type: class
  source: Illuminate\Support\InteractsWithTime
- name: RuntimeException
  type: class
  source: RuntimeException
- name: Response
  type: class
  source: Symfony\Component\HttpFoundation\Response
- name: InteractsWithTime
  type: class
  source: InteractsWithTime
properties:
- name: limiter
  visibility: protected
  comment: '# * The rate limiter instance.

    # *

    # * @var \Illuminate\Cache\RateLimiter'
- name: shouldHashKeys
  visibility: protected
  comment: '# * Indicates if the rate limiter keys should be hashed.

    # *

    # * @var bool'
methods:
- name: __construct
  visibility: public
  parameters:
  - name: limiter
  comment: "# * The rate limiter instance.\n# *\n# * @var \\Illuminate\\Cache\\RateLimiter\n\
    # */\n# protected $limiter;\n# \n# /**\n# * Indicates if the rate limiter keys\
    \ should be hashed.\n# *\n# * @var bool\n# */\n# protected static $shouldHashKeys\
    \ = true;\n# \n# /**\n# * Create a new request throttler.\n# *\n# * @param  \\\
    Illuminate\\Cache\\RateLimiter  $limiter\n# * @return void"
- name: using
  visibility: public
  parameters:
  - name: name
  comment: '# * Specify the named rate limiter to use for the middleware.

    # *

    # * @param  string  $name

    # * @return string'
- name: with
  visibility: public
  parameters:
  - name: maxAttempts
    default: '60'
  - name: decayMinutes
    default: '1'
  - name: prefix
    default: ''''''
  comment: '# * Specify the rate limiter configuration for the middleware.

    # *

    # * @param  int  $maxAttempts

    # * @param  int  $decayMinutes

    # * @param  string  $prefix

    # * @return string

    # *

    # * @named-arguments-supported'
- name: handle
  visibility: public
  parameters:
  - name: request
  - name: next
  - name: maxAttempts
    default: '60'
  - name: decayMinutes
    default: '1'
  - name: prefix
    default: ''''''
  comment: '# * Handle an incoming request.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Closure  $next

    # * @param  int|string  $maxAttempts

    # * @param  float|int  $decayMinutes

    # * @param  string  $prefix

    # * @return \Symfony\Component\HttpFoundation\Response

    # *

    # * @throws \Illuminate\Http\Exceptions\ThrottleRequestsException

    # * @throws \Illuminate\Routing\Exceptions\MissingRateLimiterException'
- name: handleRequestUsingNamedLimiter
  visibility: protected
  parameters:
  - name: request
  - name: next
  - name: limiterName
  - name: limiter
  comment: '# * Handle an incoming request.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Closure  $next

    # * @param  string  $limiterName

    # * @param  \Closure  $limiter

    # * @return \Symfony\Component\HttpFoundation\Response

    # *

    # * @throws \Illuminate\Http\Exceptions\ThrottleRequestsException'
- name: handleRequest
  visibility: protected
  parameters:
  - name: request
  - name: next
  - name: limits
  comment: '# * Handle an incoming request.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Closure  $next

    # * @param  array  $limits

    # * @return \Symfony\Component\HttpFoundation\Response

    # *

    # * @throws \Illuminate\Http\Exceptions\ThrottleRequestsException'
- name: resolveMaxAttempts
  visibility: protected
  parameters:
  - name: request
  - name: maxAttempts
  comment: '# * Resolve the number of attempts if the user is authenticated or not.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  int|string  $maxAttempts

    # * @return int

    # *

    # * @throws \Illuminate\Routing\Exceptions\MissingRateLimiterException'
- name: resolveRequestSignature
  visibility: protected
  parameters:
  - name: request
  comment: '# * Resolve request signature.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @return string

    # *

    # * @throws \RuntimeException'
- name: buildException
  visibility: protected
  parameters:
  - name: request
  - name: key
  - name: maxAttempts
  - name: responseCallback
    default: 'null'
  comment: '# * Create a ''too many attempts'' exception.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  string  $key

    # * @param  int  $maxAttempts

    # * @param  callable|null  $responseCallback

    # * @return \Illuminate\Http\Exceptions\ThrottleRequestsException|\Illuminate\Http\Exceptions\HttpResponseException'
- name: getTimeUntilNextRetry
  visibility: protected
  parameters:
  - name: key
  comment: '# * Get the number of seconds until the next retry.

    # *

    # * @param  string  $key

    # * @return int'
- name: addHeaders
  visibility: protected
  parameters:
  - name: response
  - name: maxAttempts
  - name: remainingAttempts
  - name: retryAfter
    default: 'null'
  comment: '# * Add the limit header information to the given response.

    # *

    # * @param  \Symfony\Component\HttpFoundation\Response  $response

    # * @param  int  $maxAttempts

    # * @param  int  $remainingAttempts

    # * @param  int|null  $retryAfter

    # * @return \Symfony\Component\HttpFoundation\Response'
- name: getHeaders
  visibility: protected
  parameters:
  - name: maxAttempts
  - name: remainingAttempts
  - name: retryAfter
    default: 'null'
  - name: response
    default: 'null'
  comment: '# * Get the limit headers information.

    # *

    # * @param  int  $maxAttempts

    # * @param  int  $remainingAttempts

    # * @param  int|null  $retryAfter

    # * @param  \Symfony\Component\HttpFoundation\Response|null  $response

    # * @return array'
- name: calculateRemainingAttempts
  visibility: protected
  parameters:
  - name: key
  - name: maxAttempts
  - name: retryAfter
    default: 'null'
  comment: '# * Calculate the number of remaining attempts.

    # *

    # * @param  string  $key

    # * @param  int  $maxAttempts

    # * @param  int|null  $retryAfter

    # * @return int'
- name: formatIdentifier
  visibility: private
  parameters:
  - name: value
  comment: '# * Format the given identifier based on the configured hashing settings.

    # *

    # * @param  string  $value

    # * @return string'
- name: shouldHashKeys
  visibility: public
  parameters:
  - name: shouldHashKeys
    default: 'true'
  comment: '# * Specify whether rate limiter keys should be hashed.

    # *

    # * @param  bool  $shouldHashKeys

    # * @return void'
traits:
- Closure
- Illuminate\Cache\RateLimiter
- Illuminate\Cache\RateLimiting\Unlimited
- Illuminate\Http\Exceptions\HttpResponseException
- Illuminate\Http\Exceptions\ThrottleRequestsException
- Illuminate\Routing\Exceptions\MissingRateLimiterException
- Illuminate\Support\Arr
- Illuminate\Support\InteractsWithTime
- RuntimeException
- Symfony\Component\HttpFoundation\Response
- InteractsWithTime
interfaces: []