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