Refactor keyrelay helper

This commit is contained in:
Martin Lensment 2014-12-22 18:27:56 +02:00
parent 0704249330
commit 4116a94c23
4 changed files with 38 additions and 12 deletions

View file

@ -18,18 +18,6 @@ module Epp::KeyrelayHelper
def validate_keyrelay_request
epp_request_valid?('pubKey', 'flags', 'protocol', 'algorithm', 'name', 'pw')
if parsed_frame.css('relative').text.present? && parsed_frame.css('absolute').text.present?
epp_errors << {
code: '2003',
msg: I18n.t('only_one_parameter_allowed', param_1: 'relative', param_2: 'absolute')
}
elsif parsed_frame.css('relative').text.empty? && parsed_frame.css('absolute').text.empty?
epp_errors << {
code: '2003',
msg: I18n.t('required_parameter_missing_choice', param_1: 'relative', param_2: 'absolute')
}
end
begin
abs_datetime = parsed_frame.css('absolute').text
abs_datetime = DateTime.parse(abs_datetime) if abs_datetime.present?

View file

@ -10,10 +10,15 @@ class Keyrelay < ActiveRecord::Base
validates :expiry_relative, duration_iso8601: true
validate :validate_expiry_relative_xor_expiry_absolute
def epp_code_map
{
'2005' => [
[:expiry_relative, :unknown_pattern, { value: { obj: 'relative', val: expiry_relative } }]
],
'2003' => [
[:base, :only_one_parameter_allowed, { param_1: 'relative', param_2: 'absolute' }]
]
}
end
@ -33,4 +38,11 @@ class Keyrelay < ActiveRecord::Base
return 'pending'
end
end
private
def validate_expiry_relative_xor_expiry_absolute
return if expiry_relative.blank? ^ expiry_absolute.blank?
errors.add(:base, I18n.t(:only_one_parameter_allowed, param_1: 'relative', param_2: 'absolute'))
end
end