Basic domain renew

This commit is contained in:
Martin Lensment 2014-08-06 18:04:46 +03:00
parent d62106da20
commit b828645920
7 changed files with 69 additions and 0 deletions

View file

@ -9,6 +9,10 @@ class Epp::CommandsController < ApplicationController
send("create_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}") send("create_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}")
end end
def renew
send("renew_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}")
end
def check def check
send("check_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}") send("check_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}")
end end

View file

@ -19,6 +19,23 @@ module Epp::DomainsHelper
render '/epp/domains/check' render '/epp/domains/check'
end end
def renew_domain
ph = params_hash['epp']['command']['renew']['renew']
@domain = Domain.find_by(name: ph[:name])
unless @domain
epp_errors << {code: '2303', msg: I18n.t('errors.messages.epp_domain_not_found'), value: {obj: 'domain', val: ph[:name]}}
render '/epp/error' and return
end
if @domain.renew(ph[:curExpDate], ph[:period])
render '/epp/domains/renew'
else
handle_errors
render '/epp/error'
end
end
### HELPER METHODS ### ### HELPER METHODS ###
private private

View file

@ -124,6 +124,16 @@ class Domain < ActiveRecord::Base
errors.add(:admin_contacts, :blank) if admin_contacts.empty? errors.add(:admin_contacts, :blank) if admin_contacts.empty?
end end
def renew(cur_exp_date, period, unit='y')
if cur_exp_date == valid_to
valid_to = period.to_i.years
else
errors[:base] << {msg: I18n.t('errors.messages.epp_exp_dates_do_not_match'), obj: 'domain', val: cur_exp_date}
end
save
end
class << self class << self
def check_availability(domains) def check_availability(domains)
domains = [domains] if domains.is_a?(String) domains = [domains] if domains.is_a?(String)

View file

@ -0,0 +1,16 @@
xml.epp_head do
xml.response do
xml.result('code' => '1000') do
xml.msg 'Command completed successfully'
end
xml.resData do
xml.tag!('domain:renData', 'xmlns:domain' => 'urn:ietf:params:xml:ns:domain-1.0') do
xml.tag!('domain:name', @domain[:name])
xml.tag!('domain:exDate', @domain.valid_to)
end
end
xml << render('/epp/shared/trID')
end
end

View file

@ -71,3 +71,5 @@ en:
epp_command_failed: 'Command failed' epp_command_failed: 'Command failed'
epp_authorization_error: 'Authorization error' epp_authorization_error: 'Authorization error'
epp_id_taken: 'Contact id already exists' epp_id_taken: 'Contact id already exists'
epp_domain_not_found: 'Domain not found'
epp_exp_dates_do_not_match: 'Given and current expire dates do not match'

View file

@ -131,6 +131,12 @@ describe 'EPP Domain', epp: true do
end end
end end
context 'with valid domain' do
before(:each) { Fabricate(:domain, name: 'example.ee') }
end
it 'checks a domain' do it 'checks a domain' do
response = epp_request('domains/check.xml') response = epp_request('domains/check.xml')
expect(response[:result_code]).to eq('1000') expect(response[:result_code]).to eq('1000')

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<renew>
<domain:renew
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.ee</domain:name>
<domain:curExpDate>2000-04-03</domain:curExpDate>
<domain:period unit="y">1</domain:period>
</domain:renew>
</renew>
<clTRID>ABC-12345</clTRID>
</command>
</epp>