refactor: move Middleware interface to sinle function class

This commit is contained in:
Guz
2024-10-15 00:57:06 -03:00
parent 8388e2763e
commit 4ffe2f4e9e
2 changed files with 7 additions and 7 deletions

View File

@@ -4,11 +4,10 @@ import (
"errors"
"fmt"
"net/http"
"strconv"
)
type Middleware interface {
Serve(r http.HandlerFunc) http.HandlerFunc
}
type Middleware func(next http.Handler) http.Handler
type MiddlewaredReponse struct {
w http.ResponseWriter
@@ -21,6 +20,7 @@ func NewMiddlewaredResponse(w http.ResponseWriter) *MiddlewaredReponse {
}
func (m *MiddlewaredReponse) WriteHeader(s int) {
m.Header().Set("Status", strconv.Itoa(s))
m.statuses = append(m.statuses, s)
}

View File

@@ -62,15 +62,15 @@ func (rt *Router) ServeHTTP(w http.ResponseWriter, r *http.Request) {
rt.serveHttp(w, r)
}
func (r *Router) wrapMiddlewares(ms []middleware.Middleware, h http.HandlerFunc) http.HandlerFunc {
wh := h.ServeHTTP
func (r *Router) wrapMiddlewares(ms []middleware.Middleware, h http.Handler) http.HandlerFunc {
wh := h
for _, m := range ms {
wh = m.Serve(wh)
wh = m(wh)
}
return func(w http.ResponseWriter, r *http.Request) {
mw := middleware.NewMiddlewaredResponse(w)
wh(mw, r)
wh.ServeHTTP(mw, r)
if _, err := mw.ReallyWriteHeader(); err != nil {
_, _ = w.Write(
[]byte(