diff --git a/_examples/README.md b/_examples/README.md index ddc96583..b2e5013c 100644 --- a/_examples/README.md +++ b/_examples/README.md @@ -197,7 +197,7 @@ * [Login (Repository and Service layers)](mvc/login) * [Login (Single Responsibility)](mvc/login-mvc-single-responsibility) * [Vue.js Todo App](mvc/vuejs-todo-mvc) -* [Bootstrapper](bootstrap) +* [Bootstrapper](bootstrapper) * Desktop Applications * [The blink package](desktop/blink) * [The lorca package](desktop/lorca) diff --git a/_examples/bootstrap/bootstrap/bootstrapper.go b/_examples/bootstrapper/bootstrap/bootstrapper.go similarity index 100% rename from _examples/bootstrap/bootstrap/bootstrapper.go rename to _examples/bootstrapper/bootstrap/bootstrapper.go diff --git a/_examples/bootstrap/folder_structure.png b/_examples/bootstrapper/folder_structure.png similarity index 100% rename from _examples/bootstrap/folder_structure.png rename to _examples/bootstrapper/folder_structure.png diff --git a/_examples/bootstrap/main.go b/_examples/bootstrapper/main.go similarity index 100% rename from _examples/bootstrap/main.go rename to _examples/bootstrapper/main.go diff --git a/_examples/bootstrap/main_test.go b/_examples/bootstrapper/main_test.go similarity index 100% rename from _examples/bootstrap/main_test.go rename to _examples/bootstrapper/main_test.go diff --git a/_examples/bootstrap/middleware/identity/identity.go b/_examples/bootstrapper/middleware/identity/identity.go similarity index 100% rename from _examples/bootstrap/middleware/identity/identity.go rename to _examples/bootstrapper/middleware/identity/identity.go diff --git a/_examples/bootstrap/public/favicon.ico b/_examples/bootstrapper/public/favicon.ico similarity index 100% rename from _examples/bootstrap/public/favicon.ico rename to _examples/bootstrapper/public/favicon.ico diff --git a/_examples/bootstrap/routes/follower.go b/_examples/bootstrapper/routes/follower.go similarity index 100% rename from _examples/bootstrap/routes/follower.go rename to _examples/bootstrapper/routes/follower.go diff --git a/_examples/bootstrap/routes/following.go b/_examples/bootstrapper/routes/following.go similarity index 100% rename from _examples/bootstrap/routes/following.go rename to _examples/bootstrapper/routes/following.go diff --git a/_examples/bootstrap/routes/index.go b/_examples/bootstrapper/routes/index.go similarity index 100% rename from _examples/bootstrap/routes/index.go rename to _examples/bootstrapper/routes/index.go diff --git a/_examples/bootstrap/routes/like.go b/_examples/bootstrapper/routes/like.go similarity index 100% rename from _examples/bootstrap/routes/like.go rename to _examples/bootstrapper/routes/like.go diff --git a/_examples/bootstrap/routes/routes.go b/_examples/bootstrapper/routes/routes.go similarity index 100% rename from _examples/bootstrap/routes/routes.go rename to _examples/bootstrapper/routes/routes.go diff --git a/_examples/bootstrap/views/index.html b/_examples/bootstrapper/views/index.html similarity index 100% rename from _examples/bootstrap/views/index.html rename to _examples/bootstrapper/views/index.html diff --git a/_examples/bootstrap/views/shared/error.html b/_examples/bootstrapper/views/shared/error.html similarity index 100% rename from _examples/bootstrap/views/shared/error.html rename to _examples/bootstrapper/views/shared/error.html diff --git a/_examples/bootstrap/views/shared/layout.html b/_examples/bootstrapper/views/shared/layout.html similarity index 100% rename from _examples/bootstrap/views/shared/layout.html rename to _examples/bootstrapper/views/shared/layout.html diff --git a/go.mod b/go.mod index a2aa1467..49f7f62e 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/golang/protobuf v1.4.2 github.com/gomodule/redigo v1.8.2 github.com/google/uuid v1.1.2-0.20200519141726-cb32006e483f - github.com/hashicorp/go-version v1.2.0 + github.com/hashicorp/go-version v1.2.1 github.com/iris-contrib/blackfriday v2.0.0+incompatible github.com/iris-contrib/httpexpect/v2 v2.0.5 github.com/iris-contrib/jade v1.1.4 @@ -24,19 +24,19 @@ require ( github.com/kataras/neffos v0.0.16 github.com/kataras/pio v0.0.8 github.com/kataras/sitemap v0.0.5 - github.com/klauspost/compress v1.10.6 + github.com/klauspost/compress v1.10.9 github.com/mediocregopher/radix/v3 v3.5.1 - github.com/microcosm-cc/bluemonday v1.0.2 + github.com/microcosm-cc/bluemonday v1.0.3 github.com/ryanuber/columnize v2.1.0+incompatible github.com/schollz/closestmatch v2.1.0+incompatible github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect - github.com/square/go-jose/v3 v3.0.0-20200430180204-d84c719419c2 - github.com/vmihailenco/msgpack/v5 v5.0.0-alpha.2 - go.etcd.io/bbolt v1.3.4 - golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 - golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 - golang.org/x/text v0.3.2 + github.com/square/go-jose/v3 v3.0.0-20200603004136-8ccb8a19e809 + github.com/vmihailenco/msgpack/v5 v5.0.0-beta.1 + go.etcd.io/bbolt v1.3.5 + golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 + golang.org/x/net v0.0.0-20200602114024-627f9648deb9 + golang.org/x/text v0.3.3 golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 gopkg.in/ini.v1 v1.57.0 - gopkg.in/yaml.v3 v3.0.0-20200506231410-2ff61e1afc86 + gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 ) diff --git a/hero/binding.go b/hero/binding.go index 0c7958a2..2327901b 100644 --- a/hero/binding.go +++ b/hero/binding.go @@ -221,7 +221,7 @@ func getBindingsFor(inputs []reflect.Type, deps []*Dependency, paramsCount int) func isPayloadType(in reflect.Type) bool { switch indirectType(in).Kind() { - case reflect.Struct, reflect.Slice: + case reflect.Struct, reflect.Slice, reflect.Ptr: return true default: return false diff --git a/mvc/controller_test.go b/mvc/controller_test.go index 272f9b87..3ba6d302 100644 --- a/mvc/controller_test.go +++ b/mvc/controller_test.go @@ -719,8 +719,20 @@ func (*testControllerMethodHandlerBindStruct) Any(data bindStructData) bindStruc return data } -func (*testControllerMethodHandlerBindStruct) PostByProducts(id uint64, data []bindStructData) []bindStructData { - return data +func (*testControllerMethodHandlerBindStruct) PostBySlice(id uint64, manyData []bindStructData) []bindStructData { + return manyData +} + +type dataSlice []bindStructData + +func (*testControllerMethodHandlerBindStruct) PostBySlicetype(id uint64, manyData dataSlice) dataSlice { + return manyData +} + +type dataSlicePtr []*bindStructData + +func (*testControllerMethodHandlerBindStruct) PostBySlicetypeptr(id uint64, manyData dataSlicePtr) dataSlicePtr { + return manyData } func TestControllerMethodHandlerBindStruct(t *testing.T) { @@ -734,11 +746,13 @@ func TestControllerMethodHandlerBindStruct(t *testing.T) { m.Handle(new(testControllerMethodHandlerBindStruct)) data := bindStructData{Name: "kataras"} - manyData := []bindStructData{{"kataras"}, {"john doe"}} + manyData := []bindStructData{data, {"john doe"}} e := httptest.New(t, app) e.GET("/data").WithQueryObject(data).Expect().Status(httptest.StatusOK).JSON().Equal(data) e.PATCH("/data").WithJSON(data).Expect().Status(httptest.StatusOK).JSON().Equal(data) - e.POST("/data/42/products").WithJSON(manyData).Expect().Status(httptest.StatusOK).JSON().Equal(manyData) + e.POST("/data/42/slice").WithJSON(manyData).Expect().Status(httptest.StatusOK).JSON().Equal(manyData) + e.POST("/data/42/slicetype").WithJSON(manyData).Expect().Status(httptest.StatusOK).JSON().Equal(manyData) + e.POST("/data/42/slicetypeptr").WithJSON(manyData).Expect().Status(httptest.StatusOK).JSON().Equal(manyData) // more tests inside the hero package itself. }