truemail 3.2.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/truemail/configuration.rb +2 -17
- data/lib/truemail/logger.rb +71 -5
- data/lib/truemail/version.rb +1 -1
- data/truemail.gemspec +5 -5
- metadata +22 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0797d29fafe171b61130e9f81d0d9ad7365e137a71674905e7ed8b1acbe65336'
|
4
|
+
data.tar.gz: 05d19c7528dda2c16c681c9f250f3e7e2873c3490f53dcfc1800f93a3ab0135c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e29878b8a69ea38bb8b56b6fcdb89f33d7924a0b14dc43364bd5d69234cd2778ababc9e09c92891711ddc3b872b06560d31db4d0555df1974f14c79b341af63
|
7
|
+
data.tar.gz: 3fc0dbb8c39045fc86c0427a0fc98ac33540f6bd69c468adb48303718449df6684cb86dd6dde1c834c3dad1752d011075abff97742f750233cd61cf354e47386
|
@@ -2,15 +2,12 @@
|
|
2
2
|
|
3
3
|
module Truemail
|
4
4
|
class Configuration
|
5
|
-
require 'logger'
|
6
|
-
|
7
5
|
DEFAULT_CONNECTION_TIMEOUT = 2
|
8
6
|
DEFAULT_RESPONSE_TIMEOUT = 2
|
9
7
|
DEFAULT_CONNECTION_ATTEMPTS = 2
|
10
8
|
DEFAULT_VALIDATION_TYPE = :smtp
|
11
9
|
DEFAULT_SMTP_PORT = 25
|
12
10
|
DEFAULT_LOGGER_OPTIONS = {
|
13
|
-
logger_class: ::Logger,
|
14
11
|
tracking_event: :error,
|
15
12
|
stdout: false,
|
16
13
|
log_absolute_path: nil
|
@@ -82,17 +79,9 @@ module Truemail
|
|
82
79
|
end
|
83
80
|
end
|
84
81
|
|
85
|
-
def logger=(options)
|
82
|
+
def logger=(options)
|
86
83
|
raise_unless(options, __method__, options.is_a?(::Hash))
|
87
|
-
|
88
|
-
raise_unless(logger_class, __method__, logger_class.is_a?(::Class))
|
89
|
-
valid_event = Truemail::Log::Event::TRACKING_EVENTS.key?(tracking_event)
|
90
|
-
stdout_only = stdout && log_absolute_path.nil?
|
91
|
-
file_only = log_absolute_path.is_a?(::String)
|
92
|
-
both_types = stdout && file_only
|
93
|
-
argument_info = valid_event ? log_absolute_path : tracking_event
|
94
|
-
raise_unless(argument_info, __method__, valid_event && (stdout_only || file_only || both_types))
|
95
|
-
@logger = Truemail::Logger.new(logger_class, tracking_event, stdout, log_absolute_path)
|
84
|
+
@logger = Truemail::Logger::Builder.call(Truemail::Configuration::DEFAULT_LOGGER_OPTIONS, **options)
|
96
85
|
end
|
97
86
|
|
98
87
|
def complete?
|
@@ -163,9 +152,5 @@ module Truemail
|
|
163
152
|
check_validation_type(validation_type)
|
164
153
|
end
|
165
154
|
end
|
166
|
-
|
167
|
-
def logger_options(current_options)
|
168
|
-
Truemail::Configuration::DEFAULT_LOGGER_OPTIONS.merge(current_options).values
|
169
|
-
end
|
170
155
|
end
|
171
156
|
end
|
data/lib/truemail/logger.rb
CHANGED
@@ -2,13 +2,67 @@
|
|
2
2
|
|
3
3
|
module Truemail
|
4
4
|
class Logger
|
5
|
-
|
5
|
+
require 'logger'
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
BUILDER_ATTRS = %i[tracking_event stdout log_absolute_path custom_logger].freeze
|
8
|
+
|
9
|
+
Builder = ::Struct.new(*BUILDER_ATTRS, keyword_init: true) do
|
10
|
+
private_class_method :new
|
11
|
+
|
12
|
+
def self.call(default_settings, **logger_attributes)
|
13
|
+
new(default_settings, **logger_attributes).validate_attributes.build_instance
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(default_settings, **args)
|
17
|
+
super(**default_settings.merge(**args))
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate_attributes
|
21
|
+
validate_logger_event
|
22
|
+
return validate_logger_instance if custom_logger
|
23
|
+
validate_logger_output
|
24
|
+
self
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_instance
|
28
|
+
Truemail::Logger.new(tracking_event, stdout, log_absolute_path, custom_logger)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def raise_unless(argument_context, argument_name, condition)
|
34
|
+
raise Truemail::ArgumentError.new(argument_context, argument_name) unless condition
|
35
|
+
end
|
36
|
+
|
37
|
+
def validate_logger_instance
|
38
|
+
raise_unless(custom_logger, :custom_logger=, custom_logger && custom_logger.respond_to?(:add))
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
42
|
+
def validate_logger_event
|
43
|
+
raise_unless(tracking_event, :tracking_event=, Truemail::Log::Event::TRACKING_EVENTS.key?(tracking_event))
|
44
|
+
end
|
45
|
+
|
46
|
+
def validate_logger_output
|
47
|
+
stdout_only = stdout && log_absolute_path.nil?
|
48
|
+
file_only = log_absolute_path.is_a?(::String)
|
49
|
+
both_types = stdout && file_only
|
50
|
+
raise_unless(
|
51
|
+
{ stdout: stdout, log_absolute_path: log_absolute_path },
|
52
|
+
'stdout=, log_absolute_path=',
|
53
|
+
both_types || stdout_only || file_only
|
54
|
+
)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
attr_reader :event, :stdout, :file, :custom_logger, :stdout_logger, :file_logger
|
59
|
+
|
60
|
+
def initialize(event, error_stdout, log_absolute_path, custom_logger)
|
9
61
|
@event = event
|
10
62
|
@stdout = error_stdout
|
11
63
|
@file = log_absolute_path
|
64
|
+
@custom_logger = custom_logger
|
65
|
+
init_builtin_loggers
|
12
66
|
end
|
13
67
|
|
14
68
|
def push(validator_instance)
|
@@ -26,10 +80,22 @@ module Truemail
|
|
26
80
|
output_file
|
27
81
|
end
|
28
82
|
|
29
|
-
def
|
83
|
+
def init_builtin_loggers
|
84
|
+
return if custom_logger
|
30
85
|
%i[stdout file].each do |output_type|
|
31
86
|
next unless public_send(output_type)
|
32
|
-
|
87
|
+
instance_variable_set(
|
88
|
+
:"@#{output_type}_logger",
|
89
|
+
::Logger.new(output_type.eql?(:stdout) ? $stdout : init_log_file)
|
90
|
+
)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def create_logs(log_level, serialized_object)
|
95
|
+
%i[custom_logger stdout_logger file_logger].each do |getter|
|
96
|
+
logger_instance = public_send(getter)
|
97
|
+
next unless logger_instance
|
98
|
+
logger_instance.add(log_level) { serialized_object }
|
33
99
|
end
|
34
100
|
end
|
35
101
|
end
|
data/lib/truemail/version.rb
CHANGED
data/truemail.gemspec
CHANGED
@@ -29,15 +29,15 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib)/|.ruby-version|truemail.gemspec|LICENSE}) }
|
30
30
|
spec.require_paths = %w[lib]
|
31
31
|
|
32
|
-
spec.add_runtime_dependency 'net-smtp', '~> 0.
|
32
|
+
spec.add_runtime_dependency 'net-smtp', '~> 0.5.0' if current_ruby_version >= ::Gem::Version.new('3.1.0')
|
33
33
|
spec.add_runtime_dependency 'simpleidn', '~> 0.2.1'
|
34
34
|
|
35
|
-
spec.add_development_dependency 'dns_mock', '~> 1.
|
35
|
+
spec.add_development_dependency 'dns_mock', '~> 1.7', '>= 1.7.1'
|
36
36
|
spec.add_development_dependency 'ffaker', ffaker_version
|
37
37
|
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
|
38
|
-
spec.add_development_dependency 'rake', '~> 13.1'
|
38
|
+
spec.add_development_dependency 'rake', '~> 13.2', '>= 13.2.1'
|
39
39
|
spec.add_development_dependency 'rspec', '~> 3.13'
|
40
|
-
spec.add_development_dependency 'smtp_mock', '~> 1.4'
|
40
|
+
spec.add_development_dependency 'smtp_mock', '~> 1.4', '>= 1.4.1'
|
41
41
|
spec.add_development_dependency 'truemail-rspec', '~> 1.3', '>= 1.3.1'
|
42
|
-
spec.add_development_dependency 'webmock', '~> 3.
|
42
|
+
spec.add_development_dependency 'webmock', '~> 3.23'
|
43
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: truemail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simpleidn
|
@@ -30,20 +30,20 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.7'
|
34
34
|
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 1.
|
36
|
+
version: 1.7.1
|
37
37
|
type: :development
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '1.
|
43
|
+
version: '1.7'
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 1.
|
46
|
+
version: 1.7.1
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: ffaker
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,14 +78,20 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '13.
|
81
|
+
version: '13.2'
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 13.2.1
|
82
85
|
type: :development
|
83
86
|
prerelease: false
|
84
87
|
version_requirements: !ruby/object:Gem::Requirement
|
85
88
|
requirements:
|
86
89
|
- - "~>"
|
87
90
|
- !ruby/object:Gem::Version
|
88
|
-
version: '13.
|
91
|
+
version: '13.2'
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 13.2.1
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: rspec
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +113,9 @@ dependencies:
|
|
107
113
|
- - "~>"
|
108
114
|
- !ruby/object:Gem::Version
|
109
115
|
version: '1.4'
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 1.4.1
|
110
119
|
type: :development
|
111
120
|
prerelease: false
|
112
121
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -114,6 +123,9 @@ dependencies:
|
|
114
123
|
- - "~>"
|
115
124
|
- !ruby/object:Gem::Version
|
116
125
|
version: '1.4'
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: 1.4.1
|
117
129
|
- !ruby/object:Gem::Dependency
|
118
130
|
name: truemail-rspec
|
119
131
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,14 +152,14 @@ dependencies:
|
|
140
152
|
requirements:
|
141
153
|
- - "~>"
|
142
154
|
- !ruby/object:Gem::Version
|
143
|
-
version: '3.
|
155
|
+
version: '3.23'
|
144
156
|
type: :development
|
145
157
|
prerelease: false
|
146
158
|
version_requirements: !ruby/object:Gem::Requirement
|
147
159
|
requirements:
|
148
160
|
- - "~>"
|
149
161
|
- !ruby/object:Gem::Version
|
150
|
-
version: '3.
|
162
|
+
version: '3.23'
|
151
163
|
description: Configurable framework agnostic plain Ruby email validator. Verify email
|
152
164
|
via Regex, DNS, SMTP and even more.
|
153
165
|
email:
|