mirror of
https://github.com/cubixle/tuu.git
synced 2026-04-24 21:24:43 +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,
|
params: params,
|
||||||
data: data,
|
data: data,
|
||||||
env: r.Env,
|
env: r.Env,
|
||||||
|
logger: r.Logger,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewRouter(opts ...RouterOption) Router {
|
func NewRouter(opts ...RouterOption) Router {
|
||||||
@@ -63,6 +65,8 @@ func (r *DefaultRouter) addRoute(m, p string, h Handler) {
|
|||||||
Path: p,
|
Path: p,
|
||||||
Handler: h,
|
Handler: h,
|
||||||
Env: r.Options.Env,
|
Env: r.Options.Env,
|
||||||
|
Middleware: r.Options.MiddlewareStack,
|
||||||
|
Logger: r.Options.Logger,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,6 +74,7 @@ type RouterOptions struct {
|
|||||||
Env string
|
Env string
|
||||||
Prefix string
|
Prefix string
|
||||||
MiddlewareStack MiddlewareStack
|
MiddlewareStack MiddlewareStack
|
||||||
|
Logger *logrus.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
type RouterOption func(*RouterOptions)
|
type RouterOption func(*RouterOptions)
|
||||||
@@ -91,3 +96,9 @@ func RouterMiddleware(ms MiddlewareStack) RouterOption {
|
|||||||
o.MiddlewareStack = ms
|
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 {
|
func (m *MiddlewareStack) handler(r *Route) Handler {
|
||||||
handler := r.Handler
|
handler := r.Handler
|
||||||
|
|
||||||
if len(m.stack) == 0 {
|
if len(m.stack) == 0 {
|
||||||
return handler
|
return handler
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package middleware
|
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.
|
// RequestLogger is a default/example implementation of how a logging middleware would be implemented.
|
||||||
func RequestLogger(next tuu.Handler) tuu.Handler {
|
func RequestLogger(next tuu.Handler) tuu.Handler {
|
||||||
return func(c tuu.Context) error {
|
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)
|
return next(c)
|
||||||
}
|
}
|
||||||
|
|||||||
2
route.go
2
route.go
@@ -4,6 +4,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
gcontext "github.com/gorilla/context"
|
gcontext "github.com/gorilla/context"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Route struct {
|
type Route struct {
|
||||||
@@ -12,6 +13,7 @@ type Route struct {
|
|||||||
Handler Handler
|
Handler Handler
|
||||||
Env string
|
Env string
|
||||||
Middleware MiddlewareStack
|
Middleware MiddlewareStack
|
||||||
|
Logger *logrus.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Route) ServeHTTP(res http.ResponseWriter, req *http.Request) {
|
func (r *Route) ServeHTTP(res http.ResponseWriter, req *http.Request) {
|
||||||
|
|||||||
Reference in New Issue
Block a user