ruby_rate_limiter 2.0.7 → 2.0.9

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: 3fd12192ef4cfbc052b8ad9659fd4c776166f0fde1ed6402116d59563d114090
4
- data.tar.gz: d1d5091f46e70479d1445bd7a0f3af4153446d32d73647284324e52e1aee99d2
3
+ metadata.gz: 79a5d1b8a3f50d3b30ef8a3915261f8eeecc12cb42cc87cebf308299a39453e3
4
+ data.tar.gz: 21b3689378e4d623e53f527271df257d32f4d7e049c83dee4ee2da5a38524437
5
5
  SHA512:
6
- metadata.gz: fba29f96c050828cb9dfd4f1dc72d52d5a2dc5fa639f474bdada555f4d8729dd11e3c334f11abe17d48a5845399b9b1edde6f9e44a4f3dc6aac018c1ac5ee55c
7
- data.tar.gz: 367b070be559400e5fcf9eb1f6a859caa402f3972f4ebfda4ae75e092a7425b54fc4885cf4bf332e4f292e2a6586224187afb537f2276e0d476965e4032a8c56
6
+ metadata.gz: cf15d23cd91b3f09fd4efdc3729d8aa9fd992851ece0c728444ae36927df349a0235f923348e6360859a84965b25cd23632d011a12383c45c604a8dc4a2d3f57
7
+ data.tar.gz: b5b7895627a9ae8b30e981932f1e3266b5ccc8ea0c3b3b88728d5be10b73033baf39af7e281953469e282c231519898feeda91ece31b1b7c422d9d5a3372f134
@@ -1,12 +1,12 @@
1
1
  # lib/ruby_rate_limiter/token_bucket.rb
2
2
  require 'forwardable'
3
+ require 'logger'
3
4
  require_relative 'storage/abstract_storage'
4
5
  require_relative 'storage/redis_storage'
5
6
 
6
7
  module RubyRateLimiter
7
8
  class TokenBucket
8
9
  extend Forwardable
9
-
10
10
  DEFAULT_BUCKET_SIZE = 10
11
11
  DEFAULT_REFILL_RATE = 1
12
12
  DEFAULT_STORAGE = RubyRateLimiter::Storage::RedisStorage.new
@@ -29,39 +29,41 @@ module RubyRateLimiter
29
29
  @bucket_size = bucket_size
30
30
  @refill_rate_per_second = refill_rate.to_f / TIME_UNITS[time_unit]
31
31
  @storage = storage
32
+
33
+ @logger = Logger.new(STDOUT)
34
+ @logger.level = Logger::DEBUG
32
35
  initialize_bucket
33
36
  end
34
37
 
35
38
  def allow_request?
36
39
  refill_tokens
37
40
  tokens = get_bucket_size
38
- puts "Allow request: tokens before = #{tokens}" # Debugging line
41
+ @logger.info "Allow request: tokens before = #{tokens}"
39
42
 
40
43
  return false if tokens < 1
41
44
 
42
45
  update_bucket_size(tokens - 1)
43
- puts "Allow request: tokens after = #{get_bucket_size}" # Debugging line
46
+ @logger.info "Allow request: tokens after = #{get_bucket_size}"
44
47
  true
45
48
  end
46
49
 
47
50
  private
48
51
 
49
52
  def initialize_bucket
50
- if get_bucket_size.nil?
53
+ if @storage.get("#{@user_id}_tokens").nil?
51
54
  update_bucket_size(@bucket_size)
52
55
  update_last_refill_time(Time.now.to_f)
56
+ @logger.info "Initialized bucket: tokens = #{@bucket_size}, time = #{Time.now.to_f}"
53
57
  end
54
58
  end
55
59
 
56
60
  def get_bucket_size
57
61
  size = (@storage.get("#{@user_id}_tokens") || @bucket_size).to_i
58
- puts "get_bucket_size: #{@user_id}_tokens = #{size}" # Debugging line
59
62
  size
60
63
  end
61
64
 
62
65
  def get_last_refill_time
63
66
  last_refill = (@storage.get("#{@user_id}_last_refill") || Time.now.to_f).to_f
64
- puts "get_last_refill_time: #{@user_id}_last_refill = #{last_refill}" # Debugging line
65
67
  last_refill
66
68
  end
67
69
 
@@ -79,18 +81,15 @@ module RubyRateLimiter
79
81
  elapsed_time = current_time - last_refill_time
80
82
 
81
83
  if elapsed_time < 0
82
- puts "Warning: elapsed_time is negative. Adjusting to zero."
83
84
  elapsed_time = 0
84
85
  end
85
86
 
86
87
  new_tokens = (elapsed_time * @refill_rate_per_second).to_i
87
- puts "Refill tokens: current_time = #{current_time}, last_refill_time = #{last_refill_time}, elapsed_time = #{elapsed_time}, new_tokens = #{new_tokens}" # Debugging line
88
-
88
+
89
89
  if new_tokens > 0
90
90
  tokens = [get_bucket_size + new_tokens, @bucket_size].min
91
91
  update_bucket_size(tokens)
92
92
  update_last_refill_time(current_time)
93
- puts "Refill tokens: updated tokens = #{tokens}, current_time = #{current_time}" # Debugging line
94
93
  end
95
94
  end
96
95
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RateLimiter
4
- VERSION = "2.0.7"
4
+ VERSION = "2.0.9"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rate_limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mutuba