truemail 3.2.0 → 3.3.0
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
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a285b1759ed0334ca5f0b1e26bf3975bad782629236b7ef8c347d49e3540f63b
|
4
|
+
data.tar.gz: 20f84b22c347aaae67bfda81cadb67406bb0d4f215cee6976269cdc15cdbc9a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c1e73140bbc0304ddcbb6cd68b84f1f3e75bf14237a87a6bd89054253f022e630877c2b478418ee23c7214702eea0fdf1505ead39d84b1b75f9350c4c19cf1c
|
7
|
+
data.tar.gz: 7d99710ab7c9bdc72c37172f7fae87bc6a350d7a2e1befcd31681e2d3bf14ecf150bdbff01b07249904288bd57ea9bbebc007915b7ba5652659d90b99e466c74
|
@@ -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
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.0
|
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-02-
|
11
|
+
date: 2024-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simpleidn
|