refactor: replace GetPublishedVersions with GetPluginVersionsForDownload in download flow

This commit is contained in:
thgO.O
2025-07-29 23:03:17 -03:00
parent 739e1f5732
commit bacb6502a1
2 changed files with 13 additions and 5 deletions

View File

@@ -55,15 +55,13 @@ namespace BTCPayServer.Plugins
this.httpClient = httpClient; this.httpClient = httpClient;
} }
static JsonSerializerSettings serializerSettings = new() { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() }; static JsonSerializerSettings serializerSettings = new() { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() };
public async Task<PublishedVersion[]> GetPublishedVersions(string btcpayVersion, bool includePreRelease, string searchPluginName = null, string searchPluginIdentifier = null, bool? includeAllVersions = null) public async Task<PublishedVersion[]> GetPublishedVersions(string btcpayVersion, bool includePreRelease, string searchPluginName = null, bool? includeAllVersions = null)
{ {
var queryString = $"?includePreRelease={includePreRelease}"; var queryString = $"?includePreRelease={includePreRelease}";
if (btcpayVersion is not null) if (btcpayVersion is not null)
queryString += $"&btcpayVersion={btcpayVersion}"; queryString += $"&btcpayVersion={btcpayVersion}";
if (searchPluginName is not null) if (searchPluginName is not null)
queryString += $"&searchPluginName={searchPluginName}"; queryString += $"&searchPluginName={searchPluginName}";
if (searchPluginIdentifier is not null)
queryString += $"&searchPluginIdentifier={searchPluginIdentifier}";
if (includeAllVersions is not null) if (includeAllVersions is not null)
queryString += $"&includeAllVersions={includeAllVersions}"; queryString += $"&includeAllVersions={includeAllVersions}";
var result = await httpClient.GetStringAsync($"api/v1/plugins{queryString}"); var result = await httpClient.GetStringAsync($"api/v1/plugins{queryString}");
@@ -81,5 +79,15 @@ namespace BTCPayServer.Plugins
return null; return null;
} }
} }
public async Task<PublishedVersion[]> GetPluginVersionsForDownload(string identifier, string btcpayVersion, bool includePreRelease = false, bool includeAllVersions = false)
{
var queryString = $"?btcpayVersion={btcpayVersion}&includePreRelease={includePreRelease}&includeAllVersions={includeAllVersions}";
var url = $"api/v1/plugins/{identifier}{queryString}";
var result = await httpClient.GetStringAsync(url);
return JsonConvert.DeserializeObject<PublishedVersion[]>(result, serializerSettings)
?? throw new InvalidOperationException();
}
} }
} }

View File

@@ -75,8 +75,8 @@ namespace BTCPayServer.Plugins
if (version is null) if (version is null)
{ {
string btcpayVersion = Env.Version.TrimStart('v').Split('+')[0]; string btcpayVersion = Env.Version.TrimStart('v').Split('+')[0];
var versions = await _pluginBuilderClient.GetPublishedVersions( var versions = await _pluginBuilderClient.GetPluginVersionsForDownload(pluginIdentifier,
btcpayVersion, _policiesSettings.PluginPreReleases, searchPluginIdentifier: pluginIdentifier, includeAllVersions: true); btcpayVersion, _policiesSettings.PluginPreReleases, includeAllVersions: true);
var potentialVersions = versions var potentialVersions = versions
.Select(v => v.ManifestInfo?.ToObject<AvailablePlugin>()) .Select(v => v.ManifestInfo?.ToObject<AvailablePlugin>())
.Where(v => v is not null) .Where(v => v is not null)