class Loquor::HttpAction
Public Class Methods
new(url, deps)
click to toggle source
# File lib/loquor/http_action.rb, line 5 def initialize(url, deps) @url = url @config = deps[:config] @should_cache = deps[:should_cache] @retry_count = 0 end
Public Instance Methods
back_off(delay)
click to toggle source
# File lib/loquor/http_action.rb, line 42 def back_off(delay) sleep(delay) end
execute()
click to toggle source
# File lib/loquor/http_action.rb, line 20 def execute @config.logger.info "Making HTTP request to: #{full_url}" signed_request.execute rescue RestClient::ServiceUnavailable => e @config.logger.error("503 received for request to #{@url}.") @retry_count += 1 if should_retry @config.logger.error("Retrying (retry attempt #{@retry_count})") back_off(@config.retry_backoff ** @retry_count) retry else @config.logger.error("Abandoning request (service unavailable)") raise e end rescue RestClient::ResourceNotFound => e @config.logger.error("HTTP 404 when accessing #{full_url}") raise rescue => e @config.logger.error("Exception while executing request: #{e.message} <#{e.class}>") raise end
signed_request()
click to toggle source
# File lib/loquor/http_action.rb, line 12 def signed_request req = request @config.logger.info "Setting user-agent." req.headers['User-Agent'] = user_agent @config.logger.info "Signing request." ApiAuth.sign!(req, @config.access_id, @config.secret_key) end
Private Instance Methods
full_url()
click to toggle source
# File lib/loquor/http_action.rb, line 52 def full_url "#{@config.endpoint}#{@url}" end
should_retry()
click to toggle source
# File lib/loquor/http_action.rb, line 48 def should_retry @config.retry_503s && @retry_count < @config.max_retries end
user_agent()
click to toggle source
# File lib/loquor/http_action.rb, line 56 def user_agent "Loquor-#{VERSION}/#{@config.access_id}" end