Browse Source

Merge pull request #19382 from abpframework/PackageVersionCheckerService

Replace `Newtonsoft` with `System.Text.Json` in `PackageVersionCheckerService`.
pull/19383/head
Engincan VESKE 3 years ago
committed by GitHub
parent
commit
a59e43cae1
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 44
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs

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

@ -1,5 +1,5 @@
using System; using System;
using Newtonsoft.Json; using System.Collections.Concurrent;
using NuGet.Versioning; using NuGet.Versioning;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -14,7 +14,7 @@ using Volo.Abp.Cli.ProjectModification;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Json; using Volo.Abp.Json;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using System.Net.Mail; using System.Text.Json.Serialization;
namespace Volo.Abp.Cli.Version; namespace Volo.Abp.Cli.Version;
@ -66,7 +66,7 @@ public class PackageVersionCheckerService : ITransientDependency
{ {
return await GetLatestStableVersionFromGithubAsync(); return await GetLatestStableVersionFromGithubAsync();
} }
var versionList = await GetPackageVersionListAsync(packageId, includeNightly); var versionList = await GetPackageVersionListAsync(packageId, includeNightly);
if (versionList == null) if (versionList == null)
{ {
@ -79,8 +79,8 @@ public class PackageVersionCheckerService : ITransientDependency
.Select(SemanticVersion.Parse) .Select(SemanticVersion.Parse)
.OrderByDescending(v => v, new VersionComparer()).ToList(); .OrderByDescending(v => v, new VersionComparer()).ToList();
return versions.Any() return versions.Any()
? new LatestVersionInfo(versions.Max()) ? new LatestVersionInfo(versions.Max())
: null; : null;
} }
@ -96,7 +96,7 @@ public class PackageVersionCheckerService : ITransientDependency
{ {
return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId); return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId);
} }
return await GetPackageVersionsFromNuGetOrgAsync(packageId) ?? new List<string>(); return await GetPackageVersionsFromNuGetOrgAsync(packageId) ?? new List<string>();
} }
@ -113,21 +113,32 @@ public class PackageVersionCheckerService : ITransientDependency
: null; : null;
} }
private static ConcurrentDictionary<string, bool> CommercialPackagesCache { get; } = new ();
private async Task<bool> IsCommercialPackageAsync(string packageId) private async Task<bool> IsCommercialPackageAsync(string packageId)
{ {
if (CommercialPackagesCache.TryGetValue(packageId, out var isCommercial))
{
return isCommercial;
}
if (CommercialPackages.IsCommercial(packageId)) if (CommercialPackages.IsCommercial(packageId))
{ {
CommercialPackagesCache.TryAdd(packageId, true);
return true; return true;
} }
await SetApiKeyResultAsync(); await SetApiKeyResultAsync();
if (_apiKeyResult?.ApiKey == null) if (_apiKeyResult?.ApiKey == null)
{ {
CommercialPackagesCache.TryAdd(packageId, false);
return false; return false;
} }
var searchUrl = CliUrls.GetNuGetPackageSearchUrl(_apiKeyResult.ApiKey, packageId); var searchUrl = CliUrls.GetNuGetPackageSearchUrl(_apiKeyResult.ApiKey, packageId);
return await HasAnyPackageAsync(searchUrl, packageId); isCommercial = await HasAnyPackageAsync(searchUrl, packageId);
CommercialPackagesCache.TryAdd(packageId, isCommercial);
return isCommercial;
} }
private async Task<bool> HasAnyPackageAsync(string url, string packageId) private async Task<bool> HasAnyPackageAsync(string url, string packageId)
@ -147,7 +158,7 @@ public class PackageVersionCheckerService : ITransientDependency
var responseContent = await responseMessage.Content.ReadAsStringAsync(); var responseContent = await responseMessage.Content.ReadAsStringAsync();
var nugetSearchResult = JsonSerializer.Deserialize<NuGetSearchResultDto>(responseContent); var nugetSearchResult = JsonSerializer.Deserialize<NuGetSearchResultDto>(responseContent);
return nugetSearchResult.TotalHits > 0 && nugetSearchResult.Packages.Any(package => package.Id.ToLowerInvariant() == packageId.ToLowerInvariant()); return nugetSearchResult.TotalHits > 0 && nugetSearchResult.Data.Any(package => package.Id.ToLowerInvariant() == packageId.ToLowerInvariant());
} }
} }
catch (Exception) catch (Exception)
@ -191,7 +202,7 @@ public class PackageVersionCheckerService : ITransientDependency
//the package doesn't exist... //the package doesn't exist...
return new List<string>(); return new List<string>();
} }
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage); await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var responseContent = await responseMessage.Content.ReadAsStringAsync(); var responseContent = await responseMessage.Content.ReadAsStringAsync();
@ -231,7 +242,7 @@ public class PackageVersionCheckerService : ITransientDependency
var content = await responseMessage.Content.ReadAsStringAsync(); var content = await responseMessage.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<List<LatestStableVersionResult>>(content); var result = JsonSerializer.Deserialize<List<LatestStableVersionResult>>(content);
return result.FirstOrDefault(x => x.Type.ToLowerInvariant() == "stable"); return result.FirstOrDefault(x => x.Type.ToLowerInvariant() == "stable");
} }
} }
@ -243,25 +254,20 @@ public class PackageVersionCheckerService : ITransientDependency
public class NuGetSearchResultDto public class NuGetSearchResultDto
{ {
[JsonProperty("totalHits")]
public int TotalHits { get; set; } public int TotalHits { get; set; }
[JsonProperty("data")] public NuGetSearchResultPackagesDto[] Data { get; set; }
public NuGetSearchResultPackagesDto[] Packages { get; set; }
} }
public class NuGetSearchResultPackagesDto public class NuGetSearchResultPackagesDto
{ {
[JsonProperty("id")]
public string Id { get; set; } public string Id { get; set; }
[JsonProperty("version")]
public string Version { get; set; } public string Version { get; set; }
} }
public class NuGetVersionResultDto public class NuGetVersionResultDto
{ {
[JsonProperty("versions")]
public List<string> Versions { get; set; } public List<string> Versions { get; set; }
} }
@ -272,7 +278,7 @@ public class PackageVersionCheckerService : ITransientDependency
public DateTime? ReleaseDate { get; set; } public DateTime? ReleaseDate { get; set; }
public string Type { get; set; } public string Type { get; set; }
public string Message { get; set; } public string Message { get; set; }
} }
} }

Loading…
Cancel
Save