class BubBot::ServerManager
Constants
- ROOT_KEY
Public Instance Methods
claimed_by(username)
click to toggle source
# File lib/bub_bot/server_manager.rb, line 57 def claimed_by(username) list .select { |server, claim_data| claim_data['user'] == username } .keys end
first_unclaimed()
click to toggle source
# File lib/bub_bot/server_manager.rb, line 63 def first_unclaimed list.key({}) end
list()
click to toggle source
# File lib/bub_bot/server_manager.rb, line 35 def list claims = redis.hgetall(ROOT_KEY).to_h known_server_names.each_with_object({}) do |server_name, claim_map| claim_map[server_name] = if claim = claims[server_name] claim_data = JSON.parse(claim) expires_at = DateTime.parse(claim_data['expires_at']) # Filter out expired claims if expires_at > Time.now claim_data['expires_at'] = expires_at claim_data else {} end else {} end end end
names()
click to toggle source
# File lib/bub_bot/server_manager.rb, line 31 def names known_server_names end
release(server_name)
click to toggle source
# File lib/bub_bot/server_manager.rb, line 27 def release(server_name) redis.hdel(ROOT_KEY, server_name) end
take(options)
click to toggle source
Options:
-
duration (1.hour)
-
server_name (cannoli)
-
user (kevin)
All options required. Do your own defaulting, you lazy bum!
# File lib/bub_bot/server_manager.rb, line 12 def take(options) puts 'takin' server_name, duration, user = options.values_at(:server_name, :duration, :user) expires_at = duration.from_now data = { 'user' => user, 'expires_at' => expires_at } redis.hset(ROOT_KEY, server_name, data.to_json) data.merge(server: server_name) end
Private Instance Methods
known_server_names()
click to toggle source
# File lib/bub_bot/server_manager.rb, line 69 def known_server_names BubBot.configuration.servers end
redis()
click to toggle source
# File lib/bub_bot/server_manager.rb, line 73 def redis BubBot::RedisConnection.instance end