public Task SavePackageFileAsync(Package package, Stream packageFile, bool overwrite)
        {
            if (packageFile == null)
            {
                throw new ArgumentNullException(nameof(packageFile));
            }

            var fileName = BuildFileName(package, _metadata.FileSavePathTemplate, _metadata.FileExtension);

            return(_fileStorageService.SaveFileAsync(_metadata.FileFolderName, fileName, packageFile, overwrite));
        }
Esempio n. 2
0
        public Task SavePackageFileAsync(Package package, Stream packageFile)
        {
            if (packageFile == null)
            {
                throw new ArgumentNullException(nameof(packageFile));
            }

            var fileName = BuildFileName(package, CoreConstants.PackageFileSavePathTemplate, CoreConstants.NuGetPackageFileExtension);

            return(_fileStorageService.SaveFileAsync(CoreConstants.PackagesFolderName, fileName, packageFile, overwrite: false));
        }
Esempio n. 3
0
        public Task SaveAsync(
            string packageId,
            string packageNormalizedVersion,
            Guid validationId,
            Stream packageFile)
        {
            if (packageFile == null)
            {
                throw new ArgumentNullException(nameof(packageFile));
            }

            var fileName = BuildFileName(packageId, packageNormalizedVersion, validationId);

            _logger.LogInformation(
                "Saving package file {PackageId} {PackageNormalizedVersion} for processor {ProcessorName} and " +
                "validation ID {ValidationId}.",
                packageId,
                packageNormalizedVersion,
                _processorName,
                validationId);

            packageFile.Position = 0;

            return(_fileStorageService.SaveFileAsync(
                       CoreConstants.ValidationFolderName,
                       fileName,
                       packageFile,
                       overwrite: true));
        }
Esempio n. 4
0
        public Task SaveLicenseFileAsync(Package package, Stream licenseFile)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

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

            if (package.EmbeddedLicenseType == EmbeddedLicenseFileType.Absent)
            {
                throw new ArgumentException("Package must have an embedded license", nameof(package));
            }

            var fileName = BuildLicenseFileName(package);

            // Gallery will generally ignore the content type on license files and will use the value from the DB,
            // but we'll be nice and try to specify correct content type for them.
            var contentType = package.EmbeddedLicenseType == EmbeddedLicenseFileType.Markdown
                ? CoreConstants.MarkdownContentType
                : CoreConstants.TextContentType;

            return(_fileStorageService.SaveFileAsync(_metadata.PackageContentFolderName, fileName, contentType, licenseFile, overwrite: true));
        }
Esempio n. 5
0
        /// <summary>
        /// Saves the package readme.md file to storage. This method should throw if the package
        /// does not have an embedded readme file
        /// </summary>
        /// <param name="package">The package associated with the readme.</param>
        /// <param name="readmeFile">The content of readme file.</param>
        private Task SaveReadmeFileAsync(Package package, Stream readmeFile)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

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

            if (package.EmbeddedReadmeType == EmbeddedReadmeFileType.Absent)
            {
                throw new ArgumentException("Package must have an embedded readme", nameof(package));
            }

            var fileName = BuildReadmeFileName(package);

            return(_fileStorageService.SaveFileAsync(_metadata.PackageContentFolderName, fileName, readmeFile, overwrite: true));
        }
        public Task SaveLicenseFileAsync(Package package, Stream licenseFile)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

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

            if (package.EmbeddedLicenseType == EmbeddedLicenseFileType.Absent)
            {
                throw new ArgumentException("Package must have an embedded license", nameof(package));
            }

            var fileName = BuildLicenseFileName(package);

            return(_fileStorageService.SaveFileAsync(_metadata.PackageContentFolderName, fileName, CoreConstants.TextContentType, licenseFile, overwrite: true));
        }
Esempio n. 7
0
        public async Task <FeatureFlagSaveResult> TrySaveAsync(FeatureFlags flags, string contentId)
        {
            var accessCondition = AccessConditionWrapper.GenerateIfMatchCondition(contentId);

            try
            {
                using (var stream = new MemoryStream())
                    using (var writer = new StreamWriter(stream))
                        using (var jsonWriter = new JsonTextWriter(writer))
                        {
                            Serializer.Serialize(jsonWriter, flags);
                            jsonWriter.Flush();
                            stream.Position = 0;

                            await _storage.SaveFileAsync(CoreConstants.Folders.ContentFolderName, CoreConstants.FeatureFlagsFileName, stream, accessCondition);

                            return(FeatureFlagSaveResult.Ok);
                        }
            }
            catch (StorageException e) when(e.IsPreconditionFailedException())
            {
                return(FeatureFlagSaveResult.Conflict);
            }
        }