refactor: organize things a bit

This commit is contained in:
Stevan Freeborn
2025-05-18 12:16:14 -05:00
parent db221334ca
commit 9af7522c29
37 changed files with 229 additions and 209 deletions
@@ -0,0 +1,50 @@
namespace StevesBot.Worker.Discord;
internal static class Extensions
{
public static IServiceCollection AddDiscordRestClient(this IServiceCollection services)
{
services
.AddHttpClient<IDiscordRestClient, DiscordRestClient>(static (sp, c) =>
{
var discordOptions = sp.GetRequiredService<DiscordClientOptions>();
c.BaseAddress = new Uri(discordOptions.ApiUrl);
c.DefaultRequestHeaders.Authorization = new("Bot", discordOptions.AppToken);
c.DefaultRequestHeaders.Add("User-Agent", $"DiscordBot (https://github.com/StevanFreeborn/steves-bot, 0.0.0)");
})
.AddStandardResilienceHandler();
return services;
}
public static IServiceCollection AddDiscordGatewayClient(this IServiceCollection services, Action<IDiscordGatewayClient>? configure)
{
services.AddSingleton<IDiscordGatewayClient>(sp =>
{
var discordOptions = sp.GetRequiredService<DiscordClientOptions>();
var discordRestClient = sp.GetRequiredService<IDiscordRestClient>();
var logger = sp.GetRequiredService<ILogger<DiscordGatewayClient>>();
var socketFactory = sp.GetRequiredService<IWebSocketFactory>();
var timeProvider = sp.GetRequiredService<TimeProvider>();
var serviceScopeFactory = sp.GetRequiredService<IServiceScopeFactory>();
var client = new DiscordGatewayClient(
discordOptions,
socketFactory,
logger,
discordRestClient,
timeProvider,
serviceScopeFactory
);
if (configure is not null)
{
configure(client);
}
return client;
});
return services;
}
}