synergy_wholesale 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +19 -0
  5. data/CHANGELOG.md +2 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +20 -0
  8. data/README.md +59 -0
  9. data/Rakefile +19 -0
  10. data/lib/synergy_wholesale.rb +17 -0
  11. data/lib/synergy_wholesale/adapter.rb +41 -0
  12. data/lib/synergy_wholesale/api.rb +29 -0
  13. data/lib/synergy_wholesale/base_response.rb +55 -0
  14. data/lib/synergy_wholesale/configuration.rb +22 -0
  15. data/lib/synergy_wholesale/errors.rb +3 -0
  16. data/lib/synergy_wholesale/errors/bad_data_error.rb +6 -0
  17. data/lib/synergy_wholesale/errors/error.rb +15 -0
  18. data/lib/synergy_wholesale/errors/response_error.rb +16 -0
  19. data/lib/synergy_wholesale/inflector.rb +67 -0
  20. data/lib/synergy_wholesale/operation.rb +21 -0
  21. data/lib/synergy_wholesale/operations/check_domain.rb +34 -0
  22. data/lib/synergy_wholesale/operations/disable_auto_renewal.rb +27 -0
  23. data/lib/synergy_wholesale/operations/domain_register.rb +51 -0
  24. data/lib/synergy_wholesale/operations/domain_register_au.rb +46 -0
  25. data/lib/synergy_wholesale/operations/enable_auto_renewal.rb +27 -0
  26. data/lib/synergy_wholesale/response_generator.rb +18 -0
  27. data/lib/synergy_wholesale/types.rb +22 -0
  28. data/lib/synergy_wholesale/types/au_contact.rb +61 -0
  29. data/lib/synergy_wholesale/types/au_domain.rb +17 -0
  30. data/lib/synergy_wholesale/types/au_id_type.rb +28 -0
  31. data/lib/synergy_wholesale/types/au_organisation_type.rb +33 -0
  32. data/lib/synergy_wholesale/types/au_postcode.rb +13 -0
  33. data/lib/synergy_wholesale/types/au_registrant.rb +41 -0
  34. data/lib/synergy_wholesale/types/au_state.rb +15 -0
  35. data/lib/synergy_wholesale/types/contact.rb +61 -0
  36. data/lib/synergy_wholesale/types/country.rb +263 -0
  37. data/lib/synergy_wholesale/types/domain.rb +17 -0
  38. data/lib/synergy_wholesale/types/domain_list.rb +21 -0
  39. data/lib/synergy_wholesale/types/email.rb +31 -0
  40. data/lib/synergy_wholesale/types/phone.rb +13 -0
  41. data/lib/synergy_wholesale/types/registration_years.rb +12 -0
  42. data/lib/synergy_wholesale/version.rb +3 -0
  43. data/spec/fixtures/synergy/domain/autorenew/disable/failure.xml +14 -0
  44. data/spec/fixtures/synergy/domain/autorenew/disable/success.xml +14 -0
  45. data/spec/fixtures/synergy/domain/autorenew/enable/failure.xml +14 -0
  46. data/spec/fixtures/synergy/domain/autorenew/enable/success.xml +14 -0
  47. data/spec/fixtures/synergy/domain/available/example.com.xml +14 -0
  48. data/spec/fixtures/synergy/domain/available/ljsdlksdlfkmsldlskmlskmdlfkjlskjdlmlknlks.com.xml +1 -0
  49. data/spec/fixtures/synergy/domain/register/au/failure.xml +14 -0
  50. data/spec/fixtures/synergy/domain/register/au/success.xml +15 -0
  51. data/spec/fixtures/synergy/domain/register/failure.xml +14 -0
  52. data/spec/fixtures/synergy/domain/register/success.xml +15 -0
  53. data/spec/integration/check_domain_spec.rb +50 -0
  54. data/spec/integration/disable_auto_renewal_spec.rb +52 -0
  55. data/spec/integration/domain_register_au_spec.rb +225 -0
  56. data/spec/integration/domain_register_spec.rb +215 -0
  57. data/spec/integration/enable_auto_renewal_spec.rb +52 -0
  58. data/spec/spec_helper.rb +37 -0
  59. data/spec/unit/adapter_spec.rb +97 -0
  60. data/spec/unit/api_spec.rb +42 -0
  61. data/spec/unit/configuration_spec.rb +44 -0
  62. data/spec/unit/response_generator_spec.rb +35 -0
  63. data/synergy_wholesale.gemspec +26 -0
  64. metadata +210 -0
@@ -0,0 +1,61 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class Contact < Dry::Struct
4
+ attribute :organisation, Types::Strict::String.optional
5
+ attribute :firstname, Types::Strict::String
6
+ attribute :lastname, Types::Strict::String
7
+ attribute :address, Types::Strict::Array.constrained(filled: true)
8
+ attribute :suburb, Types::Strict::String
9
+ attribute :state, Types::Strict::String
10
+ attribute :postcode, Types::Strict::String
11
+
12
+ attribute :country, Types::Country
13
+ attribute :phone, Types::Phone
14
+ attribute :fax, Types::Phone.optional
15
+ attribute :email, Types::Email
16
+ attribute :type, Types::Strict::Symbol.constrained(included_in: %i(billing admin technical registrant))
17
+
18
+ def self.build(attributes)
19
+ new(
20
+ {
21
+ firstname: attributes[:firstname],
22
+ lastname: attributes[:lastname],
23
+ organisation: attributes[:organisation],
24
+ address: attributes[:address],
25
+ suburb: attributes[:suburb],
26
+ state: attributes[:state],
27
+ country: { country_code: attributes[:country] },
28
+ postcode: attributes[:postcode],
29
+ phone: { phone: attributes[:phone] },
30
+ fax: attributes[:fax] ? { phone: attributes[:fax] } : nil,
31
+ email: { email: attributes[:email] },
32
+ type: attributes[:type]
33
+ }
34
+ )
35
+ end
36
+
37
+ def to_param
38
+ {
39
+ prefixed(:lastname) => lastname,
40
+ prefixed(:firstname) => firstname,
41
+ prefixed(:organisation) => organisation,
42
+ prefixed(:address) => { item: address, '@xsi:type' => 'enc:Array' },
43
+ prefixed(:suburb) => suburb,
44
+ prefixed(:state) => state.to_s,
45
+ prefixed(:country) => country.to_s,
46
+ prefixed(:postcode) => postcode.to_s,
47
+ prefixed(:phone) => phone.to_s,
48
+ prefixed(:fax) => fax.to_s,
49
+ prefixed(:email) => email.to_s
50
+ }
51
+ end
52
+
53
+ protected
54
+
55
+ def prefixed(attr)
56
+ "#{type}_#{attr}"
57
+ end
58
+
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,263 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class Country < Dry::Struct
4
+
5
+ COUNTRY_CODES = {
6
+ 'AC' => 'Ascension',
7
+ 'AD' => 'Andorra',
8
+ 'AE' => 'United Arab Emirates',
9
+ 'AF' => 'Afghanistan',
10
+ 'AG' => 'Antigua and Barbuda',
11
+ 'AI' => 'Anguilla',
12
+ 'AL' => 'Albania',
13
+ 'AM' => 'Armenia',
14
+ 'AN' => 'Netherlands Antilles',
15
+ 'AO' => 'Angola',
16
+ 'AQ' => 'Antarctica',
17
+ 'AR' => 'Argentina',
18
+ 'AS' => 'American Samoa',
19
+ 'AT' => 'Austria',
20
+ 'AU' => 'Australia',
21
+ 'AW' => 'Aruba',
22
+ 'AX' => 'Aland',
23
+ 'AZ' => 'Azerbaijan',
24
+ 'BA' => 'Bosnia and Herzegovina',
25
+ 'BB' => 'Barbados',
26
+ 'BD' => 'Bangladesh',
27
+ 'BE' => 'Belgium',
28
+ 'BF' => 'Burkina Faso',
29
+ 'BG' => 'Bulgaria',
30
+ 'BH' => 'Bahrain',
31
+ 'BI' => 'Burundi',
32
+ 'BJ' => 'Benin',
33
+ 'BM' => 'Bermuda',
34
+ 'BN' => 'Brunei',
35
+ 'BO' => 'Bolivia',
36
+ 'BR' => 'Brazil',
37
+ 'BS' => 'Bahamas, The',
38
+ 'BT' => 'Bhutan',
39
+ 'BV' => 'Bouvet Island',
40
+ 'BW' => 'Botswana',
41
+ 'BY' => 'Belarus',
42
+ 'BZ' => 'Belize',
43
+ 'CA' => 'Canada',
44
+ 'CC' => 'Cocos (Keeling) Islands',
45
+ 'CD' => 'Congo, (Congo Kinshasa)',
46
+ 'CF' => 'Central African Republic',
47
+ 'CG' => 'Congo, (Congo Brazzaville)',
48
+ 'CH' => 'Switzerland',
49
+ 'CI' => 'Cote d\'Ivoire (Ivory Coast)',
50
+ 'CK' => 'Cook Islands',
51
+ 'CL' => 'Chile',
52
+ 'CM' => 'Cameroon',
53
+ 'CN' => 'China, People\'s Republic of',
54
+ 'CO' => 'Colombia',
55
+ 'CR' => 'Costa Rica',
56
+ 'CU' => 'Cuba',
57
+ 'CV' => 'Cape Verde',
58
+ 'CX' => 'Christmas Island',
59
+ 'CY' => 'Cyprus',
60
+ 'CZ' => 'Czech Republic',
61
+ 'DE' => 'Germany',
62
+ 'DJ' => 'Djibouti',
63
+ 'DK' => 'Denmark',
64
+ 'DM' => 'Dominica',
65
+ 'DO' => 'Dominican Republic',
66
+ 'DZ' => 'Algeria',
67
+ 'EC' => 'Ecuador',
68
+ 'EE' => 'Estonia',
69
+ 'EG' => 'Egypt',
70
+ 'ER' => 'Eritrea',
71
+ 'ES' => 'Spain',
72
+ 'ET' => 'Ethiopia',
73
+ 'FI' => 'Finland',
74
+ 'FJ' => 'Fiji',
75
+ 'FK' => 'Falkland Islands (Islas Malvinas)',
76
+ 'FM' => 'Micronesia',
77
+ 'FO' => 'Faroe Islands',
78
+ 'FR' => 'France',
79
+ 'GA' => 'Gabon',
80
+ 'GB' => 'United Kingdom',
81
+ 'GD' => 'Grenada',
82
+ 'GE' => 'Georgia',
83
+ 'GF' => 'French Guiana',
84
+ 'GG' => 'Guernsey',
85
+ 'GH' => 'Ghana',
86
+ 'GI' => 'Gibraltar',
87
+ 'GL' => 'Greenland',
88
+ 'GM' => 'Gambia, The',
89
+ 'GN' => 'Guinea',
90
+ 'GP' => 'Guadeloupe',
91
+ 'GQ' => 'Equatorial Guinea',
92
+ 'GR' => 'Greece',
93
+ 'GS' => 'South Georgia & South Sandwich Islands',
94
+ 'GT' => 'Guatemala',
95
+ 'GU' => 'Guam',
96
+ 'GW' => 'Guinea-Bissau',
97
+ 'GY' => 'Guyana',
98
+ 'HK' => 'Hong Kong',
99
+ 'HM' => 'Heard Island and McDonald Islands',
100
+ 'HN' => 'Honduras',
101
+ 'HR' => 'Croatia',
102
+ 'HT' => 'Haiti',
103
+ 'HU' => 'Hungary',
104
+ 'ID' => 'Indonesia',
105
+ 'IE' => 'Ireland',
106
+ 'IL' => 'Israel',
107
+ 'IM' => 'Isle of Man',
108
+ 'IN' => 'India',
109
+ 'IO' => 'British Indian Ocean Territory',
110
+ 'IQ' => 'Iraq',
111
+ 'IR' => 'Iran',
112
+ 'IS' => 'Iceland',
113
+ 'IT' => 'Italy UZ',
114
+ 'JE' => 'Jersey',
115
+ 'JM' => 'Jamaica',
116
+ 'JO' => 'Jordan',
117
+ 'JP' => 'Japan',
118
+ 'KE' => 'Kenya',
119
+ 'KG' => 'Kyrgyzstan',
120
+ 'KH' => 'Cambodia',
121
+ 'KI' => 'Kiribati',
122
+ 'KM' => 'Comoros',
123
+ 'KN' => 'Saint Kitts and Nevis',
124
+ 'KP' => 'Korea, North',
125
+ 'KR' => 'Korea, South',
126
+ 'KW' => 'Kuwait',
127
+ 'KY' => 'Cayman Islands',
128
+ 'KZ' => 'Kazakhstan',
129
+ 'LA' => 'Laos',
130
+ 'LB' => 'Lebanon',
131
+ 'LC' => 'Saint Lucia',
132
+ 'LI' => 'Liechtenstein',
133
+ 'LK' => 'Sri Lanka',
134
+ 'LR' => 'Liberia',
135
+ 'LS' => 'Lesotho',
136
+ 'LT' => 'Lithuania',
137
+ 'LU' => 'Luxembourg',
138
+ 'LV' => 'Latvia',
139
+ 'LY' => 'Libya',
140
+ 'MA' => 'Morocco',
141
+ 'MC' => 'Monaco',
142
+ 'MD' => 'Moldova',
143
+ 'ME' => 'Montenegro',
144
+ 'MG' => 'Madagascar',
145
+ 'MH' => 'Marshall Islands',
146
+ 'MK' => 'Macedonia',
147
+ 'ML' => 'Mali',
148
+ 'MM' => 'Myanmar (Burma)',
149
+ 'MN' => 'Mongolia',
150
+ 'MO' => 'Macau',
151
+ 'MP' => 'Northern Mariana Islands',
152
+ 'MQ' => 'Martinique',
153
+ 'MR' => 'Mauritania',
154
+ 'MS' => 'Montserrat',
155
+ 'MT' => 'Malta',
156
+ 'MU' => 'Mauritius',
157
+ 'MV' => 'Maldives',
158
+ 'MW' => 'Malawi',
159
+ 'MX' => 'Mexico',
160
+ 'MY' => 'Malaysia',
161
+ 'MZ' => 'Mozambique',
162
+ 'NA' => 'Namibia',
163
+ 'NC' => 'New Caledonia',
164
+ 'NE' => 'Niger',
165
+ 'NF' => 'Norfolk Island',
166
+ 'NG' => 'Nigeria',
167
+ 'NI' => 'Nicaragua',
168
+ 'NL' => 'Netherlands',
169
+ 'NO' => 'Norway',
170
+ 'NP' => 'Nepal',
171
+ 'NR' => 'Nauru',
172
+ 'NU' => 'Niue',
173
+ 'NZ' => 'New Zealand',
174
+ 'OM' => 'Oman',
175
+ 'PA' => 'Panama',
176
+ 'PE' => 'Peru',
177
+ 'PF' => 'French Polynesia',
178
+ 'PG' => 'Papua New Guinea',
179
+ 'PH' => 'Philippines',
180
+ 'PK' => 'Pakistan',
181
+ 'PL' => 'Poland',
182
+ 'PM' => 'Saint Pierre and Miquelon',
183
+ 'PN' => 'Pitcairn Islands',
184
+ 'PR' => 'Puerto Rico',
185
+ 'PT' => 'Portugal',
186
+ 'PW' => 'Palau',
187
+ 'PY' => 'Paraguay',
188
+ 'QA' => 'Qatar',
189
+ 'RE' => 'Reunion',
190
+ 'RO' => 'Romania',
191
+ 'RS' => 'Serbia',
192
+ 'RU' => 'Russia',
193
+ 'RW' => 'Rwanda',
194
+ 'SA' => 'Saudi Arabia',
195
+ 'SB' => 'Solomon Islands',
196
+ 'SC' => 'Seychelles',
197
+ 'SD' => 'Sudan',
198
+ 'SE' => 'Sweden',
199
+ 'SG' => 'Singapore',
200
+ 'SH' => 'Saint Helena',
201
+ 'SI' => 'Slovenia',
202
+ 'SJ' => 'Svalbard',
203
+ 'SK' => 'Slovakia',
204
+ 'SL' => 'Sierra Leone',
205
+ 'SM' => 'San Marino',
206
+ 'SN' => 'Senegal',
207
+ 'SO' => 'Somalia',
208
+ 'SR' => 'Suriname',
209
+ 'ST' => 'Sao Tome and Principe',
210
+ 'SV' => 'El Salvador',
211
+ 'SY' => 'Syria',
212
+ 'SZ' => 'Swaziland',
213
+ 'TA' => 'Tristan da Cunh',
214
+ 'TC' => 'Turks and Caicos Islands',
215
+ 'TD' => 'Chad',
216
+ 'TF' => 'French Southern and Antarctic Lands',
217
+ 'TG' => 'Togo',
218
+ 'TH' => 'Thailand',
219
+ 'TJ' => 'Tajikistan',
220
+ 'TK' => 'Tokelau',
221
+ 'TL' => 'Timor-Leste (East Timor)',
222
+ 'TM' => 'Turkmenistan',
223
+ 'TN' => 'Tunisia',
224
+ 'TO' => 'Tonga',
225
+ 'TR' => 'Turkey',
226
+ 'TT' => 'Trinidad and Tobago',
227
+ 'TV' => 'Tuvalu',
228
+ 'TW' => 'China, Republic of (Taiwan)',
229
+ 'TZ' => 'Tanzania',
230
+ 'UA' => 'Ukraine',
231
+ 'UG' => 'Uganda',
232
+ 'UM' => 'United States Minor Outlying Islands',
233
+ 'US' => 'United States',
234
+ 'UY' => 'Uruguay',
235
+ 'UZ' => 'Uzbekistan',
236
+ 'VA' => 'Vatican City',
237
+ 'VC' => 'Saint Vincent and the Grenadines',
238
+ 'VE' => 'Venezuela',
239
+ 'VG' => 'British Virgin Islands',
240
+ 'VI' => 'U.S. Virgin Islands',
241
+ 'VN' => 'Vietnam',
242
+ 'VU' => 'Vanuatu',
243
+ 'WF' => 'Wallis and Futuna',
244
+ 'WS' => 'Samoa',
245
+ 'YE' => 'Yemen',
246
+ 'YT' => 'Mayotte',
247
+ 'ZA' => 'South Africa',
248
+ 'ZM' => 'Zambia',
249
+ 'ZW' => 'Zimbabwe'
250
+ }
251
+
252
+ attribute :country_code, Types::Strict::String.constrained(included_in: COUNTRY_CODES.keys)
253
+
254
+ def to_s
255
+ country_code
256
+ end
257
+
258
+ def country_name
259
+ COUNTRY_CODES[country_code]
260
+ end
261
+ end
262
+ end
263
+ end
@@ -0,0 +1,17 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class Domain < Dry::Struct
4
+ attribute :name, Types::Strict::String
5
+
6
+ def to_param
7
+ {
8
+ domain_name: name
9
+ }
10
+ end
11
+
12
+ def to_s
13
+ name
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class DomainList < Dry::Struct
4
+
5
+ attribute :domain_list, Types::Strict::Array.member(Types::Domain)
6
+
7
+ def self.build(attributes)
8
+ new({ domain_list: attributes[:domain_list].collect { |name| { name: name } } })
9
+ end
10
+
11
+ def get_domain_names
12
+ domain_list.collect(&:to_s)
13
+ end
14
+
15
+ def to_param
16
+ { name_servers: { item: get_domain_names, '@xsi:type' => 'enc:Array' } }
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class Email < Dry::Struct
4
+
5
+ # EMAIL_ADDRESS_PATTERN = begin
6
+ # qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'
7
+ # dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'
8
+ # atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-' +
9
+ # '\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'
10
+ # quoted_pair = '\\x5c[\\x00-\\x7f]'
11
+ # domain_literal = "\\x5b(?:#{dtext}|#{quoted_pair})*\\x5d"
12
+ # quoted_string = "\\x22(?:#{qtext}|#{quoted_pair})*\\x22"
13
+ # domain_ref = atom
14
+ # sub_domain = "(?:#{domain_ref}|#{domain_literal})"
15
+ # word = "(?:#{atom}|#{quoted_string})"
16
+ # domain = "#{sub_domain}(?:\\x2e#{sub_domain})*"
17
+ # local_part = "#{word}(?:\\x2e#{word})*"
18
+ # addr_spec = "#{local_part}\\x40#{domain}"
19
+ #
20
+ # /\A#{addr_spec}\z/
21
+ # end
22
+
23
+ attribute :email, Types::Strict::String
24
+
25
+ def to_s
26
+ email
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class Phone < Dry::Struct
4
+
5
+ attribute :phone, Types::Strict::String.constrained(format: /^\+[0-9]{1,2}\.[0-9]{6,10}$/)
6
+
7
+ def to_s
8
+ phone
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module SynergyWholesale
2
+ module Types
3
+ class RegistrationYears < Dry::Struct
4
+ attribute :years, Types::Coercible::Int.constrained(gteq: 1, lteq: 10)
5
+
6
+ def to_param
7
+ { years: years.to_s }
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module SynergyWholesale
2
+ VERSION = '0.0.0'
3
+ end
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
3
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
4
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:WholesaleSystem">
6
+ <SOAP-ENV:Body>
7
+ <ns1:disableAutoRenewalResponse xmlns:ns1="urn:WholesaleSystem">
8
+ <return xsi:type="tns:disableAutoRenewalResponse">
9
+ <status xsi:type="xsd:string">ERR_RESELLER_NOT_AUTHORISED</status>
10
+ <errorMessage xsi:type="xsd:string">Reseller is not authorized to perform any functions on this domain</errorMessage>
11
+ </return>
12
+ </ns1:disableAutoRenewalResponse>
13
+ </SOAP-ENV:Body>
14
+ </SOAP-ENV:Envelope>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
3
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
4
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:WholesaleSystem">
6
+ <SOAP-ENV:Body>
7
+ <ns1:disableAutoRenewalResponse xmlns:ns1="urn:WholesaleSystem">
8
+ <return xsi:type="tns:disableAutoRenewalResponse">
9
+ <status xsi:type="xsd:string">OK</status>
10
+ <errorMessage xsi:type="xsd:string">Auto Renewal Has Been Deactivated Successfully</errorMessage>
11
+ </return>
12
+ </ns1:disableAutoRenewalResponse>
13
+ </SOAP-ENV:Body>
14
+ </SOAP-ENV:Envelope>