/// <summary> Creates a new REST-only Discord client. </summary> internal BaseDiscordClient(DiscordRestConfig config, API.DiscordRestApiClient client) { ApiClient = client; LogManager = new LogManager(config.LogLevel); LogManager.Message += async msg => await _logEvent.InvokeAsync(msg).ConfigureAwait(false); _stateLock = new SemaphoreSlim(1, 1); _restLogger = LogManager.CreateLogger("Rest"); _isFirstLogin = config.DisplayInitialLog; UseInteractionSnowflakeDate = config.UseInteractionSnowflakeDate; ApiClient.RequestQueue.RateLimitTriggered += async(id, info, endpoint) => { if (info == null) { await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); } else { await _restLogger.WarningAsync($"Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); } }; ApiClient.SentRequest += async(method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); }
/// <summary> Creates a new REST-only Discord client. </summary> internal BaseDiscordClient(DiscordRestConfig config, API.DiscordRestApiClient client) { ApiClient = client; LogManager = config.LoggerFactory; if (LogManager == null) { LogManager = new DefaultLoggerFactory(); LogManager.AddProvider(new DefaultLoggerProvider()); } _stateLock = new SemaphoreSlim(1, 1); _restLogger = LogManager.CreateLogger <DiscordRestApiClient>(); _isFirstLogin = config.DisplayInitialLog; UseInteractionSnowflakeDate = config.UseInteractionSnowflakeDate; ApiClient.RequestQueue.RateLimitTriggered += async(id, info, endpoint) => { if (info == null) { _restLogger.LogTrace($"Preemptive Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}"); } else { _restLogger.LogWarning($"Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}"); } return(Task.CompletedTask); }; ApiClient.SentRequest += (method, endpoint, millis) => { _restLogger.LogTrace($"{method} {endpoint}: {millis} ms"); return(Task.CompletedTask); }; }
/// <summary> Creates a new REST-only discord client. </summary> internal BaseDiscordClient(DiscordRestConfig config, API.DiscordRestApiClient client) { ApiClient = client; LogManager = new LogManager(config.LogLevel); LogManager.Message += async msg => await _logEvent.InvokeAsync(msg).ConfigureAwait(false); _connectionLock = new SemaphoreSlim(1, 1); _restLogger = LogManager.CreateLogger("Rest"); _queueLogger = LogManager.CreateLogger("Queue"); _isFirstLogin = config.DisplayInitialLog; ApiClient.RequestQueue.RateLimitTriggered += async(id, info) => { if (info == null) { await _queueLogger.WarningAsync($"Preemptive Rate limit triggered: {id ?? "null"}").ConfigureAwait(false); } else { await _queueLogger.WarningAsync($"Rate limit triggered: {id ?? "null"}").ConfigureAwait(false); } }; ApiClient.SentRequest += async(method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); }
/// <summary> Creates a new REST-only discord client. </summary> internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient client) { ApiClient = client; LogManager = new LogManager(config.LogLevel); LogManager.Message += async msg => await _logEvent.InvokeAsync(msg).ConfigureAwait(false); _clientLogger = LogManager.CreateLogger("Client"); _restLogger = LogManager.CreateLogger("Rest"); _queueLogger = LogManager.CreateLogger("Queue"); _isFirstLogSub = true; _connectionLock = new SemaphoreSlim(1, 1); ApiClient.RequestQueue.RateLimitTriggered += async(id, bucket, millis) => { await _queueLogger.WarningAsync($"Rate limit triggered (id = \"{id ?? "null"}\")").ConfigureAwait(false); if (bucket == null && id != null) { await _queueLogger.WarningAsync($"Unknown rate limit bucket \"{id ?? "null"}\"").ConfigureAwait(false); } }; ApiClient.SentRequest += async(method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); }
// used for socket client rest access internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient api) : base(config, api) { }