class Ruboty::Handlers::Imascg

Constants

IMG_URL
PPDB_API
VERSION

Public Instance Methods

imascg(message) click to toggle source
# File lib/ruboty/handlers/imascg.rb, line 18
def imascg(message)
  mode = message[:mode]
  mode = 'l' if !mode || mode.empty?
  mode = 'l_noframe' if mode == 'noframe'

  return if mode == 'flush' && message[:query] == 'cache'

  response = ppdb_query(message[:query])


  if response['message']
    message.reply response['message']
    return
  end

  unless response['data'].kind_of?(Array)
    message.reply response.inspect
    return
  end

  if mode == 'list'
    message.reply response['data'].map{ |_| _['Name'] }.join("\n")
  else
    card =  response['data'].find { |card| card['Name'] == message[:query] } \
         || response['data'].sample
    message.reply card['Name']
    message.reply IMG_URL % [mode, card['ID']]
  end
end
imascg_flush(message) click to toggle source
# File lib/ruboty/handlers/imascg.rb, line 48
def imascg_flush(message)
  ppdb_cache.clear
  message.reply "Flushed"
end

Private Instance Methods

ppdb_cache() click to toggle source
# File lib/ruboty/handlers/imascg.rb, line 71
def ppdb_cache
  @cache ||= {}
end
ppdb_query(query) click to toggle source
# File lib/ruboty/handlers/imascg.rb, line 55
def ppdb_query(query)
  return ppdb_cache[query] if ppdb_cache[query]

  response = Net::HTTP.post_form(PPDB_API, "name" => query)

  json = ppdb_cache[query] = JSON.parse(response.body)
  return json

rescue JSON::ParserError
  if response.body
    return {'message' => response.body}
  end

  return {'message' => 'JSON::ParserError'}
end