internetee-registry/app/helpers/epp/domains_helper.rb
2014-07-30 17:09:41 +03:00

58 lines
1.4 KiB
Ruby

module Epp::DomainsHelper
def create_domain
@domain = Domain.new(domain_create_params)
@domain.create_contacts(domain_contacts)
if @domain.save
render '/epp/domains/create'
else
handle_domain_name_errors
render '/epp/error'
end
end
def check_domain
ph = params_hash['epp']['command']['check']['check']
@domains = Domain.check_availability(ph[:name])
render '/epp/domains/check'
end
### HELPER METHODS ###
def domain_create_params
ph = params_hash['epp']['command']['create']['create']
{
name: ph[:name],
registrar_id: current_epp_user.registrar.try(:id),
registered_at: Time.now,
period: ph[:period].to_i,
valid_from: Date.today,
valid_to: Date.today + ph[:period].to_i.years,
auth_info: ph[:authInfo][:pw]
}
end
def domain_contacts
parsed_frame = Nokogiri::XML(params[:frame]).remove_namespaces!
res = {tech: [], admin: []}
parsed_frame.css('contact[type="tech"]').each do |x|
res[:tech] << Hash.from_xml(x.to_s)
end
parsed_frame.css('contact[type="admin"]').each do |x|
res[:admin] << Hash.from_xml(x.to_s)
end
res
end
def handle_domain_name_errors
[:epp_domain_taken, :epp_domain_reserved].each do |x|
if @domain.errors.added?(:name, x)
epp_errors << {code: '2302', msg: @domain.errors[:name].first}
end
end
end
end