using Kruzya.TelegramBot.Core; using Kruzya.TelegramBot.Core.Extensions; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System.Net.Http.Headers; using West.TelegramBot.ContentStore.API; using West.TelegramBot.ContentStore.Option; using West.TelegramBot.ContentStore.Service; namespace West.TelegramBot.ContentStore; public class ContentStore : Module { public readonly List MediaServiceTypes = new(); public ContentStore(Core core) : base(core) { foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var exportedType in assembly.GetExportedTypes() .Where(t => !t.IsAbstract && t.GetInterface(nameof(IRandomMediaService)) != null)) { MediaServiceTypes.Add(exportedType); } } } public override void ConfigureServices(IServiceCollection services) { services.AddOption(); var kittiesConfig = Configuration.GetSection("KittiesService"); services.AddHttpClient(c => { c.BaseAddress = kittiesConfig.GetValue("Uri"); c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", kittiesConfig.GetValue("token") ); }); foreach (var serviceType in MediaServiceTypes) { services.AddScoped(typeof(IRandomMediaService), serviceType); } } }