def verify_blob(self, sum): recipe = self.get_recipe(sum) if recipe: reader = create_blob_reader(recipe, self) verified_ok = (sum == md5sum_file(reader)) elif self.has_raw_blob(sum): path = self.get_blob_path(sum) verified_ok = (sum == md5sum_file(path)) else: raise ValueError("No such blob or recipe: " + sum) return verified_ok
def get_blob(self, sum, offset = 0, size = -1): """ Returns None if there is no such blob """ if self.has_raw_blob(sum): path = self.get_blob_path(sum) with open(path, "rb") as f: f.seek(offset) data = f.read(size) return data recipe = self.get_recipe(sum) if recipe: reader = create_blob_reader(recipe, self) reader.seek(offset) return reader.read(size) else: raise ValueError("No such blob or recipe exists: "+sum)
def verify_blob(self, sum): recipe = self.get_recipe(sum) md5_summer = hashlib.md5() if recipe: reader = create_blob_reader(recipe, self) while reader.bytes_left(): md5_summer.update(reader.read(4096)) return sum == md5_summer.hexdigest() if not self.has_raw_blob(sum): raise ValueError("No such blob or recipe: " + sum) path = self.get_blob_path(sum) with safe_open(path, "rb") as f: for block in file_reader(f): md5_summer.update(block) md5 = md5_summer.hexdigest() verified_ok = (sum == md5) return verified_ok