module NauktisUtils::FileDigester

Constants

ALGORITHMS

Public Class Methods

digest(filename, algorithm = :sha1) click to toggle source

Returns the hexdigest of the file provided.

# File lib/nauktis_utils/file_digester.rb, line 6
def self.digest(filename, algorithm = :sha1)
  full_path = FileBrowser.ensure_valid_file(filename)
  raise "Unknown algorithm #{algorithm}, use #{ALGORITHMS}" unless ALGORITHMS.include?(algorithm.to_sym)
  if algorithm.to_sym == :sha3
    SHA3::Digest.file(full_path).hexdigest
  else
    OpenSSL::Digest.new(algorithm.to_s).file(full_path).hexdigest
  end
end
digest_file_valid?(filename) click to toggle source

Checks the digest files next to the file provided. Returns true if all the digest files contain proper digest

# File lib/nauktis_utils/file_digester.rb, line 24
def self.digest_file_valid?(filename)
  full_path = FileBrowser.ensure_valid_file(filename)
  valid = true
  ALGORITHMS.each do |algorithm|
    digest_file = "#{full_path}.#{algorithm}"
    if FileBrowser.valid_file?(digest_file)
      unless self.digest(filename, algorithm) == File.read(digest_file)
        valid = false
        break
      end
    end
  end
  valid
end
generate_digest_file(filename, algorithm = :sha1) click to toggle source

Generates a file next to the file provided containing its digest

# File lib/nauktis_utils/file_digester.rb, line 17
def self.generate_digest_file(filename, algorithm = :sha1)
  digest = self.digest(filename, algorithm)
  File.write("#{File.expand_path(filename)}.#{algorithm}", digest)
end