diff options
| author | Felix Bünemann | 2016-01-28 05:51:25 +0100 |
|---|---|---|
| committer | Mike McQuaid | 2016-02-01 18:37:36 +0000 |
| commit | f32c2a99740617140a019f1309113e2669684beb (patch) | |
| tree | 740f1244a32afc13c774bf4db8f5edfec9f08435 /Library | |
| parent | a584711115ef2c7aa4254f6b88975ed6977c9d3a (diff) | |
| download | brew-f32c2a99740617140a019f1309113e2669684beb.tar.bz2 | |
brew search: properly handle 503 errors.
This avoids crashing with an unknown key error, if the GitHub api
response does not contain the ratelimit headers, e.g. when GitHub is
down. It also tries to display the JSON error message in addition to
the HTTP status.
Closes Homebrew/homebrew#48538.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/utils.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index d9a41b86d..e020caef0 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -531,7 +531,7 @@ module GitHub end def handle_api_error(e) - if e.io.meta["x-ratelimit-remaining"].to_i <= 0 + if e.io.meta.fetch("x-ratelimit-remaining", 1).to_i <= 0 reset = e.io.meta.fetch("x-ratelimit-reset").to_i error = Utils::JSON.load(e.io.read)["message"] raise RateLimitExceededError.new(reset, error) @@ -543,7 +543,8 @@ module GitHub when "404" raise HTTPNotFoundError, e.message, e.backtrace else - raise Error, e.message, e.backtrace + error = Utils::JSON.load(e.io.read)["message"] rescue nil + raise Error, [e.message, error].compact.join("\n"), e.backtrace end end |
