mirror of
https://github.com/internetee/registry.git
synced 2025-08-06 09:45:11 +02:00
Add email checking with validation event saving
This commit is contained in:
parent
d4fe961e34
commit
c344b91d84
4 changed files with 65 additions and 4 deletions
53
app/interactions/actions/email_check.rb
Normal file
53
app/interactions/actions/email_check.rb
Normal file
|
@ -0,0 +1,53 @@
|
|||
module Actions
|
||||
class EmailCheck
|
||||
attr_reader :email, :validation_eventable, :check_level
|
||||
|
||||
def initialize(email:, validation_eventable:, check_level: nil)
|
||||
@email = email
|
||||
@validation_eventable = validation_eventable
|
||||
@check_level = check_level || :regex
|
||||
end
|
||||
|
||||
def call
|
||||
result = check_email
|
||||
save_result(result)
|
||||
log_failure(result) unless result.success
|
||||
result.success
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_email
|
||||
Truemail.validate(email, with: check_level).result
|
||||
end
|
||||
|
||||
def save_result(result)
|
||||
validation_eventable.validation_events.create(validation_event_attrs(result))
|
||||
end
|
||||
|
||||
def validation_event_attrs(result)
|
||||
{
|
||||
event_data: event_data(result),
|
||||
event_type: ValidationEvent::EventType::TYPES[:email_validation],
|
||||
success: result.success,
|
||||
}
|
||||
end
|
||||
|
||||
def logger
|
||||
@logger ||= Rails.logger
|
||||
end
|
||||
|
||||
def event_data(result)
|
||||
result.to_h.merge(check_level: check_level)
|
||||
end
|
||||
|
||||
def log_failure(result)
|
||||
logger.info "Failed to validate email #{email} for the #{log_object_id}."
|
||||
logger.info "Validation level #{check_level}, the result was #{result}"
|
||||
end
|
||||
|
||||
def log_object_id
|
||||
"#{validation_eventable.class}: #{validation_eventable.id}"
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue