WARNING: This post is ancient and probably wrong.
Standard Net::HTTP usage pulled from the Ruby 1.9.3 docs for Net::HTTP:
require 'tmpdir'
require 'uri'
require 'net/http'
# works with either a query already in the URL or as a second argument
def download_to_tmp_path(url, query = nil)
uri = URI(url)
tmp_path = File.join Dir.mktmpdir(uri.to_s.gsub(/\W/, '_')), "out"
if query
uri.query = URI.encode_www_form query
end
Net::HTTP.start(uri.host, uri.port, :use_ssl => (uri.scheme == 'https')) do |http|
request = Net::HTTP::Get.new uri.request_uri
http.request request do |response|
File.open tmp_path, 'w' do |io|
response.read_body do |chunk|
io.write chunk
end
end
end
end
tmp_path
end
so for example
puts "HTTP"
url = 'http://s3.amazonaws.com/creative.faraday.io/logo.png'
logo = download_to_tmp_path(url)
system 'file', logo
puts
puts "HTTPS"
url = 'https://s3.amazonaws.com/creative.faraday.io/logo.png'
logo = download_to_tmp_path(url)
system 'file', logo
puts
puts "Inline query"
url = 'https://s3.amazonaws.com/creative.faraday.io/logo.png?greeting=hello+world'
logo = download_to_tmp_path(url)
system 'file', logo
puts
puts "Query as hash"
url = 'https://s3.amazonaws.com/creative.faraday.io/logo.png'
query = { greeting: 'hello world' }
logo = download_to_tmp_path(url, query)
system 'file', logo
gives
HTTP
http://s3.amazonaws.com/creative.faraday.io/logo.png
/var/folders/cw/h96jw4sj6b19gvk9cnsy15h40000gp/T/http___s3_amazonaws_com_creative_faraday_io_logo_png20140714-4167-miomm3/out: PNG image data, 134 x 40, 8-bit/color RGBA, non-interlaced
HTTPS
https://s3.amazonaws.com/creative.faraday.io/logo.png
/var/folders/cw/h96jw4sj6b19gvk9cnsy15h40000gp/T/https___s3_amazonaws_com_creative_faraday_io_logo_png20140714-4167-ud6zhp/out: PNG image data, 134 x 40, 8-bit/color RGBA, non-interlaced
Inline query
https://s3.amazonaws.com/creative.faraday.io/logo.png?greeting=hello+world
/var/folders/cw/h96jw4sj6b19gvk9cnsy15h40000gp/T/https___s3_amazonaws_com_creative_faraday_io_logo_png_greeting_hello_world20140714-4167-143mn3q/out: PNG image data, 134 x 40, 8-bit/color RGBA, non-interlaced
Query as hash
https://s3.amazonaws.com/creative.faraday.io/logo.png
/var/folders/cw/h96jw4sj6b19gvk9cnsy15h40000gp/T/https___s3_amazonaws_com_creative_faraday_io_logo_png20140714-4167-79adl/out: PNG image data, 134 x 40, 8-bit/color RGBA, non-interlaced