module Shiphawk::Helpers::Request

Constants

API_PATH
APP_VERSION
DEFAULT_HEADERS

Attributes

adapter[R]
api_token[R]
api_version[R]
connection[R]
host_url[R]

Private Instance Methods

get_connection() click to toggle source
# File lib/shiphawk/helpers/request.rb, line 30
def get_connection
  raise ArgumentError, 'Incorrect connection information' if host_url.nil? || adapter.nil?
  @connection ||= Faraday.new(url: host_url) do |conn|
    conn.request :multipart
    conn.request :url_encoded

    conn.request :user_agent, app: 'ShipHawk Client', version: APP_VERSION
    conn.request :request_id
    conn.request :request_headers, accept: 'application/json', 'X-API-KEY' => api_token

    conn.use :extended_logging, logger: Rails.logger

    conn.response :json, content_type: /\bjson$/

    conn.adapter adapter
  end
end
raise_errors(response) click to toggle source
# File lib/shiphawk/helpers/request.rb, line 48
def raise_errors response
  case response.status.to_i
    when 401
      fail Shiphawk::Errors::UnauthorizedError, "(#{response.status}): #{response.body['error']}"
    when 400
      fail Shiphawk::Errors::GeneralError, "(#{response.status}): #{response.body['error']}"
    when 403
      fail Shiphawk::Errors::AccessDeniedError, "(#{response.status}): #{response.body['error']}"
    when 404
      fail Shiphawk::Errors::NotFoundError, "(#{response.status}): #{response.body['error']}"
    when 422
      fail Shiphawk::Errors::UnprocessableEntityError, "(#{response.status}): #{response.body['error']}"
    when 500
      fail Shiphawk::Errors::InformShiphawkError, "ShipHawk had an internal error. Please send an email to api@shiphawk.com. (#{response.status}): #{response.body['error']}"
    when 502..503
      fail Shiphawk::Errors::UnavailableError, "(#{response.status}): #{response.body['error']}"
  end
end