Add epp errors tto the concern itself

This commit is contained in:
Alex Sherman 2021-05-04 15:19:50 +05:00
parent d4775ba5c5
commit e15fed2cd0
5 changed files with 19 additions and 7 deletions

View file

@ -94,7 +94,7 @@ module Epp
end
def handle_errors(obj = nil)
@errors ||= []
@errors ||= ActiveModel::Errors.new(self)
if obj
obj.construct_epp_errors

View file

@ -55,13 +55,13 @@ module Epp
def renew
authorize! :renew, Epp::Contact
epp_errors << { code: '2101', msg: t(:'errors.messages.unimplemented_command') }
epp_errors.add(:epp_errors, code: '2101', msg: t(:'errors.messages.unimplemented_command'))
handle_errors
end
def transfer
authorize! :transfer, Epp::Contact
epp_errors << { code: '2101', msg: t(:'errors.messages.unimplemented_command') }
epp_errors.add(:epp_errors, code: '2101', msg: t(:'errors.messages.unimplemented_command'))
handle_errors
end

View file

@ -44,7 +44,10 @@ module Epp
update_params = ::Deserializers::Xml::DomainUpdate.new(params[:parsed_frame],
registrar_id).call
action = Actions::DomainUpdate.new(@domain, update_params, false)
(handle_errors(@domain) and return) unless action.call
unless action.call
handle_errors(@domain)
return
end
pending = @domain.epp_pending_update.present?
render_epp_response("/epp/domains/success#{'_pending' if pending}")

View file

@ -113,11 +113,20 @@ module EppErrors
end
def add_epp_error(code, obj, val, msg)
errors[:epp_errors] ||= []
t = errors.generate_message(*msg) if msg.is_a?(Array)
t = msg if msg.is_a?(String)
err = { code: code, msg: t }
val = check_for_status(code, obj, val)
err[:value] = { val: val, obj: obj } if val.present?
errors[:epp_errors] << err
self.errors.add(:epp_errors, err)
end
def check_for_status(code, obj, val)
if code == '2304' && val.present? && val == DomainStatus::SERVER_DELETE_PROHIBITED &&
obj == 'status'
DomainStatus::PENDING_UPDATE
else
val
end
end
end

View file

@ -2,7 +2,7 @@ xml.epp_head do
xml.response do
@errors.each do |error|
x = error&.options
next if x.empty?
next if x.empty? || x == { value: nil }
xml.result('code' => x[:code]) do
xml.msg(x[:msg], 'lang' => 'en')
model_name = resource ? resource.model_name.singular.sub('epp_','') : controller.controller_name.singularize