class GZippedTar::Tar::DigestIO
IO wrapper that creates digests of contents written to the IO it wraps.
Attributes
digests[R]
Collected digests for wrapped writes.
{ 'SHA1' => #<OpenSSL::Digest: [...]>, 'SHA512' => #<OpenSSL::Digest: [...]>, }
Public Class Methods
new(io, digests)
click to toggle source
wrap(io, digests) { |digest_io| ... }
click to toggle source
Wraps io
and updates digest for each of the digest algorithms in the digests
Hash. Returns the digests hash. Example:
io = StringIO.new digests = { 'SHA1' => OpenSSL::Digest.new('SHA1'), 'SHA512' => OpenSSL::Digest.new('SHA512'), } GZippedTar::Tar::DigestIO.wrap io, digests do |digest_io| digest_io.write "hello" end digests['SHA1'].hexdigest #=> "aaf4c61d[...]" digests['SHA512'].hexdigest #=> "9b71d224[...]"
# File lib/gzipped_tar/tar/digest_io.rb, line 35 def self.wrap(io, digests) digest_io = new io, digests yield digest_io digests end
Public Instance Methods
write(data)
click to toggle source
Writes data
to the underlying IO and updates the digests
# File lib/gzipped_tar/tar/digest_io.rb, line 51 def write(data) result = @io.write data @digests.each_value do |digest| digest << data end result end