feat: funciones puras HTTP — HTTPMiddlewareChain y HTTPCORSMiddleware

- HTTPMiddlewareChain: compone N middlewares preservando el orden (el primero es el mas externo)
- HTTPCORSMiddleware: genera Middleware con headers CORS configurables, maneja OPTIONS preflight con 204

Ambas son puras (sin I/O) y testeadas con httptest.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-13 01:57:39 +02:00
parent d8d72bb8d6
commit fd19cd222a
6 changed files with 283 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
package infra
import "net/http"
// HTTPMiddlewareChain compone N middlewares en uno solo aplicandolos de izquierda a derecha.
// El primer middleware de la lista es el mas externo (se ejecuta primero).
// Si no se pasan middlewares retorna un Middleware que no modifica el handler.
func HTTPMiddlewareChain(middlewares ...Middleware) Middleware {
return func(final http.Handler) http.Handler {
// Aplicar en orden inverso para que el primero quede mas externo
h := final
for i := len(middlewares) - 1; i >= 0; i-- {
h = middlewares[i](h)
}
return h
}
}