From 4fa38540304a0e634e9dab05020d653e762df195 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?France=CC=81=20Wilke?= <francewilke@gmail.com>
Date: Tue, 31 Oct 2023 13:30:23 +0200
Subject: [PATCH] Add HTTP X-Request-ID field to response headers

---
 handler_utils/request.go | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/handler_utils/request.go b/handler_utils/request.go
index 5633f91..8d251bf 100644
--- a/handler_utils/request.go
+++ b/handler_utils/request.go
@@ -15,6 +15,8 @@ import (
 	"github.com/aws/aws-lambda-go/lambdacontext"
 )
 
+const HTTPXRequestIDHeaderValue = "X-Request-ID"
+
 func RequestIDFromLambdaContext(ctx context.Context) *string {
 	// Get request ID from context
 	if ctx != nil {
@@ -34,9 +36,19 @@ func RequestIDFromHeaders(headers map[string]string, requestIDHeaderKey string)
 	return nil
 }
 
-func AddRequestIDToHeaders(requestID *string, headers map[string]string, requestIDHeaderKey string) {
-	if requestID != nil && headers != nil {
-		headers[requestIDHeaderKey] = *requestID
+func AddRequestIDToHeaders(requestID *string, responseHeaders map[string]string, requestIDHeaderKey string, requestHeaders map[string]string) {
+	if requestID != nil && responseHeaders != nil {
+		responseHeaders[requestIDHeaderKey] = *requestID
+		responseHeaders[HTTPXRequestIDHeaderValue] = *requestID
+	}
+
+	// Add the HTTP X-Request-ID request header to the response headers: https://http.dev/x-request-id
+	for key, val := range requestHeaders {
+		// Don't be case-sensitive
+		if strings.ToLower(key) == strings.ToLower(HTTPXRequestIDHeaderValue) {
+			responseHeaders[key] = val
+			break
+		}
 	}
 }
 
-- 
GitLab