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.
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'truemail/client/version'
4
- require 'truemail/client/configuration'
5
- require 'truemail/client/http'
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 block_given?
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 block_given?
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
@@ -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 email].freeze
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(email)
14
- Truemail::Client::Http::URI_ATTRS[0..-2].each do |attribute|
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
- @email = email
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
- request['Authorization'] = Truemail::Client.configuration.token
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}/?email=#{email}")
51
+ @uri ||= URI("#{secure_connection ? 'https' : 'http'}://#{host}:#{port}#{request_uri}")
39
52
  end
40
53
  end
41
54
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Truemail
4
4
  module Client
5
- VERSION = '0.1.1'
5
+ VERSION = '0.3.2'
6
6
  end
7
7
  end
@@ -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', '~> 1.16'
27
- spec.add_development_dependency 'bundler-audit', '~> 0.7.0.1'
28
- spec.add_development_dependency 'fasterer', '~> 0.8.3'
29
- spec.add_development_dependency 'ffaker', '~> 2.15'
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.55.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.1'
34
- spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.1'
35
- spec.add_development_dependency 'rspec', '~> 3.9'
36
- spec.add_development_dependency 'rubocop', '~> 0.88.0'
37
- spec.add_development_dependency 'rubocop-performance', '~> 1.7', '>= 1.7.1'
38
- spec.add_development_dependency 'rubocop-rspec', '~> 1.42'
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.8', '>= 3.8.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.1.1
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: 2020-07-21 00:00:00.000000000 Z
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: '1.16'
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: '1.16'
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.7.0.1
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.7.0.1
46
+ version: 0.8.0
41
47
  - !ruby/object:Gem::Dependency
42
- name: fasterer
48
+ name: faker
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: 0.8.3
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: 0.8.3
60
+ version: '2.17'
55
61
  - !ruby/object:Gem::Dependency
56
- name: ffaker
62
+ name: fasterer
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '2.15'
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: '2.15'
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.55.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.55.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.1
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.1
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.1
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.1
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.9'
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.9'
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: 0.88.0
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: 0.88.0
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.7'
191
+ version: '1.11'
186
192
  - - ">="
187
193
  - !ruby/object:Gem::Version
188
- version: 1.7.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.7'
201
+ version: '1.11'
196
202
  - - ">="
197
203
  - !ruby/object:Gem::Version
198
- version: 1.7.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: '1.42'
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: '1.42'
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.8'
239
+ version: '3.12'
234
240
  - - ">="
235
241
  - !ruby/object:Gem::Version
236
- version: 3.8.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.8'
249
+ version: '3.12'
244
250
  - - ">="
245
251
  - !ruby/object:Gem::Version
246
- version: 3.8.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/ISSUE_TEMPLATE.md"
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: