CurlApacheMirrorDownloadStrategy: fetch mirrors in JSON format
Closes Homebrew/homebrew#16457.
This commit is contained in:
		
							parent
							
								
									8135ed6528
								
							
						
					
					
						commit
						0a9f5c6867
					
				@ -148,19 +148,16 @@ end
 | 
			
		||||
# Detect and download from Apache Mirror
 | 
			
		||||
class CurlApacheMirrorDownloadStrategy < CurlDownloadStrategy
 | 
			
		||||
  def _fetch
 | 
			
		||||
    # Fetch mirror list site
 | 
			
		||||
    require 'open-uri'
 | 
			
		||||
    mirror_list = open(@url).read()
 | 
			
		||||
    require 'vendor/multi_json'
 | 
			
		||||
 | 
			
		||||
    # Parse out suggested mirror
 | 
			
		||||
    #   Yep, this is ghetto, grep the first <strong></strong> element content
 | 
			
		||||
    mirror_url = mirror_list[/<strong>([^<]+)/, 1]
 | 
			
		||||
    mirrors = MultiJson.decode(open("#{@url}&asjson=1").read)
 | 
			
		||||
    url = mirrors.fetch('preferred') + mirrors.fetch('path_info')
 | 
			
		||||
 | 
			
		||||
    raise "Couldn't determine mirror. Try again later." if mirror_url.nil?
 | 
			
		||||
 | 
			
		||||
    ohai "Best Mirror #{mirror_url}"
 | 
			
		||||
    # Start download from that mirror
 | 
			
		||||
    curl mirror_url, '-o', @tarball_path
 | 
			
		||||
    ohai "Best Mirror #{url}"
 | 
			
		||||
    curl url, '-o', @tarball_path
 | 
			
		||||
  rescue IndexError
 | 
			
		||||
    raise "Couldn't determine mirror. Try again later."
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user