handle case insensitive headers when parsing for API rate limiting (#2175)

This commit is contained in:
Brendan Forster
2020-04-12 13:04:30 -03:00
committed by GitHub
parent 2bfd101bd0
commit 8d7bda96e4
8 changed files with 103 additions and 18 deletions
+5 -3
View File
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Net;
#if !NO_SERIALIZABLE
using System.Runtime.Serialization;
@@ -44,11 +46,11 @@ namespace Octokit
private static int? ParseRetryAfterSeconds(IResponse response)
{
string secondsValue;
if (!response.Headers.TryGetValue("Retry-After", out secondsValue)) { return null; }
var header = response.Headers.FirstOrDefault(h => string.Equals(h.Key, "Retry-After", StringComparison.OrdinalIgnoreCase));
if (header.Equals(default(KeyValuePair<string, string>))) { return null; }
int retrySeconds;
if (!int.TryParse(secondsValue, out retrySeconds)) { return null; }
if (!int.TryParse(header.Value, out retrySeconds)) { return null; }
if (retrySeconds < 0) { return null; }
return retrySeconds;