mirror of
https://github.com/openfaas/faas.git
synced 2025-06-22 14:53:25 +00:00
Commit unit tests for content-type order
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
This commit is contained in:
@ -168,25 +168,31 @@ func invokeService(w http.ResponseWriter, r *http.Request, metrics metrics.Metri
|
||||
clientHeader := w.Header()
|
||||
copyHeaders(&clientHeader, &response.Header)
|
||||
|
||||
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(contentTypeField, defaultHeader)
|
||||
}
|
||||
w.Header().Set("Content-Type", GetContentType(response.Header, r.Header, defaultHeader))
|
||||
|
||||
writeHead(service, metrics, response.StatusCode, w)
|
||||
w.Write(responseBody)
|
||||
}
|
||||
|
||||
// GetContentType resolves the correct Content-Tyoe for a proxied function
|
||||
func GetContentType(request http.Header, proxyResponse http.Header, defaultValue string) string {
|
||||
responseHeader := proxyResponse.Get("Content-Type")
|
||||
requestHeader := request.Get("Content-Type")
|
||||
|
||||
var headerContentType string
|
||||
if len(responseHeader) > 0 {
|
||||
headerContentType = responseHeader
|
||||
} else if len(requestHeader) > 0 {
|
||||
headerContentType = requestHeader
|
||||
} else {
|
||||
headerContentType = defaultValue
|
||||
}
|
||||
|
||||
return headerContentType
|
||||
}
|
||||
|
||||
func copyHeaders(destination *http.Header, source *http.Header) {
|
||||
for k, vv := range *source {
|
||||
vvClone := make([]string, len(vv))
|
||||
|
Reference in New Issue
Block a user