Class: VerifIP::RateLimitInfo
- Inherits:
-
Object
- Object
- VerifIP::RateLimitInfo
- Defined in:
- lib/verifip/models.rb
Overview
Rate limit information parsed from response headers.
Instance Attribute Summary collapse
-
#limit ⇒ Integer
readonly
Maximum requests in the current window.
-
#remaining ⇒ Integer
readonly
Remaining requests in the current window.
-
#reset ⇒ Time?
readonly
Time at which the window resets.
Class Method Summary collapse
-
.from_headers(headers) ⇒ RateLimitInfo?
Parse rate limit info from HTTP response headers.
Instance Method Summary collapse
-
#initialize(limit:, remaining:, reset: nil) ⇒ RateLimitInfo
constructor
A new instance of RateLimitInfo.
- #inspect ⇒ Object
- #to_s ⇒ Object
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
#limit ⇒ Integer (readonly)
Returns maximum requests in the current window.
121 122 123 |
# File 'lib/verifip/models.rb', line 121 def limit @limit end |
#remaining ⇒ Integer (readonly)
Returns remaining requests in the current window.
124 125 126 |
# File 'lib/verifip/models.rb', line 124 def remaining @remaining end |
#reset ⇒ Time? (readonly)
Returns 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.
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
#inspect ⇒ Object
160 |
# File 'lib/verifip/models.rb', line 160 def inspect = to_s |
#to_s ⇒ Object
159 |
# File 'lib/verifip/models.rb', line 159 def to_s = "RateLimitInfo(limit=#{@limit}, remaining=#{@remaining}, reset=#{@reset})" |