diff --git a/lib/infusionsoft/configuration.rb b/lib/infusionsoft/configuration.rb index 790e242..a39210d 100644 --- a/lib/infusionsoft/configuration.rb +++ b/lib/infusionsoft/configuration.rb @@ -7,6 +7,7 @@ module Configuration VALID_OPTION_KEYS = [ :api_url, :api_key, + :api_token, :api_logger, :use_oauth, :user_agent # allows you to change the User-Agent of the request headers @@ -48,6 +49,10 @@ def user_agent def api_logger @api_logger || Infusionsoft::APILogger.new end + + def api_key + @api_key || 'na' + end end end diff --git a/lib/infusionsoft/connection.rb b/lib/infusionsoft/connection.rb index a73552e..8e7b5a1 100755 --- a/lib/infusionsoft/connection.rb +++ b/lib/infusionsoft/connection.rb @@ -5,8 +5,20 @@ module Infusionsoft module Connection private + def connection(service_call, *args) - path = use_oauth ? "/crm/xmlrpc/v1?access_token=#{api_key}" : "/api/xmlrpc" + + headers = {'User-Agent' => user_agent} + + if api_token + api_url = 'api.infusionsoft.com' + path = "/crm/xmlrpc/v1" + headers["X-Keap-API-Key"] = api_token + elsif use_oauth + path = "/crm/xmlrpc/v1?access_token=#{api_key}" + else + path = "/api/xmlrpc" + end client = XMLRPC::Client.new3({ 'host' => api_url, @@ -14,7 +26,9 @@ def connection(service_call, *args) 'port' => 443, 'use_ssl' => true }) - client.http_header_extra = {'User-Agent' => user_agent} + + client.http_header_extra = headers + begin api_logger.info "CALL: #{service_call} api_url: #{api_url} at:#{Time.now} args:#{args.inspect}" result = client.call("#{service_call}", api_key, *args)