Class: VerifIP::RateLimitInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/verifip/models.rb

Overview

Rate limit information parsed from response headers.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(limit:, remaining:, reset: nil) ⇒ RateLimitInfo

Returns a new instance of RateLimitInfo.



129
130
131
132
133
# File 'lib/verifip/models.rb', line 129

def initialize(limit:, remaining:, reset: nil)
  @limit     = limit
  @remaining = remaining
  @reset     = reset
end

Instance Attribute Details

#limitInteger (readonly)

Returns maximum requests in the current window.

Returns:

  • (Integer)

    maximum requests in the current window



121
122
123
# File 'lib/verifip/models.rb', line 121

def limit
  @limit
end

#remainingInteger (readonly)

Returns remaining requests in the current window.

Returns:

  • (Integer)

    remaining requests in the current window



124
125
126
# File 'lib/verifip/models.rb', line 124

def remaining
  @remaining
end

#resetTime? (readonly)

Returns time at which the window resets.

Returns:

  • (Time, nil)

    time at which the window resets



127
128
129
# File 'lib/verifip/models.rb', line 127

def reset
  @reset
end

Class Method Details

.from_headers(headers) ⇒ RateLimitInfo?

Parse rate limit info from HTTP response headers.

Parameters:

  • headers (Hash, Net::HTTPResponse)

    response headers

Returns:



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/verifip/models.rb', line 139

def self.from_headers(headers)
  limit_str = headers["X-RateLimit-Limit"] || headers["x-ratelimit-limit"]
  return nil if limit_str.nil?

  limit = limit_str.to_i
  remaining = (headers["X-RateLimit-Remaining"] || headers["x-ratelimit-remaining"] || "0").to_i

  reset_str = headers["X-RateLimit-Reset"] || headers["x-ratelimit-reset"]
  reset = nil
  if reset_str
    begin
      reset = Time.at(reset_str.to_i).utc
    rescue ArgumentError, TypeError
      # ignore
    end
  end

  new(limit: limit, remaining: remaining, reset: reset)
end

Instance Method Details

#inspectObject



160
# File 'lib/verifip/models.rb', line 160

def inspect = to_s

#to_sObject



159
# File 'lib/verifip/models.rb', line 159

def to_s = "RateLimitInfo(limit=#{@limit}, remaining=#{@remaining}, reset=#{@reset})"