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