name: RateLimitedWithRedis
class_comment: null
dependencies:
- name: Container
  type: class
  source: Illuminate\Container\Container
- name: Redis
  type: class
  source: Illuminate\Contracts\Redis\Factory
- name: DurationLimiter
  type: class
  source: Illuminate\Redis\Limiters\DurationLimiter
- name: InteractsWithTime
  type: class
  source: Illuminate\Support\InteractsWithTime
- name: InteractsWithTime
  type: class
  source: InteractsWithTime
properties:
- name: redis
  visibility: protected
  comment: '# * The Redis factory implementation.

    # *

    # * @var \Illuminate\Contracts\Redis\Factory'
- name: decaysAt
  visibility: public
  comment: '# * The timestamp of the end of the current duration by key.

    # *

    # * @var array'
methods:
- name: __construct
  visibility: public
  parameters:
  - name: limiterName
  comment: "# * The Redis factory implementation.\n# *\n# * @var \\Illuminate\\Contracts\\\
    Redis\\Factory\n# */\n# protected $redis;\n# \n# /**\n# * The timestamp of the\
    \ end of the current duration by key.\n# *\n# * @var array\n# */\n# public $decaysAt\
    \ = [];\n# \n# /**\n# * Create a new middleware instance.\n# *\n# * @param  string\
    \  $limiterName\n# * @return void"
- name: handleJob
  visibility: protected
  parameters:
  - name: job
  - name: next
  - name: limits
  comment: '# * Handle a rate limited job.

    # *

    # * @param  mixed  $job

    # * @param  callable  $next

    # * @param  array  $limits

    # * @return mixed'
- name: tooManyAttempts
  visibility: protected
  parameters:
  - name: key
  - name: maxAttempts
  - name: decaySeconds
  comment: '# * Determine if the given key has been "accessed" too many times.

    # *

    # * @param  string  $key

    # * @param  int  $maxAttempts

    # * @param  int  $decaySeconds

    # * @return bool'
- name: getTimeUntilNextRetry
  visibility: protected
  parameters:
  - name: key
  comment: '# * Get the number of seconds that should elapse before the job is retried.

    # *

    # * @param  string  $key

    # * @return int'
- name: __wakeup
  visibility: public
  parameters: []
  comment: '# * Prepare the object after unserialization.

    # *

    # * @return void'
traits:
- Illuminate\Container\Container
- Illuminate\Redis\Limiters\DurationLimiter
- Illuminate\Support\InteractsWithTime
- InteractsWithTime
interfaces: []