class Square::FaradayClient
An implementation of HttpClient
.
Attributes
connection[R]
The attribute readers for properties.
Public Class Methods
new(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, connection: nil, cache: false, verify: true)
click to toggle source
The constructor.
# File lib/square/http/faraday_client.rb, line 14 def initialize(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, connection: nil, cache: false, verify: true) @connection = if connection.nil? create_connection(timeout: timeout, max_retries: max_retries, retry_interval: retry_interval, backoff_factor: backoff_factor, retry_statuses: retry_statuses, retry_methods: retry_methods, cache: cache, verify: verify) else connection end end
Public Instance Methods
convert_response(response, http_request)
click to toggle source
Method overridden from HttpClient
.
# File lib/square/http/faraday_client.rb, line 87 def convert_response(response, http_request) HttpResponse.new(response.status, response.reason_phrase, response.headers, response.body, http_request) end
create_connection(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, cache: false, verify: true)
click to toggle source
Method to initialize connection.
# File lib/square/http/faraday_client.rb, line 28 def create_connection(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, cache: false, verify: true) Faraday.new do |faraday| faraday.use Faraday::HttpCache, serializer: Marshal if cache faraday.use Faraday::FollowRedirects::Middleware faraday.request :gzip faraday.request :multipart faraday.request :url_encoded faraday.ssl[:ca_file] = Certifi.where faraday.ssl[:verify] = verify faraday.request :retry, max: max_retries, interval: retry_interval, backoff_factor: backoff_factor, retry_statuses: retry_statuses, methods: retry_methods, retry_if: proc { |env, _exc| env.request.context['forced_retry'] ||= false } faraday.adapter Faraday.default_adapter faraday.options[:params_encoder] = Faraday::FlatParamsEncoder faraday.options[:timeout] = timeout if timeout.positive? end end
execute_as_binary(http_request)
click to toggle source
Method overridden from HttpClient
.
# File lib/square/http/faraday_client.rb, line 70 def execute_as_binary(http_request) response = @connection.send( http_request.http_method.downcase, http_request.query_url ) do |request| request.headers = http_request.headers request.options.context ||= {} request.options.context.merge!(http_request.context) unless http_request.http_method == HttpMethodEnum::GET && http_request.parameters.empty? request.body = http_request.parameters end end convert_response(response, http_request) end
execute_as_string(http_request)
click to toggle source
Method overridden from HttpClient
.
# File lib/square/http/faraday_client.rb, line 53 def execute_as_string(http_request) response = @connection.send( http_request.http_method.downcase, http_request.query_url ) do |request| request.headers = http_request.headers.map { |k, v| [k.to_s, v.to_s] } request.options.context ||= {} request.options.context.merge!(http_request.context) unless http_request.http_method == HttpMethodEnum::GET && http_request.parameters.empty? request.body = http_request.parameters end end convert_response(response, http_request) end