prorate 0.7.1 → 0.7.3
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/lib/prorate/rate_limit.lua +3 -2
- data/lib/prorate/throttle.rb +2 -2
- data/lib/prorate/version.rb +1 -1
- data/prorate.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8756bab3df013de9ef7a962f66827fdf1e14a1c8415e226820dfb252ccc91c9a
|
4
|
+
data.tar.gz: f25dd4668ce05034652a596bfcc713bd8bb2bdeaf95b131d4c70527f9f2656f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c49fe55ba5c947742ca46246da145b18603f4417fbfae59ea2432df4670c6a46973ae7f307e1449d432dc61106226bcd214b008beac2bc2035da8c38f06bf34
|
7
|
+
data.tar.gz: 5f65de699f025029b9923e6b93f82cb040f83b2a3d31d888e6d74763c7e50ba043f5e588ee57cc577baf7d84e3feafa282883f425d3cf97b70c3d886e91d295e
|
data/lib/prorate/rate_limit.lua
CHANGED
@@ -31,7 +31,8 @@ local key_lifetime = math.ceil(max_bucket_capacity / leak_rate)
|
|
31
31
|
|
32
32
|
local blocked_until = redis.call("GET", block_key)
|
33
33
|
if blocked_until then
|
34
|
-
|
34
|
+
-- see https://redis.io/docs/manual/programmability/lua-api/ : floats should be returned as strings or they will be cast into integers
|
35
|
+
return {(tostring(tonumber(blocked_until) - now)), -1}
|
35
36
|
end
|
36
37
|
|
37
38
|
-- get current bucket level. The throttle key might not exist yet in which
|
@@ -49,7 +50,7 @@ if (new_bucket_level + n_tokens) <= max_bucket_capacity then
|
|
49
50
|
retval = {0, math.ceil(new_bucket_level)}
|
50
51
|
else
|
51
52
|
redis.call("SETEX", block_key, block_duration, now + block_duration)
|
52
|
-
retval = {block_duration,
|
53
|
+
retval = {tostring(block_duration), -1}
|
53
54
|
end
|
54
55
|
|
55
56
|
-- Save the new bucket level
|
data/lib/prorate/throttle.rb
CHANGED
@@ -95,9 +95,9 @@ module Prorate
|
|
95
95
|
block_for: @block_for,
|
96
96
|
n_tokens: n_tokens)
|
97
97
|
|
98
|
-
if
|
98
|
+
if bucket_level == -1
|
99
99
|
@logger.warn do
|
100
|
-
"Throttle %s exceeded limit of %d in %d seconds and is blocked for the next %
|
100
|
+
"Throttle %s exceeded limit of %d in %d seconds and is blocked for the next %s seconds" % [@name, @limit, @period, remaining_block_time]
|
101
101
|
end
|
102
102
|
raise ::Prorate::Throttled.new(@name, remaining_block_time)
|
103
103
|
end
|
data/lib/prorate/version.rb
CHANGED
data/prorate.gemspec
CHANGED
@@ -34,5 +34,5 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_development_dependency "rspec", "~> 3.0"
|
35
35
|
spec.add_development_dependency 'wetransfer_style', '0.6.5'
|
36
36
|
spec.add_development_dependency 'yard', '~> 0.9'
|
37
|
-
spec.add_development_dependency 'pry', '~> 0.
|
37
|
+
spec.add_development_dependency 'pry', '~> 0.14.2'
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prorate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julik Tarkhanov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.14.2
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.14.2
|
125
125
|
description: Can be used to implement all kinds of throttles
|
126
126
|
email:
|
127
127
|
- me@julik.nl
|
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: '0'
|
175
175
|
requirements: []
|
176
|
-
rubygems_version: 3.0.
|
176
|
+
rubygems_version: 3.0.3.1
|
177
177
|
signing_key:
|
178
178
|
specification_version: 4
|
179
179
|
summary: Time-restricted rate limiter using Redis
|