@@ -165,15 +165,7 @@ public virtual async Task<ActionResult> UploadPackage()
165165 {
166166 return View ( model ) ;
167167 }
168-
169- var validationResult = await _packageUploadService . ValidateBeforeGeneratePackageAsync ( package ) ;
170- var validationErrorMessage = GetErrorMessageOrNull ( validationResult ) ;
171- if ( validationErrorMessage != null )
172- {
173- TempData [ "Message" ] = validationErrorMessage ;
174- return View ( model ) ;
175- }
176-
168+
177169 try
178170 {
179171 packageMetadata = PackageMetadata . FromNuspecReader (
@@ -188,6 +180,14 @@ public virtual async Task<ActionResult> UploadPackage()
188180 return View ( model ) ;
189181 }
190182
183+ var validationResult = await _packageUploadService . ValidateBeforeGeneratePackageAsync ( package , packageMetadata ) ;
184+ var validationErrorMessage = GetErrorMessageOrNull ( validationResult ) ;
185+ if ( validationErrorMessage != null )
186+ {
187+ TempData [ "Message" ] = validationErrorMessage ;
188+ return View ( model ) ;
189+ }
190+
191191 var existingPackageRegistration = _packageService . FindPackageRegistrationById ( packageMetadata . Id ) ;
192192 bool isAllowed ;
193193 IEnumerable < User > accountsAllowedOnBehalfOf = Enumerable . Empty < User > ( ) ;
@@ -249,6 +249,7 @@ public virtual async Task<JsonResult> UploadPackage(HttpPostedFileBase uploadFil
249249 // If the current user doesn't have the rights to upload the package, the package upload will be rejected by submitting the form.
250250 // Related: https://github.com/NuGet/NuGetGallery/issues/5043
251251 IEnumerable < User > accountsAllowedOnBehalfOf = new [ ] { currentUser } ;
252+ PackageMetadata packageMetadata ;
252253
253254 using ( var uploadStream = uploadFile . InputStream )
254255 {
@@ -291,7 +292,7 @@ public virtual async Task<JsonResult> UploadPackage(HttpPostedFileBase uploadFil
291292 }
292293
293294 NuspecReader nuspec ;
294- var errors = ManifestValidator . Validate ( packageArchiveReader . GetNuspec ( ) , out nuspec ) . ToArray ( ) ;
295+ var errors = ManifestValidator . Validate ( packageArchiveReader . GetNuspec ( ) , out nuspec , out packageMetadata ) . ToArray ( ) ;
295296 if ( errors . Length > 0 )
296297 {
297298 var errorStrings = new List < string > ( ) ;
@@ -385,7 +386,6 @@ await _packageDeleteService.HardDeletePackagesAsync(
385386 await _uploadFileService . SaveUploadFileAsync ( currentUser . Key , uploadStream ) ;
386387 }
387388
388- PackageMetadata packageMetadata ;
389389 IReadOnlyList < string > warnings ;
390390 using ( Stream uploadedFile = await _uploadFileService . GetUploadFileAsync ( currentUser . Key ) )
391391 {
@@ -413,7 +413,7 @@ await _packageDeleteService.HardDeletePackagesAsync(
413413 return Json ( HttpStatusCode . BadRequest , new [ ] { ex . GetUserSafeMessage ( ) } ) ;
414414 }
415415
416- var validationResult = await _packageUploadService . ValidateBeforeGeneratePackageAsync ( package ) ;
416+ var validationResult = await _packageUploadService . ValidateBeforeGeneratePackageAsync ( package , packageMetadata ) ;
417417 var validationJsonResult = GetJsonResultOrNull ( validationResult ) ;
418418 if ( validationJsonResult != null )
419419 {
@@ -1593,7 +1593,7 @@ public virtual async Task<JsonResult> VerifyPackage(VerifyPackageRequest formDat
15931593 }
15941594
15951595 // Perform all the validations we can before adding the package to the entity context.
1596- var beforeValidationResult = await _packageUploadService . ValidateBeforeGeneratePackageAsync ( nugetPackage ) ;
1596+ var beforeValidationResult = await _packageUploadService . ValidateBeforeGeneratePackageAsync ( nugetPackage , packageMetadata ) ;
15971597 var beforeValidationJsonResult = GetJsonResultOrNull ( beforeValidationResult ) ;
15981598 if ( beforeValidationJsonResult != null )
15991599 {
0 commit comments