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.



369
370
371
372
373
# File 'lib/verifip/models.rb', line 369

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



361
362
363
# File 'lib/verifip/models.rb', line 361

def limit
  @limit
end

#remainingInteger (readonly)

Returns remaining requests in the current window.

Returns:

  • (Integer)

    remaining requests in the current window



364
365
366
# File 'lib/verifip/models.rb', line 364

def remaining
  @remaining
end

#resetTime? (readonly)

Returns time at which the window resets.

Returns:

  • (Time, nil)

    time at which the window resets



367
368
369
# File 'lib/verifip/models.rb', line 367

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:



379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'lib/verifip/models.rb', line 379

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



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

def inspect = to_s

#to_sObject



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

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