Exemplo n.º 1
0
        /// <summary>
        /// Get readme.md content from a ReadMeRequest object.
        /// </summary>
        /// <param name="readMeRequest">ReadMe request from Verify or Edit package page.</param>
        /// <returns>Markdown content.</returns>
        internal static async Task <string> GetReadMeMdAsync(ReadMeRequest readMeRequest, Encoding encoding)
        {
            var readMeType = readMeRequest?.SourceType;

            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }

            if (TypeWritten.Equals(readMeType, StringComparison.InvariantCultureIgnoreCase))
            {
                if (encoding.GetByteCount(readMeRequest.SourceText) > MaxMdLengthBytes)
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture,
                                                                      Strings.ReadMeMaxLengthExceeded, MaxMdLengthBytes));
                }
                return(readMeRequest.SourceText);
            }
            else if (TypeUrl.Equals(readMeType, StringComparison.InvariantCultureIgnoreCase))
            {
                return(await GetReadMeMdFromUrlAsync(readMeRequest.SourceUrl, encoding));
            }
            else if (TypeFile.Equals(readMeType, StringComparison.InvariantCultureIgnoreCase))
            {
                return(await GetReadMeMdFromPostedFileAsync(readMeRequest.SourceFile, encoding));
            }
            else
            {
                throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture,
                                                                  Strings.ReadMeInvalidSourceType, readMeType));
            }
        }
Exemplo n.º 2
0
        private static ReadMeRequest GetReadMeRequest(string sourceType, string markdown, string fileName = "README.md", string url = "")
        {
            var request = new ReadMeRequest()
            {
                SourceType = sourceType
            };

            switch (sourceType)
            {
            case ReadMeService.TypeFile:
                var fileMock = new Mock <HttpPostedFileBase>();
                fileMock.Setup(f => f.FileName).Returns(fileName);
                fileMock.Setup(f => f.ContentLength).Returns(markdown.Length);
                fileMock.Setup(f => f.InputStream).Returns(new MemoryStream(Encoding.UTF8.GetBytes(markdown)));
                request.SourceFile = fileMock.Object;
                break;

            case ReadMeService.TypeWritten:
                request.SourceText = markdown;
                break;

            case ReadMeService.TypeUrl:
                request.SourceUrl = url;
                break;
            }

            return(request);
        }
Exemplo n.º 3
0
        public EditPackageVersionRequest(Package package, PackageEdit pendingMetadata)
        {
            var metadata = pendingMetadata ?? new PackageEdit
            {
                Authors      = package.FlattenedAuthors,
                Copyright    = package.Copyright,
                Description  = package.Description,
                IconUrl      = package.IconUrl,
                LicenseUrl   = package.LicenseUrl,
                ProjectUrl   = package.ProjectUrl,
                ReleaseNotes = package.ReleaseNotes,
                RequiresLicenseAcceptance = package.RequiresLicenseAcceptance,
                Summary = package.Summary,
                Tags    = package.Tags,
                Title   = package.Title,
            };

            Authors      = metadata.Authors;
            Copyright    = metadata.Copyright;
            Description  = metadata.Description;
            IconUrl      = metadata.IconUrl;
            LicenseUrl   = metadata.LicenseUrl;
            ProjectUrl   = metadata.ProjectUrl;
            ReleaseNotes = metadata.ReleaseNotes;
            RequiresLicenseAcceptance = metadata.RequiresLicenseAcceptance;
            Summary      = metadata.Summary;
            Tags         = metadata.Tags;
            VersionTitle = metadata.Title;
            ReadMeState  = metadata.ReadMeState;

            ReadMe = new ReadMeRequest();
        }
Exemplo n.º 4
0
        public EditPackageVersionRequest(PackageMetadata packageMetadata)
        {
            Authors      = packageMetadata.Authors.Flatten();
            Copyright    = packageMetadata.Copyright;
            Description  = packageMetadata.Description;
            IconUrl      = packageMetadata.IconUrl.ToEncodedUrlStringOrNull();
            LicenseUrl   = packageMetadata.LicenseUrl.ToEncodedUrlStringOrNull();
            ProjectUrl   = packageMetadata.ProjectUrl.ToEncodedUrlStringOrNull();
            ReleaseNotes = packageMetadata.ReleaseNotes;
            RequiresLicenseAcceptance = packageMetadata.RequireLicenseAcceptance;
            Summary      = packageMetadata.Summary;
            Tags         = PackageHelper.ParseTags(packageMetadata.Tags);
            VersionTitle = packageMetadata.Title;

            ReadMe = new ReadMeRequest();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Determine if a <see cref="ReadMeRequest"/> has readMe markdown data.
        /// </summary>
        /// <param name="readMeRequest">Request object.</param>
        /// <returns>True if input provided, false otherwise.</returns>
        public bool HasReadMeSource(ReadMeRequest readMeRequest)
        {
            var readMeType = readMeRequest?.SourceType;

            if (TypeWritten.Equals(readMeType, StringComparison.InvariantCultureIgnoreCase))
            {
                // Text (markdown) provided.
                return(!string.IsNullOrWhiteSpace(readMeRequest.SourceText));
            }
            else if (TypeUrl.Equals(readMeType, StringComparison.InvariantCultureIgnoreCase))
            {
                // URL provided.
                return(!string.IsNullOrWhiteSpace(readMeRequest.SourceUrl));
            }
            else if (TypeFile.Equals(readMeType, StringComparison.InvariantCultureIgnoreCase))
            {
                // File upload provided.
                return(readMeRequest.SourceFile != null);
            }

            return(false);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Get the converted HTML from a <see cref="ReadMeRequest"/> request with markdown data.
        /// </summary>
        /// <param name="readMeRequest">Request object.</param>
        /// <returns>HTML from markdown conversion.</returns>
        public async Task <string> GetReadMeHtmlAsync(ReadMeRequest readMeRequest, Encoding encoding)
        {
            var markdown = await GetReadMeMdAsync(readMeRequest, encoding);

            return(GetReadMeHtml(markdown));
        }
Exemplo n.º 7
0
 public EditPackageVersionReadMeRequest()
 {
     ReadMe = new ReadMeRequest();
 }
Exemplo n.º 8
0
        public EditPackageVersionReadMeRequest(PackageEditReadMeState readMeState)
        {
            ReadMeState = readMeState;

            ReadMe = new ReadMeRequest();
        }
Exemplo n.º 9
0
        /// <summary>
        /// Get the converted HTML from a <see cref="ReadMeRequest"/> request with markdown data.
        /// </summary>
        /// <param name="readMeRequest">Request object.</param>
        /// <returns>HTML from markdown conversion.</returns>
        public async Task <RenderedMarkdownResult> GetReadMeHtmlAsync(ReadMeRequest readMeRequest, Encoding encoding)
        {
            var markdown = await GetReadMeMdAsync(readMeRequest, encoding);

            return(_markdownService.GetHtmlFromMarkdown(markdown));
        }