public bool HasPackage(PackageHash hash) { var pkgFile = Path.Combine(_packageStorageDirectory, hash.Name + ".pkg"); if (!File.Exists(pkgFile)) { return(false); } var formatter = new BinaryFormatter(); PackageHash existingHash = null; using (var fs = File.OpenRead(pkgFile)) { existingHash = (PackageHash)formatter.Deserialize(fs); } return(hash.Equals(existingHash)); }
public void AddUpdatePackage(PackageHash hash, byte[] package) { var pkgFile = Path.Combine(_packageStorageDirectory, hash.Name + ".pkg"); var pkgDir = Path.Combine(_packageStorageDirectory, hash.Name + "_pkg"); if (Directory.Exists(pkgDir)) { Directory.Delete(pkgDir, true); } Directory.CreateDirectory(pkgDir); Packager.UnpackPackage(pkgDir, package); if (File.Exists(pkgFile)) { File.Delete(pkgFile); } var formatter = new BinaryFormatter(); using (var fs = File.OpenWrite(pkgFile)) { formatter.Serialize(fs, hash); fs.Flush(); } }
public bool IsValid(ref List <string> errors) { var typ = $"‹{GetType().Name}›"; if (PackageFilename.IsBlank()) { errors.Add($"{typ}.{nameof(PackageFilename)} should not be blank."); } if (PackageHash.IsBlank()) { errors.Add($"{typ}.{nameof(PackageHash)} should not be blank."); } if (PartHash.IsBlank()) { errors.Add($"{typ}.{nameof(PartHash)} should not be blank."); } if (PartNumber < 1) { errors.Add($"{typ}.{nameof(PartNumber)} should be greater than zero; but found [{PartNumber}]."); } if (TotalParts < 1) { errors.Add($"{typ}.{nameof(TotalParts)} should be greater than zero; but found [{TotalParts}]."); } if (PartNumber > TotalParts) { errors.Add($"{typ}.{nameof(PartNumber)} [{PartNumber}] should NOT be greater than {nameof(TotalParts)} [{TotalParts}]."); } return(errors.Count == 0); }
public InvalidPackageHash(PackageSource source, PackageHash package, string invalidHash) { Source = source; Package = package; InvalidHash = invalidHash; }