exigo 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/exigo.gemspec +2 -2
- data/lib/exigo.rb +51 -4
- data/test/creds.sample.rb +14 -3
- data/test/test_exigo.rb +46 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/exigo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{exigo}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Moulton"]
|
12
|
-
s.date = %q{2011-05-
|
12
|
+
s.date = %q{2011-05-24}
|
13
13
|
s.description = %q{provides access to exigo's API without 'very much' knowledge of soap}
|
14
14
|
s.email = %q{dave@themoultons.net}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/exigo.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'savon'
|
2
2
|
|
3
3
|
class Exigo
|
4
|
-
attr_accessor :username,:password,:company,:wsdl,:namespacer
|
4
|
+
attr_accessor :username,:password,:company,:wsdl,:namespacer, :transaction_details
|
5
5
|
|
6
6
|
def initialize(username,password,company)
|
7
7
|
@username = username
|
@@ -12,19 +12,66 @@ class Exigo
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def method_missing(name, *args, &block)
|
15
|
+
payload = args[0].each_with_object({}) { |(k,v), h| h["api:#{k}"] = v }
|
16
|
+
|
17
|
+
make_request(name,payload)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Not yet complete
|
21
|
+
def new_order(shipping_info,order_properties,distributor_id,create_customer=true, test=false)
|
22
|
+
ship_to = {"api:FirstName" => shipping_info["api:FirstName"],
|
23
|
+
"api:LastName" => shipping_info["api:LastName"],
|
24
|
+
"api:Email" => shipping_info["api:Email"],
|
25
|
+
"api:Phone" => shipping_info["api:Phone"],
|
26
|
+
"api:Address1" => shipping_info["api:MainAddress1"],
|
27
|
+
"api:City" => shipping_info["api:MainCity"],
|
28
|
+
"api:State" => shipping_info["api:MainState"],
|
29
|
+
"api:Zip" => shipping_info["api:MainZip"],
|
30
|
+
"api:Country" => shipping_info["api:MainCountry"],
|
31
|
+
|
32
|
+
}
|
33
|
+
ret = { :success => true }
|
34
|
+
order_id = nil
|
35
|
+
begin
|
36
|
+
if create_customer
|
37
|
+
cc_res = make_request("create_customer", shipping_info)
|
38
|
+
|
39
|
+
ret[:new_customer_id] = cc_res[:customer_id]
|
40
|
+
|
41
|
+
order_info = ship_to.merge(order_properties)
|
42
|
+
|
43
|
+
order_res = make_request("create_order",order_info)
|
44
|
+
ret[:order_id] = order_res[:order_id]
|
45
|
+
end
|
46
|
+
rescue Exception=>e
|
47
|
+
ret[:success] = false
|
48
|
+
ret[:error] = e.to_s
|
49
|
+
|
50
|
+
if ret[:order_id]
|
51
|
+
|
52
|
+
#TODO: cancel order if there is an error after its created
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
ret
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def make_request(name,payload)
|
15
62
|
client = Savon::Client.new @wsdl
|
16
63
|
ns = @namespacer
|
17
64
|
auth = { "api:LoginName"=>@username, "api:Password"=>@password, "api:Company"=>@company }
|
18
|
-
payload = args[0].each_with_object({}) { |(k,v), h| h["api:#{k}"] = v }
|
19
65
|
action = name.to_s.camelcase
|
20
|
-
|
66
|
+
|
21
67
|
response = client.request "api:#{action}Request" do
|
22
|
-
http.headers["SOAPAction"] = "\"#{ns}#{action}\""
|
68
|
+
http.headers["SOAPAction"] = "\"#{ns}#{action}\""
|
23
69
|
soap.namespaces["xmlns:env"] = "http://schemas.xmlsoap.org/soap/envelope/"
|
24
70
|
soap.namespaces["xmlns:api"] = ns
|
25
71
|
soap.header = { "api:ApiAuthentication" => auth }
|
26
72
|
soap.body = payload
|
27
73
|
end
|
74
|
+
|
28
75
|
response.to_hash["#{name}_result".to_sym]
|
29
76
|
end
|
30
77
|
end
|
data/test/creds.sample.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
|
2
2
|
# A valid API user for logging into api.exigo.com
|
3
3
|
API_USERNAME = 'username'
|
4
4
|
API_PASSWORD = 'password'
|
@@ -7,5 +7,16 @@ class Test::Unit::TestCase
|
|
7
7
|
# A valid user in exigo that the api user has access to
|
8
8
|
EXIGO_USERNAME = 'username'
|
9
9
|
EXIGO_PASSWORD = 'password'
|
10
|
-
EXIGO_ID = 123
|
11
|
-
|
10
|
+
EXIGO_ID = 123
|
11
|
+
|
12
|
+
# Other implementation specific data
|
13
|
+
CURRENCY_CODE = "usd"
|
14
|
+
INITIAL_ORDER_STATUS = 0
|
15
|
+
SUCCESSFUL_ORDER_STATUS = 0
|
16
|
+
FAILED_ORDER_STATUS = 0
|
17
|
+
WAREHOUSE_ID = 0
|
18
|
+
SHIPPING_METHOD = 0
|
19
|
+
PRICE_TYPE = 0
|
20
|
+
ITEM_CODE = ""
|
21
|
+
ORDER_TYPE = "Default"
|
22
|
+
TEST_PRODUCT = ""
|
data/test/test_exigo.rb
CHANGED
@@ -16,4 +16,50 @@ class TestExigo < Test::Unit::TestCase
|
|
16
16
|
assert res[:result][:status] == "Success"
|
17
17
|
assert_equal EXIGO_ID.to_s, res[:customer_id]
|
18
18
|
end
|
19
|
+
|
20
|
+
should "create a new customer and a new order in exigo" do
|
21
|
+
conn = Exigo.new(API_USERNAME,API_PASSWORD,API_COMPANY)
|
22
|
+
|
23
|
+
customer = {"api:FirstName" => "Test",
|
24
|
+
"api:LastName" => "User",
|
25
|
+
"api:CustomerType" => "10",
|
26
|
+
"api:Email" => "test3254@example.com",
|
27
|
+
"api:Phone" => "8015551212",
|
28
|
+
"api:MainAddress1" => "123 Main St",
|
29
|
+
"api:MainCity" => "Salt Lake City",
|
30
|
+
"api:MainState" => "UT",
|
31
|
+
"api:MainZip" => "84001",
|
32
|
+
"api:MainCountry" => "US",
|
33
|
+
"api:CanLogin" => false,
|
34
|
+
"api:EnrollerID" => EXIGO_ID,
|
35
|
+
"api:InsertEnrollerTree" => "true",
|
36
|
+
"api:SponsorID" => EXIGO_ID,
|
37
|
+
"api:InsertUnilevelTree" => "true"
|
38
|
+
}
|
39
|
+
|
40
|
+
order_properties = { "api:CustomerID" => EXIGO_ID,
|
41
|
+
"api:OrderStatus" => "CCPending",
|
42
|
+
"api:CurrencyCode" => "usd",
|
43
|
+
"api:OrderType" => "APIOrder",
|
44
|
+
"api:OrderDate" => Time.now,
|
45
|
+
"api:WarehouseID" => 5,
|
46
|
+
"api:ShipMethodID" => 6,
|
47
|
+
"api:PriceType" => 1,
|
48
|
+
"api:Details" => { "api:OrderDetailRequest" => { "api:ItemCode" => TEST_PRODUCT,"api:Quantity" => 1 } } }
|
49
|
+
|
50
|
+
res = conn.new_order(customer,order_properties, EXIGO_ID, true, true)
|
51
|
+
assert_equal true,res[:success]
|
52
|
+
puts res.inspect
|
53
|
+
|
54
|
+
c = conn.get_customers(:CustomerID => res[:new_customer_id])
|
55
|
+
assert_equal("test3254@example.com",c[:customers][:customer_response][:email], "New customer not correct")
|
56
|
+
|
57
|
+
# delete user
|
58
|
+
if (res[:new_customer_id])
|
59
|
+
d = conn.update_customer(:CustomerID => res[:new_customer_id], :CustomerStatus => 0)
|
60
|
+
assert_equal "Success", d[:result][:status]
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
end
|
19
65
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: exigo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- David Moulton
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-24 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
requirements:
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
hash: -
|
119
|
+
hash: -2741708506165734724
|
120
120
|
segments:
|
121
121
|
- 0
|
122
122
|
version: "0"
|