rdstation-ruby-client 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +3 -2
- data/lib/rdstation/error.rb +1 -0
- data/lib/rdstation/error/format.rb +8 -0
- data/lib/rdstation/error/formatter.rb +16 -1
- data/lib/rdstation/error_handler.rb +2 -1
- data/lib/rdstation/version.rb +1 -1
- data/spec/lib/rdstation/error/format_spec.rb +17 -0
- data/spec/lib/rdstation/error/formatter_spec.rb +30 -0
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d51df272057d17abe280b0fe23f7a97f9ef2ceb543f823db1ce8b047788d1887
|
4
|
+
data.tar.gz: d59bd8063663bb95df477c672066e4c6655172a193d9b2244bba6b8608a92869
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1451abf2db818f4551575ea88befdb63b6f8f8b1afa3270b96ee50b059f0f69676d6c6104a6e217d58e9c84384527d77e81d257d5a222a1ab2df74e1ed525446
|
7
|
+
data.tar.gz: 06c2620cdf413e945207f7b0bad15bcdb762038b360ef3c9ed5371e2ff06edc4949f97602fc0c3ffc352ff14bf66774234c398b291a5606d34931ab0eded84e9
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 2.4.0
|
2
|
+
|
3
|
+
- Add the TooManyRequests errors in case of rate limit exceeded. See [API request limit](https://developers.rdstation.com/en/request-limit) for more details
|
4
|
+
|
1
5
|
## 2.3.1
|
2
6
|
|
3
7
|
- Fixed a bug when no error is found in the known errors list (issue [#52](https://github.com/ResultadosDigitais/rdstation-ruby-client/issues/52))
|
data/README.md
CHANGED
@@ -93,7 +93,7 @@ RDStation.configure do |config|
|
|
93
93
|
# authorization.access_token_expires_in is the time (in seconds for with the token is valid)
|
94
94
|
# authorization.access_token is the new token
|
95
95
|
# authorization.refresh_token is the existing refresh_token
|
96
|
-
#
|
96
|
+
#
|
97
97
|
# If you are using ActiveRecord, you may want to update the stored access_token, like in the following code:
|
98
98
|
MyStoredAuth.where(refresh_token: authorization.refresh_token).update_all(access_token: authorization.access_token)
|
99
99
|
end
|
@@ -232,7 +232,7 @@ client.fields.create builder.build
|
|
232
232
|
```ruby
|
233
233
|
payload = {} # hash representing the payload
|
234
234
|
client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
|
235
|
-
client.fields.update('FIELD_UUID', payload)
|
235
|
+
client.fields.update('FIELD_UUID', payload)
|
236
236
|
```
|
237
237
|
Or you can use the new `RDStation::Builder::Field`
|
238
238
|
|
@@ -315,6 +315,7 @@ Each endpoint may raise errors accoording to the HTTP response code from RDStati
|
|
315
315
|
- `RDStation::Error::Conflict` (409)
|
316
316
|
- `RDStation::Error::UnsupportedMediaType` (415)
|
317
317
|
- `RDStation::Error::UnprocessableEntity` (422)
|
318
|
+
- `RDStation::Error::TooManyRequests` (429)
|
318
319
|
- `RDStation::Error::InternalServerError` (500)
|
319
320
|
- `RDStation::Error::NotImplemented` (501)
|
320
321
|
- `RDStation::Error::BadGateway` (502)
|
data/lib/rdstation/error.rb
CHANGED
@@ -19,6 +19,7 @@ module RDStation
|
|
19
19
|
class Conflict < Error; end
|
20
20
|
class UnsupportedMediaType < Error; end
|
21
21
|
class UnprocessableEntity < Error; end
|
22
|
+
class TooManyRequests < Error; end
|
22
23
|
class InternalServerError < Error; end
|
23
24
|
class NotImplemented < Error; end
|
24
25
|
class BadGateway < Error; end
|
@@ -8,6 +8,7 @@ module RDStation
|
|
8
8
|
ARRAY_OF_HASHES = 'ARRAY_OF_HASHES'
|
9
9
|
HASH_OF_MULTIPLE_TYPES = 'HASH_OF_MULTIPLE_TYPES'
|
10
10
|
HASH_OF_HASHES = 'HASH_OF_HASHES'
|
11
|
+
SINGLE_HASH = 'SINGLE_HASH'
|
11
12
|
|
12
13
|
def initialize(errors)
|
13
14
|
@errors = errors
|
@@ -15,6 +16,7 @@ module RDStation
|
|
15
16
|
|
16
17
|
def format
|
17
18
|
return FLAT_HASH if flat_hash?
|
19
|
+
return SINGLE_HASH if single_hash?
|
18
20
|
return HASH_OF_ARRAYS if hash_of_arrays?
|
19
21
|
return HASH_OF_HASHES if hash_of_hashes?
|
20
22
|
return HASH_OF_MULTIPLE_TYPES if hash_of_multiple_types?
|
@@ -24,6 +26,12 @@ module RDStation
|
|
24
26
|
|
25
27
|
private
|
26
28
|
|
29
|
+
def single_hash?
|
30
|
+
return unless @errors.is_a?(Hash)
|
31
|
+
|
32
|
+
@errors.key?('error')
|
33
|
+
end
|
34
|
+
|
27
35
|
def flat_hash?
|
28
36
|
return unless @errors.is_a?(Hash)
|
29
37
|
|
@@ -13,6 +13,8 @@ module RDStation
|
|
13
13
|
return @error_response unless @error_response.is_a?(Hash)
|
14
14
|
|
15
15
|
case error_format.format
|
16
|
+
when RDStation::Error::Format::SINGLE_HASH
|
17
|
+
return from_single_hash
|
16
18
|
when RDStation::Error::Format::FLAT_HASH
|
17
19
|
return from_flat_hash
|
18
20
|
when RDStation::Error::Format::HASH_OF_ARRAYS
|
@@ -26,6 +28,19 @@ module RDStation
|
|
26
28
|
errors
|
27
29
|
end
|
28
30
|
|
31
|
+
def from_single_hash
|
32
|
+
error_hash = @error_response.dup
|
33
|
+
error_message = error_hash.delete('error')
|
34
|
+
|
35
|
+
[
|
36
|
+
{
|
37
|
+
'error_type' => 'TOO_MANY_REQUESTS',
|
38
|
+
'error_message' => error_message,
|
39
|
+
'details' => error_hash
|
40
|
+
}
|
41
|
+
]
|
42
|
+
end
|
43
|
+
|
29
44
|
def from_flat_hash
|
30
45
|
[errors]
|
31
46
|
end
|
@@ -60,7 +75,7 @@ module RDStation
|
|
60
75
|
end
|
61
76
|
|
62
77
|
def errors
|
63
|
-
@errors ||= @error_response
|
78
|
+
@errors ||= @error_response.fetch('errors', @error_response)
|
64
79
|
end
|
65
80
|
|
66
81
|
private
|
@@ -32,6 +32,7 @@ module RDStation
|
|
32
32
|
when 409 then RDStation::Error::Conflict
|
33
33
|
when 415 then RDStation::Error::UnsupportedMediaType
|
34
34
|
when 422 then RDStation::Error::UnprocessableEntity
|
35
|
+
when 429 then RDStation::Error::TooManyRequests
|
35
36
|
when 500 then RDStation::Error::InternalServerError
|
36
37
|
when 501 then RDStation::Error::NotImplemented
|
37
38
|
when 502 then RDStation::Error::BadGateway
|
@@ -57,7 +58,7 @@ module RDStation
|
|
57
58
|
end
|
58
59
|
|
59
60
|
def additional_error_attributes
|
60
|
-
{
|
61
|
+
attrs = {
|
61
62
|
'headers' => response.headers,
|
62
63
|
'body' => JSON.parse(response.body),
|
63
64
|
'http_status' => response.code,
|
data/lib/rdstation/version.rb
CHANGED
@@ -98,5 +98,22 @@ RSpec.describe RDStation::Error::Format do
|
|
98
98
|
expect(result).to eq(RDStation::Error::Format::HASH_OF_HASHES)
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
context 'when receives a single hash with error' do
|
103
|
+
let(:errors) do
|
104
|
+
{
|
105
|
+
'error' => "'lead_limiter' rate limit exceeded for 86400 second(s) period for key ...",
|
106
|
+
'max' => 24,
|
107
|
+
'usage' => 55,
|
108
|
+
'remaining_time' => 20745,
|
109
|
+
}
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'returns the SINGLE_HASH format' do
|
113
|
+
result = error_format.format
|
114
|
+
expect(result).to eq(RDStation::Error::Format::SINGLE_HASH)
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
101
118
|
end
|
102
119
|
end
|
@@ -215,5 +215,35 @@ RSpec.describe RDStation::Error::Formatter do
|
|
215
215
|
expect(result).to eq(expected_result)
|
216
216
|
end
|
217
217
|
end
|
218
|
+
|
219
|
+
context 'when receives a single hash of errors' do
|
220
|
+
let(:error_format) { instance_double(RDStation::Error::Format, format: RDStation::Error::Format::SINGLE_HASH) }
|
221
|
+
|
222
|
+
let(:error_response) do
|
223
|
+
{
|
224
|
+
'error' => "'lead_limiter' rate limit exceeded for 86400 second(s) period for key",
|
225
|
+
'max' => 24,
|
226
|
+
'usage' => 55,
|
227
|
+
'remaining_time' => 20745
|
228
|
+
}
|
229
|
+
end
|
230
|
+
|
231
|
+
let(:error_formatter) { described_class.new(error_response) }
|
232
|
+
|
233
|
+
let(:expected_result) do
|
234
|
+
[
|
235
|
+
{
|
236
|
+
'error_type' => 'TOO_MANY_REQUESTS',
|
237
|
+
'error_message' => "'lead_limiter' rate limit exceeded for 86400 second(s) period for key",
|
238
|
+
'details' => { 'max' => 24, 'usage' => 55, 'remaining_time' => 20745 }
|
239
|
+
}
|
240
|
+
]
|
241
|
+
end
|
242
|
+
|
243
|
+
it 'returns an array of errors' do
|
244
|
+
result = error_formatter.to_array
|
245
|
+
expect(result).to eq(expected_result)
|
246
|
+
end
|
247
|
+
end
|
218
248
|
end
|
219
249
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdstation-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paulo L F Casaretto
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -190,7 +190,7 @@ homepage: http://resultadosdigitais.com.br
|
|
190
190
|
licenses:
|
191
191
|
- MIT
|
192
192
|
metadata: {}
|
193
|
-
post_install_message:
|
193
|
+
post_install_message:
|
194
194
|
rdoc_options: []
|
195
195
|
require_paths:
|
196
196
|
- lib
|
@@ -205,9 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
205
|
- !ruby/object:Gem::Version
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
|
-
|
209
|
-
|
210
|
-
signing_key:
|
208
|
+
rubygems_version: 3.0.8
|
209
|
+
signing_key:
|
211
210
|
specification_version: 4
|
212
211
|
summary: Ruby API wrapper for RD Station
|
213
212
|
test_files:
|