truemail-client 0.1.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: