Skip to content

Commit 5beceab

Browse files
committed
added negroni adapters
1 parent 7ddc625 commit 5beceab

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

adapters.go

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,8 @@ import (
1010
// into a mohttp.Handler
1111
func FromHTTPMiddleware(fn func(http.Handler) http.Handler) Handler {
1212
return HandlerFunc(func(c context.Context) {
13-
fn(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
14-
c = WithRequest(c, r)
15-
c = WithResponseWriter(c, w)
16-
Next(c)
17-
})).ServeHTTP(GetResponseWriter(c), GetRequest(c))
13+
h := fn(mkNextHTTPHandler(c))
14+
h.ServeHTTP(GetResponseWriter(c), GetRequest(c))
1815
})
1916
}
2017

@@ -26,3 +23,31 @@ func FromHTTPHandler(handler http.Handler) Handler {
2623
Next(c)
2724
})
2825
}
26+
27+
type NegronHandler interface {
28+
ServeHTTP(http.ResponseWriter, *http.Request, http.HandlerFunc)
29+
}
30+
31+
type NegroniHandlerFunc func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
32+
33+
func (fn NegroniHandlerFunc) ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
34+
fn(rw, r, next)
35+
}
36+
37+
func FromNegroniHandler(n NegronHandler) Handler {
38+
return HandlerFunc(func(c context.Context) {
39+
n.ServeHTTP(GetResponseWriter(c), GetRequest(c), mkNextHTTPHandler(c))
40+
})
41+
}
42+
43+
func FromNegroniHandlerFunc(fn func(http.ResponseWriter, *http.Request, http.HandlerFunc)) Handler {
44+
return FromNegroniHandler(NegroniHandlerFunc(fn))
45+
}
46+
47+
func mkNextHTTPHandler(c context.Context) http.HandlerFunc {
48+
return func(w http.ResponseWriter, r *http.Request) {
49+
c = WithRequest(c, r)
50+
c = WithResponseWriter(c, w)
51+
Next(c)
52+
}
53+
}

0 commit comments

Comments
 (0)