2025-11-03 22:13:11 +00:00
|
|
|
package main
|
2025-11-06 22:31:51 +00:00
|
|
|
|
2025-11-03 22:13:11 +00:00
|
|
|
import (
|
|
|
|
|
"net/http"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Custom ResponseWriter to track Content-Type
|
|
|
|
|
type customResponseWriter struct {
|
2025-11-06 22:31:51 +00:00
|
|
|
http.ResponseWriter
|
|
|
|
|
contentType string
|
|
|
|
|
wroteHeader bool
|
2025-11-03 22:13:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (crw *customResponseWriter) WriteHeader(code int) {
|
2025-11-06 22:31:51 +00:00
|
|
|
crw.wroteHeader = true
|
|
|
|
|
crw.ResponseWriter.WriteHeader(code)
|
2025-11-03 22:13:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (crw *customResponseWriter) Header() http.Header {
|
2025-11-06 22:31:51 +00:00
|
|
|
return crw.ResponseWriter.Header()
|
2025-11-03 22:13:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (crw *customResponseWriter) Write(b []byte) (int, error) {
|
2025-11-06 22:31:51 +00:00
|
|
|
if !crw.wroteHeader {
|
|
|
|
|
if crw.contentType == "" {
|
|
|
|
|
crw.contentType = http.DetectContentType(b)
|
|
|
|
|
crw.ResponseWriter.Header().Set("Content-Type", crw.contentType)
|
|
|
|
|
}
|
|
|
|
|
crw.WriteHeader(http.StatusOK)
|
|
|
|
|
}
|
|
|
|
|
return crw.ResponseWriter.Write(b)
|
2025-11-03 22:13:11 +00:00
|
|
|
}
|