lita-kegbot 0.2.0 → 0.3.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 +4 -4
- data/lib/lita/handlers/kegbot.rb +58 -56
- data/lita-kegbot.gemspec +1 -1
- data/locales/en.yml +3 -6
- data/spec/lita/handlers/kegbot_spec.rb +13 -21
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f377744672faacfb1dd8eb24044eeb4051a7f033
|
4
|
+
data.tar.gz: d6b41a95f2e133eee66e5767987e550fe6d8dc81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc8141444f4cbbb04de03fc93990a1c08824d24dcf25c2b737552ba0da0f7dcbfda6f30c29c3f93100b3378665e9e9f709b3f00b591c22d48e31095f8412347b
|
7
|
+
data.tar.gz: e784489a0972fb0f3eebd5e7d33ddc01ed11895051349a886e615cbaf0b837186c67a12dbb3fce73b95420bf0e43afbcb51c4de5ddda0410fe4b118227578bf1
|
data/lib/lita/handlers/kegbot.rb
CHANGED
@@ -2,25 +2,16 @@ module Lita
|
|
2
2
|
module Handlers
|
3
3
|
class Kegbot < Handler
|
4
4
|
route(
|
5
|
-
/^(?:kegbot|kb)\
|
6
|
-
:drink_list_all,
|
7
|
-
command: true,
|
8
|
-
help: {
|
9
|
-
t('help.drink_list.syntax') => t('help.drink_list.desc')
|
10
|
-
}
|
11
|
-
)
|
12
|
-
|
13
|
-
route(
|
14
|
-
/^(?:kegbot|kb)\sdrink\slist\s(\d+)$/,
|
5
|
+
/^(?:kegbot|kb)\s(?:drink|drinks)\slist(\s\d+)*$/,
|
15
6
|
:drink_list,
|
16
7
|
command: true,
|
17
8
|
help: {
|
18
|
-
t('help.
|
9
|
+
t('help.drink_list.syntax') => t('help.drink_list.desc')
|
19
10
|
}
|
20
11
|
)
|
21
12
|
|
22
13
|
route(
|
23
|
-
/^(?:kegbot|kb)\
|
14
|
+
/^(?:kegbot|kb)\s(?:tap|taps)\sstatus$/,
|
24
15
|
:tap_status_all,
|
25
16
|
command: true,
|
26
17
|
help: {
|
@@ -29,7 +20,7 @@ module Lita
|
|
29
20
|
)
|
30
21
|
|
31
22
|
route(
|
32
|
-
/^(?:kegbot|kb)\
|
23
|
+
/^(?:kegbot|kb)\s(?:tap|taps)\sstatus\s(\d+)$/,
|
33
24
|
:tap_status_id,
|
34
25
|
command: true,
|
35
26
|
help: {
|
@@ -38,7 +29,7 @@ module Lita
|
|
38
29
|
)
|
39
30
|
|
40
31
|
route(
|
41
|
-
/^(?:kegbot|kb)\
|
32
|
+
/^(?:kegbot|kb)\s(?:keg|kegs)\sstatus$/,
|
42
33
|
:keg_status_all,
|
43
34
|
command: true,
|
44
35
|
help: {
|
@@ -47,7 +38,7 @@ module Lita
|
|
47
38
|
)
|
48
39
|
|
49
40
|
route(
|
50
|
-
/^(?:kegbot|kb)\
|
41
|
+
/^(?:kegbot|kb)\s(?:keg|kegs)\sstatus\s(\d+)$/,
|
51
42
|
:keg_status_id,
|
52
43
|
command: true,
|
53
44
|
help: {
|
@@ -60,32 +51,20 @@ module Lita
|
|
60
51
|
config.api_url = nil
|
61
52
|
end
|
62
53
|
|
63
|
-
def drink_list_all(response)
|
64
|
-
result = api_request('get', 'drinks/')
|
65
|
-
if result && result['objects']
|
66
|
-
drinks = result['objects']
|
67
|
-
response.reply(t('drinks.none')) unless drinks.count > 0
|
68
|
-
drinks.each do |drink|
|
69
|
-
session = drink['session']
|
70
|
-
response.reply(t('drinks.info', user: drink['user_id'],
|
71
|
-
date: session['start_time']))
|
72
|
-
end
|
73
|
-
else
|
74
|
-
response.reply(t('error.request'))
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
54
|
def drink_list(response)
|
79
|
-
|
55
|
+
count_match = response.matches[0][0]
|
56
|
+
count_match ? count = count_match.to_i : count = 5
|
80
57
|
current = 0
|
81
|
-
|
82
|
-
if
|
83
|
-
drinks = result['result']['drinks']
|
58
|
+
drinks = fetch_drinks
|
59
|
+
if drinks
|
84
60
|
response.reply(t('drinks.none')) unless drinks.count > 0
|
85
61
|
drinks.each do |drink|
|
86
62
|
if current < count
|
63
|
+
formatted_date = drink['session']['start_time']
|
64
|
+
beer = drink['keg']['beverage']['name']
|
87
65
|
response.reply(t('drinks.info', user: drink['user_id'],
|
88
|
-
|
66
|
+
beer: beer,
|
67
|
+
date: formatted_date))
|
89
68
|
current += 1
|
90
69
|
end
|
91
70
|
end
|
@@ -95,9 +74,8 @@ module Lita
|
|
95
74
|
end
|
96
75
|
|
97
76
|
def tap_status_all(response)
|
98
|
-
|
99
|
-
if
|
100
|
-
taps = result['objects']
|
77
|
+
taps = fetch_taps
|
78
|
+
if taps
|
101
79
|
response.reply(t('taps.none')) unless taps.count > 0
|
102
80
|
taps.each do |tap|
|
103
81
|
response.reply(t('taps.info', id: tap['id'], name: tap['name']))
|
@@ -108,10 +86,8 @@ module Lita
|
|
108
86
|
end
|
109
87
|
|
110
88
|
def tap_status_id(response)
|
111
|
-
|
112
|
-
|
113
|
-
if result && result['object']
|
114
|
-
tap = result['object']
|
89
|
+
tap = fetch_tap(response.matches[0][0].to_i)
|
90
|
+
if tap
|
115
91
|
response.reply(t('taps.info', id: tap['id'], name: tap['name']))
|
116
92
|
else
|
117
93
|
response.reply(t('error.request'))
|
@@ -119,16 +95,18 @@ module Lita
|
|
119
95
|
end
|
120
96
|
|
121
97
|
def keg_status_all(response)
|
122
|
-
|
123
|
-
if
|
124
|
-
kegs = result['objects']
|
98
|
+
kegs = fetch_kegs
|
99
|
+
if kegs
|
125
100
|
response.reply(t('kegs.none')) unless kegs.count > 0
|
126
101
|
kegs.each do |keg|
|
127
|
-
keg['
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
102
|
+
if keg['online']
|
103
|
+
keg['online'] ? status = 'online' : status = 'offline'
|
104
|
+
pct = format('%3.2f', keg['percent_full'])
|
105
|
+
response.reply(t('kegs.info', id: keg['id'],
|
106
|
+
beer: keg['beverage']['name'],
|
107
|
+
status: status,
|
108
|
+
pct: pct))
|
109
|
+
end
|
132
110
|
end
|
133
111
|
else
|
134
112
|
response.reply(t('error.request'))
|
@@ -136,15 +114,14 @@ module Lita
|
|
136
114
|
end
|
137
115
|
|
138
116
|
def keg_status_id(response)
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
keg['status'] ? status = 'offline' : status = 'online'
|
117
|
+
keg = fetch_keg(response.matches[0][0].to_i)
|
118
|
+
if keg
|
119
|
+
keg['online'] ? status = 'online' : status = 'offline'
|
120
|
+
pct = format('%3.2f', keg['percent_full'])
|
144
121
|
response.reply(t('kegs.info', id: keg['id'],
|
145
122
|
beer: keg['beverage']['name'],
|
146
123
|
status: status,
|
147
|
-
pct:
|
124
|
+
pct: pct))
|
148
125
|
else
|
149
126
|
response.reply(t('error.request'))
|
150
127
|
end
|
@@ -152,6 +129,31 @@ module Lita
|
|
152
129
|
|
153
130
|
private
|
154
131
|
|
132
|
+
def fetch_drinks
|
133
|
+
result = api_request('get', 'drinks/')
|
134
|
+
result['objects'] if result && result['objects']
|
135
|
+
end
|
136
|
+
|
137
|
+
def fetch_tap(id)
|
138
|
+
result = api_request('get', "taps/#{id}")
|
139
|
+
result['object'] if result && result['object']
|
140
|
+
end
|
141
|
+
|
142
|
+
def fetch_taps
|
143
|
+
result = api_request('get', 'taps/')
|
144
|
+
result['objects'] if result && result['objects']
|
145
|
+
end
|
146
|
+
|
147
|
+
def fetch_keg(id)
|
148
|
+
result = api_request('get', "kegs/#{id}")
|
149
|
+
result['object'] if result && result['object']
|
150
|
+
end
|
151
|
+
|
152
|
+
def fetch_kegs
|
153
|
+
result = api_request('get', 'kegs/')
|
154
|
+
result['objects'] if result && result['objects']
|
155
|
+
end
|
156
|
+
|
155
157
|
def api_request(method, path, args = {})
|
156
158
|
if Lita.config.handlers.kegbot.api_key.nil? ||
|
157
159
|
Lita.config.handlers.kegbot.api_url.nil?
|
data/lita-kegbot.gemspec
CHANGED
data/locales/en.yml
CHANGED
@@ -3,18 +3,15 @@ en:
|
|
3
3
|
handlers:
|
4
4
|
kegbot:
|
5
5
|
drinks:
|
6
|
-
info: "%{user} poured a glass at %{date}"
|
6
|
+
info: "%{user} poured a refreshing glass of %{beer} at %{date}"
|
7
7
|
none: No drinks have been poured
|
8
8
|
error:
|
9
9
|
not_implemented: Not implemented yet.
|
10
10
|
request: There was a problem with the Kegbot request
|
11
11
|
help:
|
12
12
|
drink_list:
|
13
|
-
syntax: (kegbot|kb) drink list
|
14
|
-
desc: List last
|
15
|
-
drink_list_N:
|
16
|
-
syntax: (kegbot|kb) drink list <N>
|
17
|
-
desc: List last <N> drinks poured
|
13
|
+
syntax: (kegbot|kb) drink list [N]
|
14
|
+
desc: List last [N] drinks poured, defaults to 5
|
18
15
|
tap_list:
|
19
16
|
syntax: (kegbot|kb) tap list
|
20
17
|
desc: Lists taps
|
@@ -33,14 +33,14 @@ describe Lita::Handlers::Kegbot, lita_handler: true do
|
|
33
33
|
File.read('spec/files/keg.json')
|
34
34
|
end
|
35
35
|
|
36
|
-
it { routes_command('kegbot drink list').to(:
|
36
|
+
it { routes_command('kegbot drink list').to(:drink_list) }
|
37
37
|
it { routes_command('kegbot drink list 10').to(:drink_list) }
|
38
38
|
it { routes_command('kegbot tap status').to(:tap_status_all) }
|
39
39
|
it { routes_command('kegbot tap status 1').to(:tap_status_id) }
|
40
40
|
it { routes_command('kegbot keg status').to(:keg_status_all) }
|
41
41
|
it { routes_command('kegbot keg status 1').to(:keg_status_id) }
|
42
42
|
|
43
|
-
it { routes_command('kb drink list').to(:
|
43
|
+
it { routes_command('kb drink list').to(:drink_list) }
|
44
44
|
it { routes_command('kb drink list 10').to(:drink_list) }
|
45
45
|
it { routes_command('kb tap status').to(:tap_status_all) }
|
46
46
|
it { routes_command('kb tap status 1').to(:tap_status_id) }
|
@@ -79,34 +79,26 @@ describe Lita::Handlers::Kegbot, lita_handler: true do
|
|
79
79
|
Lita.config.handlers.kegbot.api_url = 'https://example.com'
|
80
80
|
end
|
81
81
|
|
82
|
-
describe '#
|
82
|
+
describe '#drink_list' do
|
83
83
|
it 'shows a list of drinks if there are any' do
|
84
84
|
grab_request('get', 200, drinks)
|
85
85
|
send_command('kegbot drink list')
|
86
|
-
expect(replies.last).to eq('esigler poured a glass
|
87
|
-
'2014-04-14T07:39:01+00:00')
|
86
|
+
expect(replies.last).to eq('esigler poured a refreshing glass of ' \
|
87
|
+
'Racer 5 at 2014-04-14T07:39:01+00:00')
|
88
88
|
end
|
89
89
|
|
90
|
-
it 'shows an empty list if there arent any' do
|
91
|
-
grab_request('get', 200, drinks_empty)
|
92
|
-
send_command('kegbot drink list')
|
93
|
-
expect(replies.last).to eq('No drinks have been poured')
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'shows an error if there was a problem with the request' do
|
97
|
-
grab_request('get', 500, nil)
|
98
|
-
send_command('kegbot drink list')
|
99
|
-
expect(replies.last).to eq('There was a problem with the Kegbot request')
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
describe '#drink_list' do
|
104
90
|
it 'shows the correct number of drinks if there are that many' do
|
105
91
|
grab_request('get', 200, drinks)
|
106
92
|
send_command('kegbot drink list 1')
|
107
93
|
expect(replies.count).to eq(1)
|
108
94
|
end
|
109
95
|
|
96
|
+
it 'shows an empty list if there arent any' do
|
97
|
+
grab_request('get', 200, drinks_empty)
|
98
|
+
send_command('kegbot drink list')
|
99
|
+
expect(replies.last).to eq('No drinks have been poured')
|
100
|
+
end
|
101
|
+
|
110
102
|
it 'shows an error if there was a problem with the request' do
|
111
103
|
grab_request('get', 500, nil)
|
112
104
|
send_command('kegbot drink list 2')
|
@@ -158,7 +150,7 @@ describe Lita::Handlers::Kegbot, lita_handler: true do
|
|
158
150
|
it 'shows the status of all of the kegs if there are any' do
|
159
151
|
grab_request('get', 200, kegs)
|
160
152
|
send_command('kegbot keg status')
|
161
|
-
expect(replies.last).to eq('Keg #1: Racer 5, status: online, 100.
|
153
|
+
expect(replies.last).to eq('Keg #1: Racer 5, status: online, 100.00% ' \
|
162
154
|
'remaining')
|
163
155
|
end
|
164
156
|
|
@@ -179,7 +171,7 @@ describe Lita::Handlers::Kegbot, lita_handler: true do
|
|
179
171
|
it 'shows the status of a specific keg' do
|
180
172
|
grab_request('get', 200, keg)
|
181
173
|
send_command('kegbot keg status 1')
|
182
|
-
expect(replies.last).to eq('Keg #1: Racer 5, status: online, 100.
|
174
|
+
expect(replies.last).to eq('Keg #1: Racer 5, status: online, 100.00% ' \
|
183
175
|
'remaining')
|
184
176
|
end
|
185
177
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-kegbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Sigler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|