From 1baef7d44626b4cec6cafb1bfea8c5738e876b2f Mon Sep 17 00:00:00 2001 From: Eric Sigler Date: Fri, 17 Jul 2015 15:18:54 -0700 Subject: [PATCH 1/2] [misc] Switch up resource and label listing to be more friendly Hipchat & Slack have varying degrees of flood & payload protection. This hopefully strikes a better balance without being too annoying to the user. --- lib/lita/handlers/locker_labels.rb | 9 ++++++--- lib/lita/handlers/locker_resources.rb | 11 ++++++----- spec/lita/handlers/locker_resources_spec.rb | 4 ++-- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/lita/handlers/locker_labels.rb b/lib/lita/handlers/locker_labels.rb index ce96952..3d00027 100644 --- a/lib/lita/handlers/locker_labels.rb +++ b/lib/lita/handlers/locker_labels.rb @@ -52,9 +52,12 @@ class LockerLabels < Handler ) def list(response) - Label.list.each do |n| - l = Label.new(n) - response.reply(unlocked(t('label.desc', name: n, state: l.state.value))) + Label.list.each_slice(10) do |slice| + slice.each do |n| + l = Label.new(n) + response.reply(unlocked(t('label.desc', name: n, state: l.state.value))) + end + sleep 1 end end diff --git a/lib/lita/handlers/locker_resources.rb b/lib/lita/handlers/locker_resources.rb index 02b3551..b997b35 100644 --- a/lib/lita/handlers/locker_resources.rb +++ b/lib/lita/handlers/locker_resources.rb @@ -44,12 +44,13 @@ class LockerResources < Handler ) def list(response) - output = '' - Resource.list.each do |r| - res = Resource.new(r) - output += t('resource.desc', name: r, state: res.state.value) + Resource.list.each_slice(10) do |slice| + slice.each do |r| + res = Resource.new(r) + response.reply(t('resource.desc', name: r, state: res.state.value)) + end + sleep 1 end - response.reply(output) end def create(response) diff --git a/spec/lita/handlers/locker_resources_spec.rb b/spec/lita/handlers/locker_resources_spec.rb index 164bf76..956104b 100644 --- a/spec/lita/handlers/locker_resources_spec.rb +++ b/spec/lita/handlers/locker_resources_spec.rb @@ -31,8 +31,8 @@ send_command('locker resource create foobar') send_command('locker resource create bazbat') send_command('locker resource list') - expect(replies.last).to match(/Resource: foobar, state: unlocked/) - expect(replies.last).to match(/Resource: bazbat, state: unlocked/) + expect(replies).to include('Resource: foobar, state: unlocked') + expect(replies).to include('Resource: bazbat, state: unlocked') end end From 68df342d3c52158075d8dbd2f173ac2b874d2c7c Mon Sep 17 00:00:00 2001 From: Eric Sigler Date: Sun, 19 Jul 2015 19:26:17 -0700 Subject: [PATCH 2/2] Add hacky workaround until I can do something better in adapter --- lib/lita/handlers/locker_labels.rb | 9 ++++++++- lib/lita/handlers/locker_resources.rb | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/lita/handlers/locker_labels.rb b/lib/lita/handlers/locker_labels.rb index 3d00027..d10fb22 100644 --- a/lib/lita/handlers/locker_labels.rb +++ b/lib/lita/handlers/locker_labels.rb @@ -52,12 +52,19 @@ class LockerLabels < Handler ) def list(response) + should_rate_limit = false + Label.list.each_slice(10) do |slice| + if should_rate_limit + sleep 1 + else + should_rate_limit = true + end + slice.each do |n| l = Label.new(n) response.reply(unlocked(t('label.desc', name: n, state: l.state.value))) end - sleep 1 end end diff --git a/lib/lita/handlers/locker_resources.rb b/lib/lita/handlers/locker_resources.rb index b997b35..6e1f991 100644 --- a/lib/lita/handlers/locker_resources.rb +++ b/lib/lita/handlers/locker_resources.rb @@ -44,12 +44,19 @@ class LockerResources < Handler ) def list(response) + should_rate_limit = false + Resource.list.each_slice(10) do |slice| + if should_rate_limit + sleep 1 + else + should_rate_limit = true + end + slice.each do |r| res = Resource.new(r) response.reply(t('resource.desc', name: r, state: res.state.value)) end - sleep 1 end end