class Lita::Handlers::LockerResources

Resource-related handlers

Public Instance Methods

create(response) click to toggle source
# File lib/lita/handlers/locker_resources.rb, line 82
def create(response)
  names = response.match_data['resources'].split(/,\s*/)
  results = []

  names.each do |name|
    if Resource.exists?(name)
      results <<= t('resource.exists', name: name)
    else
      Resource.create(name)
      results <<= t('resource.created', name: name)
    end
  end

  response.reply(results.join(', '))
end
delete(response) click to toggle source
# File lib/lita/handlers/locker_resources.rb, line 98
def delete(response)
  names = response.match_data['resources'].split(/,\s*/)
  results = []

  names.each do |name|
    if Resource.exists?(name)
      Resource.delete(name)
      results <<= t('resource.deleted', name: name)
    else
      results <<= t('resource.does_not_exist', name: name)
    end
  end

  response.reply(results.join(', '))
end
list(response) click to toggle source
# File lib/lita/handlers/locker_resources.rb, line 51
def list(response)
  begin
    list = ::Locker::List.new(Resource, config.per_page, response.extensions[:kwargs][:page])
  rescue ArgumentError
    return response.reply(t('list.invalid_page_type'))
  end

  return response.reply(t('list.page_outside_range', pages: list.pages)) unless list.valid_page?

  message = list.requested_page.map do |key|
    resource = Resource.new(key)

    state = resource.state.value

    case state
    when 'unlocked'
      unlocked(t('resource.desc', name: key, state: state))
    when 'locked'
      locked(t('resource.desc', name: key, state: state))
    else
      # This case shouldn't happen, but it will if a label
      # gets saved with some other value for `state`.
      t('resource.desc', name: key, state: state)
    end
  end.join("\n")

  message += "\n#{t('list.paginate', page: list.page, pages: list.pages)}" if list.multiple_pages?

  response.reply(message)
end
show(response) click to toggle source
# File lib/lita/handlers/locker_resources.rb, line 114
def show(response)
  name = response.match_data['resource']
  return response.reply(t('resource.does_not_exist', name: name)) unless Resource.exists?(name)
  r = Resource.new(name)
  resp = t('resource.desc', name: name, state: r.state.value)
  if r.labels.count > 0
    resp += ', used by: '
    r.labels.each do |label|
      resp += Label.new(label).id
    end
  end
  response.reply(resp)
end