Skip to content

Commit db0d1a5

Browse files
committed
Adding http.Handler as a return parameter to RequestRenderable
1 parent 74eeff3 commit db0d1a5

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

http_request_renderable.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ import (
77
// RequestRenderable represents a method that
88
// can create a view out of an http.Request.
99
type RequestRenderable interface {
10-
RequestRenderable(r *http.Request) (AsRenderable, error)
10+
RequestRenderable(r *http.Request) (AsRenderable, http.Handler, error)
1111
}
1212

1313
// RequestRenderableFunc is the function representation of a
1414
// RequestRenderable.
15-
type RequestRenderableFunc func(*http.Request) (AsRenderable, error)
15+
type RequestRenderableFunc func(*http.Request) (AsRenderable, http.Handler, error)
1616

1717
// RequestRenderable conforms RequestRenderableFunc to
1818
// RequestRenderable interface.
19-
func (f RequestRenderableFunc) RequestRenderable(r *http.Request) (AsRenderable, error) {
19+
func (f RequestRenderableFunc) RequestRenderable(r *http.Request) (AsRenderable, http.Handler, error) {
2020
return f(r)
2121
}
2222

@@ -35,7 +35,7 @@ type HTTPHandler struct {
3535

3636
// ServeHTTP implements http.Handler.
3737
func (h HTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
38-
renderable, err := h.Renderable.RequestRenderable(r)
38+
renderable, _, err := h.Renderable.RequestRenderable(r)
3939
if err != nil {
4040
panic(err)
4141
}

http_request_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,33 +23,33 @@ func (v html) Renderable(_ context.Context) (Renderable, error) {
2323
}
2424

2525
func HTML(renderable RequestRenderable) http.Handler {
26-
return RequestHandlerFunc(func(r *http.Request) (AsRenderable, error) {
27-
v, err := renderable.RequestRenderable(r)
26+
return RequestHandlerFunc(func(r *http.Request) (AsRenderable, http.Handler, error) {
27+
v, next, err := renderable.RequestRenderable(r)
2828
if err != nil {
29-
return nil, err
29+
return nil, next, err
3030
}
3131

32-
return html{Body: v}, nil
32+
return html{Body: v}, next, nil
3333
})
3434
}
3535

3636
func TestRequestRequestHandler(t *testing.T) {
37-
var empty = RequestRenderableFunc(func(r *http.Request) (AsRenderable, error) {
38-
return nil, nil
37+
var empty = RequestRenderableFunc(func(r *http.Request) (AsRenderable, http.Handler, error) {
38+
return nil, nil, nil
3939
})
4040

4141
mux := http.NewServeMux()
4242

43-
mux.Handle("/empty", RequestHandlerFunc(empty))
43+
mux.Handle("/empty", RequestHandler(empty))
4444
mux.Handle("/html/empty", HTML(empty))
4545

46-
mux.Handle("/person", RequestHandlerFunc(func(r *http.Request) (AsRenderable, error) {
46+
mux.Handle("/person", RequestHandlerFunc(func(r *http.Request) (AsRenderable, http.Handler, error) {
4747
name := r.URL.Query().Get("name")
4848
if name == "" {
49-
return nil, fmt.Errorf("missing name")
49+
return nil, nil, fmt.Errorf("missing name")
5050
}
5151

52-
return PersonView(Person{Name: name}), nil
52+
return PersonView(Person{Name: name}), nil, nil
5353
}))
5454

5555
server := httptest.NewServer(mux)

0 commit comments

Comments
 (0)