def blob_stream_connection(params)
client = Fog::Storage.new({:provider => :google, :google_storage_access_key_id => params[:user],
:google_storage_secret_access_key => params[:password]})
google_request_uri = "https://#{client.instance_variable_get(:@host)}"
uri = URI.parse(google_request_uri)
conn_params = {}
conn_params[:headers] = {}
conn_params[:host] = uri.host
conn_params[:path] = "#{params[:bucket]}/#{CGI.escape(params[:blob])}"
conn_params[:method] = "PUT"
timestamp = Fog::Time.now.to_date_header
conn_params[:headers]['Date'] = timestamp
conn_params[:headers]['Content-Type'] = params[:content_type]
metadata = params[:metadata] || {}
BlobHelper::rename_metadata_headers(metadata, 'x-goog-meta-')
metadata.each{|k,v| conn_params[:headers][k]=v}
auth_string = "GOOG1 #{params[:user]}:#{client.signature(conn_params)}"
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Put.new("/#{conn_params[:path]}")
request['Host'] = conn_params[:host]
request['Date'] = conn_params[:headers]['Date']
request['Content-Type'] = conn_params[:headers]['Content-Type']
request['Content-Length'] = params[:content_length]
request['Authorization'] = auth_string
metadata.each{|k,v| request[k] = v}
return http, request
end