diff options
Diffstat (limited to 'lib/mogilefs')
-rw-r--r-- | lib/mogilefs/mogilefs.rb | 8 | ||||
-rw-r--r-- | lib/mogilefs/new_file/common.rb | 33 |
2 files changed, 29 insertions, 12 deletions
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index f5cb096..76325cb 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -244,6 +244,13 @@ class MogileFS::MogileFS < MogileFS::Client # Keep in mind most HTTP servers do not support HTTP trailers, so # passing a String is usually the safest way to use this. # + # [:info => Hash] + # + # This is an empty hash that will be filled the same information + # MogileFS::MogileFS#file_info. + # + # Additionally, it contains one additional key: :uris, + # an array of URI::HTTP objects to the stored destinations def new_file(key, args = nil, bytes = nil) # :yields: file raise MogileFS::ReadOnlyError if readonly? opts = { :key => key, :multi_dest => 1 } @@ -275,6 +282,7 @@ class MogileFS::MogileFS < MogileFS::Client opts[:content_length] ||= bytes if bytes opts[:new_file_max_time] ||= @new_file_max_time opts[:start_time] = Time.now + info = opts[:info] and info["class"] = klass || "default" case (dests[0][1] rescue nil) when %r{\Ahttp://} diff --git a/lib/mogilefs/new_file/common.rb b/lib/mogilefs/new_file/common.rb index e959a21..9b6511d 100644 --- a/lib/mogilefs/new_file/common.rb +++ b/lib/mogilefs/new_file/common.rb @@ -34,21 +34,21 @@ module MogileFS::NewFile::Common end def create_close(devid, uri, bytes_uploaded) - args = { - :fid => @opts[:fid], - :devid => devid, - :key => @opts[:key], - :domain => @opts[:domain], - :size => bytes_uploaded, - :path => uri.to_s, - } + dest_info = @opts[:info] ||= {} + dest_info["fid"] = @opts[:fid].to_i + dest_info["key"] = @opts[:key] + dest_info["domain"] = @opts[:domain] + dest_info[:devid] = devid + dest_info[:path] = uri.to_s + dest_info[:size] = bytes_uploaded if @md5 - args[:checksum] = "MD5:#{@md5.hexdigest}" + dest_info["checksum"] = "MD5:#{@md5.hexdigest}" elsif String === @opts[:content_md5] hex = @opts[:content_md5].unpack('m')[0].unpack('H*')[0] - args[:checksum] = "MD5:#{hex}" + dest_info["checksum"] = "MD5:#{hex}" end - args[:checksumverify] = 1 if @opts[:checksumverify] + + dest_info[:checksumverify] = 1 if @opts[:checksumverify] backend = @opts[:backend] # upload could've taken a long time, ping and try to ensure socket @@ -61,7 +61,16 @@ module MogileFS::NewFile::Common # twice will hurt us... backend.noop - backend.create_close(args) + backend.create_close(dest_info) + + # make this look like file_info + get_uris + dest_info.delete(:checksumverify) + dest_info.delete(:path) + dest_info[:uris] = [ uri ] + dest_info["devcount"] = 1 + dest_info["devids"] = [ dest_info.delete(:devid).to_i ] + dest_info["length"] = dest_info.delete(:size) + bytes_uploaded end |