Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion form_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ func Test_Form(t *testing.T) {
func performFormTest(t *testing.T, binder binderFunc, testCase formTestCase) {
m := chi.NewRouter()
m.Use(middleware.Logger)
m.Use(binding.Injector(render.New()))
m.Use(binding.Injector(render.New(), logger()))

switch testCase.expected.(type) {
case Post:
Expand Down
6 changes: 4 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ go 1.16

require (
github.com/go-chi/chi/v5 v5.0.3
github.com/go-logr/logr v0.4.0
github.com/go-playground/form/v4 v4.1.3
github.com/go-playground/validator/v10 v10.6.1
github.com/json-iterator/go v1.1.11
github.com/stretchr/testify v1.7.0
github.com/unrolled/render v1.4.0
go.wandrs.dev/http v0.0.1
go.wandrs.dev/inject v0.0.1
go.wandrs.dev/http v0.0.2-0.20210906061900-da89ae48dd5b
go.wandrs.dev/inject v0.0.2-0.20210830111053-4cf53490454a
k8s.io/apimachinery v0.21.1
k8s.io/klog/v2 v2.8.0
)
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,10 @@ github.com/unrolled/render v1.4.0 h1:p73obhpsXuE3paXOtcuXTBKgBJpLCfmABnsUiO35x+Q
github.com/unrolled/render v1.4.0/go.mod h1:cK4RSTTVdND5j9EYEc0LAMOvdG11JeiKjyjfyZRvV2w=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.wandrs.dev/http v0.0.1 h1:SOnfVRpOn7JnkSvLbosHzb4SoyCet9iYw9Sz8RLqsUg=
go.wandrs.dev/http v0.0.1/go.mod h1:8PfWxlSFWhQOADcnQKj7CO5NEIz/E961BhZdGhBkFgo=
go.wandrs.dev/inject v0.0.1 h1:jm6Ex/PaPUAjvTDBQpWpUZ8lPdyYb3c7WfCR/G1qjio=
go.wandrs.dev/inject v0.0.1/go.mod h1:ZN2TWSS270vSn0ci86WBgyvXO4WFooiU8Qyvxz28l2k=
go.wandrs.dev/http v0.0.2-0.20210906061900-da89ae48dd5b h1:OT1WF7OLEemOODyn+Pgf7MPwq1GhwMmt+AqbfqCjkWo=
go.wandrs.dev/http v0.0.2-0.20210906061900-da89ae48dd5b/go.mod h1:yukEsN4kwCfNBl3l7EmW/GdBlowAEoDaTmwkHc0C9Tk=
go.wandrs.dev/inject v0.0.2-0.20210830111053-4cf53490454a h1:2rNrwd8Fh+QmKNYMZNaw1qIf5rOt2RfDJhiDpacg2lI=
go.wandrs.dev/inject v0.0.2-0.20210830111053-4cf53490454a/go.mod h1:ZN2TWSS270vSn0ci86WBgyvXO4WFooiU8Qyvxz28l2k=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
Expand Down
7 changes: 4 additions & 3 deletions injector.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"go.wandrs.dev/inject"

"github.com/go-chi/chi/v5/middleware"
"github.com/go-logr/logr"
"github.com/unrolled/render"
)

Expand All @@ -22,7 +23,7 @@ var pool = sync.Pool{

type injectorKey struct{}

func Injector(r *render.Render) func(next http.Handler) http.Handler {
func Injector(r *render.Render, log logr.Logger) func(next http.Handler) http.Handler {
if r == nil {
panic("chi: render must not be nil")
}
Expand All @@ -37,7 +38,7 @@ func Injector(r *render.Render) func(next http.Handler) http.Handler {
injector.MapTo(ww, (*middleware.WrapResponseWriter)(nil))
}
// give a chance to override render.Render
injector.MapTo(httpw.NewResponseWriter(w, req, r), (*httpw.ResponseWriter)(nil))
injector.MapTo(httpw.NewResponseWriter(w, req, r, log), (*httpw.ResponseWriter)(nil))

next.ServeHTTP(w, req)
return
Expand All @@ -56,7 +57,7 @@ func Injector(r *render.Render) func(next http.Handler) http.Handler {
if ww, ok := w.(middleware.WrapResponseWriter); ok {
injector.MapTo(ww, (*middleware.WrapResponseWriter)(nil))
}
injector.MapTo(httpw.NewResponseWriter(w, req, r), (*httpw.ResponseWriter)(nil))
injector.MapTo(httpw.NewResponseWriter(w, req, r, log), (*httpw.ResponseWriter)(nil))

// Serve the request and once its done, put the request context back in the sync pool
next.ServeHTTP(w, req)
Expand Down
11 changes: 10 additions & 1 deletion injector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package binding_test
import (
"encoding/json"
"errors"
"flag"
"io"
"io/fs"
"net/http"
Expand All @@ -14,7 +15,10 @@ import (

"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/go-logr/logr"
"github.com/unrolled/render"
"k8s.io/klog/v2"
"k8s.io/klog/v2/klogr"
)

var returnErr = errors.New("err")
Expand All @@ -23,6 +27,11 @@ type errorWrapper interface {
error
}

func logger() logr.Logger {
klog.InitFlags(flag.NewFlagSet("wandrs", flag.ContinueOnError))
return klogr.New().WithName("wandrs")
}

func toJSON(v interface{}) string {
data, _ := json.Marshal(v)
return string(data)
Expand Down Expand Up @@ -691,7 +700,7 @@ func TestHandlerFunc(t *testing.T) {

m := chi.NewRouter()
m.Use(middleware.Logger)
m.Use(binding.Injector(render.New()))
m.Use(binding.Injector(render.New(), logger()))
m.Get("/", binding.HandlerFunc(tt.args))

m.ServeHTTP(w, req)
Expand Down
2 changes: 1 addition & 1 deletion json_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ func performJSONTest(t *testing.T, binder binderFunc, testCase jsonTestCase) {
t.Run(testCase.description, func(t *testing.T) {
m := chi.NewRouter()
m.Use(middleware.Logger)
m.Use(binding.Injector(render.New()))
m.Use(binding.Injector(render.New(), logger()))

switch testCase.expected.(type) {
case []Post:
Expand Down
2 changes: 1 addition & 1 deletion multipart_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func Test_MultipartForm(t *testing.T) {
func performMultipartFormTest(t *testing.T, binder binderFunc, testCase multipartFormTestCase) {
m := chi.NewRouter()
m.Use(middleware.Logger)
m.Use(binding.Injector(render.New()))
m.Use(binding.Injector(render.New(), logger()))

m.With(binder(BlogPost{})).
Post(testRoute, binding.HandlerFunc(func(w http.ResponseWriter, actual BlogPost) {
Expand Down