From aa88c3056599c931a1f32abdc84941d74d4e987f Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 25 Jun 2014 18:12:00 +0300 Subject: [PATCH] Add basic domain creating via EPP --- app/controllers/epp/commands_controller.rb | 9 ++++++++- app/helpers/epp/commands_helper.rb | 6 ++++++ app/helpers/epp/domains_helper.rb | 18 ++++++++++++++++++ spec/epp/domain_spec.rb | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 app/helpers/epp/commands_helper.rb create mode 100644 app/helpers/epp/domains_helper.rb diff --git a/app/controllers/epp/commands_controller.rb b/app/controllers/epp/commands_controller.rb index bec443441..03c4d54cf 100644 --- a/app/controllers/epp/commands_controller.rb +++ b/app/controllers/epp/commands_controller.rb @@ -1,8 +1,15 @@ class Epp::CommandsController < ApplicationController include Epp::Common + include Epp::CommandsHelper + include Epp::DomainsHelper + + OBJECT_TYPES = { + 'http://www.nic.cz/xml/epp/domain-1.4 domain-1.4.xsd' => 'domain' + } private def create - render '/epp/domains/create' + type = OBJECT_TYPES[parsed_frame.css('create create').attr('schemaLocation').value] + send("create_#{type}") end end diff --git a/app/helpers/epp/commands_helper.rb b/app/helpers/epp/commands_helper.rb new file mode 100644 index 000000000..e4f6b4f47 --- /dev/null +++ b/app/helpers/epp/commands_helper.rb @@ -0,0 +1,6 @@ +module Epp::CommandsHelper + def command_params + node_set = parsed_frame.css('epp command create create').children.select(&:element?) + node_set.inject({}) {|hash, obj| hash[obj.name.to_sym] = obj.text;hash } + end +end diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb new file mode 100644 index 000000000..5357e612c --- /dev/null +++ b/app/helpers/epp/domains_helper.rb @@ -0,0 +1,18 @@ +module Epp::DomainsHelper + def create_domain + domain = Domain.create!(domain_params) + render '/epp/domains/create' + end + + def domain_params + cp = command_params + { + name: cp[:name], + registrar: nil, #well come from current_epp_user + registered_at: Time.now, + valid_from: Date.today, + valid_to: Date.today + cp[:period].to_i.years, + auth_info: cp[:authInfo] + } + end +end diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index d9d9b9cb0..2eecf0d4e 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -8,6 +8,8 @@ describe 'EPP Domain', epp: true do it 'creates a domain' do response = epp_request('create_domain.xml') + expect(response[:result_code]).to eq('1000') + expect(response[:msg]).to eq('Command completed successfully') end end