truemail-client 0.1.1 → 0.3.2
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/.circleci/config.yml +59 -18
- data/.codeclimate.yml +1 -1
- data/.github/BRANCH_NAMING_CONVENTION.md +36 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
- data/.github/{ISSUE_TEMPLATE.md → ISSUE_TEMPLATE/issue_report.md} +15 -4
- data/.github/ISSUE_TEMPLATE/question.md +22 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +3 -0
- data/.rubocop.yml +128 -0
- data/CHANGELOG.md +56 -0
- data/CONTRIBUTING.md +15 -14
- data/Gemfile.lock +71 -66
- data/README.md +59 -28
- data/lib/truemail/client.rb +10 -5
- data/lib/truemail/client/configuration.rb +4 -4
- data/lib/truemail/client/http.rb +21 -8
- data/lib/truemail/client/version.rb +1 -1
- data/truemail-client.gemspec +20 -12
- metadata +49 -34
data/lib/truemail/client.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require_relative '../truemail/client/version'
|
4
|
+
require_relative '../truemail/client/configuration'
|
5
|
+
require_relative '../truemail/client/http'
|
6
6
|
|
7
7
|
module Truemail
|
8
8
|
module Client
|
@@ -12,7 +12,7 @@ module Truemail
|
|
12
12
|
class << self
|
13
13
|
def configuration(&block)
|
14
14
|
@configuration ||= begin
|
15
|
-
return unless
|
15
|
+
return unless block
|
16
16
|
configuration = Truemail::Client::Configuration.new(&block)
|
17
17
|
raise_unless(configuration.complete?, Truemail::Client::INCOMPLETE_CONFIG)
|
18
18
|
configuration
|
@@ -29,7 +29,12 @@ module Truemail
|
|
29
29
|
|
30
30
|
def validate(email)
|
31
31
|
raise_unless(Truemail::Client.configuration, Truemail::Client::NOT_CONFIGURED)
|
32
|
-
Truemail::Client::Http.new(email).run
|
32
|
+
Truemail::Client::Http.new(email: email).run
|
33
|
+
end
|
34
|
+
|
35
|
+
def server_healthy?
|
36
|
+
raise_unless(Truemail::Client.configuration, Truemail::Client::NOT_CONFIGURED)
|
37
|
+
Truemail::Client::Http.new(Truemail::Client::Http::HEALTHCHECK_ENDPOINT).run.empty?
|
33
38
|
end
|
34
39
|
|
35
40
|
private
|
@@ -5,8 +5,8 @@ module Truemail
|
|
5
5
|
class Configuration
|
6
6
|
DEFAULT_PORT = 9292
|
7
7
|
|
8
|
-
Error = Class.new(StandardError)
|
9
|
-
ArgumentError = Class.new(StandardError) do
|
8
|
+
Error = ::Class.new(::StandardError)
|
9
|
+
ArgumentError = ::Class.new(::StandardError) do
|
10
10
|
def initialize(arg_value, arg_name)
|
11
11
|
super("#{arg_value} is not a valid #{arg_name[0..-2]}")
|
12
12
|
end
|
@@ -18,7 +18,7 @@ module Truemail
|
|
18
18
|
def initialize(&block)
|
19
19
|
@secure_connection = false
|
20
20
|
@port = Truemail::Client::Configuration::DEFAULT_PORT
|
21
|
-
tap(&block) if
|
21
|
+
tap(&block) if block
|
22
22
|
end
|
23
23
|
|
24
24
|
%i[host port token].each do |method|
|
@@ -26,7 +26,7 @@ module Truemail
|
|
26
26
|
raise_unless(
|
27
27
|
argument,
|
28
28
|
__method__,
|
29
|
-
method.eql?(:port) ? argument.is_a?(Integer) && argument.positive? : argument.is_a?(String)
|
29
|
+
method.eql?(:port) ? argument.is_a?(::Integer) && argument.positive? : argument.is_a?(::String)
|
30
30
|
)
|
31
31
|
instance_variable_set(:"@#{method}", argument)
|
32
32
|
end
|
data/lib/truemail/client/http.rb
CHANGED
@@ -5,25 +5,31 @@ module Truemail
|
|
5
5
|
class Http
|
6
6
|
require 'uri'
|
7
7
|
require 'net/http'
|
8
|
+
require 'json'
|
8
9
|
|
9
|
-
URI_ATTRS = %i[secure_connection host port
|
10
|
+
URI_ATTRS = %i[secure_connection host port endpoint uri_params].freeze
|
10
11
|
USER_AGENT = 'Truemail Ruby client'
|
11
12
|
MIME_TYPE = 'application/json'
|
13
|
+
VALIDATION_ENDPOINT = '/'
|
14
|
+
HEALTHCHECK_ENDPOINT = '/healthcheck'
|
12
15
|
|
13
|
-
def initialize(
|
14
|
-
Truemail::Client::Http::URI_ATTRS[0
|
16
|
+
def initialize(endpoint = Truemail::Client::Http::VALIDATION_ENDPOINT, **uri_params)
|
17
|
+
Truemail::Client::Http::URI_ATTRS[0..2].each do |attribute|
|
15
18
|
instance_variable_set(:"@#{attribute}", Truemail::Client.configuration.public_send(attribute))
|
16
19
|
end
|
17
|
-
@
|
20
|
+
@endpoint = endpoint
|
21
|
+
@uri_params = uri_params
|
18
22
|
end
|
19
23
|
|
20
24
|
def run
|
21
|
-
Net::HTTP.start(uri.host, uri.port, use_ssl: secure_connection) do |http|
|
22
|
-
request = Net::HTTP::Get.new(uri)
|
25
|
+
::Net::HTTP.start(uri.host, uri.port, use_ssl: secure_connection) do |http|
|
26
|
+
request = ::Net::HTTP::Get.new(uri)
|
23
27
|
request['User-Agent'] = Truemail::Client::Http::USER_AGENT
|
24
28
|
request['Accept'] = Truemail::Client::Http::MIME_TYPE
|
25
29
|
request['Content-Type'] = Truemail::Client::Http::MIME_TYPE
|
26
|
-
|
30
|
+
unless endpoint.eql?(Truemail::Client::Http::HEALTHCHECK_ENDPOINT)
|
31
|
+
request['Authorization'] = Truemail::Client.configuration.token
|
32
|
+
end
|
27
33
|
http.request(request)
|
28
34
|
end.body
|
29
35
|
rescue => error
|
@@ -34,8 +40,15 @@ module Truemail
|
|
34
40
|
|
35
41
|
attr_reader(*Truemail::Client::Http::URI_ATTRS)
|
36
42
|
|
43
|
+
def request_uri
|
44
|
+
::URI::HTTP.build(
|
45
|
+
path: endpoint,
|
46
|
+
query: uri_params.empty? ? nil : ::URI.encode_www_form(uri_params)
|
47
|
+
).request_uri
|
48
|
+
end
|
49
|
+
|
37
50
|
def uri
|
38
|
-
@uri ||= URI("#{secure_connection ? 'https' : 'http'}://#{host}:#{port}
|
51
|
+
@uri ||= URI("#{secure_connection ? 'https' : 'http'}://#{host}:#{port}#{request_uri}")
|
39
52
|
end
|
40
53
|
end
|
41
54
|
end
|
data/truemail-client.gemspec
CHANGED
@@ -16,6 +16,14 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.homepage = 'https://github.com/truemail-rb/truemail-ruby-client'
|
17
17
|
spec.license = 'MIT'
|
18
18
|
|
19
|
+
spec.metadata = {
|
20
|
+
'homepage_uri' => 'https://truemail-rb.org',
|
21
|
+
'changelog_uri' => 'https://github.com/truemail-rb/truemail-ruby-client/blob/master/CHANGELOG.md',
|
22
|
+
'source_code_uri' => 'https://github.com/truemail-rb/truemail-ruby-client',
|
23
|
+
'documentation_uri' => 'https://truemail-rb.org/truemail-ruby-client',
|
24
|
+
'bug_tracker_uri' => 'https://github.com/truemail-rb/truemail-ruby-client/issues'
|
25
|
+
}
|
26
|
+
|
19
27
|
spec.required_ruby_version = '>= 2.5.0'
|
20
28
|
|
21
29
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
@@ -23,19 +31,19 @@ Gem::Specification.new do |spec|
|
|
23
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
32
|
spec.require_paths = ['lib']
|
25
33
|
|
26
|
-
spec.add_development_dependency 'bundler', '~>
|
27
|
-
spec.add_development_dependency 'bundler-audit', '~> 0.
|
28
|
-
spec.add_development_dependency '
|
29
|
-
spec.add_development_dependency '
|
34
|
+
spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.17'
|
35
|
+
spec.add_development_dependency 'bundler-audit', '~> 0.8.0'
|
36
|
+
spec.add_development_dependency 'faker', '~> 2.17'
|
37
|
+
spec.add_development_dependency 'fasterer', '~> 0.9.0'
|
30
38
|
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
|
31
|
-
spec.add_development_dependency 'overcommit', '~> 0.
|
39
|
+
spec.add_development_dependency 'overcommit', '~> 0.57.0'
|
32
40
|
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
33
|
-
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.
|
34
|
-
spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.
|
35
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
36
|
-
spec.add_development_dependency 'rubocop', '~>
|
37
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.
|
38
|
-
spec.add_development_dependency 'rubocop-rspec', '~>
|
41
|
+
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.3'
|
42
|
+
spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.4'
|
43
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
44
|
+
spec.add_development_dependency 'rubocop', '~> 1.14'
|
45
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.11', '>= 1.11.3'
|
46
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.3'
|
39
47
|
spec.add_development_dependency 'simplecov', '~> 0.17.1'
|
40
|
-
spec.add_development_dependency 'webmock', '~> 3.
|
48
|
+
spec.add_development_dependency 'webmock', '~> 3.12', '>= 3.12.2'
|
41
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: truemail-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,56 +16,62 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.2'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.2.17
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
29
|
+
version: '2.2'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.2.17
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: bundler-audit
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
39
|
+
version: 0.8.0
|
34
40
|
type: :development
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
46
|
+
version: 0.8.0
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: faker
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
53
|
+
version: '2.17'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
60
|
+
version: '2.17'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: fasterer
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
67
|
+
version: 0.9.0
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
74
|
+
version: 0.9.0
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: json_matchers
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +92,14 @@ dependencies:
|
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
95
|
+
version: 0.57.0
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
102
|
+
version: 0.57.0
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: pry-byebug
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,7 +123,7 @@ dependencies:
|
|
117
123
|
version: '13.0'
|
118
124
|
- - ">="
|
119
125
|
- !ruby/object:Gem::Version
|
120
|
-
version: 13.0.
|
126
|
+
version: 13.0.3
|
121
127
|
type: :development
|
122
128
|
prerelease: false
|
123
129
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -127,7 +133,7 @@ dependencies:
|
|
127
133
|
version: '13.0'
|
128
134
|
- - ">="
|
129
135
|
- !ruby/object:Gem::Version
|
130
|
-
version: 13.0.
|
136
|
+
version: 13.0.3
|
131
137
|
- !ruby/object:Gem::Dependency
|
132
138
|
name: reek
|
133
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,7 +143,7 @@ dependencies:
|
|
137
143
|
version: '6.0'
|
138
144
|
- - ">="
|
139
145
|
- !ruby/object:Gem::Version
|
140
|
-
version: 6.0.
|
146
|
+
version: 6.0.4
|
141
147
|
type: :development
|
142
148
|
prerelease: false
|
143
149
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -147,69 +153,69 @@ dependencies:
|
|
147
153
|
version: '6.0'
|
148
154
|
- - ">="
|
149
155
|
- !ruby/object:Gem::Version
|
150
|
-
version: 6.0.
|
156
|
+
version: 6.0.4
|
151
157
|
- !ruby/object:Gem::Dependency
|
152
158
|
name: rspec
|
153
159
|
requirement: !ruby/object:Gem::Requirement
|
154
160
|
requirements:
|
155
161
|
- - "~>"
|
156
162
|
- !ruby/object:Gem::Version
|
157
|
-
version: '3.
|
163
|
+
version: '3.10'
|
158
164
|
type: :development
|
159
165
|
prerelease: false
|
160
166
|
version_requirements: !ruby/object:Gem::Requirement
|
161
167
|
requirements:
|
162
168
|
- - "~>"
|
163
169
|
- !ruby/object:Gem::Version
|
164
|
-
version: '3.
|
170
|
+
version: '3.10'
|
165
171
|
- !ruby/object:Gem::Dependency
|
166
172
|
name: rubocop
|
167
173
|
requirement: !ruby/object:Gem::Requirement
|
168
174
|
requirements:
|
169
175
|
- - "~>"
|
170
176
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
177
|
+
version: '1.14'
|
172
178
|
type: :development
|
173
179
|
prerelease: false
|
174
180
|
version_requirements: !ruby/object:Gem::Requirement
|
175
181
|
requirements:
|
176
182
|
- - "~>"
|
177
183
|
- !ruby/object:Gem::Version
|
178
|
-
version:
|
184
|
+
version: '1.14'
|
179
185
|
- !ruby/object:Gem::Dependency
|
180
186
|
name: rubocop-performance
|
181
187
|
requirement: !ruby/object:Gem::Requirement
|
182
188
|
requirements:
|
183
189
|
- - "~>"
|
184
190
|
- !ruby/object:Gem::Version
|
185
|
-
version: '1.
|
191
|
+
version: '1.11'
|
186
192
|
- - ">="
|
187
193
|
- !ruby/object:Gem::Version
|
188
|
-
version: 1.
|
194
|
+
version: 1.11.3
|
189
195
|
type: :development
|
190
196
|
prerelease: false
|
191
197
|
version_requirements: !ruby/object:Gem::Requirement
|
192
198
|
requirements:
|
193
199
|
- - "~>"
|
194
200
|
- !ruby/object:Gem::Version
|
195
|
-
version: '1.
|
201
|
+
version: '1.11'
|
196
202
|
- - ">="
|
197
203
|
- !ruby/object:Gem::Version
|
198
|
-
version: 1.
|
204
|
+
version: 1.11.3
|
199
205
|
- !ruby/object:Gem::Dependency
|
200
206
|
name: rubocop-rspec
|
201
207
|
requirement: !ruby/object:Gem::Requirement
|
202
208
|
requirements:
|
203
209
|
- - "~>"
|
204
210
|
- !ruby/object:Gem::Version
|
205
|
-
version: '
|
211
|
+
version: '2.3'
|
206
212
|
type: :development
|
207
213
|
prerelease: false
|
208
214
|
version_requirements: !ruby/object:Gem::Requirement
|
209
215
|
requirements:
|
210
216
|
- - "~>"
|
211
217
|
- !ruby/object:Gem::Version
|
212
|
-
version: '
|
218
|
+
version: '2.3'
|
213
219
|
- !ruby/object:Gem::Dependency
|
214
220
|
name: simplecov
|
215
221
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,20 +236,20 @@ dependencies:
|
|
230
236
|
requirements:
|
231
237
|
- - "~>"
|
232
238
|
- !ruby/object:Gem::Version
|
233
|
-
version: '3.
|
239
|
+
version: '3.12'
|
234
240
|
- - ">="
|
235
241
|
- !ruby/object:Gem::Version
|
236
|
-
version: 3.
|
242
|
+
version: 3.12.2
|
237
243
|
type: :development
|
238
244
|
prerelease: false
|
239
245
|
version_requirements: !ruby/object:Gem::Requirement
|
240
246
|
requirements:
|
241
247
|
- - "~>"
|
242
248
|
- !ruby/object:Gem::Version
|
243
|
-
version: '3.
|
249
|
+
version: '3.12'
|
244
250
|
- - ">="
|
245
251
|
- !ruby/object:Gem::Version
|
246
|
-
version: 3.
|
252
|
+
version: 3.12.2
|
247
253
|
description: Truemail web API client library for Ruby
|
248
254
|
email:
|
249
255
|
- admin@bestweb.com.ua
|
@@ -253,7 +259,11 @@ extra_rdoc_files: []
|
|
253
259
|
files:
|
254
260
|
- ".circleci/config.yml"
|
255
261
|
- ".codeclimate.yml"
|
256
|
-
- ".github/
|
262
|
+
- ".github/BRANCH_NAMING_CONVENTION.md"
|
263
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
264
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
265
|
+
- ".github/ISSUE_TEMPLATE/issue_report.md"
|
266
|
+
- ".github/ISSUE_TEMPLATE/question.md"
|
257
267
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
258
268
|
- ".gitignore"
|
259
269
|
- ".overcommit.yml"
|
@@ -280,7 +290,12 @@ files:
|
|
280
290
|
homepage: https://github.com/truemail-rb/truemail-ruby-client
|
281
291
|
licenses:
|
282
292
|
- MIT
|
283
|
-
metadata:
|
293
|
+
metadata:
|
294
|
+
homepage_uri: https://truemail-rb.org
|
295
|
+
changelog_uri: https://github.com/truemail-rb/truemail-ruby-client/blob/master/CHANGELOG.md
|
296
|
+
source_code_uri: https://github.com/truemail-rb/truemail-ruby-client
|
297
|
+
documentation_uri: https://truemail-rb.org/truemail-ruby-client
|
298
|
+
bug_tracker_uri: https://github.com/truemail-rb/truemail-ruby-client/issues
|
284
299
|
post_install_message:
|
285
300
|
rdoc_options: []
|
286
301
|
require_paths:
|