fixed some bugs related to middleware

This commit is contained in:
luke.rodham
2018-03-12 11:29:18 +00:00
parent 1e787689aa
commit 971f157307
5 changed files with 23 additions and 6 deletions

View File

@@ -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,
}
}

View File

@@ -4,6 +4,8 @@ import (
"fmt"
"net/http"
"strings"
"github.com/sirupsen/logrus"
)
func NewRouter(opts ...RouterOption) Router {
@@ -63,6 +65,8 @@ func (r *DefaultRouter) addRoute(m, p string, h Handler) {
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
}
}

View File

@@ -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
}

View File

@@ -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)
}

View File

@@ -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) {