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