public async Task <FindBestPackageVersionMatchOutput> FindBestPackageVersionMatchAsync( FindBestPackageVersionMatchInput input, CancellationToken cancellationToken) { var output = new FindBestPackageVersionMatchOutput { InputStatus = InputStatus.Missing, Input = input, }; if (input == null) { return(output); } var validatedPackageId = InputValidator.PackageId(input.PackageId); var validatedVersionRange = InputValidator.VersionRange(input.VersionRange); if (validatedPackageId.IsMissing || validatedPackageId.IsMissing) { return(output); } if (validatedVersionRange.IsInvalid || validatedVersionRange.IsInvalid) { output.InputStatus = InputStatus.Invalid; return(output); } IEnumerable <NuGetVersion> versions; HashSet <NuGetVersion> listed; using (var cache = new SourceCacheContext()) { var resource = await _metadataResourceTask; var metadata = await resource.GetMetadataAsync( input.PackageId, includePrerelease : true, includeUnlisted : true, cache, _nuGetLogger, cancellationToken); listed = new HashSet <NuGetVersion>(metadata.Where(x => x.IsListed).Select(x => x.Identity.Version)); versions = metadata.Select(x => x.Identity.Version).ToList(); } output.InputStatus = InputStatus.Valid; output.PackageId = validatedPackageId.Data; output.ShowUnlisted = input.ShowUnlisted; output.Result = GetBestVersionMatch(validatedVersionRange.Data, versions.ToList(), listed, output.ShowUnlisted); return(output); }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var validated = InputValidator.VersionRange(value); if (validated.IsValid) { return(ValidationResult.Success); } else { return(new ValidationResult(validated.ErrorMessage, new[] { validationContext.MemberName })); } }
public FindBestVersionMatchOutput FindBestVersionMatch(FindBestVersionMatchInput input) { var output = new FindBestVersionMatchOutput { InputStatus = InputStatus.Missing, Input = input, }; if (input == null) { return(output); } var validatedVersionRange = InputValidator.VersionRange(input.VersionRange); var validatedVersions = InputValidator.Versions(input.Versions); if (validatedVersionRange.IsMissing || validatedVersions.IsMissing) { return(output); } if (validatedVersionRange.IsInvalid || validatedVersions.IsInvalid) { output.InputStatus = InputStatus.Invalid; return(output); } output.InputStatus = InputStatus.Valid; output.Result = GetBestVersionMatch( validatedVersionRange.Data, validatedVersions.Data, listed: null, showUnlisted: true); return(output); }