From 4d4a09fa19ec04d6d264b2b4311e9009fe87f2bd Mon Sep 17 00:00:00 2001
From: Alex Ellis <alexellis2@gmail.com>
Date: Fri, 20 Oct 2017 18:49:06 +0200
Subject: [PATCH] Implement header pass-through

Signed-off-by: Alex Ellis <alexellis2@gmail.com>
---
 gateway/handlers/proxy.go | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/gateway/handlers/proxy.go b/gateway/handlers/proxy.go
index eb012a16..78c1069b 100644
--- a/gateway/handlers/proxy.go
+++ b/gateway/handlers/proxy.go
@@ -168,14 +168,22 @@ func invokeService(w http.ResponseWriter, r *http.Request, metrics metrics.Metri
 	clientHeader := w.Header()
 	copyHeaders(&clientHeader, &response.Header)
 
-	header := response.Header.Get("Content-Type")
-	if len(header) > 0 {
-		w.Header().Set("Content-Type", response.Header.Get("Content-Type"))
+	responseHeader := response.Header.Get("Content-Type")
+	requestHeader := r.Header.Get("Content-Type")
+	defaultHeader := "text/plain"
+	contentTypeField := "Content-Type"
+
+	fmt.Printf("Req %s Res %s\n", requestHeader, responseHeader)
+
+	if len(responseHeader) > 0 {
+		w.Header().Set(contentTypeField, responseHeader)
+	} else if len(requestHeader) > 0 {
+		w.Header().Set(contentTypeField, requestHeader)
 	} else {
-		w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
+		w.Header().Set(contentTypeField, defaultHeader)
 	}
 
-	writeHead(service, metrics, http.StatusOK, w)
+	writeHead(service, metrics, response.StatusCode, w)
 	w.Write(responseBody)
 }
 
-- 
GitLab