- 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.
40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
using System.Net.Http.Headers;
|
|
using ForgejoReleaseSync.Services;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
var builder = Host.CreateApplicationBuilder(args);
|
|
|
|
var config = AppConfigLoader.LoadConfigFromEnv();
|
|
builder.Services.AddSingleton(config);
|
|
|
|
var repositoryConfig = await RepoConfigLoader.LoadConfigAsync(
|
|
config.RepositoryConfigFilePath);
|
|
builder.Services.AddSingleton(repositoryConfig);
|
|
|
|
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>();
|
|
builder.Services.AddSingleton<ForgejoService>();
|
|
builder.Services.AddSingleton<SyncService>();
|
|
|
|
var app = builder.Build();
|
|
|
|
using var scope = app.Services.CreateScope();
|
|
|
|
await scope.ServiceProvider
|
|
.GetRequiredService<SyncService>()
|
|
.Sync(); |