lib/lifen/client.rb in lifen-0.2.1 vs lib/lifen/client.rb in lifen-1.0.0

- old
+ new

@@ -1,10 +1,47 @@ module Lifen class Client + def request(mode, url, params = {}) + before_request + + response = faraday_client.send(mode) do |req| + req.url url + + req.headers['Authorization'] = "Bearer #{bearer}" + req.headers['Content-Type'] = "application/json" + req.headers['Accept'] = "application/json" + + req.body = JSON.generate(params) + end + + handle_status!(response) + + json = JSON.parse response.body + + json + end + + def post(url, params = {}) + request(:post, url, params) + end + + def get(url, params = {}) + request(:get, url, params) + end + private + def handle_status!(response) + 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})" + end + end + def faraday_client @faraday_client ||= Faraday.new(faraday_options) do |faraday| faraday.request :url_encoded # form-encode POST params faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end @@ -22,9 +59,16 @@ Lifen.configuration.site end def proxy_url Lifen.configuration.proxy_url + end + + def before_request + end + + def bearer + raise "A bearer method must be defined" end end end \ No newline at end of file