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)
|
||||
end
|
||||
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
|
||||
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.
|
||||
EOS
|
||||
elsif e.io.status.first == "404"
|
||||
end
|
||||
|
||||
case e.io.status.first
|
||||
when "404"
|
||||
raise HTTPNotFoundError, e.message, e.backtrace
|
||||
else
|
||||
raise Error, e.message, e.backtrace
|
||||
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
|
||||
|
||||
def issues_matching(query, qualifiers={})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user