class Aws::S3::Plugins::Md5s::Handler
@api private
Constants
- CHUNK_SIZE
Public Instance Methods
call(context)
click to toggle source
# File lib/aws-sdk-s3/plugins/md5s.rb, line 24 def call(context) body = context.http_request.body if body.respond_to?(:size) && body.size > 0 context.http_request.headers['Content-Md5'] ||= md5(body) end @handler.call(context) end
Private Instance Methods
md5(value)
click to toggle source
@param [File, Tempfile, IO#read, String] value @return [String<MD5>]
# File lib/aws-sdk-s3/plugins/md5s.rb, line 36 def md5(value) if (File === value || Tempfile === value) && !value.path.nil? && File.exist?(value.path) OpenSSL::Digest::MD5.file(value).base64digest elsif value.respond_to?(:read) md5 = OpenSSL::Digest::MD5.new update_in_chunks(md5, value) md5.base64digest else OpenSSL::Digest::MD5.digest(value).base64digest end end
update_in_chunks(digest, io)
click to toggle source
# File lib/aws-sdk-s3/plugins/md5s.rb, line 48 def update_in_chunks(digest, io) loop do chunk = io.read(CHUNK_SIZE) break unless chunk digest.update(chunk) end io.rewind end