lita-onewheel-beer-wayfinder 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 20a3744d7dc61b44c337da329511bf97f5649ccb
4
+ data.tar.gz: 2fd65c43aaa7d9fa6474e60a03f5f2716eff6fce
5
+ SHA512:
6
+ metadata.gz: e98188602867bf38445e9b128ae1ccc46a3feecc7788b2f61cae5c47a3d4ca0311220ec040244b039fa060dffc32f828b169bd9858f0ff8d04eb31643be02ae2
7
+ data.tar.gz: f30555a7bfa832e57f1fbec0c1f5ad857edd522bf6572913907e0f96423ce66dc30044c0a1515d08fb05e44783f3a5e8399200ef9c84098d0c15949c17737b5d
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
19
+ lita_config.rb
20
+ .DS_Store
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.2.6
5
+ - 2.3.3
6
+
7
+ script: bundle exec rspec -fp spec
8
+
9
+ # Travis CI has an outdated version of bundler on older versions of ruby.
10
+ # See bundler/bundler#3558 for more information
11
+ #before_install:
12
+ # - gem update --system
13
+ # - gem update bundler
14
+
15
+ services:
16
+ - redis-server
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ # For local development and base testing
6
+ # gem 'lita-onewheel-beer-base', :github => 'onewheelskyward/lita-onewheel-beer-base', branch: :master
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # lita-onewheel-apex-bar
2
+
3
+ [![Build Status](https://travis-ci.org/onewheelskyward/lita-onewheel-apex-bar.png?branch=master)](https://travis-ci.org/onewheelskyward/lita-onewheel-apex-bar)
4
+ [![Coverage Status](https://coveralls.io/repos/onewheelskyward/lita-onewheel-apex-bar/badge.png)](https://coveralls.io/r/onewheelskyward/lita-onewheel-apex-bar)
5
+
6
+ Searches Apex Bar's draft list for data and displays it in IRC.
7
+ http://apexbar.com/menu
8
+
9
+ ## Installation
10
+
11
+ Add lita-onewheel-apex-bar to your Lita instance's Gemfile:
12
+
13
+ ``` ruby
14
+ gem 'lita-onewheel-apex-bar'
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ apex
20
+
21
+ apex 4
22
+
23
+ apex nitro
24
+
25
+ apex >(=)5%
26
+
27
+ apex <(=)$5
28
+
29
+ apex roulette|random
30
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,124 @@
1
+ require 'rest-client'
2
+ require 'nokogiri'
3
+ require 'sanitize'
4
+ require 'lita-onewheel-beer-base'
5
+
6
+ module Lita
7
+ module Handlers
8
+ class OnewheelBeerWayfinder < OnewheelBeerBase
9
+ route /^wayfinder$/i,
10
+ :taps_list,
11
+ command: true,
12
+ help: {'wayfinder' => 'Display the current Wayfinder Bar taps.'}
13
+
14
+ route /^wayfinder ([\w ]+)$/i,
15
+ :taps_deets,
16
+ command: true,
17
+ help: {'wayfinder 4' => 'Display the Wayfinder tap 4 deets, including prices.'}
18
+
19
+ route /^wayfinder ([<>=\w.\s]+)%$/i,
20
+ :taps_by_abv,
21
+ command: true,
22
+ help: {'wayfinder >4%' => 'Display Wayfinder beers over 4% ABV.'}
23
+
24
+ route /^wayfinder ([<>=\$\w.\s]+)$/i,
25
+ :taps_by_price,
26
+ command: true,
27
+ help: {'wayfinder <$5' => 'Display Wayfinder beers under $5.'}
28
+
29
+ route /^wayfinder (roulette|random|rand|ran|ra|r)$/i,
30
+ :taps_by_random,
31
+ command: true,
32
+ help: {'wayfinder roulette' => 'Can\'t decide what to drink at Wayfinder? Let me do it for you!'}
33
+
34
+ route /^wayfinderabvlow$/i,
35
+ :taps_low_abv,
36
+ command: true,
37
+ help: {'wayfinderabvlow' => 'Show me the lowest Wayfinder abv keg.'}
38
+
39
+ route /^wayfinderabvhigh$/i,
40
+ :taps_high_abv,
41
+ command: true,
42
+ help: {'wayfinderabvhigh' => 'Show me the highest Wayfinder abv keg.'}
43
+
44
+ def send_response(tap, datum, response)
45
+ reply = "Wayfinder tap #{tap}) #{get_tap_type_text(datum[:type])}"
46
+ # reply += "#{datum[:brewery]} "
47
+ reply += "#{datum[:name]} "
48
+ reply += "- #{datum[:desc]}, "
49
+ # reply += "Served in a #{datum[1]['glass']} glass. "
50
+ # reply += "#{datum[:remaining]}"
51
+ reply += "#{datum[:abv]}%, "
52
+ # reply += "$#{datum[:price].to_s.sub '.0', ''}"
53
+
54
+ Lita.logger.info "send_response: Replying with #{reply}"
55
+
56
+ response.reply reply
57
+ end
58
+
59
+ def get_source
60
+ Lita.logger.debug 'get_source started'
61
+ unless (response = redis.get('page_response'))
62
+ Lita.logger.info 'No cached result found, fetching.'
63
+ response = RestClient.get('http://www.wayfinder.beer/')
64
+ redis.setex('page_response', 1800, response)
65
+ end
66
+ parse_response response
67
+ end
68
+
69
+ # This is the worker bee- decoding the html into our "standard" document.
70
+ # Future implementations could simply override this implementation-specific
71
+ # code to help this grow more widely.
72
+ def parse_response(response)
73
+ Lita.logger.debug 'parse_response started.'
74
+ gimme_what_you_got = {}
75
+ noko = Nokogiri.HTML response
76
+ noko.css('div.menus div.menu-item').each_with_index do |beer_node, index|
77
+ # gimme_what_you_got
78
+ tap_name = (index + 1).to_s
79
+
80
+ brewery = 'Wayfinder'
81
+ beer_name = beer_node.css('.menu-item-title').text.to_s.strip
82
+
83
+ beer_type = beer_node.css('.menu-item-title').children[1].to_s.strip
84
+
85
+ beer_desc = beer_node.css('.menu-item-description').text
86
+
87
+ abv_node = /\d+\.\d+\%/.match(beer_node.css('div.menu-item-option').text)
88
+ if abv_node
89
+ abv = abv_node[0]
90
+ abv.sub! /\%/, ''
91
+ end
92
+
93
+ ibu_node = /IBU \d+/.match(beer_node.css('div.menu-item-option').text)
94
+ if ibu_node
95
+ ibu = ibu_node[0]
96
+ ibu.sub! /IBU /, ''
97
+ end
98
+
99
+ full_text_search = "#{brewery} #{beer_name.to_s.gsub /(\d+|')/, ''}" # #{beer_desc.to_s.gsub /\d+\.*\d*%*/, ''}
100
+
101
+ # price_node = beer_node.css('td')[1].children.to_s
102
+ # price = (price_node.sub /\$/, '').to_f
103
+
104
+ gimme_what_you_got[tap_name] = {
105
+ # type: tap_type,
106
+ # remaining: remaining,
107
+ brewery: brewery.to_s,
108
+ name: beer_name.to_s,
109
+ desc: beer_type.to_s,
110
+ abv: abv.to_f,
111
+ ibu: ibu.to_i,
112
+ desc: beer_desc.to_s,
113
+ # price: price,
114
+ search: full_text_search
115
+ }
116
+ end
117
+
118
+ gimme_what_you_got
119
+ end
120
+
121
+ Lita.register_handler(self)
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,3 @@
1
+ require 'lita'
2
+
3
+ require 'lita/handlers/onewheel_beer_wayfinder'
@@ -0,0 +1,31 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'lita-onewheel-beer-wayfinder'
3
+ spec.version = '0.0.0'
4
+ spec.authors = ['Andrew Kreps']
5
+ spec.email = ['andrew.kreps@gmail.com']
6
+ spec.description = %q{Lita interface to Wafinder's Barlistings.}
7
+ spec.summary = %q{See above.}
8
+ spec.homepage = 'https://github.com/onewheelskyward/lita-onewheel-beer-wayfinder'
9
+ spec.license = 'MIT'
10
+ spec.metadata = { 'lita_plugin_type' => 'handler' }
11
+
12
+ spec.files = `git ls-files`.split($/)
13
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.require_paths = ['lib']
16
+
17
+ spec.add_runtime_dependency 'lita', '~> 4'
18
+ spec.add_runtime_dependency 'rest-client', '~> 1.8'
19
+ spec.add_runtime_dependency 'nokogiri', '~> 1.6'
20
+ spec.add_runtime_dependency 'sanitize', '~> 4.0'
21
+ spec.add_runtime_dependency 'lita-onewheel-beer-base', '~> 2'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+
25
+ # spec.add_development_dependency 'pry-byebug', '~> 3.1'
26
+ spec.add_development_dependency 'rake', '~> 10.4'
27
+ spec.add_development_dependency 'rack-test', '~> 0.6'
28
+ spec.add_development_dependency 'rspec', '~> 3.0'
29
+ spec.add_development_dependency 'simplecov', '~> 0.10'
30
+ spec.add_development_dependency 'coveralls', '~> 0.8'
31
+ end