public GuildTrafficHandler(ILogger <GuildTrafficHandler> logger, DiscordClient discordClient, TrustlistClient client, IDatabaseProvider <PluginManifest> database) { _logger = logger; _discordClient = discordClient; _client = client; _configRepository = database.GetMongoDatabase().GetCollection <GuildConfig>(nameof(GuildConfig)); }
public BroadcastsListener(ILogger <BroadcastsListener> logger, IInterfaceConfigProvider <IApiConfig> configProvider, DiscordClient discordClient, IDatabaseProvider <PluginManifest> database, TrustlistClient trustlistUserApiService) { IApiConfig config = configProvider.InitConfig(PluginManifest.ApiConfigFileName).PopulateApiConfig(); _logger = logger; _discordClient = discordClient; _trustlistClient = trustlistUserApiService; _guildConfig = database.GetMongoDatabase().GetCollection <GuildConfig>(nameof(GuildConfig)); _hubConnection = new HubConnectionBuilder() .WithUrl(config.ApiHost + "/hubs/trustlist") .AddMessagePackProtocol() .WithAutomaticReconnect() .Build(); void LogBroadcast(string name, ulong userid) => logger.LogDebug("Received SignalR Boradcast: {name} {userId}", name, userid); _hubConnection.On <ulong, TrustlistEntry>(nameof(ITrustlistHubPush.NotifyNewEntry), async(userId, entry) => { LogBroadcast(nameof(ITrustlistHubPush.NotifyNewEntry), userId); await BroadcastUpdateAsync(BroadcastUpdateType.NewEntry, userId, entry); }); _hubConnection.On <ulong, TrustlistEntry, byte>(nameof(ITrustlistHubPush.NotifyEscalatedEntry), async(userId, entry, level) => { LogBroadcast(nameof(ITrustlistHubPush.NotifyEscalatedEntry), userId); await BroadcastUpdateAsync(BroadcastUpdateType.Escalation, userId, entry); }); _hubConnection.On <ulong, TrustlistEntry>(nameof(ITrustlistHubPush.NotifyDeletedEntry), (userId, entry) => { LogBroadcast(nameof(ITrustlistHubPush.NotifyDeletedEntry), userId); }); }
public override IServiceCollection ConfigureServices(IServiceCollection services) { services.AddHttpClient <RestClientBase>((services, client) => client.BaseAddress = new(services.GetService <IApiConfig>().ApiHost)); services.AddSingleton <IEncryptionService>(services => { if (services.GetRequiredService <IApiConfig>().AzureIdentity is not null) { KeyVaultService kvs = ActivatorUtilities.CreateInstance <KeyVaultService>(services); kvs.InitializeAsync(CancellationToken.None).GetAwaiter().GetResult(); return(kvs); } else { return(ActivatorUtilities.CreateInstance <LocalEncryptionService>(services)); } }); services.AddAuthorizationCore(options => { options.AddPolicy(AuthorizationExtensions.RequireManageGuildPermission, policy => policy .RequireGuildRole(Permissions.ManageGuild)); options.AddPolicy(AuthorizationExtensions.RequireBanMembersPermission, policy => policy .RequireGuildRole(Permissions.BanMembers)); }); services.AddScoped <IAuthorizationHandler, GuildAccessAuthorizationHandler>(); return(services .AddSingleton <GuildTrafficHandler>() .AddSingleton <BroadcastsListener>() .AddSingleton <ComponentInteractionsListener>() .AddSingleton(services => { TrustlistClient client = ActivatorUtilities.CreateInstance <TrustlistClient>(services); client.SetBaseUri(new(services.GetRequiredService <IApiConfig>().ApiHost)); return client; }) .AddSingleton(services => { EmitterClient client = ActivatorUtilities.CreateInstance <EmitterClient>(services); client.SetBaseUri(new(services.GetRequiredService <IApiConfig>().ApiHost)); return client; }) .AddSingleton <ApiAuthService>() .AddSingleton(s => s.GetRequiredService <IInterfaceConfigProvider <IApiConfig> >().InitConfig(PluginManifest.ApiConfigFileName).PopulateApiConfig())); }
public TrustlistSlashModule(TrustlistClient trustlist, ApiAuthService apiAuth, IDatabaseProvider <PluginManifest> databaseProvider) { _trustlist = trustlist; this._apiAuth = apiAuth; guildConfig = databaseProvider.GetMongoDatabase().GetCollection <GuildConfig>(nameof(GuildConfig)); }