Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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));
        }