Exemple #1
0
        public ActionResult Download(string packageId, string packageVersion)
        {
            PublishedPackage publishedPackage = _publishedPackageRepository.Collection
                                                .SingleOrDefault(pp => pp.Id == packageId && pp.Version == packageVersion);

            if (publishedPackage == null)
            {
                throw new PackageFileDoesNotExistException(packageId, packageVersion);
            }

            _taskScheduler.ScheduleTask(() => _packageDownloadCountIncrementer.Increment(publishedPackage.Id, publishedPackage.Version));

            if (!string.IsNullOrWhiteSpace(publishedPackage.ExternalPackageUrl))
            {
                return(new RedirectResult(publishedPackage.ExternalPackageUrl));
            }
            Stream packageFile = _packageFileGetter.GetPackageStream(publishedPackage.Id, publishedPackage.Version);

            return(File(packageFile, "application/zip", string.Format("{0}-{1}.nupkg", packageId, packageVersion)));
        }