Refactor epp requests closer to international standard

This commit is contained in:
Martin Lensment 2014-07-03 17:47:53 +03:00
parent 4684b311a2
commit 9def6a7c27
11 changed files with 81 additions and 70 deletions

View file

@ -11,12 +11,8 @@ module Epp::Common
send(params[:command])
end
def parsed_frame
Nokogiri::XML(params[:frame]).remove_namespaces!
end
def get_params_hash(path)
Hash.from_xml(parsed_frame.css(path).to_xml).with_indifferent_access
def params_hash
@params_hash ||= Hash.from_xml(params[:frame]).with_indifferent_access
end
def epp_session
@ -28,13 +24,13 @@ module Epp::Common
end
def validate_request
xsd = Nokogiri::XML::Schema(File.read('doc/schemas/epp-1.0.xsd'))
doc = Nokogiri::XML(params[:frame])
@extValues = xsd.validate(doc)
if @extValues.any?
@code = '2001'
@msg = 'Command syntax error'
render '/epp/error' and return
end
# xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-1.0.xsd'))
# doc = Nokogiri::XML(params[:frame])
# @extValues = xsd.validate(doc)
# if @extValues.any?
# @code = '2001'
# @msg = 'Command syntax error'
# render '/epp/error' and return
# end
end
end

View file

@ -4,20 +4,16 @@ class Epp::CommandsController < ApplicationController
include Epp::ContactsHelper
OBJECT_TYPES = {
'http://www.nic.cz/xml/epp/domain-1.4 domain-1.4.xsd' => 'domain',
'http://www.nic.cz/xml/epp/contact-1.6 contact-1.6.xsd' => 'contact'
'urn:ietf:params:xml:ns:contact-1.0' => 'contact',
'urn:ietf:params:xml:ns:domain-1.0' => 'domain'
}
private
def create
ph = get_params_hash('create create')[:create]
type = OBJECT_TYPES[ph[:schemaLocation]]
send("create_#{type}")
send("create_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}")
end
def check
ph = get_params_hash('check check')[:check]
type = OBJECT_TYPES[ph[:schemaLocation]]
send("check_#{type}")
send("check_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}")
end
end

View file

@ -27,7 +27,7 @@ class Epp::SessionsController < ApplicationController
### HELPER METHODS ###
def login_params
ph = get_params_hash('epp command login')[:login]
ph = params_hash['epp']['command']['login']
{ username: ph[:clID], password: ph[:pw] }
end
end