class CurrencyCloud::RequestHandler
Attributes
Public Class Methods
Source
# File lib/currency_cloud/request_handler.rb, line 5 def initialize(session = CurrencyCloud.session) @session = session end
Public Instance Methods
Source
# File lib/currency_cloud/request_handler.rb, line 9 def get(route, params = {}, opts = {}) retry_authenticate('get', route, params, opts) do |url, new_params, options| options[:query] = new_params HTTParty.get(url, options) end end
Source
# File lib/currency_cloud/request_handler.rb, line 16 def post(route, params = {}, opts = {}) retry_authenticate('post', route, params, opts) do |url, new_params, options| options[:body] = new_params HTTParty.post(url, options) end end
Private Instance Methods
Source
# File lib/currency_cloud/request_handler.rb, line 69 def build_url(route) "#{session.environment_url}/#{CurrencyCloud::API_VERSION}/" + route end
Source
# File lib/currency_cloud/request_handler.rb, line 62 def headers headers = {} headers['X-Auth-Token'] = session.token if session && session.token headers['User-Agent'] = user_agent headers end
Source
# File lib/currency_cloud/request_handler.rb, line 49 def process_options(opts) options = { headers: headers } options.merge(opts) end
Source
# File lib/currency_cloud/request_handler.rb, line 54 def process_params(params) if session && session.on_behalf_of && CurrencyCloud::UUID_REGEX.match(session.on_behalf_of) params[:on_behalf_of] = session.on_behalf_of end params end
Source
# File lib/currency_cloud/request_handler.rb, line 25 def retry_authenticate(verb, route, params, opts) should_retry = opts[:should_retry].nil? ? true : opts.delete(:should_retry) params = process_params(params) full_url = build_url(route) response = nil retry_count = should_retry ? 0 : 2 while retry_count < 3 options = process_options(opts) response = yield(full_url, params, options) break unless response.code == 401 && should_retry session.reauthenticate retry_count += 1 end response_handler = CurrencyCloud::ResponseHandler.new(verb, full_url, params, response) response_handler.process rescue ApiError, UnexpectedError raise rescue StandardError => e raise UnexpectedError.new(verb, full_url, params, e) end
Source
# File lib/currency_cloud/request_handler.rb, line 73 def user_agent "CurrencyCloudSDK/2.0 Ruby/#{CurrencyCloud::VERSION}" end