Class: SimpleRateLimiter::Repositories::RedisRecordRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/repositories/redis_record_repository.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(redis, random) ⇒ RedisRecordRepository

Returns a new instance of RedisRecordRepository.



8
9
10
11
# File 'lib/repositories/redis_record_repository.rb', line 8

def initialize(redis, random)
  @redis = redis
  @random = random
end

Class Method Details

.build(redis, random_value = SecureRandom.base64(10)) ⇒ Object



22
23
24
25
26
# File 'lib/repositories/redis_record_repository.rb', line 22

def self.build(redis, random_value = SecureRandom.base64(10))
  instance = new(redis, random_value)
  instance.validate_redis_connection
  instance
end

Instance Method Details

#add(record_name, time = Time.now) ⇒ Object



28
29
30
# File 'lib/repositories/redis_record_repository.rb', line 28

def add(record_name, time = Time.now)
  @redis.lpush(record_name, time.to_i.to_s)
end

#get_by_name(record_name, record_amount = 0) ⇒ Object



32
33
34
# File 'lib/repositories/redis_record_repository.rb', line 32

def get_by_name(record_name, record_amount = 0)
  @redis.lrange(record_name, 0, record_amount - 1)
end

#remove_last_by_name(record_name) ⇒ Object



40
41
42
# File 'lib/repositories/redis_record_repository.rb', line 40

def remove_last_by_name(record_name)
  @redis.lpop(record_name)
end

#trim_by_name(record_name, record_amount) ⇒ Object



36
37
38
# File 'lib/repositories/redis_record_repository.rb', line 36

def trim_by_name(record_name, record_amount)
  @redis.ltrim(record_name, 0, record_amount - 1)
end

#validate_redis_connectionObject



13
14
15
16
17
18
19
20
# File 'lib/repositories/redis_record_repository.rb', line 13

def validate_redis_connection
  test_hash = @random
  result = @redis.set('test', test_hash)
  received = @redis.get('test')
  unless result == 'OK' && received == test_hash
    raise SimpleRateLimiter::Application::Exceptions::RedisConnectionException, 'redis connection unsuccessful, make sure redis is installed and configuration variables are set'
  end
end