Extract error handling from GitHub.open
This commit is contained in:
parent
34930586c3
commit
1d5ab3195c
@ -271,21 +271,28 @@ module GitHub extend self
|
|||||||
yield Utils::JSON.load(f.read)
|
yield Utils::JSON.load(f.read)
|
||||||
end
|
end
|
||||||
rescue OpenURI::HTTPError => e
|
rescue OpenURI::HTTPError => e
|
||||||
|
handle_api_error(e)
|
||||||
|
rescue SocketError, OpenSSL::SSL::SSLError => e
|
||||||
|
raise Error, "Failed to connect to: #{url}\n#{e.message}", e.backtrace
|
||||||
|
rescue Utils::JSON::Error => e
|
||||||
|
raise Error, "Failed to parse JSON response\n#{e.message}", e.backtrace
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle_api_error(e)
|
||||||
if e.io.meta['x-ratelimit-remaining'].to_i <= 0
|
if e.io.meta['x-ratelimit-remaining'].to_i <= 0
|
||||||
raise RateLimitExceededError, <<-EOS.undent, e.backtrace
|
raise RateLimitExceededError, <<-EOS.undent, e.backtrace
|
||||||
GitHub #{Utils::JSON.load(e.io.read)['message']}
|
GitHub #{Utils::JSON.load(e.io.read)['message']}
|
||||||
You may want to create an API token: https://github.com/settings/applications
|
You may want to create an API token: https://github.com/settings/applications
|
||||||
and then set HOMEBREW_GITHUB_API_TOKEN.
|
and then set HOMEBREW_GITHUB_API_TOKEN.
|
||||||
EOS
|
EOS
|
||||||
elsif e.io.status.first == "404"
|
end
|
||||||
|
|
||||||
|
case e.io.status.first
|
||||||
|
when "404"
|
||||||
raise HTTPNotFoundError, e.message, e.backtrace
|
raise HTTPNotFoundError, e.message, e.backtrace
|
||||||
else
|
else
|
||||||
raise Error, e.message, e.backtrace
|
raise Error, e.message, e.backtrace
|
||||||
end
|
end
|
||||||
rescue SocketError, OpenSSL::SSL::SSLError => e
|
|
||||||
raise Error, "Failed to connect to: #{url}\n#{e.message}", e.backtrace
|
|
||||||
rescue Utils::JSON::Error => e
|
|
||||||
raise Error, "Failed to parse JSON response\n#{e.message}", e.backtrace
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def issues_matching(query, qualifiers={})
|
def issues_matching(query, qualifiers={})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user