Class: Lita::Handlers::OnewheelBeerGrowlers

Inherits:
OnewheelBeerBase
  • Object
show all
Defined in:
lib/lita/handlers/onewheel_beer_growlers.rb

Instance Method Summary collapse

Instance Method Details

#get_sourceObject



59
60
61
62
63
64
65
66
67
# File 'lib/lita/handlers/onewheel_beer_growlers.rb', line 59

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://visualizeapi.com/api/hawthorne')
    redis.setex('page_response', 1800, response)
  end
  parse_response response
end

#parse_response(response) ⇒ Object

This is the worker bee- decoding the html into our “standard” document. Future implementations could simply override this implementation-specific code to help this grow more widely.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/lita/handlers/onewheel_beer_growlers.rb', line 72

def parse_response(response)
  gimme_what_you_got = {}
  response_doc = JSON.parse(response)
  response_doc['data'].each do |id, tap|
    tap_name = id

    brewery = tap['brewery']
    beer_name = tap['beer']

    beer_type = tap['style']
    # beer_type.sub! /\s+-\s+/, ''

    # abv = beer_node.css('td')[4].children.to_s
    full_text_search = "#{brewery} #{beer_name.to_s.gsub /(\d+|')/, ''}"  # #{beer_desc.to_s.gsub /\d+\.*\d*%*/, ''}

    price = (tap['prices'][0].sub /\$/, '').to_f

    gimme_what_you_got[tap_name] = {
    #     type: tap_type,
    #     remaining: remaining,
        brewery: brewery.to_s,
        name: beer_name.to_s,
        desc: beer_type.to_s,
        # abv: abv.to_f,
        price: price,
        search: full_text_search
    }
  end

  gimme_what_you_got
end

#send_response(tap, datum, response) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/lita/handlers/onewheel_beer_growlers.rb', line 44

def send_response(tap, datum, response)
  reply = "Growlers tap #{tap}) #{get_tap_type_text(datum[:type])}"
  # reply += "#{datum[:brewery]} "
  reply += "#{datum[:name]} "
  # reply += "- #{datum[:desc]}, "
  # reply += "Served in a #{datum[1]['glass']} glass.  "
  # reply += "#{datum[:remaining]}"
  # reply += "#{datum[:abv]}%, "
  reply += "$#{datum[:price].to_s.sub '.0', ''}"

  Lita.logger.info "send_response: Replying with #{reply}"

  response.reply reply
end