rlimiter 1.0.2 → 1.0.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/Gemfile +2 -0
- data/Gemfile.lock +12 -2
- data/README.md +2 -2
- data/lib/rlimiter/client.rb +1 -1
- data/lib/rlimiter/redis_client.rb +4 -4
- data/lib/rlimiter/version.rb +3 -1
- data/lib/rlimiter.rb +1 -1
- data/rlimiter.gemspec +1 -1
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aa40b5348d1b14d3f593091349886b8e3afa9e7ff0e5dcd20acdd9c78a71490
|
4
|
+
data.tar.gz: f77541b45e1e67d89bdd1acadb8bcee1b3b71fe3dbd32bb4422b0fadfcf2c8a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec2174ca32cda24c62da3e0c297a232bdc90f498a9e02a62e6ab48f8f2317b91b8adcf6d51b6bcb5f61e36f5643d810cc776b13947a355a8d9870ede11b10590
|
7
|
+
data.tar.gz: b83756b0bbeb5ee418d7a40bcda73dcff3f68844dcff3bf2852dce8afe2fe20d8fb5dfbf0e097b9afcbce88e7a6094fac547a51fe9fea6393b4caf01011c7776
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rlimiter (1.0.
|
5
|
-
redis (~> 4.0.2)
|
4
|
+
rlimiter (1.0.3)
|
5
|
+
redis (~> 4.0, >= 4.0.2)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
diff-lcs (1.3)
|
11
|
+
docile (1.3.1)
|
12
|
+
json (2.1.0)
|
11
13
|
rake (10.5.0)
|
12
14
|
redis (4.0.2)
|
13
15
|
rspec (3.8.0)
|
@@ -23,6 +25,12 @@ GEM
|
|
23
25
|
diff-lcs (>= 1.2.0, < 2.0)
|
24
26
|
rspec-support (~> 3.8.0)
|
25
27
|
rspec-support (3.8.0)
|
28
|
+
simplecov (0.16.1)
|
29
|
+
docile (~> 1.1)
|
30
|
+
json (>= 1.8, < 3)
|
31
|
+
simplecov-html (~> 0.10.0)
|
32
|
+
simplecov-html (0.10.2)
|
33
|
+
timecop (0.9.1)
|
26
34
|
|
27
35
|
PLATFORMS
|
28
36
|
ruby
|
@@ -33,6 +41,8 @@ DEPENDENCIES
|
|
33
41
|
redis
|
34
42
|
rlimiter!
|
35
43
|
rspec (~> 3.0)
|
44
|
+
simplecov
|
45
|
+
timecop
|
36
46
|
|
37
47
|
BUNDLED WITH
|
38
48
|
1.16.4
|
data/README.md
CHANGED
@@ -65,8 +65,8 @@ A more complicated approach could also be implemented :
|
|
65
65
|
@phone_number = '2947126943'
|
66
66
|
@limit_key = generate_limit_key
|
67
67
|
@limit_count = fetch_limit_count
|
68
|
-
|
69
|
-
|
68
|
+
limit_not_breached = Rlimiter.limit(@limit_key, @limit_count, DEFAULT_LIMIT_DURATION)
|
69
|
+
if limit_not_breached
|
70
70
|
{
|
71
71
|
:status_code => 200,
|
72
72
|
:otp_dispatch_status => send_mobile_otp,
|
data/lib/rlimiter/client.rb
CHANGED
@@ -30,7 +30,7 @@ module Rlimiter
|
|
30
30
|
# @return [Redis]
|
31
31
|
#
|
32
32
|
def initialize(params)
|
33
|
-
@redis = Redis.new(params
|
33
|
+
@redis = Redis.new(params)
|
34
34
|
end
|
35
35
|
|
36
36
|
# Registers a hit corresponding to the key specified, requires the max hit count and the duration to be passed.
|
@@ -76,8 +76,8 @@ module Rlimiter
|
|
76
76
|
def next_in(key, count, duration)
|
77
77
|
@key = key
|
78
78
|
@duration = duration
|
79
|
-
return 0 if current_count(key)
|
80
|
-
@duration - elapsed
|
79
|
+
return 0 if current_count(key) < count
|
80
|
+
[@duration - elapsed, 0].max
|
81
81
|
end
|
82
82
|
|
83
83
|
private
|
@@ -91,7 +91,7 @@ module Rlimiter
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def elapsed
|
94
|
-
((Time.now.getutc.
|
94
|
+
((Time.now.getutc.to_time.to_i * 1000 - start_time) / 1000).to_i
|
95
95
|
end
|
96
96
|
|
97
97
|
def start_time
|
data/lib/rlimiter/version.rb
CHANGED
data/lib/rlimiter.rb
CHANGED
@@ -13,7 +13,7 @@ module Rlimiter
|
|
13
13
|
|
14
14
|
# At the moment only redis client is supported.
|
15
15
|
CLIENTS = %w[redis].freeze
|
16
|
-
|
16
|
+
attr_reader :client
|
17
17
|
|
18
18
|
# One time initializes the client which is to be used throughout the application.
|
19
19
|
# The value of params variable will change depending on the storage client to be initialized.
|
data/rlimiter.gemspec
CHANGED
@@ -33,5 +33,5 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
34
34
|
spec.add_development_dependency 'rake', '~> 10.0'
|
35
35
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
|
-
spec.add_runtime_dependency 'redis', '~> 4.0.2'
|
36
|
+
spec.add_runtime_dependency 'redis', '~> 4.0', '>= 4.0.2'
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rlimiter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sidharth Patro
|
@@ -57,6 +57,9 @@ dependencies:
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
- - ">="
|
60
63
|
- !ruby/object:Gem::Version
|
61
64
|
version: 4.0.2
|
62
65
|
type: :runtime
|
@@ -64,6 +67,9 @@ dependencies:
|
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
66
69
|
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '4.0'
|
72
|
+
- - ">="
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: 4.0.2
|
69
75
|
description:
|