lib/pardot/http.rb in ruby-pardot-1.3.2 vs lib/pardot/http.rb in ruby-pardot-1.4.0

- old
+ new

@@ -1,77 +1,80 @@ module Pardot module Http - - def get object, path, params = {}, num_retries = 0 + def get(object, path, params = {}, num_retries = 0) smooth_params object, params full_path = fullpath object, path headers = create_auth_header object - check_response self.class.get(full_path, :query => params, :headers => headers) - + check_response self.class.get(full_path, query: params, headers: headers) rescue Pardot::ExpiredApiKeyError => e handle_expired_api_key :get, object, path, params, num_retries, e - rescue SocketError, Interrupt, EOFError, SystemCallError, Timeout::Error, MultiXml::ParseError => e - raise Pardot::NetError.new(e) + raise Pardot::NetError, e end - - def post object, path, params = {}, num_retries = 0, bodyParams = {} + + def post(object, path, params = {}, num_retries = 0, bodyParams = {}) smooth_params object, params full_path = fullpath object, path headers = create_auth_header object - check_response self.class.post(full_path, :query => params, :body => bodyParams, :headers => headers) - + check_response self.class.post(full_path, query: params, body: bodyParams, headers: headers) rescue Pardot::ExpiredApiKeyError => e handle_expired_api_key :post, object, path, params, num_retries, e - rescue SocketError, Interrupt, EOFError, SystemCallError, Timeout::Error, MultiXml::ParseError => e - raise Pardot::NetError.new(e) + raise Pardot::NetError, e end - + protected - - def handle_expired_api_key method, object, path, params, num_retries, e + + # @deprecated With Salesforce OAuth, this method will never be invoked. + def handle_expired_api_key(method, object, path, params, num_retries, e) raise e unless num_retries == 0 - + reauthenticate - + send(method, object, path, params, 1) end - - def smooth_params object, params - return if object == "login" - + + def smooth_params(object, params) + return if object == 'login' + authenticate unless authenticated? - params.merge! :format => @format + params.merge! format: @format end - def create_auth_header object - return if object == "login" - { :Authorization => "Pardot api_key=#{@api_key}, user_key=#{@user_key}" } + def create_auth_header(object) + return if object == 'login' + + if using_salesforce_access_token? + { + :Authorization => "Bearer #{@salesforce_access_token}", + 'Pardot-Business-Unit-Id' => @business_unit_id + } + else + { Authorization: "Pardot api_key=#{@api_key}, user_key=#{@user_key}" } + end end - - def check_response http_response - rsp = http_response["rsp"] - - error = rsp["err"] if rsp - error ||= "Unknown Failure: #{rsp.inspect}" if rsp && rsp["stat"] == "fail" + + def check_response(http_response) + rsp = http_response['rsp'] + + error = rsp['err'] if rsp + error ||= "Unknown Failure: #{rsp.inspect}" if rsp && rsp['stat'] == 'fail' content = error['__content__'] if error.is_a?(Hash) - - if [error, content].include?("Invalid API key or user key") && @api_key - raise ExpiredApiKeyError.new @api_key + + if [error, content].include?('access_token is invalid') && using_salesforce_access_token? + raise AccessTokenExpiredError, + 'Access token is invalid. Use Salesforce OAuth to refresh the existing Salesforce access token or to retrieve a new token. See https://developer.salesforce.com/docs/atlas.en-us.mobile_sdk.meta/mobile_sdk/oauth_refresh_token_flow.htm for more information.' end - - raise ResponseError.new error if error - + raise ExpiredApiKeyError, @api_key if [error, content].include?('Invalid API key or user key') && @api_key + + raise ResponseError, error if error + rsp end - - def fullpath object, path - full = File.join("/api", object, "version", @version.to_s) - unless path.nil? - full = File.join(full, path) - end + + def fullpath(object, path) + full = File.join('/api', object, 'version', @version.to_s) + full = File.join(full, path) unless path.nil? full end - end end