class HasOffersV3::Client
Attributes
configuration[RW]
Public Class Methods
new(configuration)
click to toggle source
# File lib/hasoffersv3/client.rb, line 10 def initialize(configuration) @configuration = configuration end
Public Instance Methods
base_uri()
click to toggle source
# File lib/hasoffersv3/client.rb, line 69 def base_uri configuration.base_uri end
build_request_params(method, params)
click to toggle source
# File lib/hasoffersv3/client.rb, line 45 def build_request_params(method, params) params['Method'] = method { NetworkId: configuration.network_id, NetworkToken: configuration.api_key, api_key: configuration.api_key }.merge(params) end
execute_request(net_http, raw_request)
click to toggle source
# File lib/hasoffersv3/client.rb, line 41 def execute_request(net_http, raw_request) net_http.request raw_request end
Also aliased as: original_execute_request
new_http(uri)
click to toggle source
# File lib/hasoffersv3/client.rb, line 60 def new_http(uri) args = [uri.host, uri.port] args += [configuration.proxy_host, configuration.proxy_port] if configuration.proxy_host http = Net::HTTP.new(*args) http.use_ssl = true if uri.scheme == 'https' http.read_timeout = configuration.read_timeout http end
query_string(data_hash)
click to toggle source
# File lib/hasoffersv3/client.rb, line 54 def query_string(data_hash) # Rails to_params adds an extra open close brackets to multi-dimensional array parameters which # hasoffers doesn't like, so the gsub here takes care of that. data_hash.to_param.gsub(/\[\]\[/,'[') end
request(http_method, target, method, params)
click to toggle source
# File lib/hasoffersv3/client.rb, line 14 def request(http_method, target, method, params) data = build_request_params(method, params) target_uri = "#{base_uri}/#{target}.json" if http_method == :post uri = URI.parse(target_uri) http = new_http(uri) raw_request = Net::HTTP::Post.new(uri.request_uri) raw_request.body = query_string data else # assume get uri = URI.parse("#{target_uri}?#{query_string(data)}") http = new_http(uri) raw_request = Net::HTTP::Get.new(uri.request_uri) end logger.log_request(raw_request, uri) http_response = execute_request(http, raw_request) logger.log_response(http_response) with_error_detection do Response.new(http_response, @configuration.json_driver) end end
Private Instance Methods
logger()
click to toggle source
# File lib/hasoffersv3/client.rb, line 75 def logger configuration.http_logger end
with_error_detection() { || ... }
click to toggle source
# File lib/hasoffersv3/client.rb, line 79 def with_error_detection response = yield return response unless configuration.raise_errors raise HTTPError.from_response(response) unless response.http_ok? raise APIError.from_response(response) unless response.status_ok? response end