modify default content type

This commit is contained in:
Sky Johnson 2025-04-01 13:26:14 -05:00
parent d34ef94ad7
commit 472d175093

View File

@ -3,6 +3,7 @@ package http
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"fmt" // Added for fmt.Fprintf
"net" "net"
"net/http" "net/http"
"time" "time"
@ -279,21 +280,37 @@ func writeResponse(w http.ResponseWriter, result any) {
result = httpResp.Body // Set result to body for processing below result = httpResp.Body // Set result to body for processing below
} }
switch res := result.(type) { // Check if it's a map (table) or array - return as JSON
case string: isJSON := false
// String result - default to plain text
setContentTypeIfMissing(w, contentTypePlain) switch result.(type) {
w.Write([]byte(res)) case map[string]any, []any, []float64, []string, []int:
default: isJSON = true
// All other types - convert to JSON }
if isJSON {
setContentTypeIfMissing(w, contentTypeJSON) setContentTypeIfMissing(w, contentTypeJSON)
data, err := json.Marshal(res) data, err := json.Marshal(result)
if err != nil { if err != nil {
logger.Error("Failed to marshal response: %v", err) logger.Error("Failed to marshal response: %v", err)
http.Error(w, "Internal Server Error", http.StatusInternalServerError) http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return return
} }
w.Write(data) w.Write(data)
return
}
// All other types - convert to plain text
setContentTypeIfMissing(w, contentTypePlain)
switch r := result.(type) {
case string:
w.Write([]byte(r))
case []byte:
w.Write(r)
default:
// Convert any other type to string
fmt.Fprintf(w, "%v", r)
} }
} }