Make rate-limit header parsing null-safe

Use ParseOrNull helpers for X-RateLimit-Remaining and X-RateLimit-Reset-After header values and make the TimeSpan conversion null-safe. This prevents exceptions when rate-limit headers are missing or malformed and keeps resetAfterDelay nullable while preserving existing rate-limit logic.
This commit is contained in:
primetime43 2026-05-18 20:13:14 -04:00
parent 47a163e982
commit f990910865

View file

@ -856,12 +856,12 @@ public class DiscordClient(
{ {
var remainingRequestCount = response var remainingRequestCount = response
.Headers.TryGetValue("X-RateLimit-Remaining") .Headers.TryGetValue("X-RateLimit-Remaining")
?.Pipe(s => int.Parse(s, CultureInfo.InvariantCulture)); ?.Pipe(s => int.ParseOrNull(s, CultureInfo.InvariantCulture));
var resetAfterDelay = response var resetAfterDelay = response
.Headers.TryGetValue("X-RateLimit-Reset-After") .Headers.TryGetValue("X-RateLimit-Reset-After")
?.Pipe(s => double.Parse(s, CultureInfo.InvariantCulture)) ?.Pipe(s => double.ParseOrNull(s, CultureInfo.InvariantCulture))
.Pipe(TimeSpan.FromSeconds); ?.Pipe(TimeSpan.FromSeconds);
if (remainingRequestCount <= 0 && resetAfterDelay is not null) if (remainingRequestCount <= 0 && resetAfterDelay is not null)
{ {