internetee-registry/lib/deserializers/xml/domain.rb
2021-03-23 13:14:31 +02:00

61 lines
1.4 KiB
Ruby

module Deserializers
module Xml
class Domain
attr_reader :frame, :registrar
def initialize(frame, registrar)
@frame = frame
@registrar = registrar
end
def call
attributes = {
name: if_present('name'),
registrar: registrar,
registrant: if_present('registrant'),
reserved_pw: if_present('reserved > pw'),
}
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',
exp_date: if_present('curExpDate'),
}
end
def if_present(css_path)
return if frame.css(css_path).blank?
frame.css(css_path).text
end
def statuses_to_add
statuses_frame = frame.css('add')
return if statuses_frame.blank?
statuses_frame.css('status').map do |status|
status['s']
end
end
def statuses_to_remove
statuses_frame = frame.css('rem')
return if statuses_frame.blank?
statuses_frame.css('status').map do |status|
status['s']
end
end
end
end
end