From 57013d5639f2bdfc13ee955f6b89dcd1c5612488 Mon Sep 17 00:00:00 2001 From: RogueException Date: Fri, 31 Mar 2017 13:34:03 -0300 Subject: [PATCH] Don't crash if a rate limit header is unparsable --- src/Discord.Net.Rest/Net/RateLimitInfo.cs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Rest/Net/RateLimitInfo.cs b/src/Discord.Net.Rest/Net/RateLimitInfo.cs index d8d168aec..79fe47dd1 100644 --- a/src/Discord.Net.Rest/Net/RateLimitInfo.cs +++ b/src/Discord.Net.Rest/Net/RateLimitInfo.cs @@ -15,14 +15,18 @@ namespace Discord.Net internal RateLimitInfo(Dictionary headers) { string temp; - IsGlobal = headers.TryGetValue("X-RateLimit-Global", out temp) ? bool.Parse(temp) : false; - Limit = headers.TryGetValue("X-RateLimit-Limit", out temp) ? int.Parse(temp) : (int?)null; - Remaining = headers.TryGetValue("X-RateLimit-Remaining", out temp) ? int.Parse(temp) : (int?)null; - Reset = headers.TryGetValue("X-RateLimit-Reset", out temp) ? - DateTimeUtils.FromUnixSeconds(int.Parse(temp)) : (DateTimeOffset?)null; - RetryAfter = headers.TryGetValue("Retry-After", out temp) ? int.Parse(temp) : (int?)null; - Lag = headers.TryGetValue("Date", out temp) ? - DateTimeOffset.UtcNow - DateTimeOffset.Parse(temp) : (TimeSpan?)null; + IsGlobal = headers.TryGetValue("X-RateLimit-Global", out temp) && + bool.TryParse(temp, out var isGlobal) ? isGlobal : false; + Limit = headers.TryGetValue("X-RateLimit-Limit", out temp) && + int.TryParse(temp, out var limit) ? limit : (int?)null; + Remaining = headers.TryGetValue("X-RateLimit-Remaining", out temp) && + int.TryParse(temp, out var remaining) ? remaining : (int?)null; + Reset = headers.TryGetValue("X-RateLimit-Reset", out temp) && + int.TryParse(temp, out var reset) ? DateTimeUtils.FromUnixSeconds(reset) : (DateTimeOffset?)null; + RetryAfter = headers.TryGetValue("Retry-After", out temp) && + int.TryParse(temp, out var retryAfter) ? retryAfter : (int?)null; + Lag = headers.TryGetValue("Date", out temp) && + DateTimeOffset.TryParse(temp, out var date) ? DateTimeOffset.UtcNow - date : (TimeSpan?)null; } } }