Ejemplo n.º 1
0
        private static DownloadResourceResult CreateDownloadResourceResult(string nupkgPath, string installPath)
        {
            Stream            stream        = null;
            PackageReaderBase packageReader = null;

            try
            {
                stream        = File.Open(nupkgPath, FileMode.Open, FileAccess.Read, FileShare.Read);
                packageReader = new PackageFolderReader(installPath);
                return(new DownloadResourceResult(stream, packageReader, source: null)
                {
                    SignatureVerified = true
                });
            }
            catch
            {
                if (stream != null)
                {
                    stream.Dispose();
                }

                if (packageReader != null)
                {
                    packageReader.Dispose();
                }

                throw;
            }
        }
        public static DownloadResourceResult GetPackage(PackageIdentity packageIdentity, string globalPackagesFolder)
        {
            if (packageIdentity == null)
            {
                throw new ArgumentNullException(nameof(packageIdentity));
            }

            if (globalPackagesFolder == null)
            {
                throw new ArgumentNullException(nameof(globalPackagesFolder));
            }

            var defaultPackagePathResolver = new VersionFolderPathResolver(globalPackagesFolder);

            var hashPath = defaultPackagePathResolver.GetHashPath(packageIdentity.Id, packageIdentity.Version);

            if (File.Exists(hashPath))
            {
                var installPath = defaultPackagePathResolver.GetInstallPath(
                    packageIdentity.Id,
                    packageIdentity.Version);

                var nupkgPath = defaultPackagePathResolver.GetPackageFilePath(
                    packageIdentity.Id,
                    packageIdentity.Version);

                Stream            stream        = null;
                PackageReaderBase packageReader = null;
                try
                {
                    stream        = File.Open(nupkgPath, FileMode.Open, FileAccess.Read, FileShare.Read);
                    packageReader = new PackageFolderReader(installPath);
                    return(new DownloadResourceResult(stream, packageReader)
                    {
                        SignatureVerified = true
                    });
                }
                catch
                {
                    if (stream != null)
                    {
                        stream.Dispose();
                    }

                    if (packageReader != null)
                    {
                        packageReader.Dispose();
                    }

                    throw;
                }
            }

            return(null);
        }