ratelimit-ruby 0.1.7 → 0.1.8
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/VERSION +1 -1
- data/lib/ratelimit/limit_definition.rb +5 -0
- data/lib/ratelimit-ruby.rb +20 -18
- data/ratelimit-ruby.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca815aecc034e3b21b4806cb72d97ec12d042398
|
4
|
+
data.tar.gz: 2adb83319878f5d4d146b4c1e2e3b9b9d8eb10ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a31b7235915a193b3a6de6cf3b3d3bedc3976692ccae926a5944e7bbafc21bfa71ec9910836f32ac7d0714deec5c8b3e759af8991c6a8fa05fe7e86277485851
|
7
|
+
data.tar.gz: 39cff153c06dba23d6569471a5b6a87d75924ddd5366d5336ad15d7563e2d9bebaf44d9424f587f3076300e749a0b566c3a15ff0b4f80e3beea5888072f559b4
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.8
|
@@ -10,8 +10,13 @@ module RateLimit
|
|
10
10
|
INFINITE="INFINITE".freeze
|
11
11
|
POLICIES = [SECONDLY, MINUTELY, MINUTELY_ROLLING, HOURLY, HOURLY_ROLLING, DAILY, DAILY_ROLLING, MINUTELY, INFINITE]
|
12
12
|
|
13
|
+
L4_BEST_EFFORT = "L4_BEST_EFFORT"
|
14
|
+
L5_BOMBPROOF = "L5_BOMBPROOF"
|
15
|
+
SAFETY_LEVELS = [L4_BEST_EFFORT, L5_BOMBPROOF]
|
16
|
+
|
13
17
|
class LimitDefinition
|
14
18
|
attr_reader :limit, :group, :policy, :returnable, :burst
|
19
|
+
attr_accessor :safety_level
|
15
20
|
|
16
21
|
def initialize(group, limit, policy, returnable, burst)
|
17
22
|
raise "Invalid Policy" unless POLICIES.include? policy
|
data/lib/ratelimit-ruby.rb
CHANGED
@@ -57,6 +57,25 @@ module RateLimit
|
|
57
57
|
upsert(LimitDefinition.new(group, limit, policy, false, burst || limit), :put)
|
58
58
|
end
|
59
59
|
|
60
|
+
def upsert(limit_definition, method)
|
61
|
+
to_send = { limit: limit_definition.limit,
|
62
|
+
group: limit_definition.group,
|
63
|
+
burst: limit_definition.burst,
|
64
|
+
policyName: limit_definition.policy,
|
65
|
+
safetyLevel: limit_definition.safety_level,
|
66
|
+
returnable: limit_definition.returnable }.to_json
|
67
|
+
result= @conn.send(method, '/api/v1/limits', to_send)
|
68
|
+
if !result.success?
|
69
|
+
if method == :put
|
70
|
+
handle_failure(result)
|
71
|
+
elsif result.status != 409 # conflicts routinely expected on create
|
72
|
+
handle_failure(result)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
rescue => e
|
76
|
+
handle_error(e)
|
77
|
+
end
|
78
|
+
|
60
79
|
def pass?(group)
|
61
80
|
result = acquire(group, 1)
|
62
81
|
return result.passed
|
@@ -107,6 +126,7 @@ module RateLimit
|
|
107
126
|
def return(limit_result)
|
108
127
|
result = @conn.post '/api/v1/limitreturn',
|
109
128
|
{ enforcedGroup: limit_result.enforcedGroup,
|
129
|
+
expiresAt: limit_result.expiresAt,
|
110
130
|
amount: limit_result.amount }.to_json
|
111
131
|
handle_failure(result) unless result.success?
|
112
132
|
rescue => e
|
@@ -184,24 +204,6 @@ module RateLimit
|
|
184
204
|
int_value / 4294967294.0
|
185
205
|
end
|
186
206
|
|
187
|
-
def upsert(limit_definition, method)
|
188
|
-
to_send = { limit: limit_definition.limit,
|
189
|
-
group: limit_definition.group,
|
190
|
-
burst: limit_definition.burst,
|
191
|
-
policyName: limit_definition.policy,
|
192
|
-
returnable: limit_definition.returnable }.to_json
|
193
|
-
result= @conn.send(method, '/api/v1/limits', to_send)
|
194
|
-
if !result.success?
|
195
|
-
if method == :put
|
196
|
-
handle_failure(result)
|
197
|
-
elsif result.status != 409 # conflicts routinely expected on create
|
198
|
-
handle_failure(result)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
rescue => e
|
202
|
-
handle_error(e)
|
203
|
-
end
|
204
|
-
|
205
207
|
def handle_failure(result)
|
206
208
|
case @on_error
|
207
209
|
when :log_and_pass
|
data/ratelimit-ruby.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: ratelimit-ruby 0.1.
|
5
|
+
# stub: ratelimit-ruby 0.1.8 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "ratelimit-ruby"
|
9
|
-
s.version = "0.1.
|
9
|
+
s.version = "0.1.8"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Jeff Dwyer"]
|
14
|
-
s.date = "2017-01-
|
14
|
+
s.date = "2017-01-30"
|
15
15
|
s.description = "rate limit your ruby"
|
16
16
|
s.email = "jdwyah@gmail.com"
|
17
17
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ratelimit-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Dwyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|