truemail 3.1.2 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de638476d58e55bc0aa2befde555d82c52a38dcbe8813018424ef88332bfb784
4
- data.tar.gz: 303aa7f0951cd60ebdc8278a1e2d8a5a09ab3af21c5ad26166817926a71c0855
3
+ metadata.gz: a285b1759ed0334ca5f0b1e26bf3975bad782629236b7ef8c347d49e3540f63b
4
+ data.tar.gz: 20f84b22c347aaae67bfda81cadb67406bb0d4f215cee6976269cdc15cdbc9a9
5
5
  SHA512:
6
- metadata.gz: b750c9066195850e05136d79bc67c7e86fb84bdafb7cf3a52ff41f07fa49af3d2006efd858b6a4c90e3b092c4c895e6188ae0f0dbeebb39a16747e4ff35b6367
7
- data.tar.gz: d7277714943f8c6c9a9d370170b4adb4c3e75917837e93eba9580aa4213f837aaf6a7d6beddb7b84555de3387bb0f049a8634ff18b0747240d6dd030d47a1300
6
+ metadata.gz: 9c1e73140bbc0304ddcbb6cd68b84f1f3e75bf14237a87a6bd89054253f022e630877c2b478418ee23c7214702eea0fdf1505ead39d84b1b75f9350c4c19cf1c
7
+ data.tar.gz: 7d99710ab7c9bdc72c37172f7fae87bc6a350d7a2e1befcd31681e2d3bf14ecf150bdbff01b07249904288bd57ea9bbebc007915b7ba5652659d90b99e466c74
@@ -7,7 +7,11 @@ module Truemail
7
7
  DEFAULT_CONNECTION_ATTEMPTS = 2
8
8
  DEFAULT_VALIDATION_TYPE = :smtp
9
9
  DEFAULT_SMTP_PORT = 25
10
- DEFAULT_LOGGER_OPTIONS = { tracking_event: :error, stdout: false, log_absolute_path: nil }.freeze
10
+ DEFAULT_LOGGER_OPTIONS = {
11
+ tracking_event: :error,
12
+ stdout: false,
13
+ log_absolute_path: nil
14
+ }.freeze
11
15
  SETTERS = %i[
12
16
  email_pattern
13
17
  smtp_error_body_pattern
@@ -76,14 +80,8 @@ module Truemail
76
80
  end
77
81
 
78
82
  def logger=(options)
79
- tracking_event, stdout, log_absolute_path = logger_options(options)
80
- valid_event = Truemail::Log::Event::TRACKING_EVENTS.key?(tracking_event)
81
- stdout_only = stdout && log_absolute_path.nil?
82
- file_only = log_absolute_path.is_a?(::String)
83
- both_types = stdout && file_only
84
- argument_info = valid_event ? log_absolute_path : tracking_event
85
- raise_unless(argument_info, __method__, valid_event && (stdout_only || file_only || both_types))
86
- @logger = Truemail::Logger.new(tracking_event, stdout, log_absolute_path)
83
+ raise_unless(options, __method__, options.is_a?(::Hash))
84
+ @logger = Truemail::Logger::Builder.call(Truemail::Configuration::DEFAULT_LOGGER_OPTIONS, **options)
87
85
  end
88
86
 
89
87
  def complete?
@@ -154,9 +152,5 @@ module Truemail
154
152
  check_validation_type(validation_type)
155
153
  end
156
154
  end
157
-
158
- def logger_options(current_options)
159
- Truemail::Configuration::DEFAULT_LOGGER_OPTIONS.merge(current_options).values
160
- end
161
155
  end
162
156
  end
@@ -4,12 +4,65 @@ module Truemail
4
4
  class Logger
5
5
  require 'logger'
6
6
 
7
- attr_reader :event, :stdout, :file
7
+ BUILDER_ATTRS = %i[tracking_event stdout log_absolute_path custom_logger].freeze
8
8
 
9
- def initialize(event, error_stdout, log_absolute_path)
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)
10
61
  @event = event
11
62
  @stdout = error_stdout
12
63
  @file = log_absolute_path
64
+ @custom_logger = custom_logger
65
+ init_builtin_loggers
13
66
  end
14
67
 
15
68
  def push(validator_instance)
@@ -27,10 +80,22 @@ module Truemail
27
80
  output_file
28
81
  end
29
82
 
30
- def create_logs(log_level, serialized_object)
83
+ def init_builtin_loggers
84
+ return if custom_logger
31
85
  %i[stdout file].each do |output_type|
32
86
  next unless public_send(output_type)
33
- ::Logger.new(output_type.eql?(:stdout) ? $stdout : init_log_file).add(log_level) { serialized_object }
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 }
34
99
  end
35
100
  end
36
101
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Truemail
4
- VERSION = '3.1.2'
4
+ VERSION = '3.3.0'
5
5
  end
data/truemail.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['Vladislav Trotsenko']
9
9
  spec.email = %w[admin@bestweb.com.ua]
10
10
 
11
- spec.summary = %(truemail)
11
+ spec.summary = %(Configurable framework agnostic plain Ruby email validator. Verify email via Regex, DNS, SMTP and even more)
12
12
  spec.description = %(Configurable framework agnostic plain Ruby email validator. Verify email via Regex, DNS, SMTP and even more.)
13
13
 
14
14
  spec.homepage = 'https://github.com/truemail-rb/truemail'
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.1.2
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-15 00:00:00.000000000 Z
11
+ date: 2024-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simpleidn
@@ -219,5 +219,6 @@ requirements: []
219
219
  rubygems_version: 3.2.15
220
220
  signing_key:
221
221
  specification_version: 4
222
- summary: truemail
222
+ summary: Configurable framework agnostic plain Ruby email validator. Verify email
223
+ via Regex, DNS, SMTP and even more
223
224
  test_files: []