mirror of
https://github.com/internetee/registry.git
synced 2025-06-12 07:34:45 +02:00
Create deserializer for EPP DomainUpdate
This commit is contained in:
parent
2c8a4d3fe9
commit
e81653a0b4
2 changed files with 80 additions and 0 deletions
|
@ -56,6 +56,10 @@ module Deserializers
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
key_data + ds_data
|
||||||
|
end
|
||||||
|
|
||||||
def mark_destroy_all(dns_keys)
|
def mark_destroy_all(dns_keys)
|
||||||
# if transition support required mark_destroy dns_keys when has ds/key values otherwise ...
|
# if transition support required mark_destroy dns_keys when has ds/key values otherwise ...
|
||||||
dns_keys.map { |inf_data| mark(inf_data) }
|
dns_keys.map { |inf_data| mark(inf_data) }
|
||||||
|
|
76
lib/deserializers/xml/domain_update.rb
Normal file
76
lib/deserializers/xml/domain_update.rb
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
require 'deserializers/xml/legal_document'
|
||||||
|
require 'deserializers/xml/domain'
|
||||||
|
require 'deserializers/xml/nameserver'
|
||||||
|
require 'deserializers/xml/dnssec'
|
||||||
|
module Deserializers
|
||||||
|
module Xml
|
||||||
|
class DomainUpdate
|
||||||
|
attr_reader :frame, :registrar
|
||||||
|
|
||||||
|
def initialize(frame, registrar)
|
||||||
|
@frame = frame
|
||||||
|
@registrar = registrar
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
obj = { domain: frame.css('name')&.text, registrant: registrant, contacts: contacts,
|
||||||
|
auth_info: if_present('pw'), nameservers: nameservers, dns_keys: dns_keys }
|
||||||
|
|
||||||
|
obj.reject { |_key, val| val.blank? }
|
||||||
|
end
|
||||||
|
|
||||||
|
def registrant
|
||||||
|
return if frame.css('chg > registrant').blank?
|
||||||
|
|
||||||
|
{ code: frame.css('chg > registrant').text, verified: frame.css('chg > registrant').attr('verified').to_s.downcase == 'yes' }
|
||||||
|
end
|
||||||
|
|
||||||
|
def contacts
|
||||||
|
contacts = []
|
||||||
|
frame.css('add > contact').each do |c|
|
||||||
|
contacts << { code: c.text, type: c['type'], action: 'add' }
|
||||||
|
end
|
||||||
|
|
||||||
|
frame.css('rem > contact').each do |c|
|
||||||
|
contacts << { code: c.text, type: c['type'], action: 'rem' }
|
||||||
|
end
|
||||||
|
|
||||||
|
contacts.present? ? contacts : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def nameservers
|
||||||
|
nameservers = []
|
||||||
|
frame.css('add > ns > hostAttr').each do |ns|
|
||||||
|
nsrv = { nameserver: ns.css('hostName').text, host_addr: [], action: 'add' }
|
||||||
|
ns.css('hostAddr').each { |ha| nsrv[:host_addr] << { proto: ha.attr('ip').to_s.downcase, addr: ha.text } }
|
||||||
|
nameservers << nsrv
|
||||||
|
end
|
||||||
|
|
||||||
|
frame.css('rem > ns > hostAttr').each do |ns|
|
||||||
|
nsrv = { nameserver: ns.css('hostName').text, host_addr: [], action: 'rem' }
|
||||||
|
ns.css('hostAddr').each { |ha| nsrv[:host_addr] << { proto: ha.attr('ip').to_s.downcase, addr: ha.text } }
|
||||||
|
nameservers << nsrv
|
||||||
|
end
|
||||||
|
|
||||||
|
nameservers.present? ? nameservers : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def dns_keys
|
||||||
|
added = ::Deserializers::Xml::DnssecKeys.new(frame.css('add')).call
|
||||||
|
added.each { |k| k[:action] = 'add' }
|
||||||
|
removed = ::Deserializers::Xml::DnssecKeys.new(frame.css('rem')).call
|
||||||
|
removed.each { |k| k[:action] = 'rem' }
|
||||||
|
|
||||||
|
return unless (added + removed).present?
|
||||||
|
|
||||||
|
added + removed
|
||||||
|
end
|
||||||
|
|
||||||
|
def if_present(css_path)
|
||||||
|
return if frame.css(css_path).blank?
|
||||||
|
|
||||||
|
frame.css(css_path).text
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue