class Tus::Checksum
Generates various checksums for given IO objects. The following algorithms are supported:
-
SHA1
-
SHA256
-
SHA384
-
SHA512
-
MD5
-
CRC32
Constants
- CHUNK_SIZE
Attributes
algorithm[R]
Public Class Methods
generate(algorithm, input)
click to toggle source
# File lib/tus/checksum.rb, line 18 def self.generate(algorithm, input) new(algorithm).generate(input) end
new(algorithm)
click to toggle source
# File lib/tus/checksum.rb, line 22 def initialize(algorithm) @algorithm = algorithm end
Public Instance Methods
generate(io)
click to toggle source
# File lib/tus/checksum.rb, line 30 def generate(io) hash = send("generate_#{algorithm}", io) io.rewind hash end
match?(checksum, io)
click to toggle source
# File lib/tus/checksum.rb, line 26 def match?(checksum, io) generate(io) == checksum end
Private Instance Methods
digest(name, io)
click to toggle source
# File lib/tus/checksum.rb, line 68 def digest(name, io) require "digest" digest = Digest.const_get(name).new while (data = io.read(CHUNK_SIZE, buffer ||= String.new)) digest.update(data) end digest.base64digest end
generate_crc32(io)
click to toggle source
# File lib/tus/checksum.rb, line 58 def generate_crc32(io) require "zlib" require "base64" crc = Zlib.crc32("") while (data = io.read(CHUNK_SIZE, buffer ||= String.new)) crc = Zlib.crc32(data, crc) end Base64.strict_encode64(crc.to_s) end
generate_md5(io)
click to toggle source
# File lib/tus/checksum.rb, line 54 def generate_md5(io) digest(:MD5, io) end
generate_sha1(io)
click to toggle source
# File lib/tus/checksum.rb, line 38 def generate_sha1(io) digest(:SHA1, io) end
generate_sha256(io)
click to toggle source
# File lib/tus/checksum.rb, line 42 def generate_sha256(io) digest(:SHA256, io) end
generate_sha384(io)
click to toggle source
# File lib/tus/checksum.rb, line 46 def generate_sha384(io) digest(:SHA384, io) end
generate_sha512(io)
click to toggle source
# File lib/tus/checksum.rb, line 50 def generate_sha512(io) digest(:SHA512, io) end