private static void ValidateDependentPackages(INapackStorageManager napackManager, NewNapackVersion newNapack) { // Validate dependent packages exist, aren't recalled, and have valid licenses. foreach (NapackMajorVersion napackVersion in newNapack.Dependencies) { NapackMetadata package = napackManager.GetPackageMetadata(napackVersion.Name, false); NapackMajorVersionMetadata majorVersionMetadata = package.GetMajorVersion(napackVersion.Major); if (majorVersionMetadata.Recalled) { // Users creating a new napack cannot use recalled packages as they have no reasonable chance of retrieving them. throw new NapackRecalledException(napackVersion.Name, napackVersion.Major); } newNapack.License.VerifyCompatibility(napackVersion.Name, napackVersion.Major, majorVersionMetadata.License); } }
private Response GetPackage(INapackStorageManager napackManager, string name, int major, Func <NapackMajorVersionMetadata, int> minorVersionComputer, Func <NapackMajorVersionMetadata, int> patchVersionComputer) { NapackMetadata package = napackManager.GetPackageMetadata(name, false); NapackMajorVersionMetadata majorVersion = package.GetMajorVersion(major); if (majorVersion.Recalled) { throw new NapackRecalledException(name, major); } int minor = minorVersionComputer(majorVersion); int patch = patchVersionComputer(majorVersion); NapackVersion specifiedVersion = napackManager.GetPackageVersion(new NapackVersionIdentifier(name, major, minor, patch)); Common.NapackVersion downloadableVersion = new Common.NapackVersion(major, minor, patch, specifiedVersion.Authors, specifiedVersion.Files, majorVersion.License, specifiedVersion.Dependencies); return(this.Response.AsJson(downloadableVersion, HttpStatusCode.OK)); }