fix(fn-run): propagar stdout/stderr de bash functions library-style #1

Open
dataforge wants to merge 537 commits from auto/0077-fn-run-bash-mudo into master
Showing only changes of commit 4b9698b1b7 - Show all commits
+21
View File
@@ -1,13 +1,17 @@
package infra
import (
"bufio"
"fmt"
"io"
"net"
"net/http"
"time"
)
// responseWriter captura el status code escrito al ResponseWriter.
// Implementa http.Hijacker y http.Flusher delegando al writer subyacente
// para preservar WebSocket upgrade y SSE.
type responseWriter struct {
http.ResponseWriter
status int
@@ -18,6 +22,23 @@ func (rw *responseWriter) WriteHeader(status int) {
rw.ResponseWriter.WriteHeader(status)
}
// Hijack delega en el ResponseWriter subyacente si lo soporta. Necesario
// para que WebSocket Upgrade funcione a traves del logger middleware.
func (rw *responseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
if h, ok := rw.ResponseWriter.(http.Hijacker); ok {
return h.Hijack()
}
return nil, nil, http.ErrNotSupported
}
// Flush delega en el ResponseWriter subyacente si lo soporta. Necesario
// para SSE y respuestas streaming.
func (rw *responseWriter) Flush() {
if f, ok := rw.ResponseWriter.(http.Flusher); ok {
f.Flush()
}
}
// HTTPLoggerMiddleware retorna un Middleware que loguea metodo, path, status y duracion de cada request.
// El formato de cada linea es: METHOD /path STATUS DURACIONms
func HTTPLoggerMiddleware(logger io.Writer) Middleware {