class Lita::Handlers::Envy

Public Instance Methods

claim_environment(response) click to toggle source
# File lib/lita/handlers/envy.rb, line 17
def claim_environment(response)
  env_id = response.matches.first.first
  case current_user(env_id)
  when nil
    redis.hset(key(env_id), 'user', response.user.name)
    response.reply t('claim_environment.success')
  when ''
    redis.hset(key(env_id), 'user', response.user.name)
    response.reply t('claim_environment.success')
  when response.user.name
    response.reply t('claim_environment.failure.env_in_use_by_user', :env_id => env_id)
  else
    response.reply t('claim_environment.failure.env_in_use_by_other_user', :env_id => env_id, :user => current_user(env_id))
  end
end
claim_used_environment(response) click to toggle source
# File lib/lita/handlers/envy.rb, line 79
def claim_used_environment(response)
  env_id, specified_user = response.matches.first
  case current_user(env_id)
  when nil
    response.reply t('claim_used_environment.failure.env_unknown', :env_id => env_id)
  when ''
    response.reply t('claim_used_environment.failure.env_not_in_use', :env_id => env_id)
  when response.user.name
    response.reply t('claim_used_environment.failure.env_in_use_by_user', :env_id => env_id)
  when specified_user
    redis.hset(key(env_id), 'user', response.user.name)
    response.reply t('claim_used_environment.success')
  else
    response.reply t('claim_used_environment.failure.env_in_use_by_user_other_than_specified_one', :env_id => env_id, :user => current_user(env_id), :specified_user => specified_user)
  end
end
forget_environment(response) click to toggle source
# File lib/lita/handlers/envy.rb, line 64
def forget_environment(response)
  env_id = response.matches.first.first
  case current_user(env_id)
  when nil
    response.reply t('forget_environment.failure.env_unknown', :env_id => env_id)
  when ''
    redis.del(key(env_id))
    response.reply t('forget_environment.success')
  when response.user.name
    response.reply t('forget_environment.failure.env_in_use_by_user', :env_id => env_id)
  else
    response.reply t('forget_environment.failure.env_in_use_by_other_user', :env_id => env_id, :user => current_user(env_id))
  end
end
list_environments(response) click to toggle source
# File lib/lita/handlers/envy.rb, line 48
def list_environments(response)
  lines = []
  redis.keys(key('*')).sort.each do |key|
    env_id = key.split(':').last
    user = redis.hget(key, 'user')
    line = env_id
    line += " (#{user})" unless user.empty?
    lines << line
  end
  if lines.any?
    response.reply(lines.join("\n"))
  else
    response.reply t('list_environments.failure.no_environments')
  end
end
release_environment(response) click to toggle source
# File lib/lita/handlers/envy.rb, line 33
def release_environment(response)
  env_id = response.matches.first.first
  case current_user(env_id)
  when nil
    response.reply t('release_environment.failure.env_unknown', :env_id => env_id)
  when ''
    response.reply t('release_environment.failure.env_not_in_use_by_user', :env_id => env_id)
  when response.user.name
    redis.hset(key(env_id), 'user', nil)
    response.reply t('release_environment.success')
  else
    response.reply t('release_environment.failure.env_in_use_by_other_user', :env_id => env_id, :user => current_user(env_id))
  end
end

Private Instance Methods

current_user(env_id) click to toggle source
# File lib/lita/handlers/envy.rb, line 102
def current_user(env_id)
  redis.hget(key(env_id), 'user')
end
key(env_id) click to toggle source
# File lib/lita/handlers/envy.rb, line 98
def key(env_id)
  ['environments', config.namespace, env_id].join(':')
end