Sha256: bf4ee03424c67cbdbb83c4100349c7a9cc53a723b80859f497fda2ac9724d7c7

Contents?: true

Size: 1010 Bytes

Versions: 31

Compression:

Stored size: 1010 Bytes

Contents

require_relative '../provider_utils/waiter'

# Patch Dnsimple client method which retrieves headers for API rate limit dynamically
module Dnsimple
  class Client
    def execute(method, path, data = nil, options = {})
      response = request(method, path, data, options)
      rate_limit_sleep(response.headers['x-ratelimit-reset'].to_i, response.headers['x-ratelimit-remaining'].to_i)

      case response.code
      when 200..299
        response
      when 401
        raise AuthenticationFailed, response['message']
      when 404
        raise NotFoundError, response
      else
        raise RequestError, response
      end
    end

    private

    def rate_limit_sleep(rate_limit_reset, rate_limit_remaining)
      rate_limit_reset_in = [0, rate_limit_reset - Time.now.to_i].max
      rate_limit_periods = rate_limit_remaining + 1
      sleep_time = rate_limit_reset_in / rate_limit_periods.to_f

      rate_limit = RateLimitWaiter.new('DNSimple')
      rate_limit.wait(sleep_time)
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
record_store-8.0.6 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-8.0.5 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-8.0.4 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-8.0.3 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-8.0.2 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-8.0.1 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-8.0.0 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-7.1.1 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-7.1.0 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-7.0.1 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-7.0.0 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.7.2 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.7.1 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.7.0 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.6.0 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.5.11 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.5.10 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.5.9 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.5.8 lib/record_store/provider/dnsimple/patch_api_header.rb
record_store-6.5.5 lib/record_store/provider/dnsimple/patch_api_header.rb