123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- namespace Binman {
- public class BlobStore {
- public ManifestFile manifest { get; private set; }
- private ManifestHeader manifest_header;
- public BlobStore(ManifestFile manifest, ManifestHeader? header = null) throws Error {
- this.manifest = manifest;
- this.manifest_header = header ?? manifest.read_header();
- }
- public string get_path_for_discriptor(ManifestFileDescriptor descriptor) {
- var filename = descriptor.checksum.to_base64().replace("/", "_") + @"-$(descriptor.size)";
- return Path.build_filename("/var/binman/", manifest_header.name, "blob", filename);
- }
- public File get_file_for_descriptor(ManifestFileDescriptor descriptor) {
- var file = File.new_for_path(get_path_for_discriptor(descriptor));
- return file;
- }
- public bool has_descriptor(ManifestFileDescriptor descriptor, bool verify_checksum = false) {
- var file = get_file_for_descriptor(descriptor);
- if(!file.query_exists()) {
- return false;
- }
- if(!verify_checksum) {
- return true;
- }
- try {
- return Applicator.calculate_file_checksum(file.get_path()).equals(descriptor.checksum);
- }
- catch (Error e) {
- warning("Failed to verify file in blob storage: " + e.message);
- return false;
- }
- }
- }
- }
|