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, params: params,
data: data, data: data,
env: r.Env, env: r.Env,
logger: r.Logger,
} }
} }

View File

@@ -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 {
@@ -59,10 +61,12 @@ func (r *DefaultRouter) addRoute(m, p string, h Handler) {
} }
r.Routes = append(r.Routes, &Route{ r.Routes = append(r.Routes, &Route{
Method: m, Method: m,
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
}
}

View File

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

View File

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

View File

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