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 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