epp-client-base 0.14.0 → 0.15.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.
@@ -1,17 +1,20 @@
1
1
  module EPPClient
2
+ # This module handles all the Domain interactions.!
3
+ #
4
+ # See RFC 5731 for more informations
2
5
  module Domain
3
6
  EPPClient::Poll::PARSERS['domain:panData'] = :domain_pending_action_process
4
7
  EPPClient::Poll::PARSERS['domain:trnData'] = :domain_transfer_response
5
8
 
6
9
  def domain_check_xml(*domains) # :nodoc:
7
10
  command do |xml|
8
- xml.check do
9
- xml.check('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
10
- domains.each do |dom|
11
- xml.name(dom)
12
- end
13
- end
14
- end
11
+ xml.check do
12
+ xml.check('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
13
+ domains.each do |dom|
14
+ xml.name(dom)
15
+ end
16
+ end
17
+ end
15
18
  end
16
19
  end
17
20
 
@@ -32,33 +35,33 @@ module EPPClient
32
35
 
33
36
  def domain_check_process(xml) # :nodoc:
34
37
  xml.xpath('epp:resData/domain:chkData/domain:cd', EPPClient::SCHEMAS_URL).map do |dom|
35
- ret = {
36
- :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
37
- :avail => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).attr('avail').value == '1',
38
- }
39
- unless (reason = dom.xpath('domain:reason', EPPClient::SCHEMAS_URL).text).empty?
40
- ret[:reason] = reason
41
- end
42
- ret
38
+ ret = {
39
+ :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
40
+ :avail => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).attr('avail').value == '1',
41
+ }
42
+ unless (reason = dom.xpath('domain:reason', EPPClient::SCHEMAS_URL).text).empty?
43
+ ret[:reason] = reason
44
+ end
45
+ ret
43
46
  end
44
47
  end
45
48
 
46
49
  def domain_info_xml(args) # :nodoc:
47
50
  command do |xml|
48
- xml.info do
49
- xml.info('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
50
- xml.name(args[:name])
51
- if args.key?(:authInfo)
52
- xml.authInfo do
53
- if args.key?(:roid)
54
- xml.pw({:roid => args[:roid]}, args[:authInfo])
55
- else
56
- xml.pw(args[:authInfo])
57
- end
58
- end
59
- end
60
- end
61
- end
51
+ xml.info do
52
+ xml.info('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
53
+ xml.name(args[:name])
54
+ if args.key?(:authInfo)
55
+ xml.authInfo do
56
+ if args.key?(:roid)
57
+ xml.pw({ :roid => args[:roid] }, args[:authInfo])
58
+ else
59
+ xml.pw(args[:authInfo])
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
62
65
  end
63
66
  end
64
67
 
@@ -113,9 +116,7 @@ module EPPClient
113
116
  # [<tt>:authInfo</tt>]
114
117
  # authorization information associated with the domain object.
115
118
  def domain_info(args)
116
- if String === args
117
- args = {:name => args}
118
- end
119
+ args = { :name => args } if args.is_a?(String)
119
120
  response = send_request(domain_info_xml(args))
120
121
 
121
122
  get_result(:xml => response, :callback => :domain_info_process)
@@ -124,117 +125,113 @@ module EPPClient
124
125
  def domain_info_process(xml) # :nodoc:
125
126
  dom = xml.xpath('epp:resData/domain:infData', EPPClient::SCHEMAS_URL)
126
127
  ret = {
127
- :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
128
- :roid => dom.xpath('domain:roid', EPPClient::SCHEMAS_URL).text,
128
+ :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
129
+ :roid => dom.xpath('domain:roid', EPPClient::SCHEMAS_URL).text,
129
130
  }
130
131
  if (status = dom.xpath('domain:status', EPPClient::SCHEMAS_URL)).size > 0
131
- ret[:status] = status.map {|s| s.attr('s')}
132
+ ret[:status] = status.map { |s| s.attr('s') }
132
133
  end
133
134
  if (registrant = dom.xpath('domain:registrant', EPPClient::SCHEMAS_URL)).size > 0
134
- ret[:registrant] = registrant.text
135
+ ret[:registrant] = registrant.text
135
136
  end
136
137
  if (contact = dom.xpath('domain:contact', EPPClient::SCHEMAS_URL)).size > 0
137
- ret[:contacts] = contact.inject({}) do |a,c|
138
- s = c.attr('type').to_sym
139
- a[s] ||= []
140
- a[s] << c.text
141
- a
142
- end
138
+ ret[:contacts] = contact.inject({}) do |a, c|
139
+ s = c.attr('type').to_sym
140
+ a[s] ||= []
141
+ a[s] << c.text
142
+ a
143
+ end
143
144
  end
144
145
  if (ns = dom.xpath('domain:ns', EPPClient::SCHEMAS_URL)).size > 0
145
- if (hostObj = ns.xpath('domain:hostObj', EPPClient::SCHEMAS_URL)).size > 0
146
- ret[:ns] = hostObj.map {|h| h.text}
147
- elsif (hostAttr = ns.xpath('domain:hostAttr', EPPClient::SCHEMAS_URL)).size > 0
148
- ret[:ns] = hostAttr.map do |h|
149
- r = { :hostName => h.xpath('domain:hostName', EPPClient::SCHEMAS_URL).text }
150
- if (v4 = h.xpath('domain:hostAddr[@ip="v4"]', EPPClient::SCHEMAS_URL)).size > 0
151
- r[:hostAddrv4] = v4.map {|v| v.text}
152
- end
153
- if (v6 = h.xpath('domain:hostAddr[@ip="v6"]', EPPClient::SCHEMAS_URL)).size > 0
154
- r[:hostAddrv6] = v6.map {|v| v.text}
155
- end
156
- r
157
- end
158
- end
146
+ if (hostObj = ns.xpath('domain:hostObj', EPPClient::SCHEMAS_URL)).size > 0
147
+ ret[:ns] = hostObj.map(&:text)
148
+ elsif (hostAttr = ns.xpath('domain:hostAttr', EPPClient::SCHEMAS_URL)).size > 0
149
+ ret[:ns] = hostAttr.map do |h|
150
+ r = { :hostName => h.xpath('domain:hostName', EPPClient::SCHEMAS_URL).text }
151
+ if (v4 = h.xpath('domain:hostAddr[@ip="v4"]', EPPClient::SCHEMAS_URL)).size > 0
152
+ r[:hostAddrv4] = v4.map(&:text)
153
+ end
154
+ if (v6 = h.xpath('domain:hostAddr[@ip="v6"]', EPPClient::SCHEMAS_URL)).size > 0
155
+ r[:hostAddrv6] = v6.map(&:text)
156
+ end
157
+ r
158
+ end
159
+ end
159
160
  end
160
161
  if (host = dom.xpath('domain:host', EPPClient::SCHEMAS_URL)).size > 0
161
- ret[:host] = host.map {|h| h.text}
162
+ ret[:host] = host.map(&:text)
162
163
  end
163
164
  %w(clID upID).each do |val|
164
- if (r = dom.xpath("domain:#{val}", EPPClient::SCHEMAS_URL)).size > 0
165
- ret[val.to_sym] = r.text
166
- end
165
+ if (r = dom.xpath("domain:#{val}", EPPClient::SCHEMAS_URL)).size > 0
166
+ ret[val.to_sym] = r.text
167
+ end
167
168
  end
168
169
  %w(crDate exDate upDate trDate).each do |val|
169
- if (r = dom.xpath("domain:#{val}", EPPClient::SCHEMAS_URL)).size > 0
170
- ret[val.to_sym] = DateTime.parse(r.text)
171
- end
170
+ if (r = dom.xpath("domain:#{val}", EPPClient::SCHEMAS_URL)).size > 0
171
+ ret[val.to_sym] = DateTime.parse(r.text)
172
+ end
172
173
  end
173
174
  if (authInfo = dom.xpath('domain:authInfo', EPPClient::SCHEMAS_URL)).size > 0
174
- ret[:authInfo] = authInfo.xpath('domain:pw', EPPClient::SCHEMAS_URL).text
175
+ ret[:authInfo] = authInfo.xpath('domain:pw', EPPClient::SCHEMAS_URL).text
175
176
  end
176
- return ret
177
+ ret
177
178
  end
178
179
 
179
180
  def domain_nss_xml(xml, nss) #:nodoc:
180
181
  xml.ns do
181
- if nss.first.is_a?(Hash)
182
- nss.each do |ns|
183
- xml.hostAttr do
184
- xml.hostName ns[:hostName]
185
- if ns.key?(:hostAddrv4)
186
- ns[:hostAddrv4].each do |v4|
187
- xml.hostAddr({:ip => :v4}, v4)
188
- end
189
- end
190
- if ns.key?(:hostAddrv6)
191
- ns[:hostAddrv6].each do |v6|
192
- xml.hostAddr({:ip => :v6}, v6)
193
- end
194
- end
195
- end
196
- end
197
- else
198
- nss.each do |ns|
199
- xml.hostObj ns
200
- end
201
- end
182
+ if nss.first.is_a?(Hash)
183
+ nss.each do |ns|
184
+ xml.hostAttr do
185
+ xml.hostName ns[:hostName]
186
+ if ns.key?(:hostAddrv4)
187
+ ns[:hostAddrv4].each do |v4|
188
+ xml.hostAddr({ :ip => :v4 }, v4)
189
+ end
190
+ end
191
+ if ns.key?(:hostAddrv6)
192
+ ns[:hostAddrv6].each do |v6|
193
+ xml.hostAddr({ :ip => :v6 }, v6)
194
+ end
195
+ end
196
+ end
197
+ end
198
+ else
199
+ nss.each do |ns|
200
+ xml.hostObj ns
201
+ end
202
+ end
202
203
  end
203
204
  end
204
205
 
205
206
  def domain_contacts_xml(xml, args) #:nodoc:
206
- args.each do |type,contacts|
207
- contacts.each do |c|
208
- xml.contact({:type => type}, c)
209
- end
207
+ args.each do |type, contacts|
208
+ contacts.each do |c|
209
+ xml.contact({ :type => type }, c)
210
+ end
210
211
  end
211
212
  end
212
213
 
213
214
  def domain_create_xml(args) #:nodoc:
214
215
  command do |xml|
215
- xml.create do
216
- xml.create('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
217
- xml.name args[:name]
216
+ xml.create do
217
+ xml.create('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
218
+ xml.name args[:name]
218
219
 
219
- if args.key?(:period)
220
- xml.period({:unit => args[:period][:unit]}, args[:period][:number])
221
- end
220
+ if args.key?(:period)
221
+ xml.period({ :unit => args[:period][:unit] }, args[:period][:number])
222
+ end
222
223
 
223
- if args.key?(:ns)
224
- domain_nss_xml(xml, args[:ns])
225
- end
224
+ domain_nss_xml(xml, args[:ns]) if args.key?(:ns)
226
225
 
227
- xml.registrant args[:registrant] if args.key?(:registrant)
226
+ xml.registrant args[:registrant] if args.key?(:registrant)
228
227
 
229
- if args.key?(:contacts)
230
- domain_contacts_xml(xml, args[:contacts])
231
- end
228
+ domain_contacts_xml(xml, args[:contacts]) if args.key?(:contacts)
232
229
 
233
- xml.authInfo do
234
- xml.pw args[:authInfo]
235
- end
236
- end
237
- end
230
+ xml.authInfo do
231
+ xml.pw args[:authInfo]
232
+ end
233
+ end
234
+ end
238
235
  end
239
236
  end
240
237
 
@@ -278,19 +275,20 @@ module EPPClient
278
275
  def domain_create_process(xml) #:nodoc:
279
276
  dom = xml.xpath('epp:resData/domain:creData', EPPClient::SCHEMAS_URL)
280
277
  ret = {
281
- :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
282
- :crDate => DateTime.parse(dom.xpath('domain:crDate', EPPClient::SCHEMAS_URL).text),
283
- :upDate => DateTime.parse(dom.xpath('domain:crDate', EPPClient::SCHEMAS_URL).text),
278
+ :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
279
+ :crDate => DateTime.parse(dom.xpath('domain:crDate', EPPClient::SCHEMAS_URL).text),
280
+ :upDate => DateTime.parse(dom.xpath('domain:crDate', EPPClient::SCHEMAS_URL).text),
284
281
  }
282
+ ret
285
283
  end
286
284
 
287
285
  def domain_delete_xml(domain) #:nodoc:
288
286
  command do |xml|
289
- xml.delete do
290
- xml.delete('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
291
- xml.name domain
292
- end
293
- end
287
+ xml.delete do
288
+ xml.delete('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
289
+ xml.name domain
290
+ end
291
+ end
294
292
  end
295
293
  end
296
294
 
@@ -307,44 +305,41 @@ module EPPClient
307
305
 
308
306
  def domain_update_xml(args) #:nodoc:
309
307
  command do |xml|
310
- xml.update do
311
- xml.update('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
312
- xml.name args[:name]
313
- [:add, :rem].each do |ar|
314
- if args.key?(ar) && (args[ar].key?(:ns) || args[ar].key?(:contacts) || args[ar].key?(:status))
315
- xml.__send__(ar) do
316
- if args[ar].key?(:ns)
317
- domain_nss_xml(xml, args[ar][:ns])
318
- end
319
- if args[ar].key?(:contacts)
320
- domain_contacts_xml(xml, args[ar][:contacts])
321
- end
322
- if args[ar].key?(:status)
323
- args[ar][:status].each do |st,text|
324
- if text.nil?
325
- xml.status(:s => st)
326
- else
327
- xml.status({:s => st}, text)
328
- end
329
- end
330
- end
331
- end
332
- end
333
- end
334
- if args.key?(:chg) && (args[:chg].key?(:registrant) || args[:chg].key?(:authInfo))
335
- xml.chg do
336
- if args[:chg].key?(:registrant)
337
- xml.registrant args[:chg][:registrant]
338
- end
339
- if args[:chg].key?(:authInfo)
340
- xml.authInfo do
341
- xml.pw args[:chg][:authInfo]
342
- end
343
- end
344
- end
345
- end
346
- end
347
- end
308
+ xml.update do
309
+ xml.update('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
310
+ xml.name args[:name]
311
+ [:add, :rem].each do |ar|
312
+ next unless args.key?(ar) && (args[ar].key?(:ns) || args[ar].key?(:contacts) || args[ar].key?(:status))
313
+ xml.__send__(ar) do
314
+ domain_nss_xml(xml, args[ar][:ns]) if args[ar].key?(:ns)
315
+ if args[ar].key?(:contacts)
316
+ domain_contacts_xml(xml, args[ar][:contacts])
317
+ end
318
+ if args[ar].key?(:status)
319
+ args[ar][:status].each do |st, text|
320
+ if text.nil?
321
+ xml.status(:s => st)
322
+ else
323
+ xml.status({ :s => st }, text)
324
+ end
325
+ end
326
+ end
327
+ end
328
+ end
329
+ if args.key?(:chg) && (args[:chg].key?(:registrant) || args[:chg].key?(:authInfo))
330
+ xml.chg do
331
+ if args[:chg].key?(:registrant)
332
+ xml.registrant args[:chg][:registrant]
333
+ end
334
+ if args[:chg].key?(:authInfo)
335
+ xml.authInfo do
336
+ xml.pw args[:chg][:authInfo]
337
+ end
338
+ end
339
+ end
340
+ end
341
+ end
342
+ end
348
343
  end
349
344
  end
350
345
 
@@ -383,54 +378,54 @@ module EPPClient
383
378
  get_result(response)
384
379
  end
385
380
 
386
-
387
381
  def domain_pending_action_process(xml) #:nodoc:
388
382
  dom = xml.xpath('epp:resData/domain:panData', EPPClient::SCHEMAS_URL)
389
383
  ret = {
390
- :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
391
- :paResult => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).attribute('paResult').value,
392
- :paTRID => get_trid(dom.xpath('domain:paTRID', EPPClient::SCHEMAS_URL)),
393
- :paDate => DateTime.parse(dom.xpath('domain:paDate', EPPClient::SCHEMAS_URL).text),
384
+ :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
385
+ :paResult => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).attribute('paResult').value,
386
+ :paTRID => get_trid(dom.xpath('domain:paTRID', EPPClient::SCHEMAS_URL)),
387
+ :paDate => DateTime.parse(dom.xpath('domain:paDate', EPPClient::SCHEMAS_URL).text),
394
388
  }
389
+ ret
395
390
  end
396
391
 
397
392
  def domain_transfer_response(xml) #:nodoc:
398
393
  dom = xml.xpath('epp:resData/domain:trnData', EPPClient::SCHEMAS_URL)
399
394
  ret = {
400
- :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
401
- :trStatus => dom.xpath('domain:trStatus', EPPClient::SCHEMAS_URL).text,
402
- :reID => dom.xpath('domain:reID', EPPClient::SCHEMAS_URL).text,
403
- :reDate => DateTime.parse(dom.xpath('domain:reDate', EPPClient::SCHEMAS_URL).text),
404
- :acID => dom.xpath('domain:acID', EPPClient::SCHEMAS_URL).text,
405
- :acDate => DateTime.parse(dom.xpath('domain:acDate', EPPClient::SCHEMAS_URL).text)
395
+ :name => dom.xpath('domain:name', EPPClient::SCHEMAS_URL).text,
396
+ :trStatus => dom.xpath('domain:trStatus', EPPClient::SCHEMAS_URL).text,
397
+ :reID => dom.xpath('domain:reID', EPPClient::SCHEMAS_URL).text,
398
+ :reDate => DateTime.parse(dom.xpath('domain:reDate', EPPClient::SCHEMAS_URL).text),
399
+ :acID => dom.xpath('domain:acID', EPPClient::SCHEMAS_URL).text,
400
+ :acDate => DateTime.parse(dom.xpath('domain:acDate', EPPClient::SCHEMAS_URL).text),
406
401
  }
407
402
  if (exDate = dom.xpath('domain:exDate', EPPClient::SCHEMAS_URL)).size > 0
408
- ret[:exDate] = DateTime.parse(exDate)
403
+ ret[:exDate] = DateTime.parse(exDate)
409
404
  end
410
405
  ret
411
406
  end
412
407
 
413
408
  def domain_transfer_xml(args) # :nodoc:
414
409
  command do |xml|
415
- xml.transfer('op' => args[:op]) do
416
- xml.transfer('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
417
- xml.name(args[:name])
418
- if args.key?(:period)
419
- xml.period('unit' => args[:period][:unit]) do
420
- args[:period][:number]
421
- end
422
- end
423
- if args.key?(:authInfo)
424
- xml.authInfo do
425
- if args.key?(:roid)
426
- xml.pw({:roid => args[:roid]}, args[:authInfo])
427
- else
428
- xml.pw(args[:authInfo])
429
- end
430
- end
431
- end
432
- end
433
- end
410
+ xml.transfer('op' => args[:op]) do
411
+ xml.transfer('xmlns' => EPPClient::SCHEMAS_URL['domain-1.0']) do
412
+ xml.name(args[:name])
413
+ if args.key?(:period)
414
+ xml.period('unit' => args[:period][:unit]) do
415
+ args[:period][:number]
416
+ end
417
+ end
418
+ if args.key?(:authInfo)
419
+ xml.authInfo do
420
+ if args.key?(:roid)
421
+ xml.pw({ :roid => args[:roid] }, args[:authInfo])
422
+ else
423
+ xml.pw(args[:authInfo])
424
+ end
425
+ end
426
+ end
427
+ end
428
+ end
434
429
  end
435
430
  end
436
431