truemail-client 0.1.0

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.
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Truemail
4
+ module Client
5
+ class Configuration
6
+ DEFAULT_PORT = 9292
7
+
8
+ Error = Class.new(StandardError)
9
+ ArgumentError = Class.new(StandardError) do
10
+ def initialize(arg_value, arg_name)
11
+ super("#{arg_value} is not a valid #{arg_name[0..-2]}")
12
+ end
13
+ end
14
+
15
+ attr_reader :host, :port, :token
16
+ attr_accessor :secure_connection
17
+
18
+ def initialize(&block)
19
+ @secure_connection = false
20
+ @port = Truemail::Client::Configuration::DEFAULT_PORT
21
+ tap(&block) if block_given?
22
+ end
23
+
24
+ %i[host port token].each do |method|
25
+ define_method("#{method}=") do |argument|
26
+ raise_unless(
27
+ argument,
28
+ __method__,
29
+ method.eql?(:port) ? argument.is_a?(Integer) && argument.positive? : argument.is_a?(String)
30
+ )
31
+ instance_variable_set(:"@#{method}", argument)
32
+ end
33
+ end
34
+
35
+ def complete?
36
+ !!host && !!token
37
+ end
38
+
39
+ private
40
+
41
+ def raise_unless(argument_context, argument_name, condition)
42
+ raise Truemail::Client::Configuration::ArgumentError.new(argument_context, argument_name) unless condition
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Truemail
4
+ module Client
5
+ class Http
6
+ require 'uri'
7
+ require 'net/http'
8
+
9
+ URI_ATTRS = %i[secure_connection host port email].freeze
10
+ USER_AGENT = 'Truemail Ruby client'
11
+ MIME_TYPE = 'application/json'
12
+
13
+ def initialize(email)
14
+ Truemail::Client::Http::URI_ATTRS[0..-2].each do |attribute|
15
+ instance_variable_set(:"@#{attribute}", Truemail::Client.configuration.public_send(attribute))
16
+ end
17
+ @email = email
18
+ end
19
+
20
+ def run
21
+ Net::HTTP.start(uri.host, uri.port, use_ssl: secure_connection) do |http|
22
+ request = Net::HTTP::Get.new(uri)
23
+ request['User-Agent'] = Truemail::Client::Http::USER_AGENT
24
+ request['Accept'] = Truemail::Client::Http::MIME_TYPE
25
+ request['Content-Type'] = Truemail::Client::Http::MIME_TYPE
26
+ request['Authorization'] = Truemail::Client.configuration.token
27
+ http.request(request)
28
+ end.body
29
+ rescue => error
30
+ { truemail_client_error: error }.to_json
31
+ end
32
+
33
+ private
34
+
35
+ attr_reader(*Truemail::Client::Http::URI_ATTRS)
36
+
37
+ def uri
38
+ @uri ||= URI("#{secure_connection ? 'https' : 'http'}://#{host}:#{port}/?email=#{email}")
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Truemail
4
+ module Client
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'truemail/client/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'truemail-client'
9
+ spec.version = Truemail::Client::VERSION
10
+ spec.authors = ['Vladislav Trotsenko']
11
+ spec.email = ['admin@bestweb.com.ua']
12
+
13
+ spec.summary = %(truemail-client)
14
+ spec.description = %(Truemail web API client library for Ruby)
15
+
16
+ spec.homepage = 'https://github.com/truemail-rb/truemail-ruby-client'
17
+ spec.license = 'MIT'
18
+
19
+ spec.required_ruby_version = '>= 2.5.0'
20
+
21
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_development_dependency 'bundler', '~> 1.16'
27
+ spec.add_development_dependency 'bundler-audit', '~> 0.6.1'
28
+ spec.add_development_dependency 'fasterer', '~> 0.8.2'
29
+ spec.add_development_dependency 'ffaker', '~> 2.14'
30
+ spec.add_development_dependency 'json_matchers', '~> 0.11.1'
31
+ spec.add_development_dependency 'overcommit', '~> 0.52.1'
32
+ spec.add_development_dependency 'pry-byebug', '~> 3.8'
33
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
34
+ spec.add_development_dependency 'reek', '~> 5.6'
35
+ spec.add_development_dependency 'rspec', '~> 3.9'
36
+ spec.add_development_dependency 'rubocop', '~> 0.80.1'
37
+ spec.add_development_dependency 'rubocop-performance', '~> 1.5', '>= 1.5.2'
38
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.38', '>= 1.38.1'
39
+ spec.add_development_dependency 'simplecov', '~> 0.17.1'
40
+ spec.add_development_dependency 'webmock', '~> 3.8', '>= 3.8.3'
41
+ end
metadata ADDED
@@ -0,0 +1,304 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: truemail-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Vladislav Trotsenko
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-03-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler-audit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.1
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.6.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: fasterer
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: ffaker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.14'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.14'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json_matchers
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.11.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.11.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: overcommit
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.52.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.52.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.8'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.8'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '13.0'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 13.0.1
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '13.0'
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 13.0.1
131
+ - !ruby/object:Gem::Dependency
132
+ name: reek
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '5.6'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '5.6'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.9'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.9'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rubocop
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 0.80.1
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 0.80.1
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop-performance
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.5'
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: 1.5.2
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '1.5'
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 1.5.2
193
+ - !ruby/object:Gem::Dependency
194
+ name: rubocop-rspec
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '1.38'
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: 1.38.1
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '1.38'
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: 1.38.1
213
+ - !ruby/object:Gem::Dependency
214
+ name: simplecov
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: 0.17.1
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - "~>"
225
+ - !ruby/object:Gem::Version
226
+ version: 0.17.1
227
+ - !ruby/object:Gem::Dependency
228
+ name: webmock
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - "~>"
232
+ - !ruby/object:Gem::Version
233
+ version: '3.8'
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: 3.8.3
237
+ type: :development
238
+ prerelease: false
239
+ version_requirements: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '3.8'
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ version: 3.8.3
247
+ description: Truemail web API client library for Ruby
248
+ email:
249
+ - admin@bestweb.com.ua
250
+ executables: []
251
+ extensions: []
252
+ extra_rdoc_files: []
253
+ files:
254
+ - ".circleci/config.yml"
255
+ - ".codeclimate.yml"
256
+ - ".github/ISSUE_TEMPLATE.md"
257
+ - ".github/PULL_REQUEST_TEMPLATE.md"
258
+ - ".gitignore"
259
+ - ".overcommit.yml"
260
+ - ".reek.yml"
261
+ - ".rspec"
262
+ - ".rubocop.yml"
263
+ - ".ruby-gemset"
264
+ - ".ruby-version"
265
+ - CHANGELOG.md
266
+ - CODE_OF_CONDUCT.md
267
+ - CONTRIBUTING.md
268
+ - Gemfile
269
+ - Gemfile.lock
270
+ - LICENSE.txt
271
+ - README.md
272
+ - Rakefile
273
+ - bin/console
274
+ - bin/setup
275
+ - lib/truemail/client.rb
276
+ - lib/truemail/client/configuration.rb
277
+ - lib/truemail/client/http.rb
278
+ - lib/truemail/client/version.rb
279
+ - truemail-client.gemspec
280
+ homepage: https://github.com/truemail-rb/truemail-ruby-client
281
+ licenses:
282
+ - MIT
283
+ metadata: {}
284
+ post_install_message:
285
+ rdoc_options: []
286
+ require_paths:
287
+ - lib
288
+ required_ruby_version: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: 2.5.0
293
+ required_rubygems_version: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - ">="
296
+ - !ruby/object:Gem::Version
297
+ version: '0'
298
+ requirements: []
299
+ rubyforge_project:
300
+ rubygems_version: 2.7.9
301
+ signing_key:
302
+ specification_version: 4
303
+ summary: truemail-client
304
+ test_files: []