class Lifen::Client

Public Instance Methods

get(url, params = {}) click to toggle source
# File lib/lifen/client.rb, line 33
def get(url, params = {})
  request(:get, url, params)
end
post(url, params = {}) click to toggle source
# File lib/lifen/client.rb, line 25
def post(url, params = {})
  request(:post, url, params)
end
put(url, params = {}) click to toggle source
# File lib/lifen/client.rb, line 29
def put(url, params = {})
  request(:put, url, params)
end
request(mode, url, params = {}) click to toggle source
# File lib/lifen/client.rb, line 4
def request(mode, url, params = {})
  before_request

  response = faraday_client.send(mode) do |req|
    req.url url

    req.headers['Authorization']      = "Bearer #{bearer}"
    req.headers['Accept']             =  use_and_remove_accept(params)

    if mode == :post
      req.headers['Content-Type']     = "application/json"
    end

    req.body = JSON.generate(params)
  end

  handle_errors(response, params)

  handle_response(response)
end

Private Instance Methods

bearer() click to toggle source
# File lib/lifen/client.rb, line 97
def bearer
  raise "A bearer method must be defined"
end
before_request() click to toggle source
# File lib/lifen/client.rb, line 80
def before_request
end
faraday_client() click to toggle source
# File lib/lifen/client.rb, line 58
def faraday_client
  @faraday_client ||= Faraday.new(faraday_options) do |faraday|
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
  end
end
faraday_options() click to toggle source
# File lib/lifen/client.rb, line 64
def faraday_options
  options = {url: site}

  options[:proxy] = proxy_url if !proxy_url.nil?

  options
end
handle_errors(response, params) click to toggle source
# File lib/lifen/client.rb, line 39
def handle_errors(response, params)
  if response.status == 500

    json = JSON.parse response.body

    trace_id = json.fetch("X-B3-TraceId", "unknown")

    raise Error, "Error 500, Internal server error (trace ID: #{trace_id}), #{response_error(response, params)}"
  end
end
handle_response(response) click to toggle source
# File lib/lifen/client.rb, line 50
def handle_response(response)
  if response.headers['Content-Type'].match "json"
    JSON.parse response.body
  else
    response.body
  end
end
proxy_url() click to toggle source
# File lib/lifen/client.rb, line 76
def proxy_url
  Lifen.configuration.proxy_url
end
response_error(response, params) click to toggle source
# File lib/lifen/client.rb, line 83
def response_error(response, params)
  params[:payload] = "filtered" if params.is_a?(Hash) and params.has_key? :payload

  "#{response.env.method.upcase} '#{response.env.url}' with params '#{params.inspect}' and bearer '#{trucanted_bearer}'"
end
site() click to toggle source
# File lib/lifen/client.rb, line 72
def site
  Lifen.configuration.site
end
trucanted_bearer() click to toggle source
# File lib/lifen/client.rb, line 89
def trucanted_bearer
  if m = /^(.{24})(.*)$/.match(bearer)
    "#{m[1]}#{"*" * m[2].length}"
  else
    bearer
  end
end
use_and_remove_accept(params) click to toggle source
# File lib/lifen/client.rb, line 101
def use_and_remove_accept(params)
  return params.delete :accept if params.is_a?(Hash) and params.has_key? :accept

  "application/json"
end