diff --git a/ForgejoReleaseSync.csproj b/ForgejoReleaseSync.csproj
index 43ab138..cae8a76 100644
--- a/ForgejoReleaseSync.csproj
+++ b/ForgejoReleaseSync.csproj
@@ -13,6 +13,7 @@
+
diff --git a/Program.cs b/Program.cs
index e38f857..d47fcbd 100644
--- a/Program.cs
+++ b/Program.cs
@@ -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(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(client =>
+{
+ client.BaseAddress = new Uri(config.ForgejoInstacne);
+ client.DefaultRequestHeaders.UserAgent.ParseAdd("ForgejoReleaseSync");
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("token", config.ForgejoToken);
+});
builder.Services.AddSingleton();
builder.Services.AddSingleton();
@@ -29,6 +37,4 @@ using var scope = app.Services.CreateScope();
await scope.ServiceProvider
.GetRequiredService()
- .Sync();
-
-await app.RunAsync();
\ No newline at end of file
+ .Sync();
\ No newline at end of file
diff --git a/Services/AppConfig.cs b/Services/AppConfig.cs
index fda9e9c..32eee1b 100644
--- a/Services/AppConfig.cs
+++ b/Services/AppConfig.cs
@@ -24,7 +24,7 @@ public static class AppConfigLoader
if (string.IsNullOrEmpty(forgejoInstance))
throw new Exception("FORGEJO_INSTANCE environment variable is required");
- if (!string.IsNullOrEmpty(forgejoToken) && forgejoInstance.EndsWith('/'))
+ if (!string.IsNullOrEmpty(forgejoInstance) && forgejoInstance.EndsWith('/'))
forgejoInstance = forgejoInstance[..^1];
if (string.IsNullOrEmpty(forgejoToken))
diff --git a/Services/ForgejoService.cs b/Services/ForgejoService.cs
index 868d8cd..b6c3474 100644
--- a/Services/ForgejoService.cs
+++ b/Services/ForgejoService.cs
@@ -20,7 +20,6 @@ public class ForgejoService(HttpClient httpClient, AppConfig config, ILogger !r.Prerelease);
+ var githubRelease = githubReleases.FirstOrDefault(r => !r.Prerelease);
if (githubRelease is null)
{
logger.LogWarning("{Owner}/{Name}: no GitHub release found, skipping", owner, name);
@@ -44,7 +44,7 @@ public class SyncService(
}
var forgejoReleases = await forgejoService.FetchRepoReleasesAsync(owner, name, token);
- var forgejoRelease = forgejoReleases.LastOrDefault(r => !r.Prerelease);
+ var forgejoRelease = forgejoReleases.FirstOrDefault(r => !r.Prerelease);
var releaseId = await ResolveReleaseIdAsync(owner, name, githubRelease, forgejoRelease, token);