neverbounce-api 1.0.4 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da7750382da1d6b5deddf629b7a592ea48cc265f
4
- data.tar.gz: e5172de975642ebf2fee9c766ebfa8186853299e
3
+ metadata.gz: a4914041f3d0851a7bc008ad8ae7a93d788d9722
4
+ data.tar.gz: 9bfb58a3ef4662106c64160cbeae2edbdce1edc8
5
5
  SHA512:
6
- metadata.gz: fed8ba58fab324a869a11571de730549469118e1af58894c708393c65a6b1ad502c05ed4ad1e75093adfe35853b470457a60aee0631c5ec92499ec9039f1f043
7
- data.tar.gz: 5b389616e21e31f82a264fe0c9e7b5233f0a0f2feb6aadc6988dd1aefacccbd4f24fd624251c7b515ba490c88ebcae965df5d56a46d77f791e873a0fabd9fe1c
6
+ metadata.gz: 8fc8a9fc1608a38a5f5eab79fe7941e36310d22c0391b9e338f20a05b318e1d972e64bf498adf2dbb638a05f7f0846b9ab915456e96f750e3d31a8de6f27458f
7
+ data.tar.gz: 380320a15db88c0e2b995e95e8d5b0ffb209ca8d043f81bcace0ee5501a6159bdeb86f029e2653e002a6aa0c9a489dfbf3576ddb9d84520a66119431d0585a22
@@ -6,10 +6,10 @@ env:
6
6
  - CC_TEST_REPORTER_ID=9300cb7898e254e78099399acbb2796471fde0e5c1873899273a583d56c9d740
7
7
 
8
8
  before_install:
9
- - gem update --system
10
9
  - gem install bundler
11
10
 
12
11
  install:
12
+ - bundle update --bundler
13
13
  - bundle install --path ~/bundle
14
14
 
15
15
  before_script:
@@ -24,9 +24,7 @@ after_script:
24
24
  - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
25
25
 
26
26
  rvm:
27
- - 2.0
28
- - 2.1
29
- - 2.2
30
- - 2.3
31
27
  - 2.4
32
28
  - 2.5
29
+ - 2.6
30
+ - 2.7
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neverbounce-api (1.0.3)
4
+ neverbounce-api (1.1.0)
5
5
  httparty (~> 0.15)
6
6
 
7
7
  GEM
@@ -9,7 +9,7 @@ GEM
9
9
  specs:
10
10
  diff-lcs (1.3)
11
11
  docile (1.1.5)
12
- httparty (0.15.6)
12
+ httparty (0.16.2)
13
13
  multi_xml (>= 0.5.2)
14
14
  json (2.1.0)
15
15
  multi_xml (0.6.0)
@@ -37,7 +37,7 @@ module NeverBounce; module API
37
37
  Feature::BasicInitialize.load(self)
38
38
  Feature::RequireAttr.load(self)
39
39
 
40
- attr_writer :api_key
40
+ attr_writer :api_key, :api_version
41
41
 
42
42
  # API key.
43
43
  # @return [String]
@@ -45,6 +45,12 @@ module NeverBounce; module API
45
45
  @api_key or raise AttributeError, "Attribute must be set: api_key"
46
46
  end
47
47
 
48
+ # API version.
49
+ # @return [String]
50
+ def api_version
51
+ @api_version
52
+ end
53
+
48
54
  #--------------------------------------- Misc
49
55
 
50
56
  # Wrap request in a session, return response.
@@ -67,6 +73,7 @@ module NeverBounce; module API
67
73
  def account_info
68
74
  response_to(Request::AccountInfo.new({
69
75
  api_key: api_key,
76
+ api_version: api_version,
70
77
  }))
71
78
  end
72
79
 
@@ -83,7 +90,7 @@ module NeverBounce; module API
83
90
  # @raise [StandardError]
84
91
  # @see Request::JobsCreate
85
92
  # @see https://developers.neverbounce.com/v4.0/reference#jobs-create
86
- def jobs_create(auto_parse: false, auto_start: false, filename: nil, remote_input: nil, run_sample: false, supplied_input: nil)
93
+ def jobs_create(auto_parse: false, auto_start: false, filename: nil, remote_input: nil, run_sample: false, supplied_input: nil, historical: nil)
87
94
  raise ArgumentError, "`remote_input` and `supplied_input` can't both be given" if remote_input && supplied_input
88
95
 
89
96
  input_location = if (v = remote_input)
@@ -102,12 +109,14 @@ module NeverBounce; module API
102
109
 
103
110
  response_to(API::Request::JobsCreate.new({
104
111
  api_key: api_key,
112
+ api_version: api_version,
105
113
  auto_parse: auto_parse,
106
114
  auto_start: auto_start,
107
115
  filename: filename,
108
116
  input: input,
109
117
  input_location: input_location,
110
118
  run_sample: run_sample,
119
+ historical: historical,
111
120
  }))
112
121
  end
113
122
 
@@ -122,6 +131,7 @@ module NeverBounce; module API
122
131
  def jobs_delete(job_id: nil)
123
132
  response_to(Request::JobsDelete.new({
124
133
  api_key: api_key,
134
+ api_version: api_version,
125
135
  job_id: job_id,
126
136
  }))
127
137
  end
@@ -137,6 +147,7 @@ module NeverBounce; module API
137
147
  def jobs_download(job_id: nil)
138
148
  response_to(Request::JobsDownload.new({
139
149
  api_key: api_key,
150
+ api_version: api_version,
140
151
  job_id: job_id,
141
152
  }))
142
153
  end
@@ -153,6 +164,7 @@ module NeverBounce; module API
153
164
  def jobs_parse(auto_start: nil, job_id: nil)
154
165
  response_to(Request::JobsParse.new({
155
166
  api_key: api_key,
167
+ api_version: api_version,
156
168
  auto_start: auto_start,
157
169
  job_id: job_id,
158
170
  }))
@@ -171,6 +183,7 @@ module NeverBounce; module API
171
183
  def jobs_results(job_id: nil, page: 1, per_page: nil)
172
184
  response_to(Request::JobsResults.new({
173
185
  api_key: api_key,
186
+ api_version: api_version,
174
187
  job_id: job_id,
175
188
  page: page,
176
189
  per_page: per_page,
@@ -190,6 +203,7 @@ module NeverBounce; module API
190
203
  def jobs_search(job_id: nil, page: 1, per_page: nil)
191
204
  response_to(Request::JobsSearch.new({
192
205
  api_key: api_key,
206
+ api_version: api_version,
193
207
  job_id: job_id,
194
208
  page: page,
195
209
  per_page: per_page,
@@ -208,6 +222,7 @@ module NeverBounce; module API
208
222
  def jobs_start(job_id: nil, run_sample: nil)
209
223
  response_to(Request::JobsStart.new({
210
224
  api_key: api_key,
225
+ api_version: api_version,
211
226
  job_id: job_id,
212
227
  run_sample: run_sample,
213
228
  }))
@@ -224,6 +239,7 @@ module NeverBounce; module API
224
239
  def jobs_status(job_id: nil)
225
240
  response_to(Request::JobsStatus.new({
226
241
  api_key: api_key,
242
+ api_version: api_version,
227
243
  job_id: job_id,
228
244
  }))
229
245
  end
@@ -239,13 +255,15 @@ module NeverBounce; module API
239
255
  # @raise [StandardError]
240
256
  # @see Request::SingleCheck
241
257
  # @see https://developers.neverbounce.com/v4.0/reference#single-check
242
- def single_check(address_info: nil, credits_info: nil, email: nil, timeout: nil)
258
+ def single_check(address_info: nil, credits_info: nil, email: nil, timeout: nil, historical: nil)
243
259
  response_to(Request::SingleCheck.new({
244
260
  address_info: address_info,
245
261
  api_key: api_key,
262
+ api_version: api_version,
246
263
  credits_info: credits_info,
247
264
  email: email,
248
265
  timeout: timeout,
266
+ historical: historical,
249
267
  }))
250
268
  end
251
269
 
@@ -263,6 +281,7 @@ module NeverBounce; module API
263
281
  def poe_confirm(email: nil, transaction_id: nil, confirmation_token: nil, result: nil)
264
282
  response_to(Request::POEConfirm.new({
265
283
  api_key: api_key,
284
+ api_version: api_version,
266
285
  email: email,
267
286
  transaction_id: transaction_id,
268
287
  confirmation_token: confirmation_token,
@@ -12,12 +12,18 @@ module NeverBounce; module API; module Request
12
12
  # User's API key.
13
13
  # @return [String]
14
14
  attr_accessor :api_key
15
- attr_writer :api_url, :headers, :user_agent
15
+ attr_writer :api_url, :headers, :user_agent, :api_version
16
16
 
17
- # Custom API URL. Default is <tt>https://api.neverbounce.com/v4</tt>.
17
+ # Custom API URL. Default is <tt>https://api.neverbounce.com</tt>.
18
18
  # @return [String]
19
19
  def api_url
20
- @api_url ||= "https://api.neverbounce.com/v4"
20
+ @api_url ||= "https://api.neverbounce.com"
21
+ end
22
+
23
+ # Custom API URL. Default is <tt>https://api.neverbounce.com</tt>.
24
+ # @return [String]
25
+ def api_version
26
+ @api_version ||= "v4.1"
21
27
  end
22
28
 
23
29
  # @!attribute headers
@@ -57,7 +63,7 @@ module NeverBounce; module API; module Request
57
63
  @curl ||= begin
58
64
  ar = [
59
65
  "--request", self.class.http_method.to_s.upcase,
60
- "--url", "#{api_url}/#{self.class.path}",
66
+ "--url", "#{api_url}/#{api_version}/#{self.class.path}",
61
67
  ]
62
68
 
63
69
  ar += headers.reject { |k,| k == "User-Agent" }.flat_map do |k, v|
@@ -82,7 +88,7 @@ module NeverBounce; module API; module Request
82
88
  def to_httparty
83
89
  [
84
90
  self.class.http_method, # E.g. `:get`.
85
- "#{api_url}/#{self.class.path}",
91
+ "#{api_url}/#{api_version}/#{self.class.path}",
86
92
  {
87
93
  body: to_h.to_json,
88
94
  headers: headers,
@@ -23,6 +23,13 @@ module NeverBounce; module API; module Request
23
23
  # @return [Boolean]
24
24
  attr_accessor :run_sample
25
25
 
26
+ # @return [Boolean]
27
+ attr_accessor :historical
28
+
29
+ def leverage_historical
30
+ defined?(@historical) ? @historical : true
31
+ end
32
+
26
33
  # @return [Symbol]
27
34
  def self.http_method
28
35
  :post
@@ -53,6 +60,10 @@ module NeverBounce; module API; module Request
53
60
  unless (v = run_sample).nil?
54
61
  _[:run_sample] = v
55
62
  end
63
+
64
+ unless historical.nil?
65
+ _[:request_meta_data] = {leverage_historical_data: leverage_historical}
66
+ end
56
67
  end
57
68
  end
58
69
 
@@ -17,6 +17,13 @@ module NeverBounce; module API; module Request
17
17
  # @return [Integer]
18
18
  attr_accessor :timeout
19
19
 
20
+ # @return [Boolean]
21
+ attr_accessor :historical
22
+
23
+ def leverage_historical
24
+ defined?(@historical) ? @historical : true
25
+ end
26
+
20
27
  # @return [Symbol]
21
28
  def self.http_method
22
29
  :get
@@ -47,6 +54,10 @@ module NeverBounce; module API; module Request
47
54
  unless (v = timeout).nil?
48
55
  _[:timeout] = v
49
56
  end
57
+
58
+ unless historical.nil?
59
+ _[:request_meta_data] = {leverage_historical_data: leverage_historical}
60
+ end
50
61
  end
51
62
  end
52
63
 
@@ -1,4 +1,4 @@
1
1
 
2
2
  module NeverBounce; module API
3
- VERSION = "1.0.4"
3
+ VERSION = "1.1.0"
4
4
  end; end
@@ -14,6 +14,16 @@ module NeverBounce; module API
14
14
  expect(r.api_key).to eq "api_key"
15
15
  end
16
16
  end
17
+
18
+ describe "#api_version" do
19
+ it "generally works" do
20
+ r = newo
21
+ r.api_key = "api_key"
22
+ expect(r.api_version).to eq nil
23
+ r.api_version = "api_version"
24
+ expect(r.api_version).to eq "api_version"
25
+ end
26
+ end
17
27
  end # describe "attributes"
18
28
 
19
29
  describe "requests" do
@@ -19,7 +19,7 @@ module NeverBounce; module API; module Request
19
19
  expect(res).to be_a Array
20
20
  method, url, data = res
21
21
  expect(method).to eq :get
22
- expect(url).to eq "https://api.neverbounce.com/v4/account/info"
22
+ expect(url).to eq "https://api.neverbounce.com/v4.1/account/info"
23
23
  expect(data).to include(:body, :headers)
24
24
  expect(data.fetch(:body)).to eq "{\"key\":\"api_key\"}"
25
25
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -15,6 +15,10 @@ module NeverBounce; module API; module Request
15
15
  expect(r.mode_h).to eq({auto_start: false, auto_parse: false, run_sample: false})
16
16
  r = newo(auto_start: true, auto_parse: true, run_sample: true)
17
17
  expect(r.mode_h).to eq({auto_start: true, auto_parse: true, run_sample: true})
18
+ r = newo(historical: true)
19
+ expect(r.mode_h).to eq({request_meta_data: {leverage_historical_data: true}})
20
+ r = newo(historical: false)
21
+ expect(r.mode_h).to eq({request_meta_data: {leverage_historical_data: false}})
18
22
  end
19
23
  end
20
24
 
@@ -79,11 +83,39 @@ module NeverBounce; module API; module Request
79
83
  expect(res).to be_a Array
80
84
  method, url, data = res
81
85
  expect(method).to eq :post
82
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/create"
86
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/create"
83
87
  expect(data).to include(:body, :headers)
84
88
  expect(data.fetch(:body)).to eq "{\"input\":\"input\",\"input_location\":\"remote_url\",\"filename\":\"filename\",\"key\":\"api_key\"}"
85
89
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
86
90
  end
91
+
92
+ it "allows historical to be disabled" do
93
+ r = newo
94
+ r.input = "input"
95
+ r.input_location = "remote_url"
96
+ r.filename = "filename"
97
+ r.api_key = "api_key"
98
+ r.historical = false
99
+
100
+ res = r.to_httparty
101
+ expect(res).to be_a Array
102
+ method, url, data = res
103
+ expect(data.fetch(:body)).to eq "{\"input\":\"input\",\"input_location\":\"remote_url\",\"filename\":\"filename\",\"key\":\"api_key\",\"request_meta_data\":{\"leverage_historical_data\":false}}"
104
+ end
105
+
106
+ it "allows historical to be explicitly enabled" do
107
+ r = newo
108
+ r.input = "input"
109
+ r.input_location = "remote_url"
110
+ r.filename = "filename"
111
+ r.api_key = "api_key"
112
+ r.historical = true
113
+
114
+ res = r.to_httparty
115
+ expect(res).to be_a Array
116
+ method, url, data = res
117
+ expect(data.fetch(:body)).to eq "{\"input\":\"input\",\"input_location\":\"remote_url\",\"filename\":\"filename\",\"key\":\"api_key\",\"request_meta_data\":{\"leverage_historical_data\":true}}"
118
+ end
87
119
  end
88
120
  end
89
121
  end; end; end
@@ -21,7 +21,7 @@ module NeverBounce; module API; module Request
21
21
  expect(res).to be_a Array
22
22
  method, url, data = res
23
23
  expect(method).to eq :post
24
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/delete"
24
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/delete"
25
25
  expect(data).to include(:body, :headers)
26
26
  expect(data.fetch(:body)).to eq("{\"job_id\":\"123\",\"key\":\"api_key\"}")
27
27
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -21,7 +21,7 @@ module NeverBounce; module API; module Request
21
21
  expect(res).to be_a Array
22
22
  method, url, data = res
23
23
  expect(method).to eq :get
24
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/download"
24
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/download"
25
25
  expect(data).to include(:body, :headers)
26
26
  expect(data.fetch(:body)).to eq("{\"job_id\":\"123\",\"key\":\"api_key\"}")
27
27
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -34,7 +34,7 @@ module NeverBounce; module API; module Request
34
34
  expect(res).to be_a Array
35
35
  method, url, data = res
36
36
  expect(method).to eq :post
37
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/parse"
37
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/parse"
38
38
  expect(data).to include(:body, :headers)
39
39
  expect(data.fetch(:body)).to eq("{\"job_id\":\"123\",\"key\":\"api_key\"}")
40
40
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -32,7 +32,7 @@ module NeverBounce; module API; module Request
32
32
  expect(res).to be_a Array
33
33
  method, url, data = res
34
34
  expect(method).to eq :get
35
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/results"
35
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/results"
36
36
  expect(data).to include(:body, :headers)
37
37
  expect(data.fetch(:body)).to eq "{\"job_id\":\"123\",\"key\":\"api_key\"}"
38
38
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -30,7 +30,7 @@ module NeverBounce; module API; module Request
30
30
  expect(res).to be_a Array
31
31
  method, url, data = res
32
32
  expect(method).to eq :get
33
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/search"
33
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/search"
34
34
  expect(data).to include(:body, :headers)
35
35
  expect(data.fetch(:body)).to eq "{\"key\":\"api_key\",\"job_id\":\"abc\",\"page\":12,\"items_per_page\":34}"
36
36
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -34,7 +34,7 @@ module NeverBounce; module API; module Request
34
34
  expect(res).to be_a Array
35
35
  method, url, data = res
36
36
  expect(method).to eq :post
37
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/start"
37
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/start"
38
38
  expect(data).to include(:body, :headers)
39
39
  expect(data.fetch(:body)).to eq("{\"job_id\":\"123\",\"key\":\"api_key\"}")
40
40
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -21,7 +21,7 @@ module NeverBounce; module API; module Request
21
21
  expect(res).to be_a Array
22
22
  method, url, data = res
23
23
  expect(method).to eq :get
24
- expect(url).to eq "https://api.neverbounce.com/v4/jobs/status"
24
+ expect(url).to eq "https://api.neverbounce.com/v4.1/jobs/status"
25
25
  expect(data).to include(:body, :headers)
26
26
  expect(data.fetch(:body)).to eq "{\"job_id\":\"123\",\"key\":\"api_key\"}"
27
27
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -27,7 +27,7 @@ module NeverBounce; module API; module Request
27
27
  expect(res).to be_a Array
28
28
  method, url, data = res
29
29
  expect(method).to eq :get
30
- expect(url).to eq "https://api.neverbounce.com/v4/poe/confirm"
30
+ expect(url).to eq "https://api.neverbounce.com/v4.1/poe/confirm"
31
31
  expect(data).to include(:body, :headers)
32
32
  expect(data.fetch(:body)).to eq "{\"email\":\"email\",\"transaction_id\":\"NBTRNS-abcdefg\",\"confirmation_token\":\"abcdefg123456\",\"result\":\"valid\",\"key\":\"api_key\"}"
33
33
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
@@ -15,6 +15,10 @@ module NeverBounce; module API; module Request
15
15
  expect(r.mode_h).to eq({address_info: false, credits_info: false})
16
16
  r = newo(address_info: true, credits_info: true, timeout: 12)
17
17
  expect(r.mode_h).to eq({address_info: true, credits_info: true, timeout: 12})
18
+ r = newo(historical: true)
19
+ expect(r.mode_h).to eq({request_meta_data: {leverage_historical_data: true}})
20
+ r = newo(historical: false)
21
+ expect(r.mode_h).to eq({request_meta_data: {leverage_historical_data: false}})
18
22
  end
19
23
  end
20
24
 
@@ -34,11 +38,33 @@ module NeverBounce; module API; module Request
34
38
  expect(res).to be_a Array
35
39
  method, url, data = res
36
40
  expect(method).to eq :get
37
- expect(url).to eq "https://api.neverbounce.com/v4/single/check"
41
+ expect(url).to eq "https://api.neverbounce.com/v4.1/single/check"
38
42
  expect(data).to include(:body, :headers)
39
43
  expect(data.fetch(:body)).to eq "{\"email\":\"email\",\"key\":\"api_key\",\"address_info\":true,\"credits_info\":true,\"timeout\":12}"
40
44
  expect(data.fetch(:headers)).to include("Content-Type", "User-Agent")
41
45
  end
46
+
47
+ it "allows historical to be disabled" do
48
+ r = newo(address_info: true, credits_info: true, timeout: 12, historical: false)
49
+ r.email = "email"
50
+ r.api_key = "api_key"
51
+
52
+ res = r.to_httparty
53
+ expect(res).to be_a Array
54
+ method, url, data = res
55
+ expect(data.fetch(:body)).to eq "{\"email\":\"email\",\"key\":\"api_key\",\"address_info\":true,\"credits_info\":true,\"timeout\":12,\"request_meta_data\":{\"leverage_historical_data\":false}}"
56
+ end
57
+
58
+ it "allows historical to be explicitly enabled" do
59
+ r = newo(address_info: true, credits_info: true, timeout: 12, historical: true)
60
+ r.email = "email"
61
+ r.api_key = "api_key"
62
+
63
+ res = r.to_httparty
64
+ expect(res).to be_a Array
65
+ method, url, data = res
66
+ expect(data.fetch(:body)).to eq "{\"email\":\"email\",\"key\":\"api_key\",\"address_info\":true,\"credits_info\":true,\"timeout\":12,\"request_meta_data\":{\"leverage_historical_data\":true}}"
67
+ end
42
68
  end
43
69
  end
44
70
  end; end; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neverbounce-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - NeverBounce
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-27 00:00:00.000000000 Z
11
+ date: 2020-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty