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();
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 public InvalidPackageHash(PackageSource source, PackageHash package, string invalidHash)
 {
     Source      = source;
     Package     = package;
     InvalidHash = invalidHash;
 }