truemail-client 0.1.0

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