internetee-registry/app/models/keyrelay.rb
2014-12-22 18:27:56 +02:00

48 lines
1.1 KiB
Ruby

class Keyrelay < ActiveRecord::Base
include EppErrors
belongs_to :domain
belongs_to :requester, class_name: 'Registrar'
belongs_to :accepter, class_name: 'Registrar'
delegate :name, to: :domain, prefix: true
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
def expiry
if expiry_relative.present?
pa_date + ISO8601::Duration.new(expiry_relative).to_seconds
elsif expiry_absolute
expiry_absolute
end
end
def status
if Time.now > expiry
return 'expired'
else
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