zerobounce 0.0.1 → 0.0.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 +136 -0
- data/README.md +6 -0
- data/lib/zerobounce.rb +1 -0
- data/lib/zerobounce/configuration.rb +20 -0
- data/lib/zerobounce/error.rb +19 -3
- data/lib/zerobounce/middleware/raise_error.rb +5 -0
- data/lib/zerobounce/request.rb +19 -7
- data/lib/zerobounce/response.rb +42 -13
- data/lib/zerobounce/version.rb +1 -1
- data/zerobounce.gemspec +5 -1
- metadata +33 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c89aae3611e01d420af253c1e3b60a09a5e2903
|
4
|
+
data.tar.gz: 6082f7d46074773f1c8b98cf79c0c1a65a9ba8ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0733544edd82e48f24bab8ecb1880039d8289d7c62a939250c2e5e571a2c906921ac17bbf3b3df2d5e1c4190598c29bb4b78f808aeeed6847a85d18e8da2a713
|
7
|
+
data.tar.gz: d091198164aef11b24ee69f3efa4daf1795e78c769b50352cad5d94cef7947a91847b6d433635f8ef3e94ae2c6610360019954199a3319e64c4cb6100684f000
|
@@ -0,0 +1,136 @@
|
|
1
|
+
version: 2
|
2
|
+
|
3
|
+
workspace_root: &workspace_root
|
4
|
+
~/zerobounce
|
5
|
+
|
6
|
+
defaults: &defaults
|
7
|
+
working_directory: *workspace_root
|
8
|
+
docker:
|
9
|
+
- image: circleci/ruby:2.4
|
10
|
+
|
11
|
+
attach_workspace: &attach_workspace
|
12
|
+
attach_workspace:
|
13
|
+
at: *workspace_root
|
14
|
+
|
15
|
+
restore_repo: &restore_repo
|
16
|
+
restore_cache:
|
17
|
+
name: Restore repository
|
18
|
+
keys:
|
19
|
+
- v1-repo-{{ .Branch }}-{{ .Revision }}
|
20
|
+
|
21
|
+
restore_gems: &restore_gems
|
22
|
+
restore_cache:
|
23
|
+
name: Restore gems
|
24
|
+
keys:
|
25
|
+
- v1-zerobounce-{{ checksum "Gemfile.lock" }}
|
26
|
+
|
27
|
+
jobs:
|
28
|
+
checkout-code:
|
29
|
+
<<: *defaults
|
30
|
+
steps:
|
31
|
+
- checkout
|
32
|
+
- save_cache:
|
33
|
+
key: v1-repo-{{ .Branch }}-{{ .Revision }}
|
34
|
+
paths:
|
35
|
+
- *workspace_root
|
36
|
+
|
37
|
+
bundle-dependencies:
|
38
|
+
<<: *defaults
|
39
|
+
steps:
|
40
|
+
- *restore_repo
|
41
|
+
- *restore_gems
|
42
|
+
- run:
|
43
|
+
name: Install Bundler dependencies
|
44
|
+
command: |
|
45
|
+
bin/bundle install --path=vendor/bundle \
|
46
|
+
--jobs=4 \
|
47
|
+
--retry=3
|
48
|
+
- run:
|
49
|
+
name: Setup Code Climate test-reporter
|
50
|
+
command: |
|
51
|
+
mkdir -p tmp/
|
52
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
|
53
|
+
chmod +x ./tmp/cc-test-reporter
|
54
|
+
- save_cache:
|
55
|
+
key: v1-zerobounce-{{ checksum "Gemfile.lock" }}
|
56
|
+
paths:
|
57
|
+
- vendor/bundle
|
58
|
+
- persist_to_workspace:
|
59
|
+
root: *workspace_root
|
60
|
+
paths:
|
61
|
+
- vendor/bundle
|
62
|
+
- tmp/cc-test-reporter
|
63
|
+
|
64
|
+
run-specs:
|
65
|
+
<<: *defaults
|
66
|
+
parallelism: 2
|
67
|
+
steps:
|
68
|
+
- *restore_repo
|
69
|
+
- *attach_workspace
|
70
|
+
- run:
|
71
|
+
name: Set bundler path
|
72
|
+
command: bin/bundle --path vendor/bundle
|
73
|
+
- run:
|
74
|
+
name: Run tests
|
75
|
+
command: |
|
76
|
+
bin/bundle exec rspec --profile 10 \
|
77
|
+
--format RspecJunitFormatter \
|
78
|
+
--out test_results/rspec.xml \
|
79
|
+
--format progress \
|
80
|
+
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
|
81
|
+
./tmp/cc-test-reporter format-coverage \
|
82
|
+
-t simplecov \
|
83
|
+
-o tmp/codeclimate.${CIRCLE_NODE_INDEX}.json \
|
84
|
+
${CIRCLE_ARTIFACTS}/coverage/.resultset.json
|
85
|
+
- persist_to_workspace:
|
86
|
+
root: *workspace_root
|
87
|
+
paths:
|
88
|
+
- tmp
|
89
|
+
- store_test_results:
|
90
|
+
path: test_results
|
91
|
+
- store_artifacts:
|
92
|
+
path: test_results
|
93
|
+
destination: test-results
|
94
|
+
- store_artifacts:
|
95
|
+
path: coverage
|
96
|
+
destination: test-coverage
|
97
|
+
|
98
|
+
upload-coverage:
|
99
|
+
<<: *defaults
|
100
|
+
steps:
|
101
|
+
- *attach_workspace
|
102
|
+
- run:
|
103
|
+
name: Upload coverage results to Code Climate
|
104
|
+
command: |
|
105
|
+
./tmp/cc-test-reporter sum-coverage tmp/codeclimate.*.json -p 2 -o tmp/codeclimate.total.json
|
106
|
+
./tmp/cc-test-reporter upload-coverage -i tmp/codeclimate.total.json
|
107
|
+
|
108
|
+
run-rubocop:
|
109
|
+
<<: *defaults
|
110
|
+
steps:
|
111
|
+
- *restore_repo
|
112
|
+
- *attach_workspace
|
113
|
+
- run:
|
114
|
+
name: Set bundler path
|
115
|
+
command: bin/bundle --path vendor/bundle
|
116
|
+
- run:
|
117
|
+
name: Run rubocop
|
118
|
+
command: bin/bundle exec rubocop
|
119
|
+
|
120
|
+
workflows:
|
121
|
+
version: 2
|
122
|
+
build-test:
|
123
|
+
jobs:
|
124
|
+
- checkout-code
|
125
|
+
- bundle-dependencies:
|
126
|
+
requires:
|
127
|
+
- checkout-code
|
128
|
+
- run-rubocop:
|
129
|
+
requires:
|
130
|
+
- bundle-dependencies
|
131
|
+
- run-specs:
|
132
|
+
requires:
|
133
|
+
- bundle-dependencies
|
134
|
+
- upload-coverage:
|
135
|
+
requires:
|
136
|
+
- run-specs
|
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
# Zerobounce
|
2
|
+
[](https://codeclimate.com/github/afrase/zerobounce/maintainability)
|
3
|
+
[](https://codeclimate.com/github/afrase/zerobounce/test_coverage)
|
4
|
+
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fafrase%2Fzerobounce?ref=badge_shield)
|
5
|
+
[](https://badge.fury.io/rb/zerobounce)
|
2
6
|
|
3
7
|
A ruby client for Zerobounce.net API.
|
4
8
|
|
@@ -54,6 +58,8 @@ to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
|
54
58
|
The gem is available as open source under the terms of the
|
55
59
|
[MIT License](https://opensource.org/licenses/MIT).
|
56
60
|
|
61
|
+
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fafrase%2Fzerobounce?ref=badge_large)
|
62
|
+
|
57
63
|
## Code of Conduct
|
58
64
|
|
59
65
|
Everyone interacting in the Zerobounce project’s codebases, issue trackers,
|
data/lib/zerobounce.rb
CHANGED
@@ -6,6 +6,26 @@ require 'zerobounce/middleware/raise_error'
|
|
6
6
|
|
7
7
|
module Zerobounce
|
8
8
|
# Configuration object for Zerobounce.
|
9
|
+
#
|
10
|
+
# @author Aaron Frase
|
11
|
+
#
|
12
|
+
# @attr [String] host
|
13
|
+
# The Zerobounce API host.
|
14
|
+
#
|
15
|
+
# @attr [Hash] headers
|
16
|
+
# Headers to use in all requests.
|
17
|
+
#
|
18
|
+
# @attr [String] api_key
|
19
|
+
# A Zerobounce API key.
|
20
|
+
#
|
21
|
+
# @attr [Proc] middleware
|
22
|
+
# The middleware used by Faraday for each request.
|
23
|
+
#
|
24
|
+
# @note If you modify the default make sure to add middleware to parse
|
25
|
+
# the response as json and symbolize the keys.
|
26
|
+
#
|
27
|
+
# @attr [Array<Symbol>] valid_statues
|
28
|
+
# The statuses that are considered valid by {Response#valid?}.
|
9
29
|
class Configuration
|
10
30
|
attr_accessor :host
|
11
31
|
attr_accessor :headers
|
data/lib/zerobounce/error.rb
CHANGED
@@ -4,17 +4,23 @@ require 'json'
|
|
4
4
|
|
5
5
|
module Zerobounce
|
6
6
|
# The base Zerobounce error.
|
7
|
+
#
|
8
|
+
# @author Aaron Frase
|
7
9
|
class Error < StandardError
|
8
|
-
def initialize(env=
|
10
|
+
def initialize(env={})
|
9
11
|
@env = env
|
10
12
|
end
|
11
13
|
|
12
14
|
# Message for the error.
|
15
|
+
#
|
16
|
+
# @return [String]
|
13
17
|
def message
|
14
18
|
@env[:body]
|
15
19
|
end
|
16
20
|
|
17
21
|
class << self
|
22
|
+
# Parse the response for errors.
|
23
|
+
#
|
18
24
|
# @param [Hash] env
|
19
25
|
# @return [Error]
|
20
26
|
def from_response(env)
|
@@ -28,31 +34,41 @@ module Zerobounce
|
|
28
34
|
|
29
35
|
private
|
30
36
|
|
37
|
+
# @param [Hash] env
|
38
|
+
# @return [Error]
|
31
39
|
def parse_500(env)
|
32
|
-
if env[:body]
|
40
|
+
if env[:body]&.start_with?('Missing parameter')
|
33
41
|
MissingParameter.new(env)
|
34
42
|
else
|
35
43
|
InternalServerError.new(env)
|
36
44
|
end
|
37
45
|
end
|
38
46
|
|
47
|
+
# @param [Hash] env
|
48
|
+
# @return [Error, nil]
|
39
49
|
def parse_200(env)
|
40
50
|
# The body hasn't been parsed yet and to avoid potentially parsing the body twice
|
41
51
|
# we just use String#start_with?
|
42
|
-
ApiError.new(env) if env[:body]
|
52
|
+
ApiError.new(env) if env[:body]&.start_with?('{"error":"')
|
43
53
|
end
|
44
54
|
end
|
45
55
|
end
|
46
56
|
|
47
57
|
# Server returned a 500 error.
|
58
|
+
#
|
59
|
+
# @author Aaron Frase
|
48
60
|
class InternalServerError < Error
|
49
61
|
end
|
50
62
|
|
51
63
|
# A parameter was missing, usually the apiKey.
|
64
|
+
#
|
65
|
+
# @author Aaron Frase
|
52
66
|
class MissingParameter < Error
|
53
67
|
end
|
54
68
|
|
55
69
|
# General API error, the response code was 200 but an error still occurred.
|
70
|
+
#
|
71
|
+
# @author Aaron Frase
|
56
72
|
class ApiError < Error
|
57
73
|
# @see #message
|
58
74
|
def message
|
@@ -6,8 +6,13 @@ module Zerobounce
|
|
6
6
|
# Faraday middleware.
|
7
7
|
module Middleware
|
8
8
|
# Raises an error if the response wasn't successful.
|
9
|
+
#
|
10
|
+
# @author Aaron Frase
|
9
11
|
class RaiseError < Faraday::Response::Middleware
|
10
12
|
# Check for errors after the response has finished.
|
13
|
+
#
|
14
|
+
# @param [Hash] env
|
15
|
+
# @raise [Error]
|
11
16
|
def on_complete(env)
|
12
17
|
if (error = Zerobounce::Error.from_response(env)) # rubocop:disable GuardClause
|
13
18
|
raise error
|
data/lib/zerobounce/request.rb
CHANGED
@@ -7,11 +7,23 @@ module Zerobounce
|
|
7
7
|
#
|
8
8
|
# @author Aaron Frase
|
9
9
|
#
|
10
|
-
# @attr_reader [String] url
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# @attr_reader [
|
10
|
+
# @attr_reader [String] url
|
11
|
+
# The path of the request.
|
12
|
+
#
|
13
|
+
# @attr_reader [String] host
|
14
|
+
# The host to send the request to.
|
15
|
+
#
|
16
|
+
# @attr_reader [Hash] headers
|
17
|
+
# The headers used for the request.
|
18
|
+
#
|
19
|
+
# @attr_reader [Proc] middleware
|
20
|
+
# Faraday middleware used for the request.
|
14
21
|
class Request
|
22
|
+
# The normal email validation endpoint.
|
23
|
+
VALIDATE_PATH = '/v1/validate'
|
24
|
+
# The validation endpoint for email and IP validation.
|
25
|
+
VALIDATE_WITH_IP_PATH = '/v1/validatewithip'
|
26
|
+
|
15
27
|
attr_reader :url
|
16
28
|
attr_reader :host
|
17
29
|
attr_reader :headers
|
@@ -21,11 +33,11 @@ module Zerobounce
|
|
21
33
|
# @option params [String] :middleware default: {Configuration#middleware} {include:#middleware}
|
22
34
|
# @option params [String] :headers default: {Configuration#headers} {include:#headers}
|
23
35
|
# @option params [String] :host default: {Configuration#host} {include:#host}
|
24
|
-
def initialize(params)
|
36
|
+
def initialize(params={})
|
25
37
|
@middleware = params[:middleware] || Zerobounce.config.middleware
|
26
38
|
@headers = params[:headers] || Zerobounce.config.headers
|
27
39
|
@host = params[:host] || Zerobounce.config.host
|
28
|
-
@url = params.key?(:ipaddress) || params.key?(:ip_address) ?
|
40
|
+
@url = params.key?(:ipaddress) || params.key?(:ip_address) ? VALIDATE_WITH_IP_PATH : VALIDATE_PATH
|
29
41
|
end
|
30
42
|
|
31
43
|
# Sends a GET request.
|
@@ -40,7 +52,7 @@ module Zerobounce
|
|
40
52
|
|
41
53
|
# @return [Faraday::Connection]
|
42
54
|
def conn
|
43
|
-
@conn ||= Faraday.new(
|
55
|
+
@conn ||= Faraday.new(host, headers: headers, &middleware)
|
44
56
|
end
|
45
57
|
|
46
58
|
# @param [Hash] params
|
data/lib/zerobounce/response.rb
CHANGED
@@ -5,8 +5,13 @@ require 'time'
|
|
5
5
|
module Zerobounce
|
6
6
|
# A Zerobounce response
|
7
7
|
#
|
8
|
+
# @author Aaron Frase
|
9
|
+
#
|
8
10
|
# @attr_reader [Zerobounce::Request] request
|
11
|
+
# The request instance.
|
12
|
+
#
|
9
13
|
# @attr_reader [Faraday::Response] response
|
14
|
+
# The original {https://www.rubydoc.info/gems/faraday/0.15.2/Faraday/Response Faraday::Response}
|
10
15
|
class Response
|
11
16
|
attr_reader :response
|
12
17
|
attr_reader :request
|
@@ -30,17 +35,36 @@ module Zerobounce
|
|
30
35
|
# :abuse
|
31
36
|
# :do_not_mail
|
32
37
|
#
|
33
|
-
# @return [Symbol]
|
38
|
+
# @return [Symbol] The status as a +Symbol+.
|
34
39
|
def status
|
35
40
|
@status ||= underscore(@body[:status])&.to_sym
|
36
41
|
end
|
37
42
|
|
38
|
-
#
|
39
|
-
# timeout_exceeded | failed_smtp_connection | mailbox_quota_exceeded | exception_occurred | possible_traps |
|
40
|
-
# role_based | global_suppression | mailbox_not_found | no_dns_entries | failed_syntax_check | possible_typo |
|
41
|
-
# unroutable_ip_address | leading_period_removed | does_not_accept_mail | alias_address
|
43
|
+
# A more detailed status
|
42
44
|
#
|
43
|
-
#
|
45
|
+
# Possible values:
|
46
|
+
# :antispam_system
|
47
|
+
# :greylisted
|
48
|
+
# :mail_server_temporary_error
|
49
|
+
# :forcible_disconnect
|
50
|
+
# :mail_server_did_not_respond
|
51
|
+
# :timeout_exceeded
|
52
|
+
# :failed_smtp_connection
|
53
|
+
# :mailbox_quota_exceeded
|
54
|
+
# :exception_occurred
|
55
|
+
# :possible_traps
|
56
|
+
# :role_based
|
57
|
+
# :global_suppression
|
58
|
+
# :mailbox_not_found
|
59
|
+
# :no_dns_entries
|
60
|
+
# :failed_syntax_check
|
61
|
+
# :possible_typo
|
62
|
+
# :unroutable_ip_address
|
63
|
+
# :leading_period_removed
|
64
|
+
# :does_not_accept_mail
|
65
|
+
# :alias_address
|
66
|
+
#
|
67
|
+
# @return [Symbol] The sub_status as a +Symbol+.
|
44
68
|
def sub_status
|
45
69
|
@sub_status ||= underscore(@body[:sub_status])&.to_sym
|
46
70
|
end
|
@@ -124,12 +148,14 @@ module Zerobounce
|
|
124
148
|
|
125
149
|
# Is this email considered valid?
|
126
150
|
#
|
151
|
+
# @note Uses the values from {Zerobounce::Configuration#valid_statuses}
|
152
|
+
#
|
127
153
|
# @return [Boolean]
|
128
154
|
def valid?
|
129
155
|
@valid ||= Zerobounce.config.valid_statuses.include?(status)
|
130
156
|
end
|
131
157
|
|
132
|
-
# The opposite of #valid?
|
158
|
+
# The opposite of {#valid?}
|
133
159
|
#
|
134
160
|
# @return [Boolean]
|
135
161
|
def invalid?
|
@@ -141,7 +167,7 @@ module Zerobounce
|
|
141
167
|
# These are temporary emails created for the sole purpose to sign up to websites without giving their real
|
142
168
|
# email address. These emails are short lived from 15 minutes to around 6 months.
|
143
169
|
#
|
144
|
-
# @note If you have valid emails with this flag set to
|
170
|
+
# @note If you have valid emails with this flag set to +true+, you shouldn't email them.
|
145
171
|
#
|
146
172
|
# @return [Boolean]
|
147
173
|
def disposable?
|
@@ -171,16 +197,21 @@ module Zerobounce
|
|
171
197
|
@creation_date ||= @body[:creationdate] && Time.parse(@body[:creationdate])
|
172
198
|
end
|
173
199
|
|
200
|
+
# Returns a string containing a human-readable representation.
|
201
|
+
#
|
202
|
+
# @note Overriding inspect to hide the {#request}/{#response} instance variables
|
203
|
+
#
|
174
204
|
# @return [String]
|
175
205
|
def inspect
|
176
|
-
# Overriding inspect to hide the @request/@response instance variables
|
177
206
|
"#<#{self.class.name}:#{object_id}>"
|
178
207
|
end
|
179
208
|
|
209
|
+
# Convert to a hash.
|
210
|
+
#
|
180
211
|
# @return [Hash]
|
181
212
|
def to_h
|
182
213
|
public_methods(false).each_with_object({}) do |meth, memo|
|
183
|
-
next if %i[request response inspect
|
214
|
+
next if %i[request response inspect to_h].include?(meth)
|
184
215
|
memo[meth] = send(meth)
|
185
216
|
end
|
186
217
|
end
|
@@ -191,9 +222,7 @@ module Zerobounce
|
|
191
222
|
# @return [String, nil]
|
192
223
|
def underscore(word)
|
193
224
|
return if word.nil? || word.empty?
|
194
|
-
word.gsub
|
195
|
-
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2') # for words like ResponseCode Response_Code
|
196
|
-
word.downcase.tr('-', '_')
|
225
|
+
word.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase.tr('-', '_')
|
197
226
|
end
|
198
227
|
end
|
199
228
|
end
|
data/lib/zerobounce/version.rb
CHANGED
data/zerobounce.gemspec
CHANGED
@@ -4,7 +4,7 @@ lib = File.expand_path('lib', __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'zerobounce/version'
|
6
6
|
|
7
|
-
Gem::Specification.new do |spec|
|
7
|
+
Gem::Specification.new do |spec| # rubocop:disable BlockLength
|
8
8
|
spec.name = 'zerobounce'
|
9
9
|
spec.version = Zerobounce::VERSION
|
10
10
|
spec.authors = ['Aaron Frase']
|
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
+
spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
|
26
|
+
|
25
27
|
spec.add_dependency 'faraday', '~> 0.14'
|
26
28
|
spec.add_dependency 'faraday_middleware', '~> 0.12'
|
27
29
|
|
@@ -29,7 +31,9 @@ Gem::Specification.new do |spec|
|
|
29
31
|
spec.add_development_dependency 'pry', '~> 0.11.3'
|
30
32
|
spec.add_development_dependency 'rake', '~> 10.0'
|
31
33
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
34
|
+
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
|
32
35
|
spec.add_development_dependency 'rubocop', '~> 0.52'
|
33
36
|
spec.add_development_dependency 'rubocop-rspec', '~> 1.22', '>= 1.22.2'
|
37
|
+
spec.add_development_dependency 'simplecov', '~> 0.16.1'
|
34
38
|
spec.add_development_dependency 'yard', '~> 0.9.12'
|
35
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zerobounce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Frase
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec_junit_formatter
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.3.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.3.0
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rubocop
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,6 +142,20 @@ dependencies:
|
|
128
142
|
- - ">="
|
129
143
|
- !ruby/object:Gem::Version
|
130
144
|
version: 1.22.2
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: simplecov
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 0.16.1
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 0.16.1
|
131
159
|
- !ruby/object:Gem::Dependency
|
132
160
|
name: yard
|
133
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,6 +177,7 @@ executables: []
|
|
149
177
|
extensions: []
|
150
178
|
extra_rdoc_files: []
|
151
179
|
files:
|
180
|
+
- ".circleci/config.yml"
|
152
181
|
- ".editorconfig"
|
153
182
|
- ".gitignore"
|
154
183
|
- ".rspec"
|
@@ -174,7 +203,8 @@ files:
|
|
174
203
|
homepage: https://github.com/afrase/zerobounce
|
175
204
|
licenses:
|
176
205
|
- MIT
|
177
|
-
metadata:
|
206
|
+
metadata:
|
207
|
+
yard.run: yri
|
178
208
|
post_install_message:
|
179
209
|
rdoc_options: []
|
180
210
|
require_paths:
|