class AmericommerceApi::Api

Constants

AUTHENTICATE_WSDL
NAMESPACES
WSDL_POSTFIX

Public Class Methods

new(options) click to toggle source
# File lib/americommerce/api.rb, line 12
def initialize(options)

  @log_level = options[:log_level] || :warn
  @logger = options[:logger] || $stdout
  @timeout = options[:timeout] || 60
  @ac_header = {
      'AmeriCommerceHeaderInfo' => {
          'UserName' => options[:username],
          'Password' => options[:password],
          'SecurityToken' => options[:token]
      }
  }

  @store_domain = options[:store_domain] + WSDL_POSTFIX

  init_client(@ac_header, @store_domain)
end

Public Instance Methods

get_all_order_statuses() click to toggle source
# File lib/americommerce/api.rb, line 44
def get_all_order_statuses
  request(:order_status_get_all)
end
get_orders(options = {}) click to toggle source
# File lib/americommerce/api.rb, line 30
def get_orders(options = {})
  start_date = options[:start_date] || DateTime.new
  end_date = options[:end_date] || DateTime.now
  request(:order_get_by_edit_date_range_pre_filled, {'pdtStartDateTime' => start_date.to_datetime, 'pdtEndDateTime' => end_date.to_datetime})
end
get_product_by_id(product_id) click to toggle source
# File lib/americommerce/api.rb, line 36
def get_product_by_id(product_id)
  request(:product_get_by_key, {'piitemID' => product_id})
end
get_product_url(product_id) click to toggle source
# File lib/americommerce/api.rb, line 40
def get_product_url(product_id)
  request(:product_get_current_url, {'piProductID' => product_id})
end
ping() click to toggle source
# File lib/americommerce/api.rb, line 48
def ping
  begin
    wsdl = AUTHENTICATE_WSDL % {store_domain: @store_domain}
    init_client(@ac_header,wsdl)
    response = request(:authenticate)
    raise AmericommerceApi::Exceptions::InvalidCredentials unless response == true
  rescue
    raise AmericommerceApi::Exceptions::InvalidCredentials
  ensure
    init_client(@ac_header, @store_domain)
  end
end

Private Instance Methods

init_client(ac_header, wsdl) click to toggle source
# File lib/americommerce/api.rb, line 73
def init_client(ac_header, wsdl)
  @client = Savon.client({
                             :ssl_verify_mode  => :none,
                             :ssl_version      => :TLSv1,
                             :wsdl             => wsdl,
                             :soap_header      => ac_header,
                             :namespaces       => NAMESPACES,
                             :log_level        => @log_level,
                             :logger           => @logger,
                             :read_timeout     => @timeout,
                             :open_timeout     => @timeout
                         })
end
request(call_action, request_params={}) click to toggle source
# File lib/americommerce/api.rb, line 63
def request(call_action, request_params={})
  begin
    response = @client.call(call_action, message: request_params)
    return AmericommerceApi::Response.format(response, call_action)
  rescue Exception => e
    #check invalid by message of error because code returned by americommerce is 500 and not 4**
    raise e.message.include?('Unauthorized Request') ? AmericommerceApi::Exceptions::InvalidCredentials : e
  end
end