fulfil-io 0.6.0 → 0.7.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 +4 -4
- data/README.md +14 -4
- data/lib/fulfil/client.rb +11 -0
- data/lib/fulfil/configuration.rb +45 -0
- data/lib/fulfil/version.rb +1 -1
- data/lib/fulfil-io.rb +13 -0
- data/lib/fulfil.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63d67b77df97810e72d56c2cd60a859004ee97de438bd11332cb643c8b8d0466
|
4
|
+
data.tar.gz: 82708a84ce96c3254236ab4ce7e05a9d64477dc12b94ebb47d758ad267cc818e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 609049e9604f06602526be98da080e33bdbc1a1d5a46e4d338cc5a86cf5f9df9584963b6462e30da5d493b354bb73ca7c489d1c9229b37230ef7654af821cc43
|
7
|
+
data.tar.gz: f27513ccae674a68a294e12aacecf82c92a2caa6d65077a6abc7497c41703b7b689a4cb2a1b421a9b65c95584243d5a9d95b2f33b11571ec76eba009005cce13
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ A Ruby library for the [Fulfil.io](https://fulfil.io) API.
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'fulfil-io'
|
12
|
+
gem 'fulfil-io'
|
13
13
|
```
|
14
14
|
|
15
15
|
And then execute:
|
@@ -37,8 +37,6 @@ if oauth doesn't work, returning an Unauthorized error, to use the
|
|
37
37
|
`FULFIL_API_KEY`, the `FULFIL_OAUTH_TOKEN` shouldn't be specified.
|
38
38
|
|
39
39
|
```ruby
|
40
|
-
require 'fulfil' # this is necessary only in case of running without bundler
|
41
|
-
|
42
40
|
fulfil = Fulfil::Client.new # or, to enable request debugging, Fulfil::Client.new(debug: true)
|
43
41
|
|
44
42
|
sale_model = Fulfil::Model.new(
|
@@ -47,7 +45,7 @@ sale_model = Fulfil::Model.new(
|
|
47
45
|
)
|
48
46
|
|
49
47
|
sales = sale_model.search(
|
50
|
-
domain: [['id', '=',
|
48
|
+
domain: [['id', '=', 10]],
|
51
49
|
fields: ['id', 'rec_name', 'lines']
|
52
50
|
)
|
53
51
|
|
@@ -147,6 +145,18 @@ $ Fulfil.rate_limit.limit
|
|
147
145
|
$ Fulfil.rate_limit.resets_at
|
148
146
|
=> #<DateTime: 2022-01-21T16:36:01-04:00 />
|
149
147
|
```
|
148
|
+
|
149
|
+
Automatic retries are supported whenever the rate limit is reached. However, it's not enabled by default. To enable it, set the `retry_on_rate_limit` to `true`. By default, the request will be retried in 1 second.
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
# config/initializers/fulfil.rb
|
153
|
+
|
154
|
+
Fulfil.configure do |config|
|
155
|
+
config.retry_on_rate_limit = true # Defaults to false
|
156
|
+
config.retry_on_rate_limit_wait = 0.25 # Defaults to 1 (second)
|
157
|
+
end
|
158
|
+
```
|
159
|
+
|
150
160
|
## Development
|
151
161
|
|
152
162
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
data/lib/fulfil/client.rb
CHANGED
@@ -164,6 +164,13 @@ module Fulfil
|
|
164
164
|
rescue HTTP::ResponseError => e
|
165
165
|
raise ResponseError, "Can't process response: #{e}"
|
166
166
|
[]
|
167
|
+
# If configured, the client will wait whenever the `RateLimitExceeded` exception
|
168
|
+
# is raised. Check `Fulfil::Configuration` for more details.
|
169
|
+
rescue RateLimitExceeded => e
|
170
|
+
raise e unless config.retry_on_rate_limit?
|
171
|
+
|
172
|
+
sleep config.retry_on_rate_limit_wait
|
173
|
+
retry
|
167
174
|
end
|
168
175
|
|
169
176
|
def client
|
@@ -172,5 +179,9 @@ module Fulfil
|
|
172
179
|
client = client.headers(@headers)
|
173
180
|
client
|
174
181
|
end
|
182
|
+
|
183
|
+
def config
|
184
|
+
Fulfil.config
|
185
|
+
end
|
175
186
|
end
|
176
187
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Fulfil
|
4
|
+
# The `Fulfil::Configuration` contains the available configuration options
|
5
|
+
# for the `Fulfil` gem.
|
6
|
+
class Configuration
|
7
|
+
# Allow the `Fulfil::Client` to automatically retry when the rate limit is hit.
|
8
|
+
# By default, the `Fulfil::Client` will wait 1 second before retrying again.
|
9
|
+
attr_accessor :retry_on_rate_limit
|
10
|
+
attr_accessor :retry_on_rate_limit_wait
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@retry_on_rate_limit = false
|
14
|
+
@retry_on_rate_limit_wait = 1
|
15
|
+
end
|
16
|
+
|
17
|
+
def retry_on_rate_limit?
|
18
|
+
@retry_on_rate_limit
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns Fulfil's configuration.
|
23
|
+
# @return [Fulfil::Configuration] Fulfil's configuration
|
24
|
+
def self.config
|
25
|
+
@config ||= Configuration.new
|
26
|
+
end
|
27
|
+
|
28
|
+
# Allows setting a new configuration for Fulfil.
|
29
|
+
# @return [Fulfil::Configuration] Fulfil's new configuration
|
30
|
+
def self.config=(configuration)
|
31
|
+
@config = configuration
|
32
|
+
end
|
33
|
+
|
34
|
+
# Allows modifying Fulfil's configuration.
|
35
|
+
#
|
36
|
+
# Example usage:
|
37
|
+
#
|
38
|
+
# Fulfil.configure do |config|
|
39
|
+
# config.api_key = "..."
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
def self.configure
|
43
|
+
yield(config)
|
44
|
+
end
|
45
|
+
end
|
data/lib/fulfil/version.rb
CHANGED
data/lib/fulfil-io.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# By convention, Bundler will attempt to load the `fulfil/io.rb` or `fulfil-io.rb` file.
|
4
|
+
# See https://guides.rubygems.org/name-your-gem/
|
5
|
+
#
|
6
|
+
# Due to this convention, the developer using this gem will need to manually
|
7
|
+
# require fulfil in the Gemfile or anywhere else in their application.
|
8
|
+
#
|
9
|
+
# To make it a little bit more convenient, we've added the `fulfil-io.rb` file
|
10
|
+
# that is loaded by default by Bundler and it's only job is to include all of
|
11
|
+
# the other gem files.
|
12
|
+
|
13
|
+
require 'fulfil'
|
data/lib/fulfil.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fulfil-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: http
|
@@ -149,8 +149,10 @@ files:
|
|
149
149
|
- LICENSE.txt
|
150
150
|
- README.md
|
151
151
|
- Rakefile
|
152
|
+
- lib/fulfil-io.rb
|
152
153
|
- lib/fulfil.rb
|
153
154
|
- lib/fulfil/client.rb
|
155
|
+
- lib/fulfil/configuration.rb
|
154
156
|
- lib/fulfil/error.rb
|
155
157
|
- lib/fulfil/interactive_report.rb
|
156
158
|
- lib/fulfil/model.rb
|
@@ -179,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
181
|
- !ruby/object:Gem::Version
|
180
182
|
version: '0'
|
181
183
|
requirements: []
|
182
|
-
rubygems_version: 3.3.
|
184
|
+
rubygems_version: 3.3.12
|
183
185
|
signing_key:
|
184
186
|
specification_version: 4
|
185
187
|
summary: Interact with the Fulfil.io API
|