From f32c2a99740617140a019f1309113e2669684beb Mon Sep 17 00:00:00 2001 From: Felix Bùˆnemann Date: Thu, 28 Jan 2016 05:51:25 +0100 Subject: 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 --- Library/Homebrew/utils.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Library') 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 -- cgit v1.2.3