diff options
| author | Jack Nagel | 2014-02-08 16:04:53 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-02-08 16:04:53 -0500 |
| commit | 0a7767b247f6289f0dbd2b6601dfc4ce320ce585 (patch) | |
| tree | 8c60acfca1d7304a8fa8a371b093d7abba5441df /Library/Homebrew/utils.rb | |
| parent | 813cad6e1dba524460ae3cce2b88ba075816c1d4 (diff) | |
| download | homebrew-0a7767b247f6289f0dbd2b6601dfc4ce320ce585.tar.bz2 | |
Parse JSON early in GitHub module
Diffstat (limited to 'Library/Homebrew/utils.rb')
| -rw-r--r-- | Library/Homebrew/utils.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index f48e92b83..2f5bf1b0d 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -261,7 +261,9 @@ module GitHub extend self default_headers = {'User-Agent' => HOMEBREW_USER_AGENT} default_headers['Authorization'] = "token #{HOMEBREW_GITHUB_API_TOKEN}" if HOMEBREW_GITHUB_API_TOKEN - Kernel.open(url, default_headers.merge(headers), &block) + Kernel.open(url, default_headers.merge(headers)) do |f| + yield Utils::JSON.load(f.read) + end rescue OpenURI::HTTPError => e if e.io.meta['x-ratelimit-remaining'].to_i <= 0 raise <<-EOS.undent @@ -274,11 +276,13 @@ module GitHub extend self end rescue SocketError, OpenSSL::SSL::SSLError => e raise Error, "Failed to connect to: #{url}\n#{e.message}" + rescue Utils::JSON::Error => e + raise Error, "Failed to parse JSON response\n#{e.message}" end def issues_matching(query) uri = ISSUES_URI + uri_escape(query) - open(uri) { |f| Utils::JSON.load(f.read)['issues'] } + open(uri) { |json| json["issues"] } end def uri_escape(query) |
