Browse Source

Merge branch 'dev' into Onur/blogging-module-enhancement

pull/16503/head
Onur Pıçakcı 3 years ago
parent
commit
2d1b6820a6
  1. 5
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
  2. 4
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/CommercialPackages.cs
  3. 70
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs

5
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs

@ -29,6 +29,11 @@ public static class CliUrls
return $"{NuGetRootPath}{apiKey}/v3/package/{packageId}/index.json";
}
public static string GetNuGetPackageSearchUrl(string apiKey, string packageId)
{
return $"{NuGetRootPath}{apiKey}/v3/search?q={packageId}";
}
public static string GetApiDefinitionUrl(string url, ApplicationApiDescriptionModelRequestDto model = null)
{
url = url.EnsureEndsWith('/');

4
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/CommercialPackages.cs

@ -4,9 +4,9 @@ using System.Text;
namespace Volo.Abp.Cli.Version;
internal static class CommercialPackages
static internal class CommercialPackages
{
private static readonly HashSet<string> Packages = new()
private readonly static HashSet<string> Packages = new()
{
"volo.abp.suite"
//other PRO packages can be added to this list...

70
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs

@ -109,20 +109,54 @@ public class PackageVersionCheckerService : ITransientDependency
return await GetPackageVersionsFromMyGet(packageId);
}
if (CommercialPackages.IsCommercial(packageId))
if (await IsCommercialPackageAsync(packageId))
{
return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId);
}
else
return await GetPackageVersionsFromNuGetOrgAsync(packageId) ?? new List<string>();
}
private async Task<bool> IsCommercialPackageAsync(string packageId)
{
if (CommercialPackages.IsCommercial(packageId))
{
return true;
}
await SetApiKeyResultAsync();
if (_apiKeyResult?.ApiKey == null)
{
var packagesFromNugetOrg = await GetPackageVersionsFromNuGetOrgAsync(packageId);
if (packagesFromNugetOrg != null)
return false;
}
var searchUrl = CliUrls.GetNuGetPackageSearchUrl(_apiKeyResult.ApiKey, packageId);
return await HasAnyPackageAsync(searchUrl);
}
private async Task<bool> HasAnyPackageAsync(string url)
{
try
{
var client = _cliHttpClientFactory.CreateClient(needsAuthentication: false);
using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
url,
cancellationToken: CancellationTokenProvider.Token,
logger: Logger
))
{
return packagesFromNugetOrg;
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var responseContent = await responseMessage.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<NuGetSearchResultDto>(responseContent).TotalHits > 0;
}
}
return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId);
catch (Exception)
{
return false;
}
}
private async Task<List<string>> GetPackageVersionsFromAbpCommercialNuGetAsync(string packageId)
@ -175,19 +209,15 @@ public class PackageVersionCheckerService : ITransientDependency
private async Task<string> GetNuGetUrlForCommercialPackage(string packageId)
{
if (_apiKeyResult == null)
{
_apiKeyResult = await _apiKeyService.GetApiKeyOrNullAsync();
if (_apiKeyResult == null)
{
return null;
}
}
await SetApiKeyResultAsync();
return CliUrls.GetNuGetPackageInfoUrl(_apiKeyResult.ApiKey, packageId);
}
private async Task SetApiKeyResultAsync()
{
_apiKeyResult ??= await _apiKeyService.GetApiKeyOrNullAsync();
}
private async Task<LatestStableVersionResult> GetLatestStableVersionOrNullAsync()
{
try
@ -214,6 +244,12 @@ public class PackageVersionCheckerService : ITransientDependency
}
}
public class NuGetSearchResultDto
{
[JsonProperty("totalHits")]
public int TotalHits { get; set; }
}
public class NuGetVersionResultDto
{
[JsonProperty("versions")]

Loading…
Cancel
Save