From 7d4709d9d6bd297a04f215f99bb08d909e71b668 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Sat, 8 Feb 2014 16:04:53 -0500 Subject: [PATCH] Prevent repeated warnings when GitHub API rate limit is exceeded --- Library/Homebrew/cmd/search.rb | 4 +++- Library/Homebrew/utils.rb | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 2d3a28f367..71e1d17204 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -112,7 +112,9 @@ module Homebrew extend self end end results - rescue GitHub::Error + rescue GitHub::RateLimitExceededError => e + [] + rescue GitHub::Error => e opoo "Failed to search tap: #{user}/#{repo}. Please run `brew update`" [] end diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index b004131532..0878311534 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -252,6 +252,7 @@ module GitHub extend self ISSUES_URI = URI.parse("https://api.github.com/legacy/issues/search/Homebrew/homebrew/open/") Error = Class.new(StandardError) + RateLimitExceededError = Class.new(Error) def open url, headers={}, &block # This is a no-op if the user is opting out of using the GitHub API. @@ -266,7 +267,7 @@ module GitHub extend self end rescue OpenURI::HTTPError => e if e.io.meta['x-ratelimit-remaining'].to_i <= 0 - raise Error, <<-EOS.undent, e.backtrace + raise RateLimitExceededError, <<-EOS.undent, e.backtrace GitHub #{Utils::JSON.load(e.io.read)['message']} You may want to create an API token: https://github.com/settings/applications and then set HOMEBREW_GITHUB_API_TOKEN.