faraday-throttler-rx 0.0.4 → 0.0.5

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
  SHA256:
3
- metadata.gz: a90bfffb43e9cfb65219fe3325686b7c3d8e4cf410bcd91802e9a84222306de0
4
- data.tar.gz: bfd4da59b12e9b86fdcc3706eb669817dab02b1054aba2c08749c6997eda8d95
3
+ metadata.gz: 738f110db26c21d7dc990c80ba45bc3fc0e14c29969acc29966fefaa43c6fce9
4
+ data.tar.gz: 70038994c2d843986096408fdad77d7d97890abe5a8c4dd33f3c3fddd2d309d8
5
5
  SHA512:
6
- metadata.gz: 703f490b28de0dba22faa60e0de17aaf2a513b610272f8f939973950f01e2e95a5a21abafa9f9421c95e1555a3e2f18d3d74b1448790f9e67bae4ff324620946
7
- data.tar.gz: 3b09c9b0fdaef98b68bf28451d626dd6903673cc863e327410067fbfa3702e8e4559f479af5b347092daa28f5be7550b469828e87b7423a9509cbf409eb88aca
6
+ metadata.gz: 660ed0f9ccd96314b02e452a6978dcf9f5315fb028df9f10b9282e510b37452526884a1375d78066631827c7beebf507c5eb622f6c74df32e8d2156623d276c2
7
+ data.tar.gz: 9b27963794c77477b65f35d511cee4784f6f0e80cb4e314d4432fe8fa7fee210a25926199c04d6863426eb244d2c4884315739b16a6af79576408858abdc608b
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
@@ -97,9 +97,7 @@ module FaradayThrottler
97
97
  def fetch_and_check_rate_limit(request_env, cache_key, start)
98
98
  app.call(request_env).on_complete do |response_env|
99
99
  if rate_limit_response_checker.call(response_env)
100
- sleep wait
101
- logger.debug logline(cache_key, "C.1.1. Rate limited on backend. Took #{Time.now - start}")
102
- fetch_and_check_rate_limit(request_env, cache_key, start)
100
+ wait_and_replay_call(request_env, cache_key, start)
103
101
  else
104
102
  # Everything alright
105
103
  logger.debug logline(cache_key, "C.1.2. Everything alright, request finished. Took #{Time.now - start}")
@@ -107,6 +105,19 @@ module FaradayThrottler
107
105
  release_request_stick(cache_key)
108
106
  end
109
107
  end
108
+ rescue Faraday::ClientError => e
109
+ if rate_limit_response_checker.call(e.response)
110
+ wait_and_replay_call(request_env, cache_key, start)
111
+ else
112
+ raise e
113
+ end
114
+ end
115
+
116
+ def wait_and_replay_call(request_env, cache_key, start)
117
+ # Replay request call
118
+ sleep wait
119
+ logger.debug logline(cache_key, "C.1.1. Rate limited on backend. Took #{Time.now - start}")
120
+ fetch_and_check_rate_limit(request_env, cache_key, start)
110
121
  end
111
122
 
112
123
  def validate_dep!(dep, dep_name, *methods)
@@ -131,7 +142,7 @@ module FaradayThrottler
131
142
  end
132
143
 
133
144
  def request_stick?(cache_key)
134
- counter = cache.get(cache_key, 0).to_i
145
+ counter = cache.get(cache_key).to_i
135
146
  p "#{counter}, #{cache_key}"
136
147
  if counter < rate
137
148
  cache.set(cache_key, counter + 1)
@@ -142,7 +153,7 @@ module FaradayThrottler
142
153
  end
143
154
 
144
155
  def release_request_stick(cache_key)
145
- counter = cache.get(cache_key, 0).to_i
156
+ counter = cache.get(cache_key).to_i
146
157
  cache.set(cache_key, counter - 1) if counter > 0
147
158
  end
148
159
 
@@ -1,3 +1,3 @@
1
1
  module FaradayThrottler
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-throttler-rx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris Koumondji
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-01 00:00:00.000000000 Z
11
+ date: 2022-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday