Check GitHub API rate limit instead of silently failing
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
parent
222f96d37b
commit
0fa5c47d7f
@ -1,7 +1,7 @@
|
||||
require 'vendor/multi_json'
|
||||
|
||||
begin
|
||||
GitHub.open "https://api.github.com/legacy/repos/search/homebrew" do |f|
|
||||
GitHub.open "https://api.github.com/legacy/repos/search/homebrew" do |f|
|
||||
begin
|
||||
MultiJson.decode(f.read)["repositories"].each do |repo|
|
||||
if repo['name'] =~ /^homebrew-(\S+)$/
|
||||
puts tap = if repo['username'] == "Homebrew"
|
||||
@ -11,7 +11,6 @@ begin
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue
|
||||
end
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
@ -64,6 +64,7 @@ module Homebrew extend self
|
||||
|
||||
results = []
|
||||
GitHub.open "https://api.github.com/repos/#{user}/homebrew-#{repo}/git/trees/HEAD?recursive=1" do |f|
|
||||
begin
|
||||
user.downcase! if user == "Homebrew" # special handling for the Homebrew organization
|
||||
MultiJson.decode(f.read)["tree"].map{ |hash| hash['path'] }.compact.each do |file|
|
||||
name = File.basename(file, '.rb')
|
||||
@ -72,10 +73,10 @@ module Homebrew extend self
|
||||
$found += 1
|
||||
end
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
results
|
||||
rescue
|
||||
[]
|
||||
end
|
||||
|
||||
def search_brews rx
|
||||
|
@ -259,7 +259,16 @@ end
|
||||
module GitHub extend self
|
||||
def open url, headers={}, &block
|
||||
require 'open-uri'
|
||||
Kernel.open(url, headers.merge('User-Agent' => HOMEBREW_USER_AGENT), &block)
|
||||
begin
|
||||
Kernel.open(url, {'User-Agent' => HOMEBREW_USER_AGENT}.merge(headers), &block)
|
||||
rescue OpenURI::HTTPError => e
|
||||
if e.io.meta['x-ratelimit-remaining'].to_i <= 0
|
||||
require 'vendor/multi_json'
|
||||
raise "GitHub #{MultiJson.decode(e.io.read)['message']}"
|
||||
else
|
||||
raise e
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def issues_for_formula name
|
||||
@ -276,15 +285,16 @@ module GitHub extend self
|
||||
uri = URI.parse("https://api.github.com/legacy/issues/search/mxcl/homebrew/open/#{name}")
|
||||
|
||||
open uri do |f|
|
||||
begin
|
||||
MultiJson.decode(f.read)['issues'].each do |issue|
|
||||
# don't include issues that just refer to the tool in their body
|
||||
issues << issue['html_url'] if issue['title'].include? name
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
||||
issues
|
||||
rescue
|
||||
[]
|
||||
end
|
||||
|
||||
def find_pull_requests rx
|
||||
@ -294,11 +304,12 @@ module GitHub extend self
|
||||
uri = URI.parse("https://api.github.com/legacy/issues/search/mxcl/homebrew/open/#{query}")
|
||||
|
||||
GitHub.open uri do |f|
|
||||
begin
|
||||
MultiJson.decode(f.read)['issues'].each do |pull|
|
||||
yield pull['pull_request_url'] if rx.match pull['title'] and pull['pull_request_url']
|
||||
end
|
||||
end
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user