Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
            };
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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)
 {
 }