mirror of
https://github.com/internetee/registry.git
synced 2025-06-10 06:34:46 +02:00
Hash: select entries by keys
This commit is contained in:
parent
c23075fa19
commit
c58b4fb2e9
11 changed files with 201 additions and 141 deletions
|
@ -47,14 +47,16 @@ module Deserializers
|
|||
|
||||
# schema validation prevents both in the same parent node
|
||||
if frame.css('dsData').present?
|
||||
frame.css('dsData').each do |ds_data|
|
||||
@ds_data << Deserializers::Xml::DnssecKey.new(ds_data, true).call
|
||||
end
|
||||
else
|
||||
frame.css('keyData').each do |key|
|
||||
@key_data << Deserializers::Xml::DnssecKey.new(key, false).call
|
||||
end
|
||||
frame.css('dsData').each { |k| @ds_data << key_from_params(k, dsa: true) }
|
||||
end
|
||||
|
||||
return if frame.css('keyData').blank?
|
||||
|
||||
frame.css('keyData').each { |k| @key_data << key_from_params(k, dsa: false) }
|
||||
end
|
||||
|
||||
def key_from_params(obj, dsa: false)
|
||||
Deserializers::Xml::DnssecKey.new(obj, dsa).call
|
||||
end
|
||||
|
||||
def call
|
||||
|
@ -67,9 +69,8 @@ module Deserializers
|
|||
end
|
||||
|
||||
def mark_destroy(dns_keys)
|
||||
(ds_data.present? ? ds_filter(dns_keys) : kd_filter(dns_keys)).map do |inf_data|
|
||||
inf_data.blank? ? nil : mark(inf_data)
|
||||
end
|
||||
data = ds_data.present? ? ds_filter(dns_keys) : kd_filter(dns_keys)
|
||||
data.each { |inf_data| inf_data.blank? ? nil : mark(inf_data) }
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
module Deserializers
|
||||
module Xml
|
||||
class Domain
|
||||
attr_reader :frame
|
||||
attr_reader :registrar
|
||||
attr_reader :frame, :registrar
|
||||
|
||||
def initialize(frame, registrar)
|
||||
@frame = frame
|
||||
|
@ -15,15 +14,24 @@ module Deserializers
|
|||
registrar_id: registrar,
|
||||
registrant_id: if_present('registrant'),
|
||||
reserved_pw: if_present('reserved > pw'),
|
||||
period: frame.css('period').text.present? ? Integer(frame.css('period').text) : 1,
|
||||
period_unit: frame.css('period').first ? frame.css('period').first[:unit] : 'y',
|
||||
}
|
||||
|
||||
attributes.merge!(assign_period_attributes)
|
||||
|
||||
pw = frame.css('authInfo > pw').text
|
||||
attributes[:transfer_code] = pw if pw.present?
|
||||
attributes.compact
|
||||
end
|
||||
|
||||
def assign_period_attributes
|
||||
period = frame.css('period')
|
||||
|
||||
{
|
||||
period: period.text.present? ? Integer(period.text) : 1,
|
||||
period_unit: period.first ? period.first[:unit] : 'y',
|
||||
}
|
||||
end
|
||||
|
||||
def if_present(css_path)
|
||||
return if frame.css(css_path).blank?
|
||||
|
||||
|
|
|
@ -42,20 +42,18 @@ module Deserializers
|
|||
end
|
||||
|
||||
def nameservers
|
||||
nameservers = []
|
||||
frame.css('add > ns > hostAttr').each do |ns|
|
||||
nsrv = Deserializers::Xml::Nameserver.new(ns).call
|
||||
nsrv[:action] = 'add'
|
||||
nameservers << nsrv
|
||||
end
|
||||
@nameservers = []
|
||||
|
||||
frame.css('rem > ns > hostAttr').each do |ns|
|
||||
nsrv = Deserializers::Xml::Nameserver.new(ns).call
|
||||
nsrv[:action] = 'rem'
|
||||
nameservers << nsrv
|
||||
end
|
||||
frame.css('add > ns > hostAttr').each { |ns| assign_ns(ns) }
|
||||
frame.css('rem > ns > hostAttr').each { |ns| assign_ns(ns, add: false) }
|
||||
|
||||
nameservers.presence
|
||||
@nameservers.presence
|
||||
end
|
||||
|
||||
def assign_ns(nameserver, add: true)
|
||||
nsrv = Deserializers::Xml::Nameserver.new(nameserver).call
|
||||
nsrv[:action] = add ? 'add' : 'rem'
|
||||
@nameservers << nsrv
|
||||
end
|
||||
|
||||
def dns_keys
|
||||
|
@ -72,17 +70,12 @@ module Deserializers
|
|||
def statuses
|
||||
return if frame.css('status').blank?
|
||||
|
||||
statuses = []
|
||||
s = []
|
||||
|
||||
frame.css('add > status').each do |e|
|
||||
statuses << { status: e.attr('s').to_s, action: 'add' }
|
||||
end
|
||||
frame.css('add > status').each { |e| s << { status: e.attr('s'), action: 'add' } }
|
||||
frame.css('rem > status').each { |e| s << { status: e.attr('s'), action: 'rem' } }
|
||||
|
||||
frame.css('rem > status').each do |e|
|
||||
statuses << { status: e.attr('s').to_s, action: 'rem' }
|
||||
end
|
||||
|
||||
statuses
|
||||
s
|
||||
end
|
||||
|
||||
def legal_document
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue