class Lita::Handlers::Xkcd

Public Instance Methods

xkcd_latest(response) click to toggle source
# File lib/lita/handlers/xkcd.rb, line 12
def xkcd_latest(response)
  resp = http.get('https://xkcd.com/info.0.json')

  raise 'Not found' if resp.status == 404

  response.reply print_comic(MultiJson.load(resp.body))
rescue
  response.reply error
end
xkcd_num(response) click to toggle source
# File lib/lita/handlers/xkcd.rb, line 22
def xkcd_num(response)
  comic_num = response.matches[0][0]

  response.reply load_comic(comic_num)
rescue
  response.reply error
end
xkcd_random(response) click to toggle source
# File lib/lita/handlers/xkcd.rb, line 30
def xkcd_random(response)
  resp = http.get('https://xkcd.com/info.0.json')

  if resp.status == 200
    obj = MultiJson.load(resp.body)

    comic_num = rand(obj['num'].to_i) + 1
  else
    comic_num = 0
  end

  response.reply load_comic(comic_num)
rescue
  response.reply error
end

Private Instance Methods

error() click to toggle source
# File lib/lita/handlers/xkcd.rb, line 48
def error
  "Sorry, but there was a problem retrieving the comic."
end
load_comic(comic_num) click to toggle source
# File lib/lita/handlers/xkcd.rb, line 52
def load_comic(comic_num)
  resp = http.get("https://xkcd.com/#{comic_num}/info.0.json")

  if resp.status == 404
    response.reply "Comic ##{comic_num} not found."
    return
  end

  print_comic MultiJson.load(resp.body)
end
print_comic(comic) click to toggle source