ruby-ecomm-client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. data/.gitignore +22 -0
  2. data/.ruby-version +1 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +52 -0
  6. data/Rakefile +12 -0
  7. data/fixtures/vcr_cassettes/account_info/default.yml +42 -0
  8. data/fixtures/vcr_cassettes/account_info/unknown/resource_id.yml +42 -0
  9. data/fixtures/vcr_cassettes/account_info/unknown/resource_type.yml +42 -0
  10. data/fixtures/vcr_cassettes/account_info/unknown/source_tree_id.yml +42 -0
  11. data/fixtures/vcr_cassettes/downgrade/default.yml +42 -0
  12. data/fixtures/vcr_cassettes/downgrade/noop.yml +42 -0
  13. data/fixtures/vcr_cassettes/downgrade/unknown/resource_id.yml +42 -0
  14. data/fixtures/vcr_cassettes/downgrade/unknown/resource_type.yml +42 -0
  15. data/fixtures/vcr_cassettes/downgrade/unknown/target_tree_id.yml +42 -0
  16. data/fixtures/vcr_cassettes/express_checkout/configured.yml +40 -0
  17. data/fixtures/vcr_cassettes/express_checkout/unknown.yml +40 -0
  18. data/fixtures/vcr_cassettes/transitions/default/unknown/source_tree_id.yml +42 -0
  19. data/fixtures/vcr_cassettes/transitions/many.yml +42 -0
  20. data/fixtures/vcr_cassettes/transitions/one.yml +42 -0
  21. data/fixtures/vcr_cassettes/transitions/unknown/source_tree_id.yml +42 -0
  22. data/fixtures/vcr_cassettes/upgrade/default.yml +42 -0
  23. data/fixtures/vcr_cassettes/upgrade/noop.yml +42 -0
  24. data/fixtures/vcr_cassettes/upgrade/unknown/resource_id.yml +42 -0
  25. data/fixtures/vcr_cassettes/upgrade/unknown/resource_type.yml +42 -0
  26. data/fixtures/vcr_cassettes/upgrade/unknown/target_tree_id.yml +42 -0
  27. data/lib/ruby-ecomm-client.rb +10 -0
  28. data/lib/ruby-ecomm-client/client.rb +148 -0
  29. data/lib/ruby-ecomm-client/converter.rb +45 -0
  30. data/lib/ruby-ecomm-client/error.rb +12 -0
  31. data/lib/ruby-ecomm-client/version.rb +3 -0
  32. data/lib/ruby-ecomm-client/wsdl/manager.wsdl +296 -0
  33. data/lib/ruby-ecomm-client/wsdl/profile.wsdl +66 -0
  34. data/lib/ruby-ecomm-client/wsdl/purchase.wsdl +74 -0
  35. data/ruby-ecomm-client.gemspec +30 -0
  36. data/script/cibuild +10 -0
  37. data/spec/ruby-ecomm-client/client_spec.rb +297 -0
  38. data/spec/ruby-ecomm-client/converter_spec.rb +96 -0
  39. data/spec/ruby-ecomm-client/error_spec.rb +39 -0
  40. data/spec/spec_helper.rb +21 -0
  41. metadata +237 -0
@@ -0,0 +1,42 @@
1
+ ---
2
+ recorded_with: VCR 2.8.0
3
+ http_interactions:
4
+ - request:
5
+ method: post
6
+ uri: http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx
7
+ body:
8
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="#Bonsai"><env:Body><tns:ChangeAccountRequest><tns:RenewalPFID>0</tns:RenewalPFID><tns:IDType>ORION</tns:IDType><tns:ItemRequestXml>&lt;itemRequest/&gt;</tns:ItemRequestXml><tns:AccountChangeXml>&lt;ClientChange TreeID='73223' ShopperID='255528'/&gt;</tns:AccountChangeXml><tns:RenewalPeriods>0</tns:RenewalPeriods><tns:ResourceType>outright</tns:ResourceType><tns:ResourceID>e1dd6ab9-b072-11e3-9aad-005056953ce3</tns:ResourceID></tns:ChangeAccountRequest></env:Body></env:Envelope>
9
+ headers:
10
+ soapaction:
11
+ - "\"#Bonsai/ChangeAccountRequest\""
12
+ accept:
13
+ - "*/*"
14
+ content-length:
15
+ - "697"
16
+ content-type:
17
+ - text/xml;charset=UTF-8
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ x-aspnet-version:
24
+ - 4.0.30319
25
+ server:
26
+ - Microsoft-IIS/7.0
27
+ connection:
28
+ - close
29
+ date:
30
+ - Wed, 26 Mar 2014 03:26:23 GMT
31
+ cache-control:
32
+ - private, max-age=0
33
+ content-length:
34
+ - "411"
35
+ x-powered-by:
36
+ - ASP.NET
37
+ content-type:
38
+ - text/xml; charset=utf-8
39
+ body:
40
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ChangeAccountRequestResponse xmlns="#Bonsai"><ChangeAccountRequestResult>-1</ChangeAccountRequestResult><ResultCode>-999</ResultCode></ChangeAccountRequestResponse></soap:Body></soap:Envelope>
41
+ http_version: "1.1"
42
+ recorded_at: Wed, 26 Mar 2014 03:26:24 GMT
@@ -0,0 +1,10 @@
1
+ require 'savon'
2
+
3
+ require 'ruby-ecomm-client/version'
4
+ require 'ruby-ecomm-client/error'
5
+ require 'ruby-ecomm-client/converter'
6
+ require 'ruby-ecomm-client/client'
7
+
8
+ module RubyEcommClient
9
+ # Your code goes here...
10
+ end
@@ -0,0 +1,148 @@
1
+ module RubyEcommClient
2
+ class Client
3
+ include ResponseConverter
4
+
5
+ ENDPOINTS_MANAGER = {
6
+ :development => 'http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx',
7
+ :test => 'http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx',
8
+ :production => 'http://gdbonsaiXv01.prod.mesa1.gdg/bonsai/bonsaimanager/service.asmx',
9
+ :qa => 'http://bonsai.test.glbt1.gdg/bonsai/bonsaimanager/service.asmx'
10
+ }
11
+ ENDPOINTS_PROFILE = {
12
+ :development => 'http://gdcomm.dev.glbt1.gdg/WSgdInstantPurchasePublic/Service.asmx',
13
+ :test => 'http://gdcomm.dev.glbt1.gdg/WSgdInstantPurchasePublic/Service.asmx',
14
+ :production => 'http://gdcomm.godaddy.com/WSgdInstantPurchasePublic/Service.asmx',
15
+ :qa => 'http://gdcomm.test.glbt1.gdg/WSgdInstantPurchasePublic/Service.asmx'
16
+ }
17
+ ENDPOINTS_PURCHASE = {
18
+ :development => 'https://bonsaipurchase.dev.glbt1.gdg/BonsaiPurchase/Service.asmx',
19
+ :test => 'https://bonsaipurchase.dev.glbt1.gdg/BonsaiPurchase/Service.asmx',
20
+ :production => 'https://bonsaipurchase.prod.mesa1.gdg/BonsaiPurchase/Service.asmx',
21
+ :qa => 'https://bonsaipurchase.test.glbt1.gdg/BonsaiPurchase/Service.asmx'
22
+ }
23
+
24
+ ID_TYPE = 'ORION'
25
+
26
+ WSDL_MANAGER = 'manager.wsdl'
27
+ WSDL_PROFILE = 'profile.wsdl'
28
+ WSDL_PURCHASE = 'purchase.wsdl'
29
+
30
+ attr_accessor :shopper_id, :resource_type, :resource_id
31
+
32
+ def initialize(shopper_id, resource_type, resource_id)
33
+ raise ArgumentError.new('shopper_id must be specified') if blank?(shopper_id)
34
+ raise ArgumentError.new('resource_type must be specified') if blank?(resource_type)
35
+ raise ArgumentError.new('resource_id must be specified') if blank?(resource_id)
36
+
37
+ @shopper_id = shopper_id
38
+ @resource_type = resource_type
39
+ @resource_id = resource_id
40
+ end
41
+
42
+ def self.environment
43
+ ((defined?(Rails) ? Rails.env : ENV['RAILS_ENV']) || 'development').to_sym
44
+ end
45
+
46
+ def express_checkout?
47
+ result = client_profile.call(:shopper_has_instant_purchase_payment, :message => {
48
+ 'sShopperID' => @shopper_id
49
+ })
50
+ response = convert_value(result.body[:shopper_has_instant_purchase_payment_response])
51
+ response[:b_has_instant_purchase_payment]
52
+ end
53
+
54
+ def account_info(source_tree_id = 0)
55
+ result = client_manager.call(:get_account_xml, :message => {
56
+ 'ResourceID' => @resource_id,
57
+ 'ResourceType' => @resource_type,
58
+ 'IDType' => ID_TYPE,
59
+ 'TreeID' => source_tree_id,
60
+ 'PrivateLabelID' => 1
61
+ })
62
+ response = convert_response(result.body[:get_account_xml_response])
63
+ if response[:result_code] == 0
64
+ response[:account_xml][:bonsai][:bonsai]
65
+ else
66
+ raise RubyEcommError.new(response[:result_code])
67
+ end
68
+ end
69
+
70
+ def transitions(source_tree_id = 0)
71
+ transitions = account_info(source_tree_id)[:tree][:transition]
72
+ transitions.is_a?(Array) ? transitions : [transitions]
73
+ end
74
+
75
+ def upgrade(target_tree_id)
76
+ raise ArgumentError.new('target_tree_id must be specified') if blank?(target_tree_id)
77
+
78
+ result = client_manager.call(:change_account_request, :message => {
79
+ 'ResourceID' => @resource_id,
80
+ 'ResourceType' => @resource_type,
81
+ 'IDType' => ID_TYPE,
82
+ 'AccountChangeXml' => "<ClientChange TreeID='#{target_tree_id}' ShopperID='#{@shopper_id}'/>",
83
+ 'RenewalPFID' => 0,
84
+ 'RenewalPeriods' => 0,
85
+ 'ItemRequestXml' => '<itemRequest/>'
86
+ })
87
+ response = convert_response(result.body[:change_account_request_response])
88
+ if response[:result_code] == 0
89
+ response[:change_account_request_result]
90
+ else
91
+ raise RubyEcommError.new(response[:result_code], response[:change_account_request_result])
92
+ end
93
+ end
94
+
95
+ def downgrade(target_tree_id = 0)
96
+ upgrade(target_tree_id)
97
+ end
98
+
99
+ private
100
+
101
+ def blank?(value)
102
+ value.nil? || value.to_s == ''
103
+ end
104
+
105
+ def wsdl_path
106
+ "#{File.expand_path(File.dirname(__FILE__))}/wsdl/"
107
+ end
108
+
109
+ def shared_globals(globals)
110
+ globals.convert_response_tags_to TAG_CONVERTER
111
+ globals.log false
112
+ globals.logger Rails.logger if defined?(Rails)
113
+ globals.namespace '#Bonsai'
114
+ end
115
+
116
+ def client_manager
117
+ @client_manager ||= Savon.client do |globals|
118
+ shared_globals(globals)
119
+
120
+ globals.wsdl "#{wsdl_path}#{WSDL_MANAGER}"
121
+ globals.endpoint ENDPOINTS_MANAGER[Client.environment]
122
+ end
123
+ end
124
+
125
+ def client_profile
126
+ @client_profile ||= Savon.client do |globals|
127
+ shared_globals(globals)
128
+
129
+ globals.wsdl "#{wsdl_path}#{WSDL_PROFILE}"
130
+ globals.endpoint ENDPOINTS_PROFILE[Client.environment]
131
+ globals.namespace 'http://tempuri.org/'
132
+ end
133
+ end
134
+
135
+ def client_purchase
136
+ @client_purchase ||= Savon.client do |globals|
137
+ shared_globals(globals)
138
+
139
+ globals.wsdl "#{wsdl_path}#{WSDL_PURCHASE}"
140
+ globals.endpoint ENDPOINTS_PURCHASE[Client.environment]
141
+
142
+ globals.ssl_verify_mode = :none
143
+ globals.ssl_cert_file = 'config/client.crt'
144
+ globals.ssl_cert_key_file = 'config/client.key'
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,45 @@
1
+ module ResponseConverter
2
+ TAG_CONVERTER = lambda do |tag|
3
+ tag.snakecase.gsub(/@/, '').gsub(/unified_/, '').gsub(/current_/, '').to_sym
4
+ end
5
+
6
+ def convert_value(input)
7
+ if input == 'True' || input == 'true' || input == 'TRUE'
8
+ return true
9
+ elsif input == 'False' || input == 'false' || input == 'FALSE'
10
+ return false
11
+ else
12
+ begin
13
+ return Integer(input)
14
+ rescue StandardError => e
15
+ begin
16
+ return Float(input)
17
+ rescue StandardError => e
18
+ end
19
+ end
20
+ end
21
+ input
22
+ end
23
+
24
+ def convert_response(input)
25
+ if input.is_a?(Hash)
26
+ input.each do |key, value|
27
+ if value.is_a?(Hash) || value.is_a?(Array)
28
+ convert_response(value)
29
+ else
30
+ input[key] = convert_value(value)
31
+ end
32
+ end
33
+ elsif input.is_a?(Array)
34
+ input.each_with_index do |value, index|
35
+ if value.is_a?(Hash) || value.is_a?(Array)
36
+ convert_response(value)
37
+ else
38
+ input[index] = convert_value(value)
39
+ end
40
+ end
41
+ else
42
+ input
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,12 @@
1
+ class RubyEcommError < RuntimeError
2
+ attr_accessor :result_code, :request_result
3
+
4
+ def initialize(result_code = :unknown, request_result = nil)
5
+ raise ArgumentError.new('result_code must be specified') if result_code.nil? || result_code.to_s == ''
6
+ raise ArgumentError.new('request_result must not be blank') if !request_result.nil? && request_result.to_s == ''
7
+
8
+ super("Error received from Ecomm web service: #{result_code}#{', request_result=' + request_result.to_s}")
9
+ @result_code = result_code
10
+ @request_result = request_result
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module RubyEcommClient
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,296 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="#Bonsai" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="#Bonsai" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
3
+ <wsdl:types>
4
+ <s:schema elementFormDefault="qualified" targetNamespace="#Bonsai">
5
+ <s:element name="GetAccountXml">
6
+ <s:complexType>
7
+ <s:sequence>
8
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceID" type="s:string" />
9
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceType" type="s:string" />
10
+ <s:element minOccurs="0" maxOccurs="1" name="IDType" type="s:string" />
11
+ <s:element minOccurs="1" maxOccurs="1" name="TreeID" type="s:int" />
12
+ <s:element minOccurs="1" maxOccurs="1" name="PrivateLabelID" type="s:int" />
13
+ </s:sequence>
14
+ </s:complexType>
15
+ </s:element>
16
+ <s:element name="GetAccountXmlResponse">
17
+ <s:complexType>
18
+ <s:sequence>
19
+ <s:element minOccurs="1" maxOccurs="1" name="ResultCode" type="s:int" />
20
+ <s:element minOccurs="0" maxOccurs="1" name="AccountXml">
21
+ <s:complexType mixed="true">
22
+ <s:sequence>
23
+ <s:any />
24
+ </s:sequence>
25
+ </s:complexType>
26
+ </s:element>
27
+ </s:sequence>
28
+ </s:complexType>
29
+ </s:element>
30
+ <s:element name="ChangeAccountRequest">
31
+ <s:complexType>
32
+ <s:sequence>
33
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceID" type="s:string" />
34
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceType" type="s:string" />
35
+ <s:element minOccurs="0" maxOccurs="1" name="IDType" type="s:string" />
36
+ <s:element minOccurs="0" maxOccurs="1" name="AccountChangeXml" type="s:string" />
37
+ <s:element minOccurs="1" maxOccurs="1" name="RenewalPFID" type="s:int" />
38
+ <s:element minOccurs="1" maxOccurs="1" name="RenewalPeriods" type="s:int" />
39
+ <s:element minOccurs="0" maxOccurs="1" name="ItemRequestXml" type="s:string" />
40
+ </s:sequence>
41
+ </s:complexType>
42
+ </s:element>
43
+ <s:element name="ChangeAccountRequestResponse">
44
+ <s:complexType>
45
+ <s:sequence>
46
+ <s:element minOccurs="1" maxOccurs="1" name="ChangeAccountRequestResult" type="s:int" />
47
+ <s:element minOccurs="1" maxOccurs="1" name="ResultCode" type="s:int" />
48
+ </s:sequence>
49
+ </s:complexType>
50
+ </s:element>
51
+ <s:element name="GetRenewalOptions">
52
+ <s:complexType>
53
+ <s:sequence>
54
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceID" type="s:string" />
55
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceType" type="s:string" />
56
+ <s:element minOccurs="0" maxOccurs="1" name="IDType" type="s:string" />
57
+ <s:element minOccurs="1" maxOccurs="1" name="PrivateLabelID" type="s:int" />
58
+ </s:sequence>
59
+ </s:complexType>
60
+ </s:element>
61
+ <s:element name="GetRenewalOptionsResponse">
62
+ <s:complexType>
63
+ <s:sequence>
64
+ <s:element minOccurs="0" maxOccurs="1" name="GetRenewalOptionsResult" type="tns:RenewalResponse" />
65
+ </s:sequence>
66
+ </s:complexType>
67
+ </s:element>
68
+ <s:complexType name="RenewalResponse">
69
+ <s:sequence>
70
+ <s:element minOccurs="0" maxOccurs="1" name="RenewalOptions" type="tns:ArrayOfRenewalOption" />
71
+ <s:element minOccurs="1" maxOccurs="1" name="ResultCode" type="s:int" />
72
+ </s:sequence>
73
+ </s:complexType>
74
+ <s:complexType name="ArrayOfRenewalOption">
75
+ <s:sequence>
76
+ <s:element minOccurs="0" maxOccurs="unbounded" name="RenewalOption" type="tns:RenewalOption" />
77
+ </s:sequence>
78
+ </s:complexType>
79
+ <s:complexType name="RenewalOption">
80
+ <s:sequence>
81
+ <s:element minOccurs="1" maxOccurs="1" name="UnifiedProductID" type="s:int" />
82
+ <s:element minOccurs="1" maxOccurs="1" name="MinRenewalPeriods" type="s:int" />
83
+ <s:element minOccurs="1" maxOccurs="1" name="MaxRenewalPeriods" type="s:int" />
84
+ <s:element minOccurs="1" maxOccurs="1" name="RenewalLength" type="s:int" />
85
+ <s:element minOccurs="0" maxOccurs="1" name="RenewalType" type="s:string" />
86
+ </s:sequence>
87
+ </s:complexType>
88
+ <s:element name="GetRenewalOptionsByUnifiedProductId">
89
+ <s:complexType>
90
+ <s:sequence>
91
+ <s:element minOccurs="1" maxOccurs="1" name="UnifiedProductID" type="s:int" />
92
+ <s:element minOccurs="1" maxOccurs="1" name="PrivateLabelID" type="s:int" />
93
+ </s:sequence>
94
+ </s:complexType>
95
+ </s:element>
96
+ <s:element name="GetRenewalOptionsByUnifiedProductIdResponse">
97
+ <s:complexType>
98
+ <s:sequence>
99
+ <s:element minOccurs="0" maxOccurs="1" name="GetRenewalOptionsByUnifiedProductIdResult" type="tns:RenewalResponse" />
100
+ </s:sequence>
101
+ </s:complexType>
102
+ </s:element>
103
+ <s:element name="GetTransitionsAndRank">
104
+ <s:complexType>
105
+ <s:sequence>
106
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceID" type="s:string" />
107
+ <s:element minOccurs="0" maxOccurs="1" name="ResourceType" type="s:string" />
108
+ <s:element minOccurs="0" maxOccurs="1" name="IDType" type="s:string" />
109
+ <s:element minOccurs="1" maxOccurs="1" name="UnifiedProductID" type="s:int" />
110
+ <s:element minOccurs="1" maxOccurs="1" name="IsFree" nillable="true" type="s:boolean" />
111
+ </s:sequence>
112
+ </s:complexType>
113
+ </s:element>
114
+ <s:element name="GetTransitionsAndRankResponse">
115
+ <s:complexType>
116
+ <s:sequence>
117
+ <s:element minOccurs="0" maxOccurs="1" name="GetTransitionsAndRankResult" type="tns:TransitionResponse" />
118
+ </s:sequence>
119
+ </s:complexType>
120
+ </s:element>
121
+ <s:complexType name="TransitionResponse">
122
+ <s:sequence>
123
+ <s:element minOccurs="1" maxOccurs="1" name="ResultCode" type="s:int" />
124
+ <s:element minOccurs="0" maxOccurs="1" name="Transitions" type="tns:ArrayOfRankTransition" />
125
+ </s:sequence>
126
+ </s:complexType>
127
+ <s:complexType name="ArrayOfRankTransition">
128
+ <s:sequence>
129
+ <s:element minOccurs="0" maxOccurs="unbounded" name="RankTransition" nillable="true" type="tns:RankTransition" />
130
+ </s:sequence>
131
+ </s:complexType>
132
+ <s:complexType name="RankTransition">
133
+ <s:attribute name="NodeName" type="s:string" />
134
+ <s:attribute name="NodeRank" type="s:int" use="required" />
135
+ <s:attribute name="RelativeNodeRank" type="s:int" use="required" />
136
+ <s:attribute name="UnifiedProductID" type="s:int" use="required" />
137
+ </s:complexType>
138
+ </s:schema>
139
+ </wsdl:types>
140
+ <wsdl:message name="GetAccountXmlSoapIn">
141
+ <wsdl:part name="parameters" element="tns:GetAccountXml" />
142
+ </wsdl:message>
143
+ <wsdl:message name="GetAccountXmlSoapOut">
144
+ <wsdl:part name="parameters" element="tns:GetAccountXmlResponse" />
145
+ </wsdl:message>
146
+ <wsdl:message name="ChangeAccountRequestSoapIn">
147
+ <wsdl:part name="parameters" element="tns:ChangeAccountRequest" />
148
+ </wsdl:message>
149
+ <wsdl:message name="ChangeAccountRequestSoapOut">
150
+ <wsdl:part name="parameters" element="tns:ChangeAccountRequestResponse" />
151
+ </wsdl:message>
152
+ <wsdl:message name="GetRenewalOptionsSoapIn">
153
+ <wsdl:part name="parameters" element="tns:GetRenewalOptions" />
154
+ </wsdl:message>
155
+ <wsdl:message name="GetRenewalOptionsSoapOut">
156
+ <wsdl:part name="parameters" element="tns:GetRenewalOptionsResponse" />
157
+ </wsdl:message>
158
+ <wsdl:message name="GetRenewalOptionsByUnifiedProductIdSoapIn">
159
+ <wsdl:part name="parameters" element="tns:GetRenewalOptionsByUnifiedProductId" />
160
+ </wsdl:message>
161
+ <wsdl:message name="GetRenewalOptionsByUnifiedProductIdSoapOut">
162
+ <wsdl:part name="parameters" element="tns:GetRenewalOptionsByUnifiedProductIdResponse" />
163
+ </wsdl:message>
164
+ <wsdl:message name="GetTransitionsAndRankSoapIn">
165
+ <wsdl:part name="parameters" element="tns:GetTransitionsAndRank" />
166
+ </wsdl:message>
167
+ <wsdl:message name="GetTransitionsAndRankSoapOut">
168
+ <wsdl:part name="parameters" element="tns:GetTransitionsAndRankResponse" />
169
+ </wsdl:message>
170
+ <wsdl:portType name="ServiceSoap">
171
+ <wsdl:operation name="GetAccountXml">
172
+ <wsdl:input message="tns:GetAccountXmlSoapIn" />
173
+ <wsdl:output message="tns:GetAccountXmlSoapOut" />
174
+ </wsdl:operation>
175
+ <wsdl:operation name="ChangeAccountRequest">
176
+ <wsdl:input message="tns:ChangeAccountRequestSoapIn" />
177
+ <wsdl:output message="tns:ChangeAccountRequestSoapOut" />
178
+ </wsdl:operation>
179
+ <wsdl:operation name="GetRenewalOptions">
180
+ <wsdl:input message="tns:GetRenewalOptionsSoapIn" />
181
+ <wsdl:output message="tns:GetRenewalOptionsSoapOut" />
182
+ </wsdl:operation>
183
+ <wsdl:operation name="GetRenewalOptionsByUnifiedProductId">
184
+ <wsdl:input message="tns:GetRenewalOptionsByUnifiedProductIdSoapIn" />
185
+ <wsdl:output message="tns:GetRenewalOptionsByUnifiedProductIdSoapOut" />
186
+ </wsdl:operation>
187
+ <wsdl:operation name="GetTransitionsAndRank">
188
+ <wsdl:input message="tns:GetTransitionsAndRankSoapIn" />
189
+ <wsdl:output message="tns:GetTransitionsAndRankSoapOut" />
190
+ </wsdl:operation>
191
+ </wsdl:portType>
192
+ <wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
193
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
194
+ <wsdl:operation name="GetAccountXml">
195
+ <soap:operation soapAction="#Bonsai/GetAccountXml" style="document" />
196
+ <wsdl:input>
197
+ <soap:body use="literal" />
198
+ </wsdl:input>
199
+ <wsdl:output>
200
+ <soap:body use="literal" />
201
+ </wsdl:output>
202
+ </wsdl:operation>
203
+ <wsdl:operation name="ChangeAccountRequest">
204
+ <soap:operation soapAction="#Bonsai/ChangeAccountRequest" style="document" />
205
+ <wsdl:input>
206
+ <soap:body use="literal" />
207
+ </wsdl:input>
208
+ <wsdl:output>
209
+ <soap:body use="literal" />
210
+ </wsdl:output>
211
+ </wsdl:operation>
212
+ <wsdl:operation name="GetRenewalOptions">
213
+ <soap:operation soapAction="#Bonsai/GetRenewalOptions" style="document" />
214
+ <wsdl:input>
215
+ <soap:body use="literal" />
216
+ </wsdl:input>
217
+ <wsdl:output>
218
+ <soap:body use="literal" />
219
+ </wsdl:output>
220
+ </wsdl:operation>
221
+ <wsdl:operation name="GetRenewalOptionsByUnifiedProductId">
222
+ <soap:operation soapAction="#Bonsai/GetRenewalOptionsByUnifiedProductId" style="document" />
223
+ <wsdl:input>
224
+ <soap:body use="literal" />
225
+ </wsdl:input>
226
+ <wsdl:output>
227
+ <soap:body use="literal" />
228
+ </wsdl:output>
229
+ </wsdl:operation>
230
+ <wsdl:operation name="GetTransitionsAndRank">
231
+ <soap:operation soapAction="#Bonsai/GetTransitionsAndRank" style="document" />
232
+ <wsdl:input>
233
+ <soap:body use="literal" />
234
+ </wsdl:input>
235
+ <wsdl:output>
236
+ <soap:body use="literal" />
237
+ </wsdl:output>
238
+ </wsdl:operation>
239
+ </wsdl:binding>
240
+ <wsdl:binding name="ServiceSoap12" type="tns:ServiceSoap">
241
+ <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
242
+ <wsdl:operation name="GetAccountXml">
243
+ <soap12:operation soapAction="#Bonsai/GetAccountXml" style="document" />
244
+ <wsdl:input>
245
+ <soap12:body use="literal" />
246
+ </wsdl:input>
247
+ <wsdl:output>
248
+ <soap12:body use="literal" />
249
+ </wsdl:output>
250
+ </wsdl:operation>
251
+ <wsdl:operation name="ChangeAccountRequest">
252
+ <soap12:operation soapAction="#Bonsai/ChangeAccountRequest" style="document" />
253
+ <wsdl:input>
254
+ <soap12:body use="literal" />
255
+ </wsdl:input>
256
+ <wsdl:output>
257
+ <soap12:body use="literal" />
258
+ </wsdl:output>
259
+ </wsdl:operation>
260
+ <wsdl:operation name="GetRenewalOptions">
261
+ <soap12:operation soapAction="#Bonsai/GetRenewalOptions" style="document" />
262
+ <wsdl:input>
263
+ <soap12:body use="literal" />
264
+ </wsdl:input>
265
+ <wsdl:output>
266
+ <soap12:body use="literal" />
267
+ </wsdl:output>
268
+ </wsdl:operation>
269
+ <wsdl:operation name="GetRenewalOptionsByUnifiedProductId">
270
+ <soap12:operation soapAction="#Bonsai/GetRenewalOptionsByUnifiedProductId" style="document" />
271
+ <wsdl:input>
272
+ <soap12:body use="literal" />
273
+ </wsdl:input>
274
+ <wsdl:output>
275
+ <soap12:body use="literal" />
276
+ </wsdl:output>
277
+ </wsdl:operation>
278
+ <wsdl:operation name="GetTransitionsAndRank">
279
+ <soap12:operation soapAction="#Bonsai/GetTransitionsAndRank" style="document" />
280
+ <wsdl:input>
281
+ <soap12:body use="literal" />
282
+ </wsdl:input>
283
+ <wsdl:output>
284
+ <soap12:body use="literal" />
285
+ </wsdl:output>
286
+ </wsdl:operation>
287
+ </wsdl:binding>
288
+ <wsdl:service name="Service">
289
+ <wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">
290
+ <soap:address location="http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx" />
291
+ </wsdl:port>
292
+ <wsdl:port name="ServiceSoap12" binding="tns:ServiceSoap12">
293
+ <soap12:address location="http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx" />
294
+ </wsdl:port>
295
+ </wsdl:service>
296
+ </wsdl:definitions>