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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2ff9d738826e547d7d64b087858282fe5b9a4d3
4
- data.tar.gz: 39bbd78258a2805bec76eb852077f36e6ad3081b
3
+ metadata.gz: ca815aecc034e3b21b4806cb72d97ec12d042398
4
+ data.tar.gz: 2adb83319878f5d4d146b4c1e2e3b9b9d8eb10ef
5
5
  SHA512:
6
- metadata.gz: 6e2a19885fcd3952411fc44a80efbef3ffb888d013530c7dfd23e245a69f8a1dcfeb27d8259dfe8f4a0fd48e965594b49efc0a403d3d9530c8497607a872de5c
7
- data.tar.gz: 4da6feb04c65f31a6ae53fb3f14ebc8f12c7bf0ea57b7b15fe972c39c4afaa0184b429c2df7264909d75525dc0feec9d634ecfe14a4c4a52ad2f0fd2ec8cb46c
6
+ metadata.gz: a31b7235915a193b3a6de6cf3b3d3bedc3976692ccae926a5944e7bbafc21bfa71ec9910836f32ac7d0714deec5c8b3e759af8991c6a8fa05fe7e86277485851
7
+ data.tar.gz: 39cff153c06dba23d6569471a5b6a87d75924ddd5366d5336ad15d7563e2d9bebaf44d9424f587f3076300e749a0b566c3a15ff0b4f80e3beea5888072f559b4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.7
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
@@ -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
@@ -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.7 ruby lib
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.7"
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-26"
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.7
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-26 00:00:00.000000000 Z
11
+ date: 2017-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday