Browse Source

Replace `Newtonsoft` with `System.Text.Json` in `PackageVersionCheckerService`.

pull/19382/head
maliming 2 years ago
parent
commit
4672bad2cd
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  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 Newtonsoft.Json;
using System.Collections.Concurrent;
using NuGet.Versioning;
using System.Collections.Generic;
using System.Linq;
@ -14,7 +14,7 @@ using Volo.Abp.Cli.ProjectModification;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
using Volo.Abp.Threading;
using System.Net.Mail;
using System.Text.Json.Serialization;
namespace Volo.Abp.Cli.Version;
@ -66,7 +66,7 @@ public class PackageVersionCheckerService : ITransientDependency
{
return await GetLatestStableVersionFromGithubAsync();
}
var versionList = await GetPackageVersionListAsync(packageId, includeNightly);
if (versionList == null)
{
@ -79,8 +79,8 @@ public class PackageVersionCheckerService : ITransientDependency
.Select(SemanticVersion.Parse)
.OrderByDescending(v => v, new VersionComparer()).ToList();
return versions.Any()
? new LatestVersionInfo(versions.Max())
return versions.Any()
? new LatestVersionInfo(versions.Max())
: null;
}
@ -96,7 +96,7 @@ public class PackageVersionCheckerService : ITransientDependency
{
return await GetPackageVersionsFromAbpCommercialNuGetAsync(packageId);
}
return await GetPackageVersionsFromNuGetOrgAsync(packageId) ?? new List<string>();
}
@ -113,21 +113,32 @@ public class PackageVersionCheckerService : ITransientDependency
: null;
}
private static ConcurrentDictionary<string, bool> CommercialPackagesCache { get; } = new ();
private async Task<bool> IsCommercialPackageAsync(string packageId)
{
if (CommercialPackagesCache.TryGetValue(packageId, out var isCommercial))
{
return isCommercial;
}
if (CommercialPackages.IsCommercial(packageId))
{
CommercialPackagesCache.TryAdd(packageId, true);
return true;
}
await SetApiKeyResultAsync();
if (_apiKeyResult?.ApiKey == null)
{
CommercialPackagesCache.TryAdd(packageId, false);
return false;
}
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)
@ -147,7 +158,7 @@ public class PackageVersionCheckerService : ITransientDependency
var responseContent = await responseMessage.Content.ReadAsStringAsync();
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)
@ -191,7 +202,7 @@ public class PackageVersionCheckerService : ITransientDependency
//the package doesn't exist...
return new List<string>();
}
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var responseContent = await responseMessage.Content.ReadAsStringAsync();
@ -231,7 +242,7 @@ public class PackageVersionCheckerService : ITransientDependency
var content = await responseMessage.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<List<LatestStableVersionResult>>(content);
return result.FirstOrDefault(x => x.Type.ToLowerInvariant() == "stable");
}
}
@ -243,25 +254,20 @@ public class PackageVersionCheckerService : ITransientDependency
public class NuGetSearchResultDto
{
[JsonProperty("totalHits")]
public int TotalHits { get; set; }
[JsonProperty("data")]
public NuGetSearchResultPackagesDto[] Packages { get; set; }
public NuGetSearchResultPackagesDto[] Data { get; set; }
}
public class NuGetSearchResultPackagesDto
public class NuGetSearchResultPackagesDto
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("version")]
public string Version { get; set; }
}
public class NuGetVersionResultDto
{
[JsonProperty("versions")]
public List<string> Versions { get; set; }
}
@ -272,7 +278,7 @@ public class PackageVersionCheckerService : ITransientDependency
public DateTime? ReleaseDate { get; set; }
public string Type { get; set; }
public string Message { get; set; }
}
}

Loading…
Cancel
Save