ratelimit-ruby 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|