yaauie/grackle — Issue #1: Get hayesdavis#21 accepted
Author: yaauie
Created: 2011-12-07 00:39:10+00:00
State: open

Get hayesdavis#21 accepted so we can do things like this:

```ruby
module Grackle::RateLimitWatcher
def process_response(*args)
cache = self.rate_limit
value = super
run_on_rate_limit_change_hooks unless cache == self.rate_limit
return value
end
private
def run_on_rate_limit_change_hooks
self.methods.grep(/^on_rate_limit_change_/).each { |hook| send(hook) }
end
end

module OnRateLimitChangeReportToBackendIfBelow5Percent
def self.extended(grackle_instance)
grackle_instance.extend(Grackle::RateLimitWatcher) unless grackle_instance.is_a?(Grackle::RateLimitWatcher)
end
def on_rate_limit_change_report_to_backend_if_below_5_percent
return if rate_limit.nil?
percent_remaining = rate_limit[:remaining].to_i / rate_limit[:limit].to_i
return unless percent_remaining <= 5
BACKEND.report({
'action' => 'rate_limit',
'payload' => {'service' => 'twitter'}.merge(rate_limit)
})
end
end

grackle - Grackle.new(
#...
)
grackle.extend OnRateLimitChangeReportToBackendIfBelow5Percent
```