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