Skip to content

Commit 0ef4dff

Browse files
duncanistaGarrettBeatty
authored andcommitted
make lookup o(1) again
essentially creating a case insensitive header dictionary
1 parent 4dc9c89 commit 0ef4dff

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

Libraries/src/Amazon.Lambda.RuntimeSupport/Client/RuntimeApiHeaders.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ internal class RuntimeApiHeaders
2929

3030
public RuntimeApiHeaders(Dictionary<string, IEnumerable<string>> headers)
3131
{
32-
DeadlineMs = GetHeaderValueOrNull(headers, HeaderDeadlineMs);
33-
AwsRequestId = GetHeaderValueRequired(headers, HeaderAwsRequestId);
34-
ClientContextJson = GetHeaderValueOrNull(headers, HeaderClientContext);
35-
CognitoIdentityJson = GetHeaderValueOrNull(headers, HeaderCognitoIdentity);
36-
InvokedFunctionArn = GetHeaderValueOrNull(headers, HeaderInvokedFunctionArn);
37-
TraceId = GetHeaderValueOrNull(headers, HeaderTraceId);
32+
var caseInsensitiveHeaders = new Dictionary<string, IEnumerable<string>>(headers, StringComparer.OrdinalIgnoreCase);
33+
34+
DeadlineMs = GetHeaderValueOrNull(caseInsensitiveHeaders, HeaderDeadlineMs);
35+
AwsRequestId = GetHeaderValueRequired(caseInsensitiveHeaders, HeaderAwsRequestId);
36+
ClientContextJson = GetHeaderValueOrNull(caseInsensitiveHeaders, HeaderClientContext);
37+
CognitoIdentityJson = GetHeaderValueOrNull(caseInsensitiveHeaders, HeaderCognitoIdentity);
38+
InvokedFunctionArn = GetHeaderValueOrNull(caseInsensitiveHeaders, HeaderInvokedFunctionArn);
39+
TraceId = GetHeaderValueOrNull(caseInsensitiveHeaders, HeaderTraceId);
3840
}
3941

4042
public string AwsRequestId { get; private set; }
@@ -46,14 +48,12 @@ public RuntimeApiHeaders(Dictionary<string, IEnumerable<string>> headers)
4648

4749
private string GetHeaderValueRequired(Dictionary<string, IEnumerable<string>> headers, string header)
4850
{
49-
var headerKey = headers.Keys.FirstOrDefault(k => string.Equals(k, header, StringComparison.OrdinalIgnoreCase));
50-
return headers[headerKey].FirstOrDefault();
51+
return headers[header].FirstOrDefault();
5152
}
5253

5354
private string GetHeaderValueOrNull(Dictionary<string, IEnumerable<string>> headers, string header)
5455
{
55-
var headerKey = headers.Keys.FirstOrDefault(k => string.Equals(k, header, StringComparison.OrdinalIgnoreCase));
56-
if (headers.TryGetValue(headerKey, out var values))
56+
if (headers.TryGetValue(header, out var values))
5757
{
5858
return values.FirstOrDefault();
5959
}

0 commit comments

Comments
 (0)