Skip to content

Commit

Permalink
Documentation.md errors are not shown correctly on Edit/Upload pages (#…
Browse files Browse the repository at this point in the history
…5696)

* Properly propagate readme url error to edit/upload readme view

* Cover additional readme error scenarios

* fix build
  • Loading branch information
xavierdecoster authored Apr 10, 2018
1 parent eeeb766 commit cddc6db
Showing 1 changed file with 43 additions and 17 deletions.
60 changes: 43 additions & 17 deletions src/NuGetGallery/Controllers/PackagesController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1248,19 +1248,32 @@ public virtual async Task<JsonResult> Edit(string id, string version, VerifyPack

if (formData.Edit != null)
{
// Update readme.md file, if modified.
var readmeChanged = await _readMeService.SaveReadMeMdIfChanged(
package,
formData.Edit,
Request.ContentEncoding,
commitChanges: true);

if (readmeChanged)
try
{
_telemetryService.TrackPackageReadMeChangeEvent(package, formData.Edit.ReadMe.SourceType, formData.Edit.ReadMeState);
// Update readme.md file, if modified.
var readmeChanged = await _readMeService.SaveReadMeMdIfChanged(
package,
formData.Edit,
Request.ContentEncoding,
commitChanges: true);

// Add an auditing record for the package edit.
await _auditingService.SaveAuditRecordAsync(new PackageAuditRecord(package, AuditedPackageAction.Edit));
if (readmeChanged)
{
_telemetryService.TrackPackageReadMeChangeEvent(package, formData.Edit.ReadMe.SourceType, formData.Edit.ReadMeState);

// Add an auditing record for the package edit.
await _auditingService.SaveAuditRecordAsync(new PackageAuditRecord(package, AuditedPackageAction.Edit));
}
}
catch (ArgumentException ex) when (ex.Message.Contains(Strings.ReadMeUrlHostInvalid))
{
// Thrown when ReadmeUrlHost is invalid.
return Json(HttpStatusCode.BadRequest, new[] { Strings.ReadMeUrlHostInvalid });
}
catch (InvalidOperationException ex)
{
// Thrown when readme max length exceeded, or unexpected file extension.
return Json(HttpStatusCode.BadRequest, new[] { ex.Message });
}
}

Expand Down Expand Up @@ -1585,13 +1598,26 @@ public virtual async Task<JsonResult> VerifyPackage(VerifyPackageRequest formDat

if (formData.Edit != null)
{
if (await _readMeService.SaveReadMeMdIfChanged(
package,
formData.Edit,
Request.ContentEncoding,
commitChanges: false))
try
{
_telemetryService.TrackPackageReadMeChangeEvent(package, formData.Edit.ReadMe.SourceType, formData.Edit.ReadMeState);
if (await _readMeService.SaveReadMeMdIfChanged(
package,
formData.Edit,
Request.ContentEncoding,
commitChanges: false))
{
_telemetryService.TrackPackageReadMeChangeEvent(package, formData.Edit.ReadMe.SourceType, formData.Edit.ReadMeState);
}
}
catch (ArgumentException ex) when (ex.Message.Contains(Strings.ReadMeUrlHostInvalid))
{
// Thrown when ReadmeUrlHost is invalid.
return Json(HttpStatusCode.BadRequest, new[] { Strings.ReadMeUrlHostInvalid });
}
catch (InvalidOperationException ex)
{
// Thrown when readme max length exceeded, or unexpected file extension.
return Json(HttpStatusCode.BadRequest, new[] { ex.Message });
}
}

Expand Down

0 comments on commit cddc6db

Please sign in to comment.