-
-
Notifications
You must be signed in to change notification settings - Fork 59
/
core.rb
66 lines (57 loc) 路 2.25 KB
/
core.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# frozen_string_literal: true
module Truemail
require_relative '../truemail/version'
require_relative '../truemail/configuration'
require_relative '../truemail/worker'
require_relative '../truemail/executor'
require_relative '../truemail/wrapper'
require_relative '../truemail/auditor'
require_relative '../truemail/validator'
require_relative '../truemail/logger'
ConfigurationError = Class.new(StandardError)
TypeError = Class.new(StandardError)
ArgumentError = Class.new(StandardError) do
def initialize(arg_value, arg_name)
super("#{arg_value} is not a valid #{arg_name}")
end
end
PunycodeRepresenter = Class.new do
require 'simpleidn'
def self.call(email)
return unless email.is_a?(String)
return email if email.ascii_only?
user, domain = email.split('@')
"#{user}@#{SimpleIDN.to_ascii(domain.downcase)}"
end
end
module RegexConstant
REGEX_DOMAIN = /[\p{L}0-9]+([\-.]{1}[\p{L}0-9]+)*\.\p{L}{2,63}/i.freeze
REGEX_EMAIL_PATTERN = /(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\w|\-|.|+]*)@(#{REGEX_DOMAIN})\z)/.freeze
REGEX_DOMAIN_PATTERN = /(?=\A.{4,255}\z)(\A#{REGEX_DOMAIN}\z)/.freeze
REGEX_DOMAIN_FROM_EMAIL = /\A.+@(.+)\z/.freeze
REGEX_SMTP_ERROR_BODY_PATTERN = /(?=.*550)(?=.*(user|account|customer|mailbox)).*/i.freeze
end
module Audit
require_relative '../truemail/audit/base'
require_relative '../truemail/audit/ip'
require_relative '../truemail/audit/dns'
require_relative '../truemail/audit/ptr'
end
module Validate
require_relative '../truemail/validate/base'
require_relative '../truemail/validate/domain_list_match'
require_relative '../truemail/validate/regex'
require_relative '../truemail/validate/mx'
require_relative '../truemail/validate/smtp'
require_relative '../truemail/validate/smtp/response'
require_relative '../truemail/validate/smtp/request'
end
module Log
require_relative '../truemail/log/event'
require_relative '../truemail/log/serializer/base'
require_relative '../truemail/log/serializer/auditor_json'
require_relative '../truemail/log/serializer/validator_base'
require_relative '../truemail/log/serializer/validator_text'
require_relative '../truemail/log/serializer/validator_json'
end
end