lib/printreleaf/api.rb in printreleaf-1.0.1 vs lib/printreleaf/api.rb in printreleaf-1.0.2

- old
+ new

@@ -2,10 +2,11 @@ module API extend self ENDPOINT = "api.printreleaf.com/v1/" PROTOCOL = "https" + USER_AGENT = "PrintReleaf Ruby/#{PrintReleaf::VERSION}" MAX_RETRY_COUNT = 2 RETRY_DELAY_BASE = 1.5 # Base for exponential delay NETWORK_EXCEPTIONS = [ SocketError, @@ -25,10 +26,11 @@ } attr_writer :api_key attr_writer :endpoint attr_writer :protocol + attr_writer :user_agent attr_accessor :logger def api_key if @api_key.nil? or @api_key.strip.to_s.empty? raise Error, "Missing API Key." @@ -43,10 +45,14 @@ def protocol @protocol || PROTOCOL end + def user_agent + @user_agent || USER_AGENT + end + def get(uri="/", params={}) request :get, uri, params end def post(uri, data={}) @@ -62,21 +68,33 @@ end def request(verb, uri, params={}) perform_request do uri = Util.join_uri(endpoint, uri) - url = "#{protocol}://#{api_key}:@#{uri}" + url = "#{protocol}://#{uri}" + request_params = { + method: verb, + url: url, + headers: { + accept: :json, + :Authorization => "Bearer #{api_key}", + :user_agent => user_agent + } + } + + if verb == :get || verb == :delete + request_params[:headers][:params] = params unless params.empty? + else + request_params[:payload] = params.to_json + request_params[:headers][:content_type] = :json + end + unless logger.nil? logger.info "[PrintReleaf] #{verb.upcase} #{uri}" end - response = case verb - when :get; RestClient.get url, params: params, accept: :json - when :post; RestClient.post url, params.to_json, accept: :json, content_type: :json - when :patch; RestClient.patch url, params.to_json, accept: :json, content_type: :json - when :delete; RestClient.delete url - end + response = RestClient::Request.execute(request_params) JSON.parse(response.body) end end