From b683fe813ce99a0f73f7f73824d1e4d5e92a78b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Mon, 30 Nov 2020 10:33:23 +0200 Subject: [PATCH] Implement partial domain deserializer --- lib/deserializers/xml/domain.rb | 49 ++++++++++++++++++++++++++ lib/deserializers/xml/domain_create.rb | 27 ++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 lib/deserializers/xml/domain.rb create mode 100644 lib/deserializers/xml/domain_create.rb diff --git a/lib/deserializers/xml/domain.rb b/lib/deserializers/xml/domain.rb new file mode 100644 index 000000000..f9f893313 --- /dev/null +++ b/lib/deserializers/xml/domain.rb @@ -0,0 +1,49 @@ +module Deserializers + module Xml + class Domain + attr_reader :frame + + def initialize(frame) + @frame = frame + end + + def call + attributes = { + name: if_present('name'), + registrar_id: current_user.registrar.id, + reserved_pw: if_present('reserved > pw'), + period: Integer(frame.css('period').text, 1), + period_unit: parsed_frame.css('period').first ? parsed_frame.css('period').first[:unit] : 'y' + } + + pw = frame.css('authInfo > pw').text + attributes[:transfer_code] = pw if pw.present? + attributes.compact + 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 diff --git a/lib/deserializers/xml/domain_create.rb b/lib/deserializers/xml/domain_create.rb new file mode 100644 index 000000000..b3bc6fe4a --- /dev/null +++ b/lib/deserializers/xml/domain_create.rb @@ -0,0 +1,27 @@ +require 'deserializers/xml/legal_document' +require 'deserializers/xml/ident' +require 'deserializers/xml/contact' + +module Deserializers + module Xml + class ContactUpdate + attr_reader :frame + + def initialize(frame) + @frame = frame + end + + def contact + @contact ||= ::Deserializers::Xml::Contact.new(frame).call + end + + def ident + @ident ||= ::Deserializers::Xml::Ident.new(frame).call + end + + def legal_document + @legal_document ||= ::Deserializers::Xml::LegalDocument.new(frame).call + end + end + end +end