ultrasoap 0.0.5 → 0.1.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.
- checksums.yaml +4 -4
- data/lib/client.rb +199 -0
- data/lib/ultrasoap.rb +3 -199
- data/ultrasoap-ruby.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42be934e7d4210f7f31440a0861662c26caec287
|
4
|
+
data.tar.gz: 01dc2abf4e427ed01ab2fe42c41a1bf704f9f55c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1b72386af2e239a697d10bbc3e423dc2003e608e60e5083aca328f51285bb91c8e44a40679adfb80a5aea1ddcbe4cd7a97976de0859943fc732b42aadec4c01
|
7
|
+
data.tar.gz: a23b6921433a7e1c46d7ed1531a455c7f3e616ca2c9c3d0f7fda9aa0bffef68220c49717c417a2154abd01b715fceb05b2bbf423c184ac6d971835aac21c6b87
|
data/lib/client.rb
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
require 'savon'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
module UltraSOAP
|
5
|
+
|
6
|
+
class Client
|
7
|
+
|
8
|
+
# Class variables
|
9
|
+
@logger
|
10
|
+
|
11
|
+
@logdest = './ultrasoap.log'
|
12
|
+
@logging = false
|
13
|
+
@log_level = 'error'
|
14
|
+
@test_wsdl = 'https://testapi.ultradns.com/UltraDNS_WS/v01?wsdl'
|
15
|
+
@prod_wsdl = 'https://ultra-api.ultradns.com/UltraDNS_WS/v01?wsdl'
|
16
|
+
@environment = 'production'
|
17
|
+
@transaction_id = nil
|
18
|
+
@use_transactions = false
|
19
|
+
|
20
|
+
class << self
|
21
|
+
attr_accessor :logdest
|
22
|
+
attr_accessor :logging
|
23
|
+
attr_accessor :log_level
|
24
|
+
attr_accessor :transaction_id
|
25
|
+
attr_accessor :test_wsdl
|
26
|
+
attr_accessor :prod_wsdl
|
27
|
+
attr_accessor :environment
|
28
|
+
attr_accessor :use_transactions
|
29
|
+
end
|
30
|
+
|
31
|
+
# Instance variables
|
32
|
+
attr_accessor :logging
|
33
|
+
attr_accessor :loglevel
|
34
|
+
|
35
|
+
# Constructor
|
36
|
+
def initialize()
|
37
|
+
# Exits if username or password aren't specified.
|
38
|
+
return nil unless !(Settings.username.nil? or Settings.password.nil?)
|
39
|
+
|
40
|
+
username = Settings.username
|
41
|
+
password = Settings.password
|
42
|
+
|
43
|
+
@environment = Settings['environment'] || Client.environment
|
44
|
+
|
45
|
+
# We don't need the following to be instance variables
|
46
|
+
ultra_wsdl = (@environment == 'test' ? (Settings['test_wsdl'] || Client.test_wsdl) : (Settings['prod_wsdl'] || Client.prod_wsdl))
|
47
|
+
|
48
|
+
# Setting up parameter values, if provided. If not, defaults are assumed
|
49
|
+
|
50
|
+
@use_transactions = Settings['use_transactions'] || Client.use_transactions
|
51
|
+
@logdest = Settings['logfile'] || Client.logdest
|
52
|
+
|
53
|
+
@logger = Logger.new(@logdest)
|
54
|
+
|
55
|
+
logging = Settings['logging'] || Client.logging
|
56
|
+
|
57
|
+
log_lev = Settings['log_level'] || Client.log_level
|
58
|
+
|
59
|
+
begin
|
60
|
+
# For some reason, if I use the instance variable, Savon.client doesn't work properly
|
61
|
+
|
62
|
+
@client = Savon.client do
|
63
|
+
wsdl ultra_wsdl
|
64
|
+
env_namespace 'soapenv'
|
65
|
+
wsse_auth(username, password)
|
66
|
+
element_form_default :unqualified
|
67
|
+
log logging
|
68
|
+
log_level log_lev.to_sym
|
69
|
+
pretty_print_xml true
|
70
|
+
end
|
71
|
+
rescue Exception => e
|
72
|
+
@logger.error("Error in ultrasoap.initialize: " + e.message)
|
73
|
+
raise 'Error in ultrasoap initialization, check log file'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Main method to send SOAP requests
|
78
|
+
#
|
79
|
+
# Parameters:
|
80
|
+
# * method: the SOAP send_request
|
81
|
+
# * message: the message hash
|
82
|
+
def send_request(method, message, strip_namespaces=true)
|
83
|
+
# If the client is using transactions, append the transaction id to the message hash
|
84
|
+
if @use_transactions == true
|
85
|
+
transaction_hash = { :transaction_id => @transaction_id }
|
86
|
+
message.merge(transaction_hash)
|
87
|
+
end
|
88
|
+
|
89
|
+
begin
|
90
|
+
@response = @client.call method, message: message
|
91
|
+
return Nokogiri::XML(@response.to_xml).remove_namespaces!
|
92
|
+
rescue Exception => e
|
93
|
+
@logger.error("Error in ultrasoap.send_request: " + e.message)
|
94
|
+
return nil
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Starts a transaction and sets the @transaction_id variable
|
99
|
+
def transaction_start
|
100
|
+
begin
|
101
|
+
response = self.send_request :start_transaction
|
102
|
+
xml_response = Nokogiri::XML(response.to_xml).remove_namespaces!
|
103
|
+
@transaction_id = xml_response.xpath("//transactionId/text()")
|
104
|
+
rescue Exception => e
|
105
|
+
@logger.error("Error in ultrasoap.transaction_start: " + e.message)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# Rolls back the current transaction
|
110
|
+
def transaction_rollback
|
111
|
+
return nil unless @transaction_id != nil
|
112
|
+
|
113
|
+
message = {
|
114
|
+
:transaction_id => @transaction_id.to_s
|
115
|
+
}
|
116
|
+
|
117
|
+
begin
|
118
|
+
trans_rollback = self.send_request :rollback_transaction, message
|
119
|
+
rescue Exception => e
|
120
|
+
@logger.error("Error in ultrasoap.transaction_rollback: " + e.message)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# Commit the current transaction
|
125
|
+
def transaction_commit
|
126
|
+
return nil unless @transaction_id != nil
|
127
|
+
|
128
|
+
message = {
|
129
|
+
:transaction_id => @transaction_id.to_s
|
130
|
+
}
|
131
|
+
|
132
|
+
begin
|
133
|
+
trans_commit = self.send_request :commit_transaction, message
|
134
|
+
rescue Exception => e
|
135
|
+
@logger.error("Error in ultrasoap.transaction_commit: " + e.message)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# Helper method to retrieve load balancing pools data
|
140
|
+
# Parameters:
|
141
|
+
# - zone (don't forget the trailing dot)
|
142
|
+
def get_lb_pools(zone)
|
143
|
+
message = {
|
144
|
+
:zone_name => zone,
|
145
|
+
:lb_pool_type => 'SB'
|
146
|
+
}
|
147
|
+
|
148
|
+
begin
|
149
|
+
response = self.send_request :get_load_balancing_pools_by_zone, message
|
150
|
+
return response
|
151
|
+
rescue Exception => e
|
152
|
+
@logger.error("Error in retrieving SB pools for the zone #{zone}: #{e.message}")
|
153
|
+
return nil
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
# Helper method to retrieve Pool's records
|
158
|
+
# Parameters:
|
159
|
+
# - poolID
|
160
|
+
def get_pool_records(pool_id)
|
161
|
+
message = {
|
162
|
+
:pool_id => pool_id.to_s
|
163
|
+
}
|
164
|
+
|
165
|
+
begin
|
166
|
+
return self.send_request :get_pool_records, message
|
167
|
+
rescue Exception => e
|
168
|
+
@logger.error("Error while retrieving Pool Records for the Pool ID #{pool_id.to_s}: #{e.message}")
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
# LOOKUP methods
|
173
|
+
|
174
|
+
def lookup_pool_type(pt_code)
|
175
|
+
case pt_code.to_s
|
176
|
+
when 'SB'
|
177
|
+
'SiteBacker'
|
178
|
+
when 'RD'
|
179
|
+
'Resource Distribution'
|
180
|
+
when 'TC'
|
181
|
+
'Traffic Controller'
|
182
|
+
else
|
183
|
+
'Other'
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def lookup_response_method(rm_code)
|
188
|
+
case rm_code.to_s
|
189
|
+
when 'FX'
|
190
|
+
'Fixed'
|
191
|
+
when 'RR'
|
192
|
+
'Round Robin'
|
193
|
+
when 'RD'
|
194
|
+
'Random'
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
end
|
199
|
+
end
|
data/lib/ultrasoap.rb
CHANGED
@@ -1,199 +1,3 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
|
4
|
-
module UltraSOAP
|
5
|
-
|
6
|
-
class Client
|
7
|
-
|
8
|
-
# Class variables
|
9
|
-
@logger
|
10
|
-
|
11
|
-
@logdest = './ultrasoap.log'
|
12
|
-
@logging = false
|
13
|
-
@log_level = 'error'
|
14
|
-
@test_wsdl = 'https://testapi.ultradns.com/UltraDNS_WS/v01?wsdl'
|
15
|
-
@prod_wsdl = 'https://ultra-api.ultradns.com/UltraDNS_WS/v01?wsdl'
|
16
|
-
@environment = 'production'
|
17
|
-
@transaction_id = nil
|
18
|
-
@use_transactions = false
|
19
|
-
|
20
|
-
class << self
|
21
|
-
attr_accessor :logdest
|
22
|
-
attr_accessor :logging
|
23
|
-
attr_accessor :log_level
|
24
|
-
attr_accessor :transaction_id
|
25
|
-
attr_accessor :test_wsdl
|
26
|
-
attr_accessor :prod_wsdl
|
27
|
-
attr_accessor :environment
|
28
|
-
attr_accessor :use_transactions
|
29
|
-
end
|
30
|
-
|
31
|
-
# Instance variables
|
32
|
-
attr_accessor :logging
|
33
|
-
attr_accessor :loglevel
|
34
|
-
|
35
|
-
# Constructor
|
36
|
-
def initialize()
|
37
|
-
# Exits if username or password aren't specified.
|
38
|
-
return nil unless !(Settings.username.nil? or Settings.password.nil?)
|
39
|
-
|
40
|
-
username = Settings.username
|
41
|
-
password = Settings.password
|
42
|
-
|
43
|
-
@environment = Settings['environment'] || Client.environment
|
44
|
-
|
45
|
-
# We don't need the following to be instance variables
|
46
|
-
ultra_wsdl = (@environment == 'test' ? (Settings['test_wsdl'] || Client.test_wsdl) : (Settings['prod_wsdl'] || Client.prod_wsdl))
|
47
|
-
|
48
|
-
# Setting up parameter values, if provided. If not, defaults are assumed
|
49
|
-
|
50
|
-
@use_transactions = Settings['use_transactions'] || Client.use_transactions
|
51
|
-
@logdest = Settings['logfile'] || Client.logdest
|
52
|
-
|
53
|
-
@logger = Logger.new(@logdest)
|
54
|
-
|
55
|
-
logging = Settings['logging'] || Client.logging
|
56
|
-
|
57
|
-
log_lev = Settings['log_level'] || Client.log_level
|
58
|
-
|
59
|
-
begin
|
60
|
-
# For some reason, if I use the instance variable, Savon.client doesn't work properly
|
61
|
-
|
62
|
-
@client = Savon.client do
|
63
|
-
wsdl ultra_wsdl
|
64
|
-
env_namespace 'soapenv'
|
65
|
-
wsse_auth(username, password)
|
66
|
-
element_form_default :unqualified
|
67
|
-
log logging
|
68
|
-
log_level log_lev.to_sym
|
69
|
-
pretty_print_xml true
|
70
|
-
end
|
71
|
-
rescue Exception => e
|
72
|
-
@logger.error("Error in ultrasoap.initialize: " + e.message)
|
73
|
-
raise 'Error in ultrasoap initialization, check log file'
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
# Main method to send SOAP requests
|
78
|
-
#
|
79
|
-
# Parameters:
|
80
|
-
# * method: the SOAP send_request
|
81
|
-
# * message: the message hash
|
82
|
-
def send_request(method, message, strip_namespaces=true)
|
83
|
-
# If the client is using transactions, append the transaction id to the message hash
|
84
|
-
if @use_transactions == true
|
85
|
-
transaction_hash = { :transaction_id => @transaction_id }
|
86
|
-
message.merge(transaction_hash)
|
87
|
-
end
|
88
|
-
|
89
|
-
begin
|
90
|
-
@response = @client.call method, message: message
|
91
|
-
return Nokogiri::XML(@response.to_xml).remove_namespaces!
|
92
|
-
rescue Exception => e
|
93
|
-
@logger.error("Error in ultrasoap.send_request: " + e.message)
|
94
|
-
return nil
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
# Starts a transaction and sets the @transaction_id variable
|
99
|
-
def transaction_start
|
100
|
-
begin
|
101
|
-
response = self.send_request :start_transaction
|
102
|
-
xml_response = Nokogiri::XML(response.to_xml).remove_namespaces!
|
103
|
-
@transaction_id = xml_response.xpath("//transactionId/text()")
|
104
|
-
rescue Exception => e
|
105
|
-
@logger.error("Error in ultrasoap.transaction_start: " + e.message)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
# Rolls back the current transaction
|
110
|
-
def transaction_rollback
|
111
|
-
return nil unless @transaction_id != nil
|
112
|
-
|
113
|
-
message = {
|
114
|
-
:transaction_id => @transaction_id.to_s
|
115
|
-
}
|
116
|
-
|
117
|
-
begin
|
118
|
-
trans_rollback = self.send_request :rollback_transaction, message
|
119
|
-
rescue Exception => e
|
120
|
-
@logger.error("Error in ultrasoap.transaction_rollback: " + e.message)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# Commit the current transaction
|
125
|
-
def transaction_commit
|
126
|
-
return nil unless @transaction_id != nil
|
127
|
-
|
128
|
-
message = {
|
129
|
-
:transaction_id => @transaction_id.to_s
|
130
|
-
}
|
131
|
-
|
132
|
-
begin
|
133
|
-
trans_commit = self.send_request :commit_transaction, message
|
134
|
-
rescue Exception => e
|
135
|
-
@logger.error("Error in ultrasoap.transaction_commit: " + e.message)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
# Helper method to retrieve load balancing pools data
|
140
|
-
# Parameters:
|
141
|
-
# - zone (don't forget the trailing dot)
|
142
|
-
def get_lb_pools(zone)
|
143
|
-
message = {
|
144
|
-
:zone_name => zone,
|
145
|
-
:lb_pool_type => 'SB'
|
146
|
-
}
|
147
|
-
|
148
|
-
begin
|
149
|
-
response = self.send_request :get_load_balancing_pools_by_zone, message
|
150
|
-
return response
|
151
|
-
rescue Exception => e
|
152
|
-
@logger.error("Error in retrieving SB pools for the zone #{zone}: #{e.message}")
|
153
|
-
return nil
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
# Helper method to retrieve Pool's records
|
158
|
-
# Parameters:
|
159
|
-
# - poolID
|
160
|
-
def get_pool_records(pool_id)
|
161
|
-
message = {
|
162
|
-
:pool_id => pool_id.to_s
|
163
|
-
}
|
164
|
-
|
165
|
-
begin
|
166
|
-
return self.send_request :get_pool_records, message
|
167
|
-
rescue Exception => e
|
168
|
-
@logger.error("Error while retrieving Pool Records for the Pool ID #{pool_id.to_s}: #{e.message}")
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
# LOOKUP methods
|
173
|
-
|
174
|
-
def lookup_pool_type(pt_code)
|
175
|
-
case pt_code.to_s
|
176
|
-
when 'SB'
|
177
|
-
'SiteBacker'
|
178
|
-
when 'RD'
|
179
|
-
'Resource Distribution'
|
180
|
-
when 'TC'
|
181
|
-
'Traffic Controller'
|
182
|
-
else
|
183
|
-
'Other'
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
def lookup_response_method(rm_code)
|
188
|
-
case rm_code.to_s
|
189
|
-
when 'FX'
|
190
|
-
'Fixed'
|
191
|
-
when 'RR'
|
192
|
-
'Round Robin'
|
193
|
-
when 'RD'
|
194
|
-
'Random'
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
end
|
199
|
-
end
|
1
|
+
require 'client.rb'
|
2
|
+
require 'settings.rb'
|
3
|
+
require 'constants.rb'
|
data/ultrasoap-ruby.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'ultrasoap'
|
3
|
-
s.version = '0.0
|
3
|
+
s.version = '0.1.0'
|
4
4
|
s.summary = "Simple Ruby client library for UltraDNS SOAP API"
|
5
5
|
s.description = "Connect to Neustar's UltraDNS SOAP API. FKA ultrasoap-ruby"
|
6
6
|
s.authors = ["Gabriel Sambarino"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ultrasoap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriel Sambarino
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- Gemfile
|
63
63
|
- LICENSE
|
64
64
|
- README.md
|
65
|
+
- lib/client.rb
|
65
66
|
- lib/constants.rb
|
66
67
|
- lib/settings.rb
|
67
68
|
- lib/ultrasoap.rb
|