mirror of
https://github.com/internetee/registry.git
synced 2025-06-10 22:54:47 +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
|
||||
|
||||
def call
|
||||
key_data + ds_data
|
||||
end
|
||||
|
||||
def mark_destroy_all(dns_keys)
|
||||
# if transition support required mark_destroy dns_keys when has ds/key values otherwise ...
|
||||
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