epp-client-base 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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