Browse Source

find PRO packages more accurate. closes #8351

pull/10620/head
Alper Ebicoglu 5 years ago
parent
commit
13034bfb91
  1. 20
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/CommercialPackages.cs
  2. 55
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs

20
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/CommercialPackages.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Volo.Abp.Cli.NuGet
{
internal static class CommercialPackages
{
private static readonly HashSet<string> _packages = new()
{
"volo.abp.suite"
//other PRO packages can be added to this list...
};
public static bool IsCommercial(string packageId)
{
return _packages.Contains(packageId.ToLowerInvariant());
}
}
}

55
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs

@ -43,7 +43,7 @@ namespace Volo.Abp.Cli.NuGet
public async Task<bool> PackageExistAsync(string packageId, string version = null)
{
var versionList = await GetPackageVersionListAsync(packageId, false, true);
var versionList = await GetPackageVersionListAsync(packageId, false);
if (versionList == null)
{
@ -60,7 +60,7 @@ namespace Volo.Abp.Cli.NuGet
public async Task<SemanticVersion> GetLatestVersionOrNullAsync(string packageId, bool includeNightly = false, bool includeReleaseCandidates = false)
{
var versionList = await GetPackageVersionListAsync(packageId, includeNightly, includeReleaseCandidates);
var versionList = await GetPackageVersionListAsync(packageId, includeNightly);
if (versionList == null)
{
@ -95,19 +95,45 @@ namespace Volo.Abp.Cli.NuGet
}
public async Task<List<string>> GetPackageVersionListAsync(string packageId, bool includeNightly = false,
bool includeReleaseCandidates = false)
public async Task<List<string>> GetPackageVersionListAsync(string packageId, bool includeNightly = false)
{
if (includeNightly)
{
var includeNightlyUrl = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json";
return await GetPackageVersionListFromUrlAsync(includeNightlyUrl);
return await GetPackageVersionsFromMyGet(packageId);
}
var nugetUrl = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
var commercialUrl = await GetNuGetUrlForCommercialPackage(packageId);
if (CommercialPackages.IsCommercial(packageId))
{
return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId);
}
else
{
var packagesFromNugetOrg = await GetPackageVersionsFromNuGetOrgAsync(packageId);
if (packagesFromNugetOrg != null)
{
return packagesFromNugetOrg;
}
}
return (await GetPackageVersionListFromUrlAsync(nugetUrl)) ?? (await GetPackageVersionListFromUrlAsync(commercialUrl));
return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId);
}
private async Task<List<string>> GetPackageVersionsFromAbpCommercialNuGetAsync(string packageId)
{
var url = await GetNuGetUrlForCommercialPackage(packageId);
return await GetPackageVersionListFromUrlAsync(url);
}
private async Task<List<string>> GetPackageVersionsFromNuGetOrgAsync(string packageId)
{
var url = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
return await GetPackageVersionListFromUrlAsync(url);
}
private async Task<List<string>> GetPackageVersionsFromMyGet(string packageId)
{
var url = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json";
return await GetPackageVersionListFromUrlAsync(url);
}
private async Task<List<string>> GetPackageVersionListFromUrlAsync(string url)
@ -122,7 +148,16 @@ namespace Volo.Abp.Cli.NuGet
logger: Logger
))
{
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
if (responseMessage.StatusCode == System.Net.HttpStatusCode.NotFound)
{
//the package doesn't exist...
return null;
}
else
{
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
}
var responseContent = await responseMessage.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<NuGetVersionResultDto>(responseContent).Versions;
}

Loading…
Cancel
Save