/// <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)); } }
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); }
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(); }
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(); }
/// <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); }
/// <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)); }
public EditPackageVersionReadMeRequest() { ReadMe = new ReadMeRequest(); }
public EditPackageVersionReadMeRequest(PackageEditReadMeState readMeState) { ReadMeState = readMeState; ReadMe = new ReadMeRequest(); }
/// <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)); }