class Exigo

Attributes

company[RW]
namespacer[RW]
password[RW]
transaction_details[RW]
username[RW]
wsdl[RW]

Public Class Methods

new(username,password,company) click to toggle source
# File lib/exigo.rb, line 6
def initialize(username,password,company)
  @username  = username
  @password  = password
  @company   = company
  @wsdl      = "http://api.exigo.com/3.0/ExigoApi.asmx?WSDL"
  @namespacer = "http://api.exigo.com/"
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
# File lib/exigo.rb, line 14
def method_missing(name, *args, &block)
  payload = args[0].each_with_object({}) { |(k,v), h| h["api:#{k}"] = v }

  make_request(name,payload)
end
new_order(shipping_info,order_properties,distributor_id,create_customer=true, test=false) click to toggle source

Not yet complete

# File lib/exigo.rb, line 21
def new_order(shipping_info,order_properties,distributor_id,create_customer=true, test=false)
  ship_to = {"api:FirstName" => shipping_info["api:FirstName"],
              "api:LastName"  => shipping_info["api:LastName"],
              "api:Email" => shipping_info["api:Email"],
              "api:Phone" => shipping_info["api:Phone"],
              "api:Address1" => shipping_info["api:MainAddress1"],
              "api:City" => shipping_info["api:MainCity"],
              "api:State" => shipping_info["api:MainState"],
              "api:Zip" => shipping_info["api:MainZip"],
              "api:Country" => shipping_info["api:MainCountry"],

              }
  ret = { :success => true }
  order_id = nil
  begin
    if create_customer
      cc_res = make_request("create_customer", shipping_info)

      ret[:new_customer_id] = cc_res[:customer_id]

      order_info = ship_to.merge(order_properties)

      order_res = make_request("create_order",order_info)
      ret[:order_id] = order_res[:order_id]
    end
  rescue Exception=>e
    ret[:success] = false
    ret[:error] = e.to_s

    if ret[:order_id]

      #TODO: cancel order if there is an error after its created
    end
  end

  ret
end

Protected Instance Methods

make_request(name,payload) click to toggle source
# File lib/exigo.rb, line 61
def make_request(name,payload)
  client = Savon::Client.new @wsdl
  ns = @namespacer
  auth   = { "api:LoginName"=>@username, "api:Password"=>@password, "api:Company"=>@company }
  action = name.to_s.camelcase

  response = client.request "api:#{action}Request" do
    http.headers["SOAPAction"] = "\"#{ns}#{action}\""
    soap.namespaces["xmlns:env"] = "http://schemas.xmlsoap.org/soap/envelope/"
    soap.namespaces["xmlns:api"] = ns
    soap.header = { "api:ApiAuthentication" => auth }
    soap.body = payload
  end

  response.to_hash["#{name}_result".to_sym]
end