made refactoring base codeclimate

This commit is contained in:
olegphenomenon 2021-12-28 12:40:18 +02:00
parent b8be4ec928
commit 7cb220e704
5 changed files with 32 additions and 24 deletions

View file

@ -9,25 +9,26 @@ module Actions
private
def check_for_records_value(email:, value:)
email = Mail::Address.new(email).domain
result = nil
email_domain = Mail::Address.new(email).domain
dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip)
resolve_a_and_aaaa_records(dns_servers: dns_servers, email_domain: email_domain, value: value)
end
def resolve_a_and_aaaa_records(dns_servers:, email_domain:, value:)
Resolv::DNS.open({ nameserver: dns_servers }) do |dns|
dns.timeouts = ENV['a_and_aaaa_validation_timeout'].to_i || 1
ress = nil
case value
when 'A'
ress = dns.getresources email, Resolv::DNS::Resource::IN::A
ress = dns.getresources email_domain, Resolv::DNS::Resource::IN::A
when 'AAAA'
ress = dns.getresources email, Resolv::DNS::Resource::IN::AAAA
ress = dns.getresources email_domain, Resolv::DNS::Resource::IN::AAAA
end
result = ress.map { |r| r.address }
ress.map(&:address)
end
result
end
end
end

View file

@ -22,11 +22,11 @@ module Actions
[:regex, :mx].each do |m|
result = Actions::SimpleMailValidator.run(email: contact.email, level: m)
unless result
contact.add_epp_error('2005', nil, "email didn't pass validation", I18n.t(:parameter_value_syntax_error))
@error = true
return
end
next if result
contact.add_epp_error('2005', nil, "email didn't pass validation", I18n.t(:parameter_value_syntax_error))
@error = true
return
end
true

View file

@ -25,12 +25,11 @@ module Actions
[:regex, :mx].each do |m|
result = Actions::SimpleMailValidator.run(email: @new_attributes[:email], level: m)
next if result
unless result
contact.add_epp_error('2005', nil, "email didn't pass validation", I18n.t(:parameter_value_syntax_error))
@error = true
return
end
contact.add_epp_error('2005', nil, "email didn't pass validation", I18n.t(:parameter_value_syntax_error))
@error = true
return
end
true

View file

@ -54,12 +54,12 @@ module Actions
result_validation = Actions::AAndAaaaEmailValidation.call(email: @email, value: 'A')
output_a_and_aaaa_validation_results(email: @email,
result: result_validation,
type: 'A') unless Rails.env.test?
type: 'A')
result_validation = Actions::AAndAaaaEmailValidation.call(email: @email, value: 'AAAA') if result_validation.empty?
output_a_and_aaaa_validation_results(email: @email,
result: result_validation,
type: 'AAAA') unless Rails.env.test?
type: 'AAAA')
result_validation.present? ? result.success = true : result.success = false
validation_eventable.validation_events.create(validation_event_attrs(result))
@ -71,7 +71,9 @@ module Actions
true
end
def output_a_and_aaaa_validation_results(email:, result:, type: )
def output_a_and_aaaa_validation_results(email:, result:, type:)
return if Rails.env.test?
logger.info "Validated #{type} record for #{email}. Validation result - #{result}"
end

View file

@ -3,26 +3,32 @@ module Actions
extend self
def run(email:, level:)
result = Truemail.validate(email, with: level).result.success
result = truemail_validate(email: email, level: level)
result = validate_for_a_and_aaaa_records(email) if !result && level == :mx
result
end
def truemail_validate(email:, level:)
Truemail.validate(email, with: level).result.success
end
def validate_for_a_and_aaaa_records(email)
result_validation = Actions::AAndAaaaEmailValidation.call(email: email, value: 'A')
output_a_and_aaaa_validation_results(email: email,
result: result_validation,
type: 'A') unless Rails.env.test?
type: 'A')
result_validation = Actions::AAndAaaaEmailValidation.call(email: email, value: 'AAAA') if result_validation.empty?
output_a_and_aaaa_validation_results(email: email,
result: result_validation,
type: 'AAAA') unless Rails.env.test?
type: 'AAAA')
result_validation.present? ? true : false
end
def output_a_and_aaaa_validation_results(email:, result:, type: )
def output_a_and_aaaa_validation_results(email:, result:, type:)
return if Rails.env.test?
logger.info "Validated #{type} record for #{email}. Validation result - #{result}"
end