class FileFM::StreamingUploader

Public Class Methods

put(to_url, params = {}, &block) click to toggle source
# File lib/filefm/streaming_uploader.rb, line 79
def put(to_url, params = {}, &block)
  parts = []
  content_file = nil
  
  params.each do |key, value|
      if value.kind_of?(File)
        filepath = value.path
        parts << StreamPart.new(value, File.size(filepath))
      end
  end
  
  body_stream = MultipartStream.new(parts, block)
  
  url = URI.parse(to_url)
  
  headers = { 'Content-Length' => body_stream.size.to_s }.merge(params[:headers])

  req = Net::HTTP::Put.new(url.path, headers)
  Log.debug "HEADERS: " + headers.inspect
  Log.debug "HOST:    " + url.host 
  Log.debug "PORT:    " + url.port.to_s
  Log.debug "PATH:    " + url.path
  
  req.content_length = body_stream.size
  #req.content_type = i
  req.body_stream = body_stream
  
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true if url.scheme == "https"
  res = http.request(req)
  res
end