class Yext::Api::Utils::Middleware::ApiRateLimits

Faraday Middleware for extracting API limits from call responses.

Public Instance Methods

call(env) click to toggle source
# File lib/yext/api/utils/middleware/api_rate_limits.rb, line 9
def call(env)
  @app.call(env).on_complete do |environment|
    save_rates(environment, Yext::Api::Utils::ApiFinder.new(env[:url], env[:method]).find_api)

    env.response
  end
end

Private Instance Methods

save_rates(environment, api_module) click to toggle source
# File lib/yext/api/utils/middleware/api_rate_limits.rb, line 19
def save_rates(environment, api_module)
  return if api_module.blank?

  response_headers = environment[:response_headers]

  return unless response_headers.key?("rate-limit-remaining")

  api_module.send(:update_rates,
                  remaining: response_headers["rate-limit-remaining"].to_i,
                  limit:     response_headers["rate-limit-limit"].to_i,
                  reset_at:  Time.at(response_headers["rate-limit-reset"].to_i))
end