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>
This commit is contained in:
parent
a584711115
commit
f32c2a9974
@ -531,7 +531,7 @@ module GitHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
def handle_api_error(e)
|
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
|
reset = e.io.meta.fetch("x-ratelimit-reset").to_i
|
||||||
error = Utils::JSON.load(e.io.read)["message"]
|
error = Utils::JSON.load(e.io.read)["message"]
|
||||||
raise RateLimitExceededError.new(reset, error)
|
raise RateLimitExceededError.new(reset, error)
|
||||||
@ -543,7 +543,8 @@ module GitHub
|
|||||||
when "404"
|
when "404"
|
||||||
raise HTTPNotFoundError, e.message, e.backtrace
|
raise HTTPNotFoundError, e.message, e.backtrace
|
||||||
else
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user