feat: refactor HTTP client setup for Github and Forgejo services

- Centralized HTTP client configuration for `GithubService` and `ForgejoService` using `AddHttpClient`.
- Enhanced maintainability by moving Forgejo token and base URL setup into DI-configured HTTP clients.
- Fixed `forgejoInstance` validation logic and adjusted release selection to prioritize the first non-prerelease.
This commit is contained in:
mahdium committed 2026-11-04 16:55:58 +03:30
1 parent 7ac8a5af62
commit 3b644de2d5
5 files changed
+20 -15

No files matched your search

+16 -10
View File
@@ -1,4 +1,5 @@
using ForgejoReleaseSync.Services;
using System.Net.Http.Headers;
using ForgejoReleaseSync.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
@@ -11,12 +12,19 @@ var repositoryConfig = await RepoConfigLoader.LoadConfigAsync(
config.RepositoryConfigFilePath);
builder.Services.AddSingleton(repositoryConfig);
var client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", "ForgejoReleaseSync");
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.Timeout = TimeSpan.FromMinutes(3);
client.MaxResponseContentBufferSize = 1024 * 1024 * 1;
builder.Services.AddSingleton(client);
builder.Services.AddHttpClient<GithubService>(client =>
{
client.BaseAddress = new Uri("https://api.github.com/");
client.DefaultRequestHeaders.UserAgent.ParseAdd("ForgejoReleaseSync");
client.DefaultRequestHeaders.Accept.ParseAdd("application/vnd.github+json");
});
builder.Services.AddHttpClient<ForgejoService>(client =>
{
client.BaseAddress = new Uri(config.ForgejoInstacne);
client.DefaultRequestHeaders.UserAgent.ParseAdd("ForgejoReleaseSync");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("token", config.ForgejoToken);
});
builder.Services.AddSingleton<ReleaseAssetDownloadService>();
builder.Services.AddSingleton<GithubService>();
@@ -29,6 +37,4 @@ using var scope = app.Services.CreateScope();
await scope.ServiceProvider
.GetRequiredService<SyncService>()
.Sync();
await app.RunAsync();
.Sync();