class SealineInsurance::Request

Attributes

config[R]

Public Class Methods

new(config:) click to toggle source
# File lib/sealine_insurance/request.rb, line 7
def initialize(config:)
  @config = config
end

Public Instance Methods

delete(url) click to toggle source
# File lib/sealine_insurance/request.rb, line 19
def delete(url)
  send_request(:delete, url)
end
get(url) click to toggle source
# File lib/sealine_insurance/request.rb, line 11
def get(url)
  send_request(:get, url)
end
post(url, data) click to toggle source
# File lib/sealine_insurance/request.rb, line 15
def post(url, data)
  send_request(:post, url, data)
end

Private Instance Methods

send_request(method, url, body = nil) click to toggle source
# File lib/sealine_insurance/request.rb, line 25
def send_request(method, url, body = nil)
  conn = Faraday.new do |builder|
    builder.response(:logger, config.logger, bodies: true) if config.logger
    builder.adapter Faraday.default_adapter
  end
  conn.send(method, "#{config.base_url}#{url}.json") do |req|
    req.headers['Authorization'] = "Token #{config.token}"
    if body
      req.headers['Content-Type'] = 'application/json'
      req.body = body.to_json
    end
    req.options.timeout = config.timeout if config.timeout
    req.options.open_timeout = config.open_timeout if config.open_timeout
  end
rescue Faraday::Error => e
  raise RequestError, "#{e.class}: #{e.message}"
end