class Lita::Handlers::OnewheelBeerBtu
Public Instance Methods
get_source()
click to toggle source
# File lib/lita/handlers/onewheel_beer_btu.rb, line 72 def get_source # Lita.logger.debug 'get_source started' # unless (response = redis.get('page_response')) # Lita.logger.info 'No cached result found, fetching.' # response = RestClient.get('http://www.btupdx.com/ftp/TapList/BTUbeerlist.pdf') # redis.setex('page_response', 18000, response) # end parse_response pull_pdf end
parse_response(response)
click to toggle source
This is the worker bee- decoding the pdf into our “standard” document.
# File lib/lita/handlers/onewheel_beer_btu.rb, line 88 def parse_response(response) gimme_what_you_got = {} tap = 1 beer_name = nil beer_abv = nil beer_ibu = nil beer_desc = '' response.each_with_index do |line, index| line.strip! if index >= 2 if line.empty? unless beer_name.nil? gimme_what_you_got[tap] = { brewery: 'BTU', name: beer_name.to_s, desc: beer_desc.to_s.strip, abv: beer_abv.to_f, ibu: beer_ibu, search: "#{beer_name} #{beer_desc}" } tap += 1 beer_name = nil beer_desc = '' beer_abv = nil beer_ibu = nil end next end if beer_name.nil? beer_name = line next end if (matchdata = line.match(/(.+)\sIBUS\s([0-9.]+)\%\s*ABV/)) beer_ibu = matchdata[1] beer_abv = matchdata[2] next end beer_desc += line + ' ' end end gimme_what_you_got end
pull_pdf()
click to toggle source
# File lib/lita/handlers/onewheel_beer_btu.rb, line 82 def pull_pdf reader = PDF::Reader.new(open 'http://www.btupdx.com/ftp/TapList/BTUbeerlist.pdf') reader.pages[0].text.split /\n/ end
send_response(tap, datum, response)
click to toggle source
# File lib/lita/handlers/onewheel_beer_btu.rb, line 60 def send_response(tap, datum, response) reply = "BTU's tap #{tap}) " reply += "#{datum[:name]} - " reply += datum[:abv].to_s + '% ABV ' reply += datum[:ibu].to_s + ' IBU ' reply += "- #{datum[:desc]}" Lita.logger.info "send_response: Replying with #{reply}" response.reply reply end
taps_list(response)
click to toggle source
# File lib/lita/handlers/onewheel_beer_btu.rb, line 44 def taps_list(response) beers = self.get_source reply = 'BTU taps: ' beers.each do |tap, datum| reply += "#{tap}) " reply += datum[:name] + ' ' reply += '- ' + datum[:abv].to_s + '% ' reply += ' ' # reply += datum[:ibu].to_s + ' IBU ' end reply = reply.strip.sub /,\s*$/, '' Lita.logger.info "Replying with #{reply}" response.reply reply end