diff --git a/config/routes.rb b/config/routes.rb index f931ac19b..f31a4bdd0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,27 +1,4 @@ -class EppConstraint - OBJECT_TYPES = { - domain: { domain: 'urn:ietf:params:xml:ns:domain-1.0' }, - contact: { contact: 'urn:ietf:params:xml:ns:contact-1.0' } - } - - def initialize(type) - @type = type - end - - # creates parsed_frame, detects epp request object - def matches?(request) - parsed_frame = Nokogiri::XML(request.params[:raw_frame]) - - unless [:keyrelay, :poll].include?(@type) - element = "//#{@type}:#{request.params[:action]}" - return false if parsed_frame.xpath("#{element}", OBJECT_TYPES[@type]).none? - end - - request.params[:parsed_frame] = parsed_frame.remove_namespaces! - request.params[:epp_object_type] = @type - true - end -end +require 'epp_constraint' Rails.application.routes.draw do namespace(:epp, defaults: { format: :xml }) do diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb new file mode 100644 index 000000000..de9dce6e5 --- /dev/null +++ b/lib/epp_constraint.rb @@ -0,0 +1,24 @@ +class EppConstraint + OBJECT_TYPES = { + domain: { domain: 'urn:ietf:params:xml:ns:domain-1.0' }, + contact: { contact: 'urn:ietf:params:xml:ns:contact-1.0' } + } + + def initialize(type) + @type = type + end + + # creates parsed_frame, detects epp request object + def matches?(request) + parsed_frame = Nokogiri::XML(request.params[:raw_frame]) + + unless [:keyrelay, :poll].include?(@type) + element = "//#{@type}:#{request.params[:action]}" + return false if parsed_frame.xpath("#{element}", OBJECT_TYPES[@type]).none? + end + + request.params[:parsed_frame] = parsed_frame.remove_namespaces! + request.params[:epp_object_type] = @type + true + end +end