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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9ae17e6b57d6de5ab529b3455a9ad64863ac6b8bf73dfba7a6a3b1c3fa701203
4
- data.tar.gz: 70e6a8a00cde9742a5792c5385c913edb161cb59ffe38123424df27421f9c2ef
3
+ metadata.gz: 4aa40b5348d1b14d3f593091349886b8e3afa9e7ff0e5dcd20acdd9c78a71490
4
+ data.tar.gz: f77541b45e1e67d89bdd1acadb8bcee1b3b71fe3dbd32bb4422b0fadfcf2c8a3
5
5
  SHA512:
6
- metadata.gz: e7191d97eb6efbe09c7bb27750d4d6c254a7a03ab0348576b6b133e3c6ed175a8ea90b7356a00275cf95406129450866730bdb25f61baf046dd27c0afd2e7fec
7
- data.tar.gz: e86a222c7a0cf80de61f3ed5c4623c378610461d20127cd3e56d058067821f042db16089f8b8b6cb06f0b3f2f8af19d56f2b993775db14669a127823e8f489db
6
+ metadata.gz: ec2174ca32cda24c62da3e0c297a232bdc90f498a9e02a62e6ab48f8f2317b91b8adcf6d51b6bcb5f61e36f5643d810cc776b13947a355a8d9870ede11b10590
7
+ data.tar.gz: b83756b0bbeb5ee418d7a40bcda73dcff3f68844dcff3bf2852dce8afe2fe20d8fb5dfbf0e097b9afcbce88e7a6094fac547a51fe9fea6393b4caf01011c7776
data/Gemfile CHANGED
@@ -5,3 +5,5 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
5
5
  gemspec
6
6
 
7
7
  gem 'redis'
8
+ gem 'simplecov', require: false, group: :test
9
+ gem 'timecop', require: false, group: :test
data/Gemfile.lock CHANGED
@@ -1,13 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rlimiter (1.0.1)
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
- limit_breached = Rlimiter.limit(@limit_key, @limit_count, DEFAULT_LIMIT_DURATION)
69
- unless limit_breached
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,
@@ -10,7 +10,7 @@ module Rlimiter
10
10
  # Stub
11
11
  end
12
12
 
13
- def current_count
13
+ def current_count(key)
14
14
  # Stub
15
15
  end
16
16
 
@@ -30,7 +30,7 @@ module Rlimiter
30
30
  # @return [Redis]
31
31
  #
32
32
  def initialize(params)
33
- @redis = Redis.new(params.deep_symbolize_keys)
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) <= count
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.to_f * 1000 - start_time) / 1000).to_i
94
+ ((Time.now.getutc.to_time.to_i * 1000 - start_time) / 1000).to_i
95
95
  end
96
96
 
97
97
  def start_time
@@ -1,3 +1,5 @@
1
1
  module Rlimiter
2
- VERSION = '1.0.2'.freeze
2
+ #:nocov:
3
+ VERSION = '1.0.3'.freeze
4
+ #:nocov:
3
5
  end
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
- attr_accessor :client
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.2
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: