class Shipwire::Request

Constants

API_VERSION

Attributes

body[R]
method[R]
params[R]
path[R]

Public Class Methods

new(method: :get, path: '', params: {}, body: {}) click to toggle source
# File lib/shipwire/request.rb, line 11
def initialize(method: :get, path: '', params: {}, body: {})
  @method = method
  @path = path
  @params = params
  @body = body

  @connection = build_connection
end
send(**args) click to toggle source
# File lib/shipwire/request.rb, line 3
def self.send(**args)
  new(**args).send
end

Public Instance Methods

send() click to toggle source
# File lib/shipwire/request.rb, line 20
def send
  Response.new(underlying_response: make_request)
rescue Faraday::ConnectionFailed
  Response.new(error_summary: 'Unable to connect to Shipwire')
rescue Faraday::TimeoutError
  Response.new(error_summary: 'Shipwire connection timeout')
end

Private Instance Methods

base_url() click to toggle source
# File lib/shipwire/request.rb, line 53
def base_url
  Shipwire.configuration.endpoint.chomp("/")
end
build_connection() click to toggle source
# File lib/shipwire/request.rb, line 30
def build_connection
  Faraday.new(url: base_url) do |connection|
    connection.request(:basic_auth, username, password)
    connection.request(:json)
    connection.request(:url_encoded)

    if Shipwire.configuration.logger
      connection.response(:logger)
    end

    connection.adapter(Faraday.default_adapter)
  end
end
full_path() click to toggle source
# File lib/shipwire/request.rb, line 57
def full_path
  "/api/v#{API_VERSION}/#{@path}"
end
make_request() click to toggle source
# File lib/shipwire/request.rb, line 44
def make_request
  @connection.public_send(@method, full_path) do |request|
    request.params = params unless params.empty?
    request.options.open_timeout = Shipwire.configuration.open_timeout
    request.options.timeout = Shipwire.configuration.timeout
    request.body = body unless body.empty?
  end
end
password() click to toggle source
# File lib/shipwire/request.rb, line 69
def password
  Shipwire.configuration.password
end
username() click to toggle source
# File lib/shipwire/request.rb, line 65
def username
  Shipwire.configuration.username
end