diff --git a/NuKeeper.Tests/Nuget/Api/ApiPackageLookupTests.cs b/NuKeeper.Tests/Nuget/Api/ApiPackageLookupTests.cs index f3b4c4321..39b31553a 100644 --- a/NuKeeper.Tests/Nuget/Api/ApiPackageLookupTests.cs +++ b/NuKeeper.Tests/Nuget/Api/ApiPackageLookupTests.cs @@ -30,7 +30,6 @@ public async Task WellKnownPackageName_ShouldReturnResult() Assert.That(package.Identity.Id, Is.EqualTo("Newtonsoft.Json")); } - [Test] public async Task AmbigousPackageName_ShouldReturnCorrectResult() { diff --git a/NuKeeper/NuGet/Api/ApiPackageLookup.cs b/NuKeeper/NuGet/Api/ApiPackageLookup.cs index 73b968fb4..12a533413 100644 --- a/NuKeeper/NuGet/Api/ApiPackageLookup.cs +++ b/NuKeeper/NuGet/Api/ApiPackageLookup.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using NuGet.Common; using NuGet.Configuration; using NuGet.Protocol; using NuGet.Protocol.Core.Types; @@ -11,18 +12,21 @@ namespace NuKeeper.NuGet.Api { public class ApiPackageLookup : IApiPackageLookup { + private readonly ILogger _logger = new ConsoleLogger(); + public async Task LookupLatest(string packageName) { var versions = await Lookup(packageName); - return versions.FirstOrDefault(); + return versions + .OrderByDescending(p => p?.Identity?.Version) + .FirstOrDefault(); } private async Task> Lookup(string packageName) { var sourceRepository = BuildSourceRepository(); - var searchResource = await sourceRepository.GetResourceAsync(); - - return await SearchForPackages(searchResource, packageName); + var metadataResource = await sourceRepository.GetResourceAsync(); + return await FindPackage(metadataResource, packageName); } private static SourceRepository BuildSourceRepository() @@ -35,15 +39,11 @@ private static SourceRepository BuildSourceRepository() return new SourceRepository(packageSource, providers); } - private static async Task> SearchForPackages(PackageSearchResource searchResource, string packageName) - { - var logger = new ConsoleLogger(); - var filter = new SearchFilter(false); - - var packages = await searchResource - .SearchAsync(packageName, filter, 0, 10, logger, CancellationToken.None); - - return packages; + private async Task> FindPackage( + PackageMetadataResource metadataResource, string packageName) + { + return await metadataResource + .GetMetadataAsync(packageName, false, false, _logger, CancellationToken.None); } } }