Some improvements
This commit is contained in:
@@ -15,7 +15,7 @@ public static class ConfigurationExtension
|
||||
public static IConfigurationBuilder EnsureGiteaConfig(this IConfigurationBuilder builder)
|
||||
{
|
||||
var configuration = builder.Build();
|
||||
var requiredKeys = new[] { "URL", "OWNER", "TYPE", "NAME", "API_TOKEN" };
|
||||
var requiredKeys = new[] { "URL", "OWNER", "TYPES", "NAME", "API_TOKEN" };
|
||||
|
||||
foreach (var key in requiredKeys)
|
||||
{
|
||||
|
||||
@@ -11,7 +11,7 @@ public class GiteaPackageService(
|
||||
: IGiteaPackageService
|
||||
{
|
||||
private string GetBaseUrl() =>
|
||||
$"{configuration["URL"]?.TrimEnd('/')}/packages/{configuration["OWNER"]}/{configuration["TYPE"]}/{configuration["NAME"]}";
|
||||
$"{configuration["URL"]?.TrimEnd('/')}/packages/{configuration["OWNER"]}";
|
||||
|
||||
private void AddAuthorizationHeader(HttpRequestMessage request)
|
||||
{
|
||||
@@ -28,32 +28,59 @@ public class GiteaPackageService(
|
||||
{
|
||||
var baseUrl = GetBaseUrl();
|
||||
var allPackages = new List<GiteaPackage>();
|
||||
var page = 1;
|
||||
|
||||
// Parse comma-separated types
|
||||
var types = (configuration["TYPE"] ?? "")
|
||||
.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
|
||||
while (true)
|
||||
if (types.Length == 0)
|
||||
{
|
||||
var url = $"{baseUrl}?page={page}";
|
||||
logger.LogInformation("Fetching packages from Gitea: {Url}", url);
|
||||
logger.LogWarning("No package types configured");
|
||||
return allPackages;
|
||||
}
|
||||
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, url);
|
||||
AddAuthorizationHeader(request);
|
||||
// Parse comma-separated names
|
||||
var names = (configuration["NAMES"] ?? "")
|
||||
.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
|
||||
var response = await httpClient.SendAsync(request, cancellationToken);
|
||||
response.EnsureSuccessStatusCode();
|
||||
if (names.Length == 0)
|
||||
{
|
||||
logger.LogWarning("No package names configured");
|
||||
return allPackages;
|
||||
}
|
||||
|
||||
var packages =
|
||||
await response.Content.ReadFromJsonAsync<List<GiteaPackage>>(cancellationToken: cancellationToken)
|
||||
?? [];
|
||||
|
||||
if (packages.Count == 0)
|
||||
foreach (var type in types)
|
||||
{
|
||||
foreach (var name in names)
|
||||
{
|
||||
break;
|
||||
var page = 1;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var url = $"{baseUrl}/{type}/{name}?page={page}";
|
||||
logger.LogInformation("Fetching packages from Gitea: {Url}", url);
|
||||
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, url);
|
||||
AddAuthorizationHeader(request);
|
||||
|
||||
var response = await httpClient.SendAsync(request, cancellationToken);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
var packages =
|
||||
await response.Content.ReadFromJsonAsync<List<GiteaPackage>>(cancellationToken: cancellationToken)
|
||||
?? [];
|
||||
|
||||
if (packages.Count == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
allPackages.AddRange(packages);
|
||||
logger.LogInformation("Fetched {Count} packages from page {Page}", packages.Count, page);
|
||||
|
||||
page++;
|
||||
}
|
||||
}
|
||||
|
||||
allPackages.AddRange(packages);
|
||||
logger.LogInformation("Fetched {Count} packages from page {Page}", packages.Count, page);
|
||||
|
||||
page++;
|
||||
}
|
||||
|
||||
logger.LogInformation("Successfully fetched {Count} packages in total", allPackages.Count);
|
||||
@@ -76,7 +103,7 @@ public class GiteaPackageService(
|
||||
try
|
||||
{
|
||||
var baseUrl = GetBaseUrl();
|
||||
var url = $"{baseUrl}/{package.Version}";
|
||||
var url = $"{baseUrl}/{package.Type}/{package.Name}/{package.Version}";
|
||||
logger.LogInformation("Deleting package {PackageName} (ID: {PackageId}) from Gitea",
|
||||
package.Name, package.Id);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user