truemail 3.2.0 → 3.3.1

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: eaf56f1be4d147276a83807c713461d7bc2d4bedb009a0323fa3a38b7fd82829
4
- data.tar.gz: cb914e607e6a0182d7550a0fa0d8de7783c79763809019d4e706a6207daabc39
3
+ metadata.gz: '0797d29fafe171b61130e9f81d0d9ad7365e137a71674905e7ed8b1acbe65336'
4
+ data.tar.gz: 05d19c7528dda2c16c681c9f250f3e7e2873c3490f53dcfc1800f93a3ab0135c
5
5
  SHA512:
6
- metadata.gz: c2fdf6d58ca54b4c2a25eea14e6769277b16cfc24b32709d0195ef0fa29ac13d71c19717f0f8d4f5626e7c9348815307f7fa7d0238f0feeb5076fd6314fd00e6
7
- data.tar.gz: 0a3b9b4ec3fa36fd3a73353d651d5e9af664d5ebd030ab72a3942a24b9e7d1590dddaf569a3b3b83c36a3c83926fef1fb0c3c1fbdab19f7e7de7d1e5827d5ba4
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) # rubocop:disable Metrics/AbcSize
82
+ def logger=(options)
86
83
  raise_unless(options, __method__, options.is_a?(::Hash))
87
- logger_class, tracking_event, stdout, log_absolute_path = logger_options(options)
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
@@ -2,13 +2,67 @@
2
2
 
3
3
  module Truemail
4
4
  class Logger
5
- attr_reader :logger_class, :event, :stdout, :file
5
+ require 'logger'
6
6
 
7
- def initialize(logger_class, event, error_stdout, log_absolute_path)
8
- @logger_class = logger_class
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 create_logs(log_level, serialized_object)
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
- logger_class.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 }
33
99
  end
34
100
  end
35
101
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Truemail
4
- VERSION = '3.2.0'
4
+ VERSION = '3.3.1'
5
5
  end
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.4.0.1' if current_ruby_version >= ::Gem::Version.new('3.1.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.6', '>= 1.6.2'
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.20'
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.2.0
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-02-24 00:00:00.000000000 Z
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.6'
33
+ version: '1.7'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 1.6.2
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.6'
43
+ version: '1.7'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 1.6.2
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.1'
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.1'
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.20'
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.20'
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: