Class: BubBot::ServerManager
- Inherits:
-
Object
- Object
- BubBot::ServerManager
- Defined in:
- lib/bub_bot/server_manager.rb
Constant Summary collapse
- ROOT_KEY =
'bub_server_list'.freeze
Instance Method Summary collapse
- #claimed_by(username) ⇒ Object
- #first_unclaimed ⇒ Object
- #list ⇒ Object
- #names ⇒ Object
- #release(server_name) ⇒ Object
-
#take(options) ⇒ Object
Options: - duration (1.hour) - server_name (cannoli) - user (kevin).
Instance Method Details
#claimed_by(username) ⇒ Object
57 58 59 60 61 |
# 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 ⇒ Object
63 64 65 |
# File 'lib/bub_bot/server_manager.rb', line 63 def first_unclaimed list.key({}) end |
#list ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# 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 ⇒ Object
31 32 33 |
# File 'lib/bub_bot/server_manager.rb', line 31 def names known_server_names end |
#release(server_name) ⇒ Object
27 28 29 |
# File 'lib/bub_bot/server_manager.rb', line 27 def release(server_name) redis.hdel(ROOT_KEY, server_name) end |
#take(options) ⇒ Object
Options:
-
duration (1.hour)
-
server_name (cannoli)
-
user (kevin)
All options required. Do your own defaulting, you lazy bum!
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/bub_bot/server_manager.rb', line 12 def take() puts 'takin' server_name, duration, user = .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 |