From 16ca5eb44ca3c0182035dfef1f84d6fd5cc5a31f Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 16 Feb 2015 13:05:09 +0200 Subject: [PATCH] Add helper for extracting epp attributes --- app/controllers/epp/domains_controller.rb | 41 +++++++++++++++++++---- lib/epp_parser.rb | 30 +++++++++++++++++ 2 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 lib/epp_parser.rb diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index c65b14fb1..2a4411ba0 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -42,12 +42,16 @@ class Epp::DomainsController < EppController handle_errors(@domain) and return unless @domain - @domain.parse_and_detach_domain_dependencies(params[:parsed_frame].css('rem')) - @domain.parse_and_detach_ds_data(params[:parsed_frame].css('extension rem')) - @domain.parse_and_attach_domain_dependencies(params[:parsed_frame].css('add')) - @domain.parse_and_attach_ds_data(params[:parsed_frame].css('extension add')) - @domain.parse_and_update_domain_dependencies(params[:parsed_frame].css('chg')) - @domain.attach_legal_document(Epp::EppDomain.parse_legal_document_from_frame(params[:parsed_frame])) + # @domain.parse_and_detach_domain_dependencies(params[:parsed_frame].css('rem') + # @domain.parse_and_detach_ds_data(params[:parsed_frame].css('extension rem')) + # @domain.parse_and_attach_domain_dependencies(params[:parsed_frame].css('add')) + # @domain.parse_and_attach_ds_data(params[:parsed_frame].css('extension add')) + # @domain.parse_and_update_domain_dependencies(params[:parsed_frame].css('chg')) + # @domain.attach_legal_document(Epp::EppDomain.parse_legal_document_from_frame(params[:parsed_frame])) + + @domain.update_attributes(domain_rem_params) + + binding.pry if @domain.errors.any? || !@domain.save handle_errors(@domain) @@ -169,6 +173,31 @@ class Epp::DomainsController < EppController requires 'name' end + def domain_rem_params + ns_list = Epp::EppDomain.parse_nameservers_from_frame(params[:parsed_frame]) + + to_destroy = [] + ns_list.each do |ns_attrs| + nameserver = @domain.nameservers.where(ns_attrs).try(:first) + if nameserver.blank? + epp_errors << { + code: '2303', + msg: I18n.t('nameserver_not_found'), + value: { obj: 'hostAttr', val: ns_attrs[:hostname] } + } + else + to_destroy << { + id: nameserver.id, + _destroy: 1 + } + end + end + + { + nameservers_attributes: to_destroy + } + end + def domain_create_params period = params[:parsed_frame].css('period').text diff --git a/lib/epp_parser.rb b/lib/epp_parser.rb new file mode 100644 index 000000000..569e4a07a --- /dev/null +++ b/lib/epp_parser.rb @@ -0,0 +1,30 @@ +module EppParser + def domain_rem_params + + + { + nameservers_attributes: to_destroy + } + end + + def nameservers_attributes + ns_list = Epp::EppDomain.parse_nameservers_from_frame(params[:parsed_frame]) + + to_destroy = [] + ns_list.each do |ns_attrs| + nameserver = @domain.nameservers.where(ns_attrs).try(:first) + if nameserver.blank? + epp_errors << { + code: '2303', + msg: I18n.t('nameserver_not_found'), + value: { obj: 'hostAttr', val: ns_attrs[:hostname] } + } + else + to_destroy << { + id: nameserver.id, + _destroy: 1 + } + end + end + end +end