From f23932a574fd83eb3f18d595e16b800e0dd653cd Mon Sep 17 00:00:00 2001 From: Masudur Rahman Date: Wed, 7 Jul 2021 19:30:27 +0600 Subject: [PATCH 1/2] Add logr.Logger parameter to Injector() function Signed-off-by: Masudur Rahman --- form_test.go | 2 +- go.mod | 4 +++- go.sum | 4 ++-- injector.go | 7 ++++--- injector_test.go | 11 ++++++++++- json_test.go | 2 +- multipart_test.go | 2 +- 7 files changed, 22 insertions(+), 10 deletions(-) diff --git a/form_test.go b/form_test.go index a59fc75..593782e 100644 --- a/form_test.go +++ b/form_test.go @@ -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: diff --git a/go.mod b/go.mod index 0a16a01..e4a1c3c 100644 --- a/go.mod +++ b/go.mod @@ -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/http v0.0.2-0.20210707135035-2f2d25e6ec0e go.wandrs.dev/inject v0.0.1 k8s.io/apimachinery v0.21.1 + k8s.io/klog/v2 v2.8.0 ) diff --git a/go.sum b/go.sum index 20b894b..9c3f09e 100644 --- a/go.sum +++ b/go.sum @@ -132,8 +132,8 @@ 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/http v0.0.2-0.20210707135035-2f2d25e6ec0e h1:kgu5904yqZI2S993tnbitM+cr8H+2ab5/rpjqzgl1q4= +go.wandrs.dev/http v0.0.2-0.20210707135035-2f2d25e6ec0e/go.mod h1:yukEsN4kwCfNBl3l7EmW/GdBlowAEoDaTmwkHc0C9Tk= go.wandrs.dev/inject v0.0.1 h1:jm6Ex/PaPUAjvTDBQpWpUZ8lPdyYb3c7WfCR/G1qjio= go.wandrs.dev/inject v0.0.1/go.mod h1:ZN2TWSS270vSn0ci86WBgyvXO4WFooiU8Qyvxz28l2k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/injector.go b/injector.go index 7c35971..cd6fd69 100644 --- a/injector.go +++ b/injector.go @@ -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" ) @@ -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") } @@ -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 @@ -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) diff --git a/injector_test.go b/injector_test.go index fa755ee..205bfe2 100644 --- a/injector_test.go +++ b/injector_test.go @@ -3,6 +3,7 @@ package binding_test import ( "encoding/json" "errors" + "flag" "io" "io/fs" "net/http" @@ -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") @@ -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) @@ -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) diff --git a/json_test.go b/json_test.go index 9a11b28..c9be139 100644 --- a/json_test.go +++ b/json_test.go @@ -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: diff --git a/multipart_test.go b/multipart_test.go index 5096efe..be70b46 100644 --- a/multipart_test.go +++ b/multipart_test.go @@ -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) { From ef9ff4cd15dec2a76b110fa9597e0599c93f85ba Mon Sep 17 00:00:00 2001 From: Masudur Rahman Date: Thu, 8 Jul 2021 18:12:23 +0600 Subject: [PATCH 2/2] Use updated go.wanders.dev/http & go.wandrs.dev/inject Signed-off-by: Masudur Rahman --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index e4a1c3c..83ae4ca 100644 --- a/go.mod +++ b/go.mod @@ -10,8 +10,8 @@ require ( 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.2-0.20210707135035-2f2d25e6ec0e - 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 ) diff --git a/go.sum b/go.sum index 9c3f09e..eff39f4 100644 --- a/go.sum +++ b/go.sum @@ -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.2-0.20210707135035-2f2d25e6ec0e h1:kgu5904yqZI2S993tnbitM+cr8H+2ab5/rpjqzgl1q4= -go.wandrs.dev/http v0.0.2-0.20210707135035-2f2d25e6ec0e/go.mod h1:yukEsN4kwCfNBl3l7EmW/GdBlowAEoDaTmwkHc0C9Tk= -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=