lib/fog/storage.rb in fog-0.7.0 vs lib/fog/storage.rb in fog-0.7.1

- old
+ new

@@ -19,28 +19,39 @@ else raise ArgumentError.new("#{provider} is not a recognized storage provider") end end + def self.get_body_size(body) + case + when body.respond_to?(:bytesize) + body.bytesize + when body.respond_to?(:size) + body.size + when body.respond_to?(:stat) + body.stat.size + else + 0 + end + end + def self.parse_data(data) metadata = { :body => nil, :headers => {} } - - if data.is_a?(String) - metadata[:body] = data - metadata[:headers]['Content-Length'] = metadata[:body].size - else + + metadata[:body] = data + metadata[:headers]['Content-Length'] = get_body_size(data) + + if data.respond_to?(:path) filename = ::File.basename(data.path) unless (mime_types = MIME::Types.of(filename)).empty? metadata[:headers]['Content-Type'] = mime_types.first.content_type end - metadata[:body] = data - metadata[:headers]['Content-Length'] = ::File.size(data.path) end # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip metadata end - + end -end \ No newline at end of file +end