mirror of
https://github.com/internetee/registry.git
synced 2025-06-11 23:24:48 +02:00
refactoring
This commit is contained in:
parent
b7c0a6c4c9
commit
6a07aeb4c7
2 changed files with 103 additions and 71 deletions
|
@ -2,9 +2,9 @@ class EppConstraint
|
|||
OBJECT_TYPES = {
|
||||
domain: [
|
||||
{ domain: Xsd::Schema.filename(for_prefix: 'domain-ee') },
|
||||
{ domain: Xsd::Schema.filename(for_prefix: 'domain-eis') }
|
||||
{ domain: Xsd::Schema.filename(for_prefix: 'domain-eis') },
|
||||
],
|
||||
contact: { contact: Xsd::Schema.filename(for_prefix: 'contact-ee') }
|
||||
contact: { contact: Xsd::Schema.filename(for_prefix: 'contact-ee') },
|
||||
}.freeze
|
||||
|
||||
def initialize(type)
|
||||
|
@ -16,23 +16,14 @@ class EppConstraint
|
|||
# TODO: Maybe move this to controller to keep params clean
|
||||
return redirect_to_error_controller(request) if request.params[:action] == 'wrong_schema'
|
||||
|
||||
if request.params[:raw_frame]
|
||||
request.params[:raw_frame] = request.params[:raw_frame].gsub!(/(?<=>)(.*?)(?=<)/) do |s|
|
||||
s.strip
|
||||
end
|
||||
end
|
||||
request.params[:nokogiri_frame] ||= Nokogiri::XML(request.params[:raw_frame] || request.params[:frame])
|
||||
request.params[:parsed_frame] ||= request.params[:nokogiri_frame].dup.remove_namespaces!
|
||||
request = parse_raw_frame(request) if request.params[:raw_frame]
|
||||
|
||||
request = parse_params(request)
|
||||
|
||||
unless %i[poll session].include?(@type)
|
||||
element = "//#{@type}:#{request.params[:action]}"
|
||||
|
||||
if @type == :domain
|
||||
OBJECT_TYPES[@type].each do |obj|
|
||||
return true unless request.params[:nokogiri_frame].xpath(element.to_s, obj).none?
|
||||
end
|
||||
return false
|
||||
end
|
||||
return enumerate_domain_object(request, element) if @type == :domain
|
||||
|
||||
return false if request.params[:nokogiri_frame].xpath(element.to_s, OBJECT_TYPES[@type]).none?
|
||||
end
|
||||
|
@ -41,6 +32,25 @@ class EppConstraint
|
|||
true
|
||||
end
|
||||
|
||||
def parse_raw_frame(request)
|
||||
request.params[:raw_frame] = request.params[:raw_frame].gsub!(/(?<=>)(.*?)(?=<)/, &:strip)
|
||||
request
|
||||
end
|
||||
|
||||
def enumerate_domain_object(request, element)
|
||||
OBJECT_TYPES[@type].each do |obj|
|
||||
return true unless request.params[:nokogiri_frame].xpath(element.to_s, obj).none?
|
||||
end
|
||||
false
|
||||
end
|
||||
|
||||
def parse_params(request)
|
||||
request.params[:nokogiri_frame] ||= Nokogiri::XML(request.params[:raw_frame] || request.params[:frame])
|
||||
request.params[:parsed_frame] ||= request.params[:nokogiri_frame].dup.remove_namespaces!
|
||||
|
||||
request
|
||||
end
|
||||
|
||||
def redirect_to_error_controller(request)
|
||||
request.params[:epp_object_type] = @error
|
||||
true
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue