mirror of
https://github.com/cubixle/tuu.git
synced 2026-04-24 21:34:42 +01:00
fixed some bugs related to middleware
This commit is contained in:
@@ -29,6 +29,7 @@ func newContext(r Route, res http.ResponseWriter, req *http.Request) *DefaultCon
|
||||
params: params,
|
||||
data: data,
|
||||
env: r.Env,
|
||||
logger: r.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func NewRouter(opts ...RouterOption) Router {
|
||||
@@ -59,10 +61,12 @@ func (r *DefaultRouter) addRoute(m, p string, h Handler) {
|
||||
}
|
||||
|
||||
r.Routes = append(r.Routes, &Route{
|
||||
Method: m,
|
||||
Path: p,
|
||||
Handler: h,
|
||||
Env: r.Options.Env,
|
||||
Method: m,
|
||||
Path: p,
|
||||
Handler: h,
|
||||
Env: r.Options.Env,
|
||||
Middleware: r.Options.MiddlewareStack,
|
||||
Logger: r.Options.Logger,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -70,6 +74,7 @@ type RouterOptions struct {
|
||||
Env string
|
||||
Prefix string
|
||||
MiddlewareStack MiddlewareStack
|
||||
Logger *logrus.Logger
|
||||
}
|
||||
|
||||
type RouterOption func(*RouterOptions)
|
||||
@@ -91,3 +96,9 @@ func RouterMiddleware(ms MiddlewareStack) RouterOption {
|
||||
o.MiddlewareStack = ms
|
||||
}
|
||||
}
|
||||
|
||||
func RouterLogger(l *logrus.Logger) RouterOption {
|
||||
return func(o *RouterOptions) {
|
||||
o.Logger = l
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ func (m *MiddlewareStack) Get() []Middleware {
|
||||
|
||||
func (m *MiddlewareStack) handler(r *Route) Handler {
|
||||
handler := r.Handler
|
||||
|
||||
if len(m.stack) == 0 {
|
||||
return handler
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package middleware
|
||||
|
||||
import "github.com/lukerodham/tuu"
|
||||
import (
|
||||
"github.com/lukerodham/tuu"
|
||||
)
|
||||
|
||||
// RequestLogger is a default/example implementation of how a logging middleware would be implemented.
|
||||
func RequestLogger(next tuu.Handler) tuu.Handler {
|
||||
return func(c tuu.Context) error {
|
||||
c.Logger().WithField("url", c.Value("path")).Debug("New request")
|
||||
c.Logger().WithField("url", c.Value("path")).Info("New request")
|
||||
|
||||
return next(c)
|
||||
}
|
||||
|
||||
2
route.go
2
route.go
@@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
gcontext "github.com/gorilla/context"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type Route struct {
|
||||
@@ -12,6 +13,7 @@ type Route struct {
|
||||
Handler Handler
|
||||
Env string
|
||||
Middleware MiddlewareStack
|
||||
Logger *logrus.Logger
|
||||
}
|
||||
|
||||
func (r *Route) ServeHTTP(res http.ResponseWriter, req *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user