2008年 11月 20日

Ruby Net::HTTP で進捗表示しつつダウンロードのメモ

require 'net/http'
require 'uri'
Net::HTTP.version_1_2

uri  = URI("http://example.com/bigfile")
dest = "/tmp/foo"

Net::HTTP.start(uri.host, uri.port) do |http|
	req = Net::HTTP::Get.new(uri.request_uri)
	#req.basic_auth 'tsun', 'dere'

	http.request(req) do |response|
		size = response["Content-Length"].to_f
		File.open(dest, "wb") do |file|
			response.read_body do |data|
				file.write data
				puts file.tell / size
			end
		end
	end
end

ブレースと do end の使いわけが変だったのを修正