From 76d14c3de30999441fb412e7eb5c574374a440a5 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 8 Sep 2020 14:34:18 +0300 Subject: [PATCH 001/293] chore(release): 1.26.6 --- CHANGELOG.md | 12 +++++++++++- cmd/swipe/main.go | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87f1e0f9..2d9c7b3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## [Unreleased] + +## [v1.26.6] - 2020-09-08 +### Bug Fixes +- Check url scheme for go cloent generation. + +### Pull Requests +- Merge pull request [#2](https://github.com/swipe-io/swipe/issues/2) from djeckson/fix/check-url-scheme + + ## [v1.26.5] - 2020-09-07 ### Bug Fixes @@ -482,7 +491,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v1.26.5...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v1.26.6...HEAD +[v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 [v1.26.3]: https://github.com/swipe-io/swipe/compare/v1.26.2...v1.26.3 diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 0324fe3b..2507038b 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -21,7 +21,7 @@ import ( "golang.org/x/mod/modfile" ) -const version = "v1.26.5" +const version = "v1.26.6" var ( colorSuccess = color.Green.Render From 0c490370db5e75ceb2f6b0a3e36ad4476dbfdec9 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 9 Sep 2020 16:40:52 +0300 Subject: [PATCH 002/293] feat: Added Path property to EndpointFactory for concatenated to server URL. --- pkg/usecase/generator/endpoint_factory.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/usecase/generator/endpoint_factory.go b/pkg/usecase/generator/endpoint_factory.go index 1d844efc..332033e5 100644 --- a/pkg/usecase/generator/endpoint_factory.go +++ b/pkg/usecase/generator/endpoint_factory.go @@ -23,14 +23,19 @@ func (g *endpointFactory) Prepare(ctx context.Context) error { func (g *endpointFactory) Process(ctx context.Context) error { g.W("type EndpointFactory struct{\n") g.W("Options []%sClientOption\n", g.o.ID) + g.W("Path string\n") g.W("}\n\n") if len(g.o.Methods) > 0 { kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") ioPkg := g.i.Import("io", "io") + stringsPkg := g.i.Import("strings", "strings") for _, m := range g.o.Methods { g.W("func (f *EndpointFactory) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", m.Name, kitEndpointPkg, ioPkg) + g.W("if f.Path != \"\"{\n") + g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) + g.W("}\n") g.W("s, err := NewClient%s%s(instance, f.Options...)\n", g.o.Transport.Prefix, g.o.ID) g.WriteCheckErr(func() { g.W("return nil, nil, err\n") From a30404e2b1c562c7e145998c564c6a4bd87a5ae2 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 9 Sep 2020 16:41:45 +0300 Subject: [PATCH 003/293] chore(release): 1.26.7 --- CHANGELOG.md | 9 ++++++++- cmd/swipe/main.go | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d9c7b3c..51c81cab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +## [v1.26.7] - 2020-09-09 +### Features +- Added Path property to EndpointFactory for concatenated to server URL. + + ## [v1.26.6] - 2020-09-08 ### Bug Fixes @@ -491,7 +497,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v1.26.6...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v1.26.7...HEAD +[v1.26.7]: https://github.com/swipe-io/swipe/compare/v1.26.6...v1.26.7 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 2507038b..e10e6fcf 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -21,7 +21,7 @@ import ( "golang.org/x/mod/modfile" ) -const version = "v1.26.6" +const version = "v1.26.7" var ( colorSuccess = color.Green.Render From 85588ef271d3cab440c9d057e5d15704beccdef3 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 11 Sep 2020 10:17:02 +0300 Subject: [PATCH 004/293] feat: Some internal changes, performance improvements. BREAKING CHANGE: The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg/swipe package, they are now located at github.com/swipe-io/swipe. --- .gitignore | 4 +- Makefile | 5 +- cmd/git-tagrestore/main.go | 2 +- cmd/swipe/main.go | 62 +++- fixtures/ConfigSuccess/app/config.go | 5 + fixtures/ConfigSuccess/app/swipe.go | 13 + fixtures/GatewaySuccess/app/swipe.go | 16 + fixtures/config/config.go | 18 -- fixtures/config/swipe.go | 19 -- fixtures/docs/openapi_jsonrpc.json | 1 - fixtures/docs/openapi_rest.json | 1 - fixtures/frontend/dist/bundle.js | 1 - fixtures/frontend/index.html | 10 - fixtures/frontend/index.js | 5 - fixtures/main.go | 60 ---- fixtures/middleware/middleware.go | 28 -- fixtures/model/user.go | 12 - fixtures/service/app/jsonrpc_doc_gen.md | 135 ++++++++ fixtures/service/app/service.go | 111 +++++++ fixtures/service/app/swipe.go | 16 + fixtures/service/interface.go | 20 -- fixtures/service/service.go | 40 --- fixtures/transport/jsonrpc/encodedecode.go | 11 - fixtures/transport/jsonrpc/transport.go | 33 -- fixtures/transport/rest/encodedecode.go | 11 - fixtures/transport/rest/transport.go | 54 ---- fixtures/user/user.go | 66 ---- gen_test.go | 116 +++++++ go.mod | 11 +- go.sum | 59 +++- {pkg => internal}/astcopy/astcopy.go | 0 {pkg => internal}/astloader/astloader.go | 154 +++++---- .../domain/model/config.go | 0 internal/domain/model/enum.go | 6 + .../domain/model/gateway.go | 5 +- .../domain/model/service.go | 26 +- .../domain/model/transport.go | 2 +- {pkg => internal}/errors/errors.go | 0 {pkg => internal}/format/fomrat.go | 0 {pkg => internal}/git/git.go | 0 {pkg => internal}/graph/graph.go | 2 +- {pkg => internal}/importer/importer.go | 2 +- {pkg => internal}/importer/utils.go | 0 internal/interface/executor/generation.go | 172 ++++++++++ internal/interface/factory/importer.go | 26 ++ internal/interface/finder/finder.go | 44 +++ internal/interface/frame/bytes_frame.go | 17 + internal/interface/frame/factory.go | 33 ++ internal/interface/frame/golang_frame.go | 48 +++ internal/interface/frame/js_frame.go | 38 +++ internal/interface/gateway/config.go | 69 ++++ internal/interface/gateway/http_gateway.go | 110 +++++++ .../interface/gateway/service.go | 301 +++++++++++------- .../interface}/generator/client_struct.go | 85 ++--- .../interface}/generator/config.go | 49 +-- .../generator/config_markdown_doc.go | 32 +- .../interface}/generator/endpoint.go | 55 ++-- .../interface}/generator/endpoint_factory.go | 40 ++- .../interface/generator/http_gateway.go | 97 +++--- .../interface}/generator/http_transport.go | 102 +++--- .../interface}/generator/instrumenting.go | 69 ++-- .../interface}/generator/jsonrpc_go_client.go | 73 +++-- .../interface}/generator/jsonrpc_js_client.go | 68 ++-- .../generator/jsonrpc_markdown_doc.go | 70 ++-- .../interface}/generator/jsonrpc_server.go | 86 ++--- .../interface}/generator/logging.go | 45 ++- .../interface}/generator/openapi.go | 59 ++-- internal/interface/generator/readme.go | 156 +++++++++ .../interface}/generator/rest_go_client.go | 95 +++--- .../interface}/generator/rest_server.go | 118 ++++--- .../interface}/generator/utils.go | 2 +- internal/interface/processor/config.go | 33 ++ internal/interface/processor/gateway.go | 30 ++ internal/interface/processor/service.go | 111 +++++++ internal/interface/registry/processor.go | 55 ++++ {pkg => internal}/openapi/openapi.go | 0 {pkg => internal}/openapi/openapi_ffjson.go | 0 internal/option/loader.go | 128 ++++++++ {pkg/parser => internal/option}/parser.go | 2 +- {pkg => internal}/queue/queue.go | 0 {pkg => internal}/stcreator/config.go | 0 {pkg => internal}/stcreator/loader.go | 0 {pkg => internal}/stcreator/mongo_loader.go | 0 .../stcreator/postgres_loader.go | 0 {pkg => internal}/stcreator/project.go | 2 +- {pkg => internal}/strings/strings.go | 0 {pkg => internal}/types/types.go | 0 {pkg => internal}/types/utils.go | 19 ++ internal/usecase/executor/generation.go | 13 + internal/usecase/factory/importer.go | 10 + internal/usecase/finder/finder.go | 11 + internal/usecase/frame/frame.go | 14 + internal/usecase/gateway/config.go | 15 + internal/usecase/gateway/http_gateway.go | 7 + internal/usecase/gateway/service.go | 20 ++ .../usecase/generator/generator.go | 0 internal/usecase/processor/processor.go | 11 + internal/usecase/registry/processor.go | 11 + {pkg => internal}/value/value.go | 0 {pkg => internal}/writer/base_writer.go | 0 {pkg => internal}/writer/golang_writer.go | 8 +- {pkg => internal}/writer/utils.go | 2 +- pkg/domain/model/generate_info.go | 28 -- pkg/file/file.go | 82 ----- pkg/gen/gen.go | 235 -------------- pkg/interface/option/config_option.go | 40 --- pkg/interface/option/gateway_option.go | 93 ------ pkg/registry/generator_registry.go | 39 --- pkg/swipe/swipe_test.go | 220 ------------- pkg/usecase/generator/readme.go | 130 -------- pkg/usecase/option/option.go | 9 - pkg/usecase/processor/config_processor.go | 31 -- pkg/usecase/processor/gateway_processor.go | 27 -- pkg/usecase/processor/importer_factory.go | 23 -- pkg/usecase/processor/processor.go | 10 - pkg/usecase/processor/service_processor.go | 66 ---- pkg/swipe/swipe.go => swipe.go | 6 +- swipe_test.go | 194 +++++++++++ 118 files changed, 2867 insertions(+), 2169 deletions(-) create mode 100644 fixtures/ConfigSuccess/app/config.go create mode 100644 fixtures/ConfigSuccess/app/swipe.go create mode 100644 fixtures/GatewaySuccess/app/swipe.go delete mode 100644 fixtures/config/config.go delete mode 100644 fixtures/config/swipe.go delete mode 100755 fixtures/docs/openapi_jsonrpc.json delete mode 100755 fixtures/docs/openapi_rest.json delete mode 100644 fixtures/frontend/dist/bundle.js delete mode 100644 fixtures/frontend/index.html delete mode 100644 fixtures/frontend/index.js delete mode 100644 fixtures/main.go delete mode 100644 fixtures/middleware/middleware.go delete mode 100644 fixtures/model/user.go create mode 100755 fixtures/service/app/jsonrpc_doc_gen.md create mode 100644 fixtures/service/app/service.go create mode 100644 fixtures/service/app/swipe.go delete mode 100644 fixtures/service/interface.go delete mode 100644 fixtures/service/service.go delete mode 100644 fixtures/transport/jsonrpc/encodedecode.go delete mode 100644 fixtures/transport/jsonrpc/transport.go delete mode 100644 fixtures/transport/rest/encodedecode.go delete mode 100644 fixtures/transport/rest/transport.go delete mode 100644 fixtures/user/user.go create mode 100644 gen_test.go rename {pkg => internal}/astcopy/astcopy.go (100%) rename {pkg => internal}/astloader/astloader.go (64%) rename pkg/domain/model/config_option.go => internal/domain/model/config.go (100%) create mode 100644 internal/domain/model/enum.go rename pkg/domain/model/gateway_option.go => internal/domain/model/gateway.go (84%) rename pkg/domain/model/service_option.go => internal/domain/model/service.go (68%) rename pkg/domain/model/transport_option.go => internal/domain/model/transport.go (97%) rename {pkg => internal}/errors/errors.go (100%) rename {pkg => internal}/format/fomrat.go (100%) rename {pkg => internal}/git/git.go (100%) rename {pkg => internal}/graph/graph.go (97%) rename {pkg => internal}/importer/importer.go (98%) rename {pkg => internal}/importer/utils.go (100%) create mode 100644 internal/interface/executor/generation.go create mode 100644 internal/interface/factory/importer.go create mode 100644 internal/interface/finder/finder.go create mode 100644 internal/interface/frame/bytes_frame.go create mode 100644 internal/interface/frame/factory.go create mode 100644 internal/interface/frame/golang_frame.go create mode 100644 internal/interface/frame/js_frame.go create mode 100644 internal/interface/gateway/config.go create mode 100644 internal/interface/gateway/http_gateway.go rename pkg/interface/option/service_option.go => internal/interface/gateway/service.go (53%) rename {pkg/usecase => internal/interface}/generator/client_struct.go (64%) rename {pkg/usecase => internal/interface}/generator/config.go (84%) rename {pkg/usecase => internal/interface}/generator/config_markdown_doc.go (64%) rename {pkg/usecase => internal/interface}/generator/endpoint.go (70%) rename {pkg/usecase => internal/interface}/generator/endpoint_factory.go (56%) rename pkg/usecase/generator/gateway.go => internal/interface/generator/http_gateway.go (52%) rename {pkg/usecase => internal/interface}/generator/http_transport.go (64%) rename {pkg/usecase => internal/interface}/generator/instrumenting.go (59%) rename {pkg/usecase => internal/interface}/generator/jsonrpc_go_client.go (65%) rename {pkg/usecase => internal/interface}/generator/jsonrpc_js_client.go (84%) rename {pkg/usecase => internal/interface}/generator/jsonrpc_markdown_doc.go (82%) rename {pkg/usecase => internal/interface}/generator/jsonrpc_server.go (63%) rename {pkg/usecase => internal/interface}/generator/logging.go (73%) rename {pkg/usecase => internal/interface}/generator/openapi.go (92%) create mode 100644 internal/interface/generator/readme.go rename {pkg/usecase => internal/interface}/generator/rest_go_client.go (74%) rename {pkg/usecase => internal/interface}/generator/rest_server.go (71%) rename {pkg/usecase => internal/interface}/generator/utils.go (96%) create mode 100644 internal/interface/processor/config.go create mode 100644 internal/interface/processor/gateway.go create mode 100644 internal/interface/processor/service.go create mode 100644 internal/interface/registry/processor.go rename {pkg => internal}/openapi/openapi.go (100%) rename {pkg => internal}/openapi/openapi_ffjson.go (100%) create mode 100644 internal/option/loader.go rename {pkg/parser => internal/option}/parser.go (99%) rename {pkg => internal}/queue/queue.go (100%) rename {pkg => internal}/stcreator/config.go (100%) rename {pkg => internal}/stcreator/loader.go (100%) rename {pkg => internal}/stcreator/mongo_loader.go (100%) rename {pkg => internal}/stcreator/postgres_loader.go (100%) rename {pkg => internal}/stcreator/project.go (99%) rename {pkg => internal}/strings/strings.go (100%) rename {pkg => internal}/types/types.go (100%) rename {pkg => internal}/types/utils.go (62%) create mode 100644 internal/usecase/executor/generation.go create mode 100644 internal/usecase/factory/importer.go create mode 100644 internal/usecase/finder/finder.go create mode 100644 internal/usecase/frame/frame.go create mode 100644 internal/usecase/gateway/config.go create mode 100644 internal/usecase/gateway/http_gateway.go create mode 100644 internal/usecase/gateway/service.go rename {pkg => internal}/usecase/generator/generator.go (100%) create mode 100644 internal/usecase/processor/processor.go create mode 100644 internal/usecase/registry/processor.go rename {pkg => internal}/value/value.go (100%) rename {pkg => internal}/writer/base_writer.go (100%) rename {pkg => internal}/writer/golang_writer.go (97%) rename {pkg => internal}/writer/utils.go (82%) delete mode 100644 pkg/domain/model/generate_info.go delete mode 100644 pkg/file/file.go delete mode 100644 pkg/gen/gen.go delete mode 100644 pkg/interface/option/config_option.go delete mode 100644 pkg/interface/option/gateway_option.go delete mode 100644 pkg/registry/generator_registry.go delete mode 100644 pkg/swipe/swipe_test.go delete mode 100644 pkg/usecase/generator/readme.go delete mode 100644 pkg/usecase/option/option.go delete mode 100644 pkg/usecase/processor/config_processor.go delete mode 100644 pkg/usecase/processor/gateway_processor.go delete mode 100644 pkg/usecase/processor/importer_factory.go delete mode 100644 pkg/usecase/processor/processor.go delete mode 100644 pkg/usecase/processor/service_processor.go rename pkg/swipe/swipe.go => swipe.go (98%) create mode 100644 swipe_test.go diff --git a/.gitignore b/.gitignore index 1f1025f2..a6707385 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .idea -.DS_Store \ No newline at end of file +.DS_Store + +fixtures/*/app/*_gen.go \ No newline at end of file diff --git a/Makefile b/Makefile index 721c3f31..fc960741 100644 --- a/Makefile +++ b/Makefile @@ -3,4 +3,7 @@ chglog: check: go vet ./... - go test ./... \ No newline at end of file + go test ./... + +build: check + go build -o swipe ./cmd/swipe \ No newline at end of file diff --git a/cmd/git-tagrestore/main.go b/cmd/git-tagrestore/main.go index 1d343d55..ff6d2b6f 100644 --- a/cmd/git-tagrestore/main.go +++ b/cmd/git-tagrestore/main.go @@ -7,7 +7,7 @@ import ( "regexp" "strings" - "github.com/swipe-io/swipe/pkg/git" + "github.com/swipe-io/swipe/v2/internal/git" ) func main() { diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index e10e6fcf..7ca77941 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -3,26 +3,32 @@ package main import ( "context" "flag" + "fmt" "go/build" "io/ioutil" "log" "os" "path/filepath" "strings" + "time" + + "github.com/swipe-io/swipe/v2" "github.com/google/subcommands" "github.com/gookit/color" "github.com/iancoleman/strcase" - "github.com/swipe-io/swipe/pkg/astloader" - "github.com/swipe-io/swipe/pkg/gen" - "github.com/swipe-io/swipe/pkg/stcreator" + "github.com/swipe-io/swipe/v2/internal/interface/executor" + "github.com/swipe-io/swipe/v2/internal/interface/factory" + "github.com/swipe-io/swipe/v2/internal/interface/finder" + "github.com/swipe-io/swipe/v2/internal/interface/frame" + "github.com/swipe-io/swipe/v2/internal/interface/registry" + "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/swipe/v2/internal/stcreator" "golang.org/x/mod/modfile" ) -const version = "v1.26.7" - var ( colorSuccess = color.Green.Render colorAccent = color.Cyan.Render @@ -40,7 +46,6 @@ func main() { flag.Parse() log.SetFlags(0) - log.SetPrefix("swipe: ") log.SetOutput(os.Stderr) allCmds := map[string]bool{ @@ -52,11 +57,22 @@ func main() { "gen": true, "show": true, } + + log.Printf("%s %s", color.LightBlue.Render("Swipe"), color.Yellow.Render(swipe.Version)) + log.Printf("%s %s", color.Yellow.Render("Thanks for using"), color.LightBlue.Render("swipe")) + log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) + + startCmd := time.Now() if args := flag.Args(); len(args) == 0 || !allCmds[args[0]] { genCmd := &genCmd{} os.Exit(int(genCmd.Execute(context.Background(), flag.CommandLine))) } - os.Exit(int(subcommands.Execute(context.Background()))) + code := int(subcommands.Execute(context.Background())) + + log.Println(color.LightGreen.Render("Command execution completed successfully")) + log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Now().Sub(startCmd).String())) + + os.Exit(code) } type versionCmd struct { @@ -85,11 +101,12 @@ func (c *versionCmd) SetFlags(_ *flag.FlagSet) { // Execute executes the command and returns an ExitStatus. func (c *versionCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { - log.Println(version) + log.Println(swipe.Version) return subcommands.ExitSuccess } type genCmd struct { + verbose bool } func (*genCmd) Name() string { return "gen" } @@ -104,6 +121,7 @@ func (*genCmd) Usage() string { } func (cmd *genCmd) SetFlags(f *flag.FlagSet) { + f.BoolVar(&cmd.verbose, "v", false, "-v") } func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { @@ -123,26 +141,35 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa return subcommands.ExitFailure } - if mod.Module.Mod.Path != "github.com/swipe-io/swipe" { + if mod.Module.Mod.Path != "github.com/swipe-io/swipe/v2" { foundReplace := false for _, replace := range mod.Replace { - if replace.Old.Path == "github.com/swipe-io/swipe" { + if replace.Old.Path == "github.com/swipe-io/swipe/v2" { foundReplace = true break } } if !foundReplace { for _, require := range mod.Require { - if require.Mod.Path == "github.com/swipe-io/swipe" && require.Mod.Version != version { - log.Println(colorFail("swipe cli version (" + version + ") does not match package version (" + require.Mod.Version + ")")) + if require.Mod.Path == "github.com/swipe-io/swipe/v2" && require.Mod.Version != swipe.Version { + log.Println(colorFail("swipe cli version (" + swipe.Version + ") does not match package version (" + require.Mod.Version + ")")) return subcommands.ExitFailure } } } } - l := astloader.NewLoader(wd, os.Environ(), packages(f)) - s := gen.NewSwipe(ctx, version, l) - results, errs := s.Generate() + + l := option.NewLoader() + fi := finder.NewServiceFinder(l) + r := registry.NewRegistry(fi) + i := factory.NewImporterFactory() + ff := frame.NewFrameFactory(swipe.Version) + ge := executor.NewGenerationExecutor(r, i, ff, l) + + ge.Cleanup(wd) // clear all before generated files. + + results, errs := ge.Execute(wd, os.Environ(), packages(f)) + if len(errs) > 0 { for _, err := range errs { log.Println(colorFail(err)) @@ -158,6 +185,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa if len(g.Errs) > 0 { logErrors(g.Errs) log.Printf("%s: %s\n", g.PkgPath, colorFail("generate failed")) + fmt.Println(string(g.Content)) success = false } if len(g.Content) == 0 { @@ -165,7 +193,9 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) if err == nil { - log.Printf("%s: wrote %s\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath)) + if cmd.verbose { + log.Printf("%s: wrote %s\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath)) + } } else { log.Printf("%s: failed to write %s: %v\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath), colorFail(err)) success = false diff --git a/fixtures/ConfigSuccess/app/config.go b/fixtures/ConfigSuccess/app/config.go new file mode 100644 index 00000000..2d37b985 --- /dev/null +++ b/fixtures/ConfigSuccess/app/config.go @@ -0,0 +1,5 @@ +package app + +type Config struct { + Name string +} diff --git a/fixtures/ConfigSuccess/app/swipe.go b/fixtures/ConfigSuccess/app/swipe.go new file mode 100644 index 00000000..fbab9d13 --- /dev/null +++ b/fixtures/ConfigSuccess/app/swipe.go @@ -0,0 +1,13 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.ConfigEnv( + &Config{Name: "test"}, + ), + ) +} diff --git a/fixtures/GatewaySuccess/app/swipe.go b/fixtures/GatewaySuccess/app/swipe.go new file mode 100644 index 00000000..d5408662 --- /dev/null +++ b/fixtures/GatewaySuccess/app/swipe.go @@ -0,0 +1,16 @@ +//+build swipe + +package app + +import ( + "github.com/swipe-io/swipe/v2" + "github.com/swipe-io/swipe/v2/fixtures/service/app" +) + +func Swipe() { + swipe.Build( + swipe.Gateway( + swipe.GatewayService((*app.Interface)(nil)), + ), + ) +} diff --git a/fixtures/config/config.go b/fixtures/config/config.go deleted file mode 100644 index d63816f5..00000000 --- a/fixtures/config/config.go +++ /dev/null @@ -1,18 +0,0 @@ -package config - -type Foo struct { - Name string `descr:"database connection foo name"` -} - -type DB struct { - Conn string `descr:"database connection"` - Foo Foo -} - -type Config struct { - Bind string `flag:"bind-addr,required"` - Name string - MaxPrice int `env:"MAX_PRICE,required"` - DB DB `env:"DB2"` - URLs []int -} diff --git a/fixtures/config/swipe.go b/fixtures/config/swipe.go deleted file mode 100644 index f28e31c5..00000000 --- a/fixtures/config/swipe.go +++ /dev/null @@ -1,19 +0,0 @@ -//+build swipe - -package config - -import ( - . "github.com/swipe-io/swipe/pkg/swipe" -) - -func SwipeConfig() { - Build( - ConfigEnv( - &Config{ - Bind: "hohoho", - Name: "Default MethodName", - }, - FuncName("LoadConfig"), - ), - ) -} diff --git a/fixtures/docs/openapi_jsonrpc.json b/fixtures/docs/openapi_jsonrpc.json deleted file mode 100755 index c796958a..00000000 --- a/fixtures/docs/openapi_jsonrpc.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{"title":"Service Test","description":"description","version":"v1.0.0"},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32002":{"description":"ErrForbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrForbidden"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32002":{"description":"ErrForbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrForbidden"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"c":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"lastSeen":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"type":"object","properties":{"coordinates":{"type":"array","items":{"type":"number","format":"float","example":1.11}},"type":{"type":"string","format":"string","example":"abc"}}},"profile":{"type":"object","properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"updatedAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32002":{"description":"ErrForbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrForbidden"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"lastSeen":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"type":"object","properties":{"coordinates":{"type":"array","items":{"type":"number","format":"float","example":1.11}},"type":{"type":"string","format":"string","example":"abc"}}},"profile":{"type":"object","properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"updatedAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32002":{"description":"ErrForbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrForbidden"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"type":"object","properties":{"string":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"string":{"type":"object","properties":{"string":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32002":{"description":"ErrForbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrForbidden"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32002":{"description":"ErrForbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrForbidden"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/fixtures/docs/openapi_rest.json b/fixtures/docs/openapi_rest.json deleted file mode 100755 index 31fc6f69..00000000 --- a/fixtures/docs/openapi_rest.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{"title":"Service Test","version":"v1.0.0"},"servers":[{"url":"http://test.api"}],"paths":{"":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"string":{"type":"object","properties":{"string":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"lastSeen":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"type":"object","properties":{"coordinates":{"type":"array","items":{"type":"number","format":"float","example":1.11}},"type":{"type":"string","format":"string","example":"abc"}}},"profile":{"type":"object","properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"updatedAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/{name}/{fname}":{"get":{"summary":"Get","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"integer","example":1}},{"in":"path","name":"name","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"price","required":true,"schema":{"type":"number","format":"float","example":1.11}},{"in":"header","name":"n","required":true,"schema":{"type":"integer","example":1}},{"in":"header","name":"b","required":true,"schema":{"type":"integer","example":1}},{"in":"query","name":"c","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"lastSeen":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"type":"object","properties":{"coordinates":{"type":"array","items":{"type":"number","format":"float","example":1.11}},"type":{"type":"string","format":"string","example":"abc"}}},"profile":{"type":"object","properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"updatedAt":{"type":"string","format":"date-time","example":"1985-02-04T00:00:00.00Z"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/{ns}/auth/{utype}/{user}/{restype}/{resource}/{permission}":{"put":{"summary":"TestMethod2","parameters":[{"in":"path","name":"ns","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"path","name":"utype","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"path","name":"user","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"path","name":"restype","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"path","name":"resource","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"path","name":"permission","required":true,"schema":{"type":"string","format":"string","example":"abc"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} diff --git a/fixtures/frontend/dist/bundle.js b/fixtures/frontend/dist/bundle.js deleted file mode 100644 index 46d6049e..00000000 --- a/fixtures/frontend/dist/bundle.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var t={};function s(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,s),n.l=!0,n.exports}s.m=e,s.c=t,s.d=function(e,t,r){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(s.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(r,n,function(t){return e[t]}.bind(null,n));return r},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";s.r(t);new class extends class{constructor(e){this.rgt=e,this.requestID=0,this.batchRequests=[],this.isBatch=!1}batch(){if(this.isBatch)throw new Error("batch request is started");this.isBatch=!0}commit(){if(!this.isBatch)throw new Error("for use commit must be start batch");for(var e=[],t={},s=0;s{})}]); \ No newline at end of file diff --git a/fixtures/frontend/index.html b/fixtures/frontend/index.html deleted file mode 100644 index 4c8470d9..00000000 --- a/fixtures/frontend/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - Document - - - - diff --git a/fixtures/frontend/index.js b/fixtures/frontend/index.js deleted file mode 100644 index b5ce9e15..00000000 --- a/fixtures/frontend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import ClientServiceInterface from "./../transport/jsonrpc/jsclient"; - -var c = new ClientServiceInterface("http://localhost:9000"); - -c.getAll().then((data) => {}); diff --git a/fixtures/main.go b/fixtures/main.go deleted file mode 100644 index bb6734a1..00000000 --- a/fixtures/main.go +++ /dev/null @@ -1,60 +0,0 @@ -//+build !swipe - -package main - -import ( - "fmt" - "net/http" - "os" - "os/signal" - - "github.com/valyala/fasthttp" - - "github.com/go-kit/kit/log" - - "github.com/swipe-io/swipe/fixtures/config" - "github.com/swipe-io/swipe/fixtures/service" - "github.com/swipe-io/swipe/fixtures/transport/jsonrpc" - "github.com/swipe-io/swipe/fixtures/transport/rest" -) - -func main() { - sigint := make(chan os.Signal, 1) - signal.Notify(sigint, os.Interrupt) - - logger := log.NewLogfmtLogger(os.Stdout) - - cfg, errs := config.LoadConfig() - if len(errs) > 0 { - for _, err := range errs { - _ = logger.Log("err", err) - } - os.Exit(1) - } - - fmt.Println(cfg) - - svc := service.Interface(&service.Service{}) - svc = jsonrpc.NewLoggingMiddlewareServiceInterface(svc, logger) - - httpJSONRPCHandler, err := jsonrpc.MakeHandlerJSONRPCServiceInterface(svc) - if err != nil { - _ = logger.Log("err", err) - os.Exit(1) - } - - httpRestHandler, err := rest.MakeHandlerRESTServiceInterface(svc) - if err != nil { - _ = logger.Log("err", err) - os.Exit(1) - } - - go func() { - _ = http.ListenAndServe(":8080", httpJSONRPCHandler) - }() - go func() { - _ = fasthttp.ListenAndServe(":8081", httpRestHandler) - }() - - <-sigint -} diff --git a/fixtures/middleware/middleware.go b/fixtures/middleware/middleware.go deleted file mode 100644 index 58eace4b..00000000 --- a/fixtures/middleware/middleware.go +++ /dev/null @@ -1,28 +0,0 @@ -package middleware - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/swipe-io/swipe/fixtures/user" -) - -func AuthMiddleware() endpoint.Middleware { - return func(e endpoint.Endpoint) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (response interface{}, err error) { - return nil, GetErrUnauthorized() - } - } -} - -func FirstGetErrUnauthorized() error { - return GetErrUnauthorized() -} - -func GetErrUnauthorized() error { - return NestedGetErrUnauthorized() -} - -func NestedGetErrUnauthorized() error { - return user.ErrForbidden{} -} diff --git a/fixtures/model/user.go b/fixtures/model/user.go deleted file mode 100644 index a6788597..00000000 --- a/fixtures/model/user.go +++ /dev/null @@ -1,12 +0,0 @@ -package model - -type Point struct { - T string `json:"-"` - Coordinates []float64 `json:"coordinates"` -} - -type User struct { - Name string - Password string - Point Point -} diff --git a/fixtures/service/app/jsonrpc_doc_gen.md b/fixtures/service/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..c26f02ed --- /dev/null +++ b/fixtures/service/app/jsonrpc_doc_gen.md @@ -0,0 +1,135 @@ +# Swipe JSONRPC Client + +Create + +Delete + +Get + +GetAll + +TestMethod + +TestMethod2 + +### Create(name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|name|string|| +|data|Array.<number>|| +### Delete(id) ⇒ + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### Get(id, name, fname, price, n, b, c) ⇒User + + item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|c|number|| +### GetAll() ⇒Array.<User> + + more comment and more and more comment and more and more comment and more. + +New line comment. + + + +**Throws**: + +ErrUnauthorizedException + + + +### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### User + +| Field | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|photo|Array.<number>|| +|profile|Profile|| +|created_at|string|| +|updated_at|string|| +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| diff --git a/fixtures/service/app/service.go b/fixtures/service/app/service.go new file mode 100644 index 00000000..687577d2 --- /dev/null +++ b/fixtures/service/app/service.go @@ -0,0 +1,111 @@ +package app + +import ( + "context" + "time" + + "github.com/google/uuid" +) + +// ErrUnauthorized unauthorized. +type ErrUnauthorized struct{} + +func (ErrUnauthorized) Error() string { + return "unauthorized" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrUnauthorized) StatusCode() int { + return 401 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrUnauthorized) ErrorCode() int { + return -32001 +} + +// ErrForbidden forbidden. +type ErrForbidden struct{} + +func (ErrForbidden) Error() string { + return "forbidden" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrForbidden) StatusCode() int { + return 403 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrForbidden) ErrorCode() int { + return -32002 +} + +type GeoJSON struct { + Type string `json:"-"` + Coordinates []float64 `json:"coordinates200"` +} + +type Profile struct { + Phone string `json:"phone"` +} + +type User struct { + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` + Point GeoJSON `json:"point"` + LastSeen time.Time `json:"last_seen"` + Photo []byte `json:"photo"` + Profile *Profile `json:"profile"` + CreatedAt *time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +type Interface interface { + // Create new item of item. + Create(ctx context.Context, name string, data []byte) (err error) + // Get item. + Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (data User, err error) + // GetAll more comment and more and more comment and more and more comment and more. + // New line comment. + GetAll(ctx context.Context) ([]*User, error) + Delete(ctx context.Context, id uint) (a string, b string, err error) + TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) + TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error +} + +type service struct { +} + +func NewService() Interface { + return &service{} +} + +func (s *service) Create(ctx context.Context, name string, data []byte) (err error) { + return &ErrUnauthorized{} +} + +func (s *service) Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (data User, err error) { + panic("implement me") +} + +func (s *service) GetAll(ctx context.Context) ([]*User, error) { + panic("implement me") +} + +func (s *service) Delete(ctx context.Context, id uint) (a string, b string, err error) { + panic("implement me") +} + +func (s *service) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { + panic("implement me") +} + +func (s *service) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + panic("implement me") +} diff --git a/fixtures/service/app/swipe.go b/fixtures/service/app/swipe.go new file mode 100644 index 00000000..ae2c13ce --- /dev/null +++ b/fixtures/service/app/swipe.go @@ -0,0 +1,16 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.Service((*Interface)(nil), + swipe.Transport("http", + swipe.JSONRPC(), + swipe.MarkdownDoc("./fixtures/service/app"), + ), + ), + ) +} diff --git a/fixtures/service/interface.go b/fixtures/service/interface.go deleted file mode 100644 index cd489004..00000000 --- a/fixtures/service/interface.go +++ /dev/null @@ -1,20 +0,0 @@ -package service - -import ( - "context" - - "github.com/swipe-io/swipe/fixtures/user" -) - -type Interface interface { - // Create new item of item. - Create(ctx context.Context, name string, data []byte) (err error) - // Get item. - Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (data user.User, err error) - // GetAll more comment and more and more comment and more and more comment and more. - // New line comment. - GetAll(ctx context.Context) ([]*user.User, error) - Delete(ctx context.Context, id uint) (a string, b string, err error) - TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) - TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error -} diff --git a/fixtures/service/service.go b/fixtures/service/service.go deleted file mode 100644 index fa3f6da4..00000000 --- a/fixtures/service/service.go +++ /dev/null @@ -1,40 +0,0 @@ -package service - -import ( - "context" - - "github.com/swipe-io/swipe/fixtures/user" -) - -var _ Interface = new(Service) - -type Service struct { -} - -func (s *Service) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - return nil -} - -func (s *Service) Create(ctx context.Context, name string, data []byte) (err error) { - return nil -} - -func (s *Service) Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (u user.User, err error) { - return user.User{}, user.ErrUnauthorized{} -} - -func (s *Service) GetAll(ctx context.Context) (users []*user.User, err error) { - return []*user.User{}, nil -} - -func (s *Service) Delete(ctx context.Context, id uint) (string, string, error) { - return "", "", nil -} - -func (s *Service) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - return nil, TestErrorFn() -} - -func TestErrorFn() error { - return user.ErrUnauthorized{} -} diff --git a/fixtures/transport/jsonrpc/encodedecode.go b/fixtures/transport/jsonrpc/encodedecode.go deleted file mode 100644 index bae87d0e..00000000 --- a/fixtures/transport/jsonrpc/encodedecode.go +++ /dev/null @@ -1,11 +0,0 @@ -package jsonrpc - -import ( - "context" - "encoding/json" -) - -func DecodeUploadFileRequest(context.Context, json.RawMessage) (request interface{}, err error) { - - return nil, nil -} diff --git a/fixtures/transport/jsonrpc/transport.go b/fixtures/transport/jsonrpc/transport.go deleted file mode 100644 index c7bc094a..00000000 --- a/fixtures/transport/jsonrpc/transport.go +++ /dev/null @@ -1,33 +0,0 @@ -//+build swipe - -package jsonrpc - -import ( - "github.com/swipe-io/swipe/fixtures/service" - - . "github.com/swipe-io/swipe/pkg/swipe" -) - -func Swipe() { - Build( - Service((*service.Interface)(nil), - Transport("http", - ClientEnable(), - - JSONRPC( - JSONRPCPath("/rpc/{method}"), - ), - Openapi( - OpenapiOutput("/../../docs"), - OpenapiInfo("Service Test", "description", "v1.0.0"), - ), - - MethodOptions(service.Interface.Create, - ServerDecodeRequestFunc(DecodeUploadFileRequest), - ), - ), - Logging(), - Instrumenting("api", "api"), - ), - ) -} diff --git a/fixtures/transport/rest/encodedecode.go b/fixtures/transport/rest/encodedecode.go deleted file mode 100644 index 312200d6..00000000 --- a/fixtures/transport/rest/encodedecode.go +++ /dev/null @@ -1,11 +0,0 @@ -package rest - -import ( - "context" - - "github.com/valyala/fasthttp" -) - -func ServerDecodeRequestTest(context.Context, *fasthttp.Request) (request interface{}, err error) { - return nil, nil -} diff --git a/fixtures/transport/rest/transport.go b/fixtures/transport/rest/transport.go deleted file mode 100644 index 244733b1..00000000 --- a/fixtures/transport/rest/transport.go +++ /dev/null @@ -1,54 +0,0 @@ -//+build swipe - -package rest - -import ( - "net/http" - - "github.com/swipe-io/swipe/fixtures/service" - . "github.com/swipe-io/swipe/pkg/swipe" - "github.com/valyala/fasthttp" -) - -func Swipe() { - Build( - Service((*service.Interface)(nil), - Transport("http", - Openapi( - OpenapiInfo("Service Test", "", "v1.0.0"), - OpenapiOutput("../../docs"), - OpenapiServer("", "http://test.api"), - ), - - FastEnable(), - - ClientEnable(), - - MethodOptions(service.Interface.Get, - Path("/users/{id:[0-9]}/{name:[a-z]}/{fname}"), - Method(fasthttp.MethodGet), - HeaderVars([]string{"n", "x-num-n", "b", "x-num-b"}), - QueryVars([]string{"price", "price", "c", "c"}), - ServerDecodeRequestFunc(ServerDecodeRequestTest), - ), - MethodOptions(service.Interface.GetAll, - Path("/users"), - Method(fasthttp.MethodGet), - ), - MethodOptions(service.Interface.Create, - Path("/users"), - Method(fasthttp.MethodPost), - ), - MethodOptions(service.Interface.Delete, - Method(fasthttp.MethodPost), - ), - MethodOptions(service.Interface.TestMethod2, - Path("/{ns}/auth/{utype}/{user}/{restype}/{resource}/{permission}"), - Method(http.MethodPut), - ), - ), - Logging(), - Instrumenting("api", "api"), - ), - ) -} diff --git a/fixtures/user/user.go b/fixtures/user/user.go deleted file mode 100644 index ce75cd46..00000000 --- a/fixtures/user/user.go +++ /dev/null @@ -1,66 +0,0 @@ -package user - -import ( - "time" - - "github.com/pborman/uuid" -) - -// ErrUnauthorized unauthorized. -type ErrUnauthorized struct{} - -func (ErrUnauthorized) Error() string { - return "unauthorized" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrUnauthorized) StatusCode() int { - return 401 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrUnauthorized) ErrorCode() int { - return -32001 -} - -// ErrForbidden forbidden. -type ErrForbidden struct{} - -func (ErrForbidden) Error() string { - return "forbidden" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrForbidden) StatusCode() int { - return 403 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrForbidden) ErrorCode() int { - return -32002 -} - -type GeoJSON struct { - Type string `json:"-"` - Coordinates []float64 `json:"coordinates200"` -} - -type Profile struct { - Phone string `json:"phone"` -} - -type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` - Point GeoJSON `json:"point"` - LastSeen time.Time `json:"last_seen"` - Photo []byte `json:"photo"` - Profile *Profile `json:"profile"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` -} diff --git a/gen_test.go b/gen_test.go new file mode 100644 index 00000000..0463bca6 --- /dev/null +++ b/gen_test.go @@ -0,0 +1,116 @@ +package swipe + +import ( + "bytes" + "io/ioutil" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/google/go-cmp/cmp" + + "github.com/swipe-io/swipe/v2/internal/interface/executor" + "github.com/swipe-io/swipe/v2/internal/interface/factory" + "github.com/swipe-io/swipe/v2/internal/interface/finder" + "github.com/swipe-io/swipe/v2/internal/interface/frame" + "github.com/swipe-io/swipe/v2/internal/interface/registry" + "github.com/swipe-io/swipe/v2/internal/option" + ue "github.com/swipe-io/swipe/v2/internal/usecase/executor" +) + +func newGeneratorExecutor() ue.GenerationExecutor { + l := option.NewLoader() + fi := finder.NewServiceFinder(l) + r := registry.NewRegistry(fi) + i := factory.NewImporterFactory() + ff := frame.NewFrameFactory(Version) + return executor.NewGenerationExecutor(r, i, ff, l) +} + +func TestSwipe(t *testing.T) { + const testRoot = "fixtures" + + ge := newGeneratorExecutor() + + testdataEnts, err := ioutil.ReadDir(testRoot) + if err != nil { + t.Fatal(err) + } + tests := make([]*testCase, 0, len(testdataEnts)) + for _, ent := range testdataEnts { + name := ent.Name() + if !ent.IsDir() || strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") { + continue + } + test, err := loadTestCase(filepath.Join(testRoot, name)) + if err != nil { + t.Error(err) + continue + } + tests = append(tests, test) + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + results, errs := ge.Execute(test.testCasePath, os.Environ(), []string{"."}) + if len(errs) > 0 { + for _, e := range errs { + t.Error(e) + } + } + for _, result := range results { + if actualContent, ok := test.expectedOutput[result.OutputPath]; ok { + if !bytes.Equal(result.Content, actualContent) { + actual, expected := string(actualContent), string(result.Content) + diff := cmp.Diff(strings.Split(actual, "\n"), strings.Split(expected, "\n")) + t.Fatalf("swipe output differs from expected file.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", actualContent, expected, diff) + } + } + } + }) + } +} + +type testCase struct { + name string + expectedOutput map[string][]byte + expectedError bool + expectedErrorStrings []string + testCasePath string +} + +func loadTestCase(root string) (*testCase, error) { + name := filepath.Base(root) + testCasePath, err := filepath.Abs(filepath.Join(root, "app")) + if err != nil { + return nil, err + } + expectedFiles, err := ioutil.ReadDir(testCasePath) + if err != nil { + return nil, err + } + expectedOutput := make(map[string][]byte) + for _, file := range expectedFiles { + if !file.IsDir() && strings.HasSuffix(file.Name(), "_gen.go") { + expectedFile, err := filepath.Abs(filepath.Join(testCasePath, file.Name())) + if err != nil { + return nil, err + } + data, err := ioutil.ReadFile(expectedFile) + if err != nil { + return nil, err + } + expectedOutput[expectedFile] = data + } + } + + return &testCase{ + name: name, + testCasePath: testCasePath, + expectedOutput: expectedOutput, + expectedError: false, + expectedErrorStrings: nil, + }, nil + +} diff --git a/go.mod b/go.mod index 8aeed220..6a77a235 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/swipe-io/swipe +module github.com/swipe-io/swipe/v2 go 1.13 @@ -7,18 +7,17 @@ require ( github.com/fatih/structtag v1.2.0 github.com/go-kit/kit v0.10.0 github.com/gogo/protobuf v1.2.1 + github.com/google/go-cmp v0.3.1 github.com/google/subcommands v1.2.0 + github.com/google/uuid v1.0.0 github.com/gookit/color v1.2.5 + github.com/gorilla/mux v1.7.3 github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 - github.com/kr/pretty v0.2.0 // indirect + github.com/l-vitaly/go-kit v1.12.2 github.com/lib/pq v1.8.0 - github.com/pborman/uuid v1.2.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/spaolacci/murmur3 v1.1.0 - github.com/stretchr/testify v1.5.1 // indirect - github.com/valyala/fasthttp v1.12.0 golang.org/x/mod v0.3.0 golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 ) diff --git a/go.sum b/go.sum index e298e67e..de81baf5 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -27,6 +28,7 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -58,9 +60,13 @@ github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gammazero/nexus v2.1.0+incompatible/go.mod h1:0qqt3FvYuipZoxpd+k7ZrNagbFd9BYGwlOPRloSZMKw= +github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -70,7 +76,10 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-ozzo/ozzo-routing v2.1.4+incompatible h1:gQmNyAwMnBHr53Nma2gPTfVVc6i2BuAwCWPam2hIvKI= +github.com/go-ozzo/ozzo-routing v2.1.4+incompatible/go.mod h1:hvoxy5M9SJaY0viZvcCsODidtUm5CzRbYKEWuQpr+2A= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -78,16 +87,23 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/gddo v0.0.0-20200310004957-95ce5a452273/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= @@ -98,13 +114,17 @@ github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/graphql-go/graphql v0.7.9/go.mod h1:k6yrAYQaSP59DC5UVxbgxESlmVyojThKdORUqGDGmrI= +github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -124,6 +144,7 @@ github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= @@ -132,6 +153,7 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 h1:VHgatEHNcBFEB7inlalqfNqw65aNkM1lGX2yt3NmbS8= github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= +github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -143,8 +165,8 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.4 h1:jFzIFaf586tquEB5EhzQG0HwGNSlgAJpG53G6Ss11wc= -github.com/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -153,12 +175,18 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/l-vitaly/go-kit v1.12.2 h1:p2YzZdxVVhzA1tjr47SwPQ09YLJXq+MP3I0MvNOL0Nk= +github.com/l-vitaly/go-kit v1.12.2/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= +github.com/l-vitaly/rmqrpc v0.0.0-20170301101204-95b1ce811f78/go.mod h1:RRveuDTon8C8upAP4Cgp0nhA9gQhI2/io4etRR75C6s= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -172,6 +200,7 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -206,6 +235,7 @@ github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIw github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -237,6 +267,8 @@ github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87 h1:u7uCM+HS2caoEKSPtSFQvvUDXQtqZdu3MYtF+QEw7vA= +github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87/go.mod h1:zwr0xP4ZJxwCS/g2d+AUOUwfq/j2NC7a1rK3F0ZbVYM= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -256,8 +288,13 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -269,13 +306,14 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.12.0 h1:TsB9qkSeiMXB40ELWWSRMjlsE+8IkqXHcs01y2d9aw0= -github.com/valyala/fasthttp v1.12.0/go.mod h1:229t1eWu9UXTPmoUkbpN/fctKPBY4IJoFXQnxHGXy6E= +github.com/valyala/fasthttp v1.9.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -326,11 +364,13 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -352,11 +392,10 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -379,16 +418,20 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= diff --git a/pkg/astcopy/astcopy.go b/internal/astcopy/astcopy.go similarity index 100% rename from pkg/astcopy/astcopy.go rename to internal/astcopy/astcopy.go diff --git a/pkg/astloader/astloader.go b/internal/astloader/astloader.go similarity index 64% rename from pkg/astloader/astloader.go rename to internal/astloader/astloader.go index 94484af5..e5fd9f43 100644 --- a/pkg/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -3,15 +3,18 @@ package astloader import ( "context" "go/ast" + "go/build" "go/token" stdtypes "go/types" + "path/filepath" "strconv" + "strings" stdstrings "strings" - "github.com/swipe-io/swipe/pkg/domain/model" + "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/pkg/graph" - "github.com/swipe-io/swipe/pkg/types" + "github.com/swipe-io/swipe/v2/internal/graph" + "github.com/swipe-io/swipe/v2/internal/types" "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/typeutil" ) @@ -23,6 +26,7 @@ type nodeInfo struct { type Data struct { WorkDir string + RootPkgPath string CommentMaps *typeutil.Map Pkgs []*packages.Package GraphTypes *graph.Graph @@ -48,16 +52,17 @@ func (l *Loader) WorkDir() string { return l.wd } -func (l *Loader) Process() (data Data, errs []error) { +func (l *Loader) Process() (data *Data, errs []error) { var ( err error ) - - data.WorkDir = l.wd - data.CommentMaps = new(typeutil.Map) - data.GraphTypes = graph.NewGraph() - data.Enums = new(typeutil.Map) - + data = &Data{ + WorkDir: l.wd, + RootPkgPath: strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1], + CommentMaps: new(typeutil.Map), + GraphTypes: graph.NewGraph(), + Enums: new(typeutil.Map), + } cfg := &packages.Config{ Context: l.ctx, Mode: packages.NeedDeps | packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypes | packages.NeedTypesSizes | packages.NeedImports | packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles, @@ -75,6 +80,7 @@ func (l *Loader) Process() (data Data, errs []error) { } var astNodes []nodeInfo + for _, pkg := range data.Pkgs { for _, syntax := range pkg.Syntax { for _, decl := range syntax.Decls { @@ -143,9 +149,13 @@ func (l *Loader) Process() (data Data, errs []error) { case *ast.FuncDecl: obj := pkg.TypesInfo.ObjectOf(v.Name) n := &graph.Node{Object: obj} + data.GraphTypes.Add(n) + values, objects := visitBlockStmt(pkg, v.Body) + n.AddValue(values...) + astNodes = append(astNodes, nodeInfo{ node: n, objects: objects, @@ -154,6 +164,7 @@ func (l *Loader) Process() (data Data, errs []error) { } } } + for _, ni := range astNodes { for _, obj := range ni.objects { if sig, ok := obj.Type().(*stdtypes.Signature); ok { @@ -218,67 +229,78 @@ func (l *Loader) Process() (data Data, errs []error) { errs = append(errs, e) } } - if len(errs) > 0 { - return Data{}, errs + return +} + +func visitBlockStmts(p *packages.Package, stmts []ast.Stmt) (values []stdtypes.TypeAndValue, objects []stdtypes.Object) { + for _, stmt := range stmts { + otherValues, otherObjects := visitBlockStmt(p, stmt) + + values = append(values, otherValues...) + objects = append(objects, otherObjects...) } - return data, nil + return } -func visitBlockStmt(p *packages.Package, block *ast.BlockStmt) (values []stdtypes.TypeAndValue, objects []stdtypes.Object) { - for _, stmt := range block.List { - switch v := stmt.(type) { - case *ast.SelectStmt: - otherValues, otherObjects := visitBlockStmt(p, v.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) +func visitBlockStmt(p *packages.Package, stmt ast.Stmt) (values []stdtypes.TypeAndValue, objects []stdtypes.Object) { + switch v := stmt.(type) { + case *ast.SelectStmt: + return visitBlockStmts(p, v.Body.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.RangeStmt: + return visitBlockStmts(p, v.Body.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.ForStmt: + return visitBlockStmts(p, v.Body.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.TypeSwitchStmt: + return visitBlockStmts(p, v.Body.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.SwitchStmt: + return visitBlockStmts(p, v.Body.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.IfStmt: + return visitBlockStmts(p, v.Body.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.BlockStmt: + return visitBlockStmts(p, v.List) + //values = append(values, otherValues...) + //objects = append(objects, otherObjects...) + case *ast.ReturnStmt: + for _, result := range v.Results { + switch vv := result.(type) { + case *ast.StructType: - case *ast.RangeStmt: - otherValues, otherObjects := visitBlockStmt(p, v.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.ForStmt: - otherValues, otherObjects := visitBlockStmt(p, v.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.TypeSwitchStmt: - otherValues, otherObjects := visitBlockStmt(p, v.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.SwitchStmt: - otherValues, otherObjects := visitBlockStmt(p, v.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.IfStmt: - otherValues, otherObjects := visitBlockStmt(p, v.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.BlockStmt: - otherValues, otherObjects := visitBlockStmt(p, v) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.ReturnStmt: - for _, result := range v.Results { - switch vv := result.(type) { - case *ast.FuncLit: - otherValues, otherObjects := visitBlockStmt(p, vv.Body) - values = append(values, otherValues...) - objects = append(objects, otherObjects...) - case *ast.CompositeLit: - if named, ok := p.TypesInfo.TypeOf(vv.Type).(*stdtypes.Named); ok && named.Obj() != nil { - objects = append(objects, named.Obj()) + case *ast.FuncLit: + otherValues, otherObjects := visitBlockStmts(p, vv.Body.List) + values = append(values, otherValues...) + objects = append(objects, otherObjects...) + case *ast.CompositeLit: + if named, ok := p.TypesInfo.TypeOf(vv.Type).(*stdtypes.Named); ok && named.Obj() != nil { + objects = append(objects, named.Obj()) + } + case *ast.UnaryExpr: + if named, ok := p.TypesInfo.TypeOf(vv.X).(*stdtypes.Named); ok && named.Obj() != nil { + objects = append(objects, named.Obj()) + } + values = append(values, p.TypesInfo.Types[vv]) + case *ast.BasicLit: + values = append(values, p.TypesInfo.Types[vv]) + case *ast.CallExpr: + switch fv := vv.Fun.(type) { + case *ast.SelectorExpr: + if obj := p.TypesInfo.ObjectOf(fv.Sel); obj != nil { + objects = append(objects, obj) } - case *ast.UnaryExpr, *ast.BasicLit: - values = append(values, p.TypesInfo.Types[vv]) - case *ast.CallExpr: - switch fv := vv.Fun.(type) { - case *ast.SelectorExpr: - if obj := p.TypesInfo.ObjectOf(fv.Sel); obj != nil { - objects = append(objects, obj) - } - case *ast.Ident: - if obj := p.TypesInfo.ObjectOf(fv); obj != nil { - objects = append(objects, obj) - } + case *ast.Ident: + if obj := p.TypesInfo.ObjectOf(fv); obj != nil { + objects = append(objects, obj) } } } diff --git a/pkg/domain/model/config_option.go b/internal/domain/model/config.go similarity index 100% rename from pkg/domain/model/config_option.go rename to internal/domain/model/config.go diff --git a/internal/domain/model/enum.go b/internal/domain/model/enum.go new file mode 100644 index 00000000..7cd6e3f8 --- /dev/null +++ b/internal/domain/model/enum.go @@ -0,0 +1,6 @@ +package model + +type Enum struct { + Name string + Value string +} diff --git a/pkg/domain/model/gateway_option.go b/internal/domain/model/gateway.go similarity index 84% rename from pkg/domain/model/gateway_option.go rename to internal/domain/model/gateway.go index 83fd9efc..76dd89ba 100644 --- a/pkg/domain/model/gateway_option.go +++ b/internal/domain/model/gateway.go @@ -14,8 +14,5 @@ type GatewayServiceOption struct { TypeName *stdtypes.Named Iface *stdtypes.Interface MethodOptions map[string]GatewayMethodOption -} - -type GatewayOption struct { - Services []GatewayServiceOption + Methods []ServiceMethod } diff --git a/pkg/domain/model/service_option.go b/internal/domain/model/service.go similarity index 68% rename from pkg/domain/model/service_option.go rename to internal/domain/model/service.go index 67ad1fa5..c59a10df 100644 --- a/pkg/domain/model/service_option.go +++ b/internal/domain/model/service.go @@ -23,7 +23,7 @@ type DeclType struct { Values []stdtypes.TypeAndValue } -type InstrumentingServiceOption struct { +type InstrumentingOption struct { Enable bool Namespace string Subsystem string @@ -49,15 +49,15 @@ type ServiceMethod struct { T stdtypes.Type } -type ServiceOption struct { - ID string - RawID string - Transport TransportOption - Instrumenting InstrumentingServiceOption - Logging bool - Methods []ServiceMethod - Type stdtypes.Type - TypeName *stdtypes.Named - Interface *stdtypes.Interface - Readme ServiceReadme -} +//type ServiceOption struct { +// ID string +// RawID string +// Transport TransportOption +// Instrumenting InstrumentingOption +// EnableLogging bool +// Methods []ServiceMethod +// Type stdtypes.Type +// TypeName *stdtypes.Named +// Interface *stdtypes.Interface +// Readme ServiceReadme +//} diff --git a/pkg/domain/model/transport_option.go b/internal/domain/model/transport.go similarity index 97% rename from pkg/domain/model/transport_option.go rename to internal/domain/model/transport.go index b76e25a3..d59df3cc 100644 --- a/pkg/domain/model/transport_option.go +++ b/internal/domain/model/transport.go @@ -4,7 +4,7 @@ import ( "go/ast" stdtypes "go/types" - "github.com/swipe-io/swipe/pkg/openapi" + "github.com/swipe-io/swipe/v2/internal/openapi" ) type ReqRespFunc struct { diff --git a/pkg/errors/errors.go b/internal/errors/errors.go similarity index 100% rename from pkg/errors/errors.go rename to internal/errors/errors.go diff --git a/pkg/format/fomrat.go b/internal/format/fomrat.go similarity index 100% rename from pkg/format/fomrat.go rename to internal/format/fomrat.go diff --git a/pkg/git/git.go b/internal/git/git.go similarity index 100% rename from pkg/git/git.go rename to internal/git/git.go diff --git a/pkg/graph/graph.go b/internal/graph/graph.go similarity index 97% rename from pkg/graph/graph.go rename to internal/graph/graph.go index 84c4f707..1416ea0b 100644 --- a/pkg/graph/graph.go +++ b/internal/graph/graph.go @@ -3,7 +3,7 @@ package graph import ( "go/types" - "github.com/swipe-io/swipe/pkg/queue" + "github.com/swipe-io/swipe/v2/internal/queue" "golang.org/x/tools/go/types/typeutil" ) diff --git a/pkg/importer/importer.go b/internal/importer/importer.go similarity index 98% rename from pkg/importer/importer.go rename to internal/importer/importer.go index a1a42494..bbb05655 100644 --- a/pkg/importer/importer.go +++ b/internal/importer/importer.go @@ -8,7 +8,7 @@ import ( "sort" stdstrings "strings" - "github.com/swipe-io/swipe/pkg/astcopy" + "github.com/swipe-io/swipe/v2/internal/astcopy" "golang.org/x/tools/go/ast/astutil" "golang.org/x/tools/go/packages" diff --git a/pkg/importer/utils.go b/internal/importer/utils.go similarity index 100% rename from pkg/importer/utils.go rename to internal/importer/utils.go diff --git a/internal/interface/executor/generation.go b/internal/interface/executor/generation.go new file mode 100644 index 00000000..c14fcea0 --- /dev/null +++ b/internal/interface/executor/generation.go @@ -0,0 +1,172 @@ +package executor + +import ( + "context" + "os" + "path/filepath" + "strings" + "sync" + + "github.com/swipe-io/swipe/v2/internal/types" + + "golang.org/x/tools/go/packages" + + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/usecase/processor" + + "github.com/swipe-io/swipe/v2/internal/astloader" + + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/swipe/v2/internal/usecase/executor" + "github.com/swipe-io/swipe/v2/internal/usecase/factory" + "github.com/swipe-io/swipe/v2/internal/usecase/frame" + "github.com/swipe-io/swipe/v2/internal/usecase/registry" +) + +type importerer interface { + SetImporter(*importer.Importer) +} + +type generationExecutor struct { + r registry.ProcessorRegistry + i factory.ImporterFactory + ff frame.Factory + l *option.Loader +} + +func (e *generationExecutor) processOptions(options []*option.ResultOption, data *astloader.Data) (<-chan processor.Processor, <-chan error) { + outCh := make(chan processor.Processor) + errCh := make(chan error) + go func() { + var wg sync.WaitGroup + for _, o := range options { + wg.Add(1) + go func(o *option.ResultOption) { + defer wg.Done() + p, err := e.r.NewProcessor(o, data) + if err != nil { + errCh <- err + return + } + outCh <- p + }(o) + } + wg.Wait() + close(errCh) + close(outCh) + }() + return outCh, errCh +} + +func (e *generationExecutor) processGenerate(pkg *packages.Package, generators []generator.Generator) <-chan executor.GenerateResult { + outCh := make(chan executor.GenerateResult) + + go func() { + var wg sync.WaitGroup + + for _, g := range generators { + wg.Add(1) + + go func(g generator.Generator) { + defer wg.Done() + + generated := executor.GenerateResult{} + + defer func() { + outCh <- generated + }() + + if err := g.Prepare(context.TODO()); err != nil { + generated.Errs = append(generated.Errs, err) + return + } + + outputDir := g.OutputDir() + if outputDir == "" { + basePath, err := types.DetectBasePath(pkg) + if err != nil { + generated.Errs = append(generated.Errs, err) + return + } + outputDir = basePath + } + + generated.PkgPath = pkg.PkgPath + generated.OutputPath = filepath.Join(outputDir, g.Filename()) + + newImporter := e.i.NewImporter(generated.OutputPath, pkg) + if g, ok := g.(importerer); ok { + g.SetImporter(newImporter) + } + + if err := g.Process(context.TODO()); err != nil { + generated.Errs = append(generated.Errs, err) + return + } + fr := e.ff.NewFrame(generated.OutputPath, newImporter, pkg) + content, err := fr.Frame(g.Bytes()) + if err != nil { + generated.Content = g.Bytes() + generated.Errs = append(generated.Errs, err) + return + } + generated.Content = content + }(g) + } + wg.Wait() + close(outCh) + }() + return outCh +} + +func (e *generationExecutor) Cleanup(wd string) { + _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { + if !info.IsDir() { + if strings.Contains(info.Name(), "_gen") { + _ = os.Remove(path) + } + } + return nil + }) +} + +func (e *generationExecutor) Execute(wd string, env []string, patterns []string) (results []executor.GenerateResult, errs []error) { + opr, errs := e.l.Load(wd, env, patterns) + if len(errs) > 0 { + return nil, errs + } + + processorCh, errCh := e.processOptions(opr.Options, opr.Data) + go func() { + for err := range errCh { + errs = append(errs, err) + } + }() + + var wg sync.WaitGroup + for p := range processorCh { + wg.Add(1) + go func(p processor.Processor) { + defer wg.Done() + outCh := e.processGenerate(p.Pkg(), p.Generators()) + for generateResult := range outCh { + results = append(results, generateResult) + } + }(p) + } + wg.Wait() + + return +} + +func NewGenerationExecutor( + r registry.ProcessorRegistry, + i factory.ImporterFactory, + ff frame.Factory, + l *option.Loader, +) executor.GenerationExecutor { + return &generationExecutor{r: r, i: i, ff: ff, l: l} + +} diff --git a/internal/interface/factory/importer.go b/internal/interface/factory/importer.go new file mode 100644 index 00000000..b8c298ce --- /dev/null +++ b/internal/interface/factory/importer.go @@ -0,0 +1,26 @@ +package factory + +import ( + "sync" + + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/factory" + "golang.org/x/tools/go/packages" +) + +type importerFactory struct { + importers *sync.Map +} + +func (f *importerFactory) NewImporter(ns string, pkg *packages.Package) *importer.Importer { + v, ok := f.importers.Load(ns) + if !ok { + v = importer.NewImporter(pkg) + f.importers.Store(ns, v) + } + return v.(*importer.Importer) +} + +func NewImporterFactory() factory.ImporterFactory { + return &importerFactory{importers: new(sync.Map)} +} diff --git a/internal/interface/finder/finder.go b/internal/interface/finder/finder.go new file mode 100644 index 00000000..16c061bc --- /dev/null +++ b/internal/interface/finder/finder.go @@ -0,0 +1,44 @@ +package finder + +import ( + "go/build" + stdtypes "go/types" + "path/filepath" + stdstrings "strings" + + ig "github.com/swipe-io/swipe/v2/internal/interface/gateway" + "github.com/swipe-io/swipe/v2/internal/option" + + "github.com/swipe-io/swipe/v2/internal/usecase/finder" + "github.com/swipe-io/swipe/v2/internal/usecase/gateway" +) + +type serviceFinder struct { + loader *option.Loader +} + +func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, []error) { + pkgPathParts := stdstrings.Split(named.Obj().Pkg().Path(), "/") + servicePath := filepath.Join(build.Default.GOPATH, "src", stdstrings.Join(pkgPathParts[:3], "/")) + + o, errs := s.loader.Load(servicePath, nil, []string{"./..."}) + if len(errs) > 0 { + return nil, errs + } + for _, resultOption := range o.Options { + if resultOption.Option.Name == "Service" { + sg, err := ig.NewServiceGateway(resultOption.Option, o.Data.GraphTypes, o.Data.Enums) + if err != nil { + return nil, []error{err} + } + if sg.TypeName().Obj().String() == named.Obj().String() && sg.Transport().JsonRPC.Enable { + return sg, nil + } + } + } + return nil, nil +} + +func NewServiceFinder(loader *option.Loader) finder.ServiceFinder { + return &serviceFinder{loader: loader} +} diff --git a/internal/interface/frame/bytes_frame.go b/internal/interface/frame/bytes_frame.go new file mode 100644 index 00000000..367c5636 --- /dev/null +++ b/internal/interface/frame/bytes_frame.go @@ -0,0 +1,17 @@ +package frame + +import ( + "github.com/swipe-io/swipe/v2/internal/usecase/frame" +) + +type bytesFrame struct { +} + +func (f *bytesFrame) Frame(data []byte) ([]byte, error) { + return data, nil +} + +func NewBytesFrame() frame.Frame { + return &bytesFrame{} + +} diff --git a/internal/interface/frame/factory.go b/internal/interface/frame/factory.go new file mode 100644 index 00000000..547368e5 --- /dev/null +++ b/internal/interface/frame/factory.go @@ -0,0 +1,33 @@ +package frame + +import ( + "path/filepath" + + "github.com/swipe-io/swipe/v2/internal/importer" + uf "github.com/swipe-io/swipe/v2/internal/usecase/frame" + "golang.org/x/tools/go/packages" +) + +type frameFactory struct { + version string +} + +func (f *frameFactory) NewFrame( + filename string, + importer *importer.Importer, + pkg *packages.Package, +) uf.Frame { + ext := filepath.Ext(filename) + switch ext { + default: + return NewBytesFrame() + case ".go": + return NewGolangFrame(importer, f.version, pkg.Name) + case ".js": + return NewJSFrame(f.version) + } +} + +func NewFrameFactory(version string) uf.Factory { + return &frameFactory{version: version} +} diff --git a/internal/interface/frame/golang_frame.go b/internal/interface/frame/golang_frame.go new file mode 100644 index 00000000..9aeb5b72 --- /dev/null +++ b/internal/interface/frame/golang_frame.go @@ -0,0 +1,48 @@ +package frame + +import ( + "bytes" + "fmt" + "go/format" + + "github.com/swipe-io/swipe/v2/internal/importer" + + "github.com/swipe-io/swipe/v2/internal/usecase/frame" +) + +type golangFrame struct { + importer *importer.Importer + pkgName string + version string +} + +func (f *golangFrame) Frame(data []byte) ([]byte, error) { + var buf bytes.Buffer + buf.WriteString("//+build !swipe\n\n") + buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") + buf.WriteString("//go:generate swipe\n") + buf.WriteString("package ") + buf.WriteString(f.pkgName) + buf.WriteString("\n\n") + + if f.importer.HasImports() { + buf.WriteString("import (\n") + for _, imp := range f.importer.SortedImports() { + _, _ = fmt.Fprint(&buf, imp) + } + buf.WriteString(")\n\n") + } + buf.Write(data) + + goSrc := buf.Bytes() + fmtSrc, err := format.Source(goSrc) + if err == nil { + goSrc = fmtSrc + } + return goSrc, err +} + +func NewGolangFrame(importer *importer.Importer, version, pkgName string) frame.Frame { + return &golangFrame{importer: importer, version: version, pkgName: pkgName} + +} diff --git a/internal/interface/frame/js_frame.go b/internal/interface/frame/js_frame.go new file mode 100644 index 00000000..cf0bd1be --- /dev/null +++ b/internal/interface/frame/js_frame.go @@ -0,0 +1,38 @@ +package frame + +import ( + "bytes" + "os/exec" + + "github.com/swipe-io/swipe/v2/internal/usecase/frame" +) + +type jsFrame struct { + version string +} + +func (f *jsFrame) Frame(data []byte) ([]byte, error) { + buf := new(bytes.Buffer) + buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") + buf.Write(data) + + cmd := exec.Command("prettier", "--stdin-filepath", "prettier.js") + stdin, err := cmd.StdinPipe() + if err != nil { + return nil, err + } + go func() { + defer stdin.Close() + _, _ = stdin.Write(buf.Bytes()) + }() + out, err := cmd.CombinedOutput() + if err != nil { + return nil, err + } + return out, nil +} + +func NewJSFrame(version string) frame.Frame { + return &jsFrame{version: version} + +} diff --git a/internal/interface/gateway/config.go b/internal/interface/gateway/config.go new file mode 100644 index 00000000..b5645a4f --- /dev/null +++ b/internal/interface/gateway/config.go @@ -0,0 +1,69 @@ +package gateway + +import ( + "go/ast" + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/swipe/v2/internal/usecase/gateway" +) + +type configGateway struct { + stType stdtypes.Type + stExpr ast.Expr + st *stdtypes.Struct + funcName string + docEnable bool + docOutputDir string +} + +func (g *configGateway) DocOutputDir() string { + return g.docOutputDir +} + +func (g *configGateway) DocEnable() bool { + return g.docEnable +} + +func (g *configGateway) Struct() *stdtypes.Struct { + return g.st +} + +func (g *configGateway) StructType() stdtypes.Type { + return g.stType +} + +func (g *configGateway) StructExpr() ast.Expr { + return g.stExpr +} + +func (g *configGateway) FuncName() string { + return g.funcName +} + +func (g *configGateway) load(o *option.Option) { + structOpt := option.MustOption(o.At("optionsStruct")) + + g.stExpr = structOpt.Value.Expr() + g.stType = structOpt.Value.Type() + + if ptr, ok := structOpt.Value.Type().(*stdtypes.Pointer); ok { + g.st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + g.st = structOpt.Value.Type().(*stdtypes.Struct) + } + g.funcName = "LoadConfig" + if funcNameOpt, ok := o.At("FuncName"); ok { + g.funcName = funcNameOpt.Value.String() + } + if markdownDocOpt, ok := o.At("ConfigMarkdownDoc"); ok { + g.docEnable = true + g.docOutputDir = markdownDocOpt.Value.String() + } +} + +func NewConfigGateway(o *option.Option) gateway.ConfigGateway { + g := &configGateway{} + g.load(o) + return g +} diff --git a/internal/interface/gateway/http_gateway.go b/internal/interface/gateway/http_gateway.go new file mode 100644 index 00000000..96c29fa1 --- /dev/null +++ b/internal/interface/gateway/http_gateway.go @@ -0,0 +1,110 @@ +package gateway + +import ( + "fmt" + "go/ast" + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/errors" + "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/swipe/v2/internal/usecase/finder" + "github.com/swipe-io/swipe/v2/internal/usecase/gateway" + + "golang.org/x/tools/go/packages" +) + +type httpGatewayGateway struct { + pkg *packages.Package + services []model.GatewayServiceOption + finder finder.ServiceFinder +} + +func (g *httpGatewayGateway) Services() []model.GatewayServiceOption { + return g.services +} + +func (g *httpGatewayGateway) parseMethodOption(iface *stdtypes.Interface, o *option.Option) (model.GatewayMethodOption, error) { + methodOption := model.GatewayMethodOption{} + signOpt := option.MustOption(o.At("signature")) + fnSel, ok := signOpt.Value.Expr().(*ast.SelectorExpr) + if !ok { + return model.GatewayMethodOption{}, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) + } + methodOption.Name = fnSel.Sel.Name + ifaceSel := g.pkg.TypesInfo.TypeOf(fnSel.X).Underlying() + if !stdtypes.Identical(iface, ifaceSel) { + return model.GatewayMethodOption{}, errors.NotePosition( + signOpt.Position, + fmt.Errorf( + "the method signature does not match the interface, now %s should be %s", + ifaceSel, + iface, + ), + ) + } + if opt, ok := o.At("GatewayBalancer"); ok { + v := opt.Value.String() + if v != "random" && v != "roundrobin" { + return model.GatewayMethodOption{}, errors.NotePosition(opt.Position, fmt.Errorf("there can only be values: random, roundrobin")) + } + } + return methodOption, nil +} + +func (g *httpGatewayGateway) load(o *option.Option) error { + serviceOpts, _ := o.Slice("GatewayService") + + for _, serviceOpt := range serviceOpts { + ifaceOpt := option.MustOption(serviceOpt.At("iface")) + ifacePtr, ok := ifaceOpt.Value.Type().(*stdtypes.Pointer) + if !ok { + return errors.NotePosition(o.Position, + fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) + } + //iface, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) + //if !ok { + // return errors.NotePosition(o.Position, + // fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) + //} + + typeName := ifacePtr.Elem().(*stdtypes.Named) + + sg, errs := g.finder.Find(typeName) + if len(errs) > 0 { + continue + } + + so := model.GatewayServiceOption{ + ID: sg.ID(), + RawID: sg.RawID(), + TypeName: sg.TypeName(), + Type: sg.Type(), + Iface: sg.Interface(), + Methods: sg.Methods(), + MethodOptions: map[string]model.GatewayMethodOption{}, + } + + if methodOpt, ok := serviceOpt.At("GatewayServiceMethod"); ok { + mo, err := g.parseMethodOption(sg.Interface(), methodOpt) + if err != nil { + return err + } + so.MethodOptions[mo.Name] = mo + } + g.services = append(g.services, so) + } + return nil +} + +func NewGatewayOption( + pkg *packages.Package, + o *option.Option, + finder finder.ServiceFinder, +) (gateway.HTTPGatewayGateway, error) { + g := &httpGatewayGateway{pkg: pkg, finder: finder} + if err := g.load(o); err != nil { + return nil, err + } + return g, nil +} diff --git a/pkg/interface/option/service_option.go b/internal/interface/gateway/service.go similarity index 53% rename from pkg/interface/option/service_option.go rename to internal/interface/gateway/service.go index 8123c819..1defa8aa 100644 --- a/pkg/interface/option/service_option.go +++ b/internal/interface/gateway/service.go @@ -1,4 +1,4 @@ -package option +package gateway import ( "fmt" @@ -8,89 +8,132 @@ import ( stdstrings "strings" "github.com/iancoleman/strcase" - - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/errors" - "github.com/swipe-io/swipe/pkg/graph" - "github.com/swipe-io/swipe/pkg/openapi" - "github.com/swipe-io/swipe/pkg/parser" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/types" - "github.com/swipe-io/swipe/pkg/usecase/option" - + "github.com/swipe-io/swipe/v2/internal/errors" + "github.com/swipe-io/swipe/v2/internal/graph" + "github.com/swipe-io/swipe/v2/internal/openapi" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/types" "golang.org/x/tools/go/types/typeutil" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/swipe/v2/internal/usecase/gateway" ) -type ErrorData struct { - Named *stdtypes.Named - Code int64 +type serviceGateway struct { + serviceID string + rawServiceID string + transport model.TransportOption + instrumenting model.InstrumentingOption + readme model.ServiceReadme + serviceType stdtypes.Type + serviceTypeName *stdtypes.Named + serviceIface *stdtypes.Interface + serviceMethods []model.ServiceMethod + enableLogging bool + graphTypes *graph.Graph + commentMap *typeutil.Map +} + +func (g *serviceGateway) ID() string { + return g.serviceID +} + +func (g *serviceGateway) RawID() string { + return g.rawServiceID +} + +func (g *serviceGateway) Transport() model.TransportOption { + return g.transport +} + +func (g *serviceGateway) Instrumenting() model.InstrumentingOption { + return g.instrumenting +} + +func (g *serviceGateway) EnableLogging() bool { + return g.enableLogging +} + +func (g *serviceGateway) Methods() []model.ServiceMethod { + return g.serviceMethods } -type serviceOption struct { - info model.GenerateInfo +func (g *serviceGateway) Type() stdtypes.Type { + return g.serviceType } -func (g *serviceOption) Parse(option *parser.Option) (interface{}, error) { - o := model.ServiceOption{} +func (g *serviceGateway) TypeName() *stdtypes.Named { + return g.serviceTypeName +} + +func (g *serviceGateway) Interface() *stdtypes.Interface { + return g.serviceIface +} + +func (g *serviceGateway) Readme() model.ServiceReadme { + return g.readme +} - serviceOpt := parser.MustOption(option.At("iface")) +func (g *serviceGateway) load(o *option.Option) error { + serviceOpt := option.MustOption(o.At("iface")) ifacePtr, ok := serviceOpt.Value.Type().(*stdtypes.Pointer) if !ok { - return nil, errors.NotePosition(serviceOpt.Position, + return errors.NotePosition(serviceOpt.Position, fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(serviceOpt.Value.Type(), nil))) } iface, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) if !ok { - return nil, errors.NotePosition(serviceOpt.Position, + return errors.NotePosition(serviceOpt.Position, fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(serviceOpt.Value.Type(), nil))) } typeName := ifacePtr.Elem().(*stdtypes.Named) rawID := stdstrings.Split(typeName.Obj().Pkg().Path(), "/")[2] - o.ID = strcase.ToCamel(rawID) - o.RawID = rawID + g.serviceID = strcase.ToCamel(rawID) + g.rawServiceID = rawID - if nameOpt, ok := option.At("Name"); ok { + if nameOpt, ok := o.At("Name"); ok { if name := nameOpt.Value.String(); name != "" { - o.ID = strcase.ToCamel(name) + g.serviceID = strcase.ToCamel(name) } } - if transportOpt, ok := option.At("Transport"); ok { + if transportOpt, ok := o.At("Transport"); ok { transportOption, err := g.loadTransport(transportOpt) if err != nil { - return nil, err + return err } - o.Transport = transportOption + g.transport = transportOption } - if opt, ok := option.At("Readme"); ok { - o.Readme.Enable = true + if opt, ok := o.At("Readme"); ok { + g.readme.Enable = true if readmeTemplateOpt, ok := opt.At("ReadmeTemplate"); ok { - o.Readme.TemplatePath = readmeTemplateOpt.Value.String() + g.readme.TemplatePath = readmeTemplateOpt.Value.String() } - o.Readme.OutputDir = parser.MustOption(opt.At("outputDir")).Value.String() + g.readme.OutputDir = option.MustOption(opt.At("outputDir")).Value.String() } - o.Type = ifacePtr.Elem() - o.TypeName = typeName - o.Interface = iface + g.serviceType = ifacePtr.Elem() + g.serviceTypeName = typeName + g.serviceIface = iface errorMethodName := "StatusCode" - if o.Transport.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { errorMethodName = "ErrorCode" } hasher := typeutil.MakeHasher() - g.info.GraphTypes.Iterate(func(n *graph.Node) { - g.info.GraphTypes.Traverse(n, func(n *graph.Node) bool { + g.graphTypes.Iterate(func(n *graph.Node) { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { key := hasher.Hash(named) - if _, ok := o.Transport.Errors[key]; ok { + if _, ok := g.transport.Errors[key]; ok { return true } if e := g.findError(named, errorMethodName); e != nil { - o.Transport.Errors[key] = e + g.transport.Errors[key] = e } } return true @@ -99,18 +142,18 @@ func (g *serviceOption) Parse(option *parser.Option) (interface{}, error) { genericErrors := map[uint32]*model.ErrorHTTPTransportOption{} - g.info.GraphTypes.Iterate(func(n *graph.Node) { - g.info.GraphTypes.Traverse(n, func(n *graph.Node) bool { + g.graphTypes.Iterate(func(n *graph.Node) { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { if sig, ok := n.Object.Type().(*stdtypes.Signature); ok { if sig.Results().Len() == 1 { if stdtypes.TypeString(sig.Results().At(0).Type(), nil) == "github.com/go-kit/kit/endpoint.Middleware" { - g.info.GraphTypes.Traverse(n, func(n *graph.Node) bool { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { key := hasher.Hash(named) if _, ok := genericErrors[key]; ok { return true } - if e, ok := o.Transport.Errors[key]; ok { + if e, ok := g.transport.Errors[key]; ok { genericErrors[key] = e } } @@ -127,7 +170,7 @@ func (g *serviceOption) Parse(option *parser.Option) (interface{}, error) { m := iface.Method(i) sig := m.Type().(*stdtypes.Signature) - comments, _ := g.info.CommentMap.At(m.Type()).([]string) + comments, _ := g.commentMap.At(m.Type()).([]string) sm := model.ServiceMethod{ Type: m, @@ -138,21 +181,36 @@ func (g *serviceOption) Parse(option *parser.Option) (interface{}, error) { Comments: comments, } - g.info.GraphTypes.Iterate(func(n *graph.Node) { - g.info.GraphTypes.Traverse(n, func(n *graph.Node) bool { + g.graphTypes.Iterate(func(n *graph.Node) { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { if n.Object.Name() == m.Name() && stdtypes.Identical(n.Object.Type(), m.Type()) { - g.info.GraphTypes.Traverse(n, func(n *graph.Node) bool { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { key := hasher.Hash(named) if _, ok := sm.Errors[key]; ok { return true } - if e, ok := o.Transport.Errors[key]; ok { + if e, ok := g.transport.Errors[key]; ok { sm.Errors[key] = e } } return true }) + for _, value := range n.Values() { + elem := value.Type + if ptr, ok := value.Type.(*stdtypes.Pointer); ok { + elem = ptr.Elem() + } + if named, ok := elem.(*stdtypes.Named); ok { + key := hasher.Hash(named) + if _, ok := sm.Errors[key]; ok { + return true + } + if e, ok := g.transport.Errors[key]; ok { + sm.Errors[key] = e + } + } + } } return true }) @@ -175,7 +233,7 @@ func (g *serviceOption) Parse(option *parser.Option) (interface{}, error) { } if !sm.ResultsNamed && sig.Results().Len()-resultOffset > 1 { - return nil, errors.NotePosition(serviceOpt.Position, + return errors.NotePosition(serviceOpt.Position, fmt.Errorf("interface method with unnamed results cannot be greater than 1")) } for j := paramOffset; j < sig.Params().Len(); j++ { @@ -184,27 +242,25 @@ func (g *serviceOption) Parse(option *parser.Option) (interface{}, error) { for j := 0; j < sig.Results().Len()-resultOffset; j++ { sm.Results = append(sm.Results, sig.Results().At(j)) } - o.Methods = append(o.Methods, sm) + g.serviceMethods = append(g.serviceMethods, sm) } - - if _, ok := option.At("Logging"); ok { - o.Logging = true + if _, ok := o.At("Logging"); ok { + g.enableLogging = true } - - if instrumentingOpt, ok := option.At("Instrumenting"); ok { - o.Instrumenting.Enable = true + if instrumentingOpt, ok := o.At("Instrumenting"); ok { + g.instrumenting.Enable = true if namespace, ok := instrumentingOpt.At("namespace"); ok { - o.Instrumenting.Namespace = namespace.Value.String() + g.instrumenting.Namespace = namespace.Value.String() } if subsystem, ok := instrumentingOpt.At("subsystem"); ok { - o.Instrumenting.Subsystem = subsystem.Value.String() + g.instrumenting.Subsystem = subsystem.Value.String() } } - return o, nil + return nil } -func (g *serviceOption) findError(named *stdtypes.Named, methodName string) *model.ErrorHTTPTransportOption { +func (g *serviceGateway) findError(named *stdtypes.Named, methodName string) *model.ErrorHTTPTransportOption { for i := 0; i < named.NumMethods(); i++ { if named.Method(i).Name() != methodName { continue @@ -218,7 +274,8 @@ func (g *serviceOption) findError(named *stdtypes.Named, methodName string) *mod } } - e := g.info.GraphTypes.Node(named.Method(i)) + e := g.graphTypes.Node(named.Method(i)) + if e == nil { continue } @@ -236,10 +293,10 @@ func (g *serviceOption) findError(named *stdtypes.Named, methodName string) *mod return nil } -func (g *serviceOption) loadTransport(opt *parser.Option) (option model.TransportOption, err error) { - _, fastHTTP := opt.At("FastEnable") - option = model.TransportOption{ - Protocol: parser.MustOption(opt.At("protocol")).Value.String(), +func (g *serviceGateway) loadTransport(o *option.Option) (transportOption model.TransportOption, err error) { + _, fastHTTP := o.At("FastEnable") + transportOption = model.TransportOption{ + Protocol: option.MustOption(o.At("protocol")).Value.String(), FastHTTP: fastHTTP, MethodOptions: map[string]model.MethodHTTPTransportOption{}, Errors: map[uint32]*model.ErrorHTTPTransportOption{}, @@ -247,46 +304,46 @@ func (g *serviceOption) loadTransport(opt *parser.Option) (option model.Transpor Methods: map[string]*model.OpenapiMethodOption{}, }, } - if v, ok := opt.At("MarkdownDoc"); ok { - option.MarkdownDoc.Enable = true - option.MarkdownDoc.OutputDir = v.Value.String() + if v, ok := o.At("MarkdownDoc"); ok { + transportOption.MarkdownDoc.Enable = true + transportOption.MarkdownDoc.OutputDir = v.Value.String() } - if _, ok := opt.At("ClientEnable"); ok { - option.Client.Enable = true + if _, ok := o.At("ClientEnable"); ok { + transportOption.Client.Enable = true } - if _, ok := opt.At("ServerDisabled"); ok { - option.ServerDisabled = true + if _, ok := o.At("ServerDisabled"); ok { + transportOption.ServerDisabled = true } - if openapiDocOpt, ok := opt.At("Openapi"); ok { - option.Openapi.Enable = true + if openapiDocOpt, ok := o.At("Openapi"); ok { + transportOption.Openapi.Enable = true if v, ok := openapiDocOpt.At("OpenapiOutput"); ok { - option.Openapi.Output = v.Value.String() + transportOption.Openapi.Output = v.Value.String() } if v, ok := openapiDocOpt.At("OpenapiInfo"); ok { - option.Openapi.Info = openapi.Info{ - Title: parser.MustOption(v.At("title")).Value.String(), - Description: parser.MustOption(v.At("description")).Value.String(), - Version: parser.MustOption(v.At("version")).Value.String(), + transportOption.Openapi.Info = openapi.Info{ + Title: option.MustOption(v.At("title")).Value.String(), + Description: option.MustOption(v.At("description")).Value.String(), + Version: option.MustOption(v.At("version")).Value.String(), } } if v, ok := openapiDocOpt.At("OpenapiContact"); ok { - option.Openapi.Info.Contact = &openapi.Contact{ - Name: parser.MustOption(v.At("name")).Value.String(), - Email: parser.MustOption(v.At("email")).Value.String(), - URL: parser.MustOption(v.At("url")).Value.String(), + transportOption.Openapi.Info.Contact = &openapi.Contact{ + Name: option.MustOption(v.At("name")).Value.String(), + Email: option.MustOption(v.At("email")).Value.String(), + URL: option.MustOption(v.At("url")).Value.String(), } } if v, ok := openapiDocOpt.At("OpenapiLicence"); ok { - option.Openapi.Info.License = &openapi.License{ - Name: parser.MustOption(v.At("name")).Value.String(), - URL: parser.MustOption(v.At("url")).Value.String(), + transportOption.Openapi.Info.License = &openapi.License{ + Name: option.MustOption(v.At("name")).Value.String(), + URL: option.MustOption(v.At("url")).Value.String(), } } if s, ok := openapiDocOpt.Slice("OpenapiServer"); ok { for _, v := range s { - option.Openapi.Servers = append(option.Openapi.Servers, openapi.Server{ - Description: parser.MustOption(v.At("description")).Value.String(), - URL: parser.MustOption(v.At("url")).Value.String(), + transportOption.Openapi.Servers = append(transportOption.Openapi.Servers, openapi.Server{ + Description: option.MustOption(v.At("description")).Value.String(), + URL: option.MustOption(v.At("url")).Value.String(), }) } } @@ -297,74 +354,68 @@ func (g *serviceOption) loadTransport(opt *parser.Option) (option model.Transpor for _, expr := range methodsOpt.Value.ExprSlice() { fnSel, ok := expr.(*ast.SelectorExpr) if !ok { - return option, errors.NotePosition(methodsOpt.Position, fmt.Errorf("the %s value must be func selector", methodsOpt.Name)) + return transportOption, errors.NotePosition(methodsOpt.Position, fmt.Errorf("the %s value must be func selector", methodsOpt.Name)) } methods = append(methods, fnSel.Sel.Name) - if _, ok := option.Openapi.Methods[fnSel.Sel.Name]; !ok { - option.Openapi.Methods[fnSel.Sel.Name] = &model.OpenapiMethodOption{} + if _, ok := transportOption.Openapi.Methods[fnSel.Sel.Name]; !ok { + transportOption.Openapi.Methods[fnSel.Sel.Name] = &model.OpenapiMethodOption{} } } } if tagsOpt, ok := openapiTagsOpt.At("tags"); ok { if len(methods) > 0 { for _, method := range methods { - option.Openapi.Methods[method].Tags = append(option.Openapi.Methods[method].Tags, tagsOpt.Value.StringSlice()...) + transportOption.Openapi.Methods[method].Tags = append(transportOption.Openapi.Methods[method].Tags, tagsOpt.Value.StringSlice()...) } } else { - option.Openapi.DefaultMethod.Tags = append(option.Openapi.DefaultMethod.Tags, tagsOpt.Value.StringSlice()...) + transportOption.Openapi.DefaultMethod.Tags = append(transportOption.Openapi.DefaultMethod.Tags, tagsOpt.Value.StringSlice()...) } } } } - if option.Openapi.Output == "" { - option.Openapi.Output = "./" + if transportOption.Openapi.Output == "" { + transportOption.Openapi.Output = "./" } } - if jsonRpcOpt, ok := opt.At("JSONRPC"); ok { - option.JsonRPC.Enable = true + if jsonRpcOpt, ok := o.At("JSONRPC"); ok { + transportOption.JsonRPC.Enable = true if path, ok := jsonRpcOpt.At("JSONRPCPath"); ok { - option.JsonRPC.Path = path.Value.String() + transportOption.JsonRPC.Path = path.Value.String() } } - if methodDefaultOpt, ok := opt.At("MethodDefaultOptions"); ok { + if methodDefaultOpt, ok := o.At("MethodDefaultOptions"); ok { defaultMethodOptions, err := getMethodOptions(methodDefaultOpt, model.MethodHTTPTransportOption{}) if err != nil { - return option, err + return transportOption, err } - option.DefaultMethodOptions = defaultMethodOptions + transportOption.DefaultMethodOptions = defaultMethodOptions } - if methods, ok := opt.Slice("MethodOptions"); ok { + if methods, ok := o.Slice("MethodOptions"); ok { for _, methodOpt := range methods { - signOpt := parser.MustOption(methodOpt.At("signature")) + signOpt := option.MustOption(methodOpt.At("signature")) fnSel, ok := signOpt.Value.Expr().(*ast.SelectorExpr) if !ok { - return option, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) + return transportOption, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) } - baseMethodOpts := option.MethodOptions[fnSel.Sel.Name] + baseMethodOpts := transportOption.MethodOptions[fnSel.Sel.Name] mopt, err := getMethodOptions(methodOpt, baseMethodOpts) if err != nil { - return option, err + return transportOption, err } - option.MethodOptions[fnSel.Sel.Name] = mopt + transportOption.MethodOptions[fnSel.Sel.Name] = mopt } } - option.Prefix = "REST" - if option.JsonRPC.Enable { - option.Prefix = "JSONRPC" + transportOption.Prefix = "REST" + if transportOption.JsonRPC.Enable { + transportOption.Prefix = "JSONRPC" } return } -func NewServiceOption(info model.GenerateInfo) option.Option { - return &serviceOption{ - info: info, - } -} - -func getMethodOptions(methodOpt *parser.Option, baseMethodOpts model.MethodHTTPTransportOption) (model.MethodHTTPTransportOption, error) { +func getMethodOptions(methodOpt *option.Option, baseMethodOpts model.MethodHTTPTransportOption) (model.MethodHTTPTransportOption, error) { if wrapResponseOpt, ok := methodOpt.At("WrapResponse"); ok { baseMethodOpts.WrapResponse.Enable = true baseMethodOpts.WrapResponse.Name = wrapResponseOpt.Value.String() @@ -453,3 +504,15 @@ func httpBraceIndices(s string) ([]int, error) { } return idxs, nil } + +func NewServiceGateway( + o *option.Option, + graphTypes *graph.Graph, + commentMap *typeutil.Map, +) (gateway.ServiceGateway, error) { + g := &serviceGateway{graphTypes: graphTypes, commentMap: commentMap} + if err := g.load(o); err != nil { + return nil, err + } + return g, nil +} diff --git a/pkg/usecase/generator/client_struct.go b/internal/interface/generator/client_struct.go similarity index 64% rename from pkg/usecase/generator/client_struct.go rename to internal/interface/generator/client_struct.go index 8243d61b..81a3271c 100644 --- a/pkg/usecase/generator/client_struct.go +++ b/internal/interface/generator/client_struct.go @@ -4,21 +4,23 @@ import ( "context" "fmt" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + stdtypes "go/types" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/types" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/writer" ) type clientStruct struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - i *importer.Importer - o model.ServiceOption + writer.GoLangWriter + i *importer.Importer + serviceID string + serviceMethods []model.ServiceMethod + transport model.TransportOption } func (g *clientStruct) Prepare(ctx context.Context) error { @@ -27,41 +29,40 @@ func (g *clientStruct) Prepare(ctx context.Context) error { func (g *clientStruct) Process(ctx context.Context) error { var ( - kithttpPkg string + kitHTTPPkg string contextPkg string endpointPkg string ) - transportOpt := g.o.Transport - clientType := fmt.Sprintf("client%s", g.o.ID) - clientOptionType := fmt.Sprintf("%sClientOption", g.o.ID) + clientType := fmt.Sprintf("client%s", g.serviceID) + clientOptionType := fmt.Sprintf("%sClientOption", g.serviceID) - if len(g.o.Methods) > 0 { + if len(g.serviceMethods) > 0 { contextPkg = g.i.Import("context", "context") } endpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - if transportOpt.JsonRPC.Enable { - if transportOpt.FastHTTP { - kithttpPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + if g.transport.JsonRPC.Enable { + if g.transport.FastHTTP { + kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") } else { - kithttpPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") } } else { - if transportOpt.FastHTTP { - kithttpPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + if g.transport.FastHTTP { + kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") } else { - kithttpPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") } } g.W("type %s func(*%s)\n", clientOptionType, clientType) g.WriteFunc( - g.o.ID+"GenericClientOptions", + g.serviceID+"GenericClientOptions", "", - []string{"opt", "..." + kithttpPkg + ".ClientOption"}, + []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, []string{"", clientOptionType}, func() { g.W("return func(c *%s) { c.genericClientOption = opt }\n", clientType) @@ -69,7 +70,7 @@ func (g *clientStruct) Process(ctx context.Context) error { ) g.WriteFunc( - g.o.ID+"GenericClientEndpointMiddlewares", + g.serviceID+"GenericClientEndpointMiddlewares", "", []string{"opt", "..." + endpointPkg + ".Middleware"}, []string{"", clientOptionType}, @@ -78,17 +79,17 @@ func (g *clientStruct) Process(ctx context.Context) error { }, ) - for _, m := range g.o.Methods { - g.WriteFunc(g.o.ID+m.Name+"ClientOptions", + for _, m := range g.serviceMethods { + g.WriteFunc(g.serviceID+m.Name+"ClientOptions", "", - []string{"opt", "..." + kithttpPkg + ".ClientOption"}, + []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, []string{"", clientOptionType}, func() { g.W("return func(c *%s) { c.%sClientOption = opt }\n", clientType, m.LcName) }, ) - g.WriteFunc(g.o.ID+m.Name+"ClientEndpointMiddlewares", + g.WriteFunc(g.serviceID+m.Name+"ClientEndpointMiddlewares", "", []string{"opt", "..." + endpointPkg + ".Middleware"}, []string{"", clientOptionType}, @@ -99,17 +100,17 @@ func (g *clientStruct) Process(ctx context.Context) error { } g.W("type %s struct {\n", clientType) - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W("%sEndpoint %s.Endpoint\n", m.LcName, endpointPkg) - g.W("%sClientOption []%s.ClientOption\n", m.LcName, kithttpPkg) + g.W("%sClientOption []%s.ClientOption\n", m.LcName, kitHTTPPkg) g.W("%sEndpointMiddleware []%s.Middleware\n", m.LcName, endpointPkg) } - g.W("genericClientOption []%s.ClientOption\n", kithttpPkg) + g.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) g.W("genericEndpointMiddleware []%s.Middleware\n", endpointPkg) g.W("}\n\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { var params []string if m.ParamCtx != nil { @@ -140,7 +141,7 @@ func (g *clientStruct) Process(ctx context.Context) error { } if len(m.Params) > 0 { - g.W("%sRequest%s", m.LcName, g.o.ID) + g.W("%sRequest%s", m.LcName, g.serviceID) params := structKeyValue(m.Params, func(p *stdtypes.Var) bool { return !types.IsContext(p.Type()) }) @@ -172,7 +173,7 @@ func (g *clientStruct) Process(ctx context.Context) error { if len(m.Results) > 0 { if m.ResultsNamed { - g.W("response := resp.(%sResponse%s)\n", m.LcName, g.o.ID) + g.W("response := resp.(%sResponse%s)\n", m.LcName, g.serviceID) } else { g.W("response := resp.(%s)\n", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) } @@ -211,13 +212,21 @@ func (g *clientStruct) OutputDir() string { } func (g *clientStruct) Filename() string { - return g.filename + return "client_struct_gen.go" } func (g *clientStruct) SetImporter(i *importer.Importer) { g.i = i } -func NewClientStruct(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &clientStruct{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewClientStruct( + serviceID string, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &clientStruct{ + serviceID: serviceID, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/config.go b/internal/interface/generator/config.go similarity index 84% rename from pkg/usecase/generator/config.go rename to internal/interface/generator/config.go index e460bc7d..d5b66ae5 100644 --- a/pkg/usecase/generator/config.go +++ b/internal/interface/generator/config.go @@ -3,17 +3,19 @@ package generator import ( "context" "fmt" + "go/ast" stdtypes "go/types" "strconv" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/fatih/structtag" "github.com/iancoleman/strcase" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/types" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/writer" ) type Required bool @@ -88,10 +90,12 @@ func walkStruct(st *stdtypes.Struct, fn func(f, parent *stdtypes.Var, opts fldOp } type config struct { - *writer.GoLangWriter - - i *importer.Importer - o model.ConfigOption + writer.GoLangWriter + i *importer.Importer + st *stdtypes.Struct + stType stdtypes.Type + stExpr ast.Expr + funcName string } func (g *config) Prepare(ctx context.Context) error { @@ -99,20 +103,17 @@ func (g *config) Prepare(ctx context.Context) error { } func (g *config) Process(ctx context.Context) error { - o := g.o + stTypeStr := stdtypes.TypeString(g.stType, g.i.QualifyPkg) - structType := o.Struct - structTypeStr := stdtypes.TypeString(o.StructType, g.i.QualifyPkg) - - g.W("func %s() (cfg %s, errs []error) {\n", o.FuncName, structTypeStr) + g.W("func %s() (cfg %s, errs []error) {\n", g.funcName, stTypeStr) g.W("cfg = ") - writer.WriteAST(g, g.i, o.StructExpr) + writer.WriteAST(g, g.i, g.stExpr) g.W("\n") var foundFlags bool var envs []fldOpts - walkStruct(structType, func(f, parent *stdtypes.Var, opts fldOpts) { + walkStruct(g.st, func(f, parent *stdtypes.Var, opts fldOpts) { if opts.isFlag { foundFlags = true } @@ -156,7 +157,7 @@ func (g *config) Process(ctx context.Context) error { g.W("return\n") g.W("}\n\n") - g.W("func (cfg %s) String() string {\n", structTypeStr) + g.W("func (cfg %s) String() string {\n", stTypeStr) g.W("out := `\n") if len(envs) > 0 { fmtPkg := g.i.Import("fmt", "fmt") @@ -221,6 +222,16 @@ func (g *config) SetImporter(i *importer.Importer) { g.i = i } -func NewConfig(o model.ConfigOption) Generator { - return &config{GoLangWriter: writer.NewGoLangWriter(), o: o} +func NewConfig( + st *stdtypes.Struct, + stType stdtypes.Type, + stExpr ast.Expr, + funcName string, +) generator.Generator { + return &config{ + st: st, + stType: stType, + stExpr: stExpr, + funcName: funcName, + } } diff --git a/pkg/usecase/generator/config_markdown_doc.go b/internal/interface/generator/config_markdown_doc.go similarity index 64% rename from pkg/usecase/generator/config_markdown_doc.go rename to internal/interface/generator/config_markdown_doc.go index 35f7ea9f..acd63862 100644 --- a/pkg/usecase/generator/config_markdown_doc.go +++ b/internal/interface/generator/config_markdown_doc.go @@ -5,25 +5,21 @@ import ( stdtypes "go/types" "path/filepath" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/writer" ) type configMarkdownDoc struct { writer.BaseWriter - info model.GenerateInfo - o model.ConfigOption + st *stdtypes.Struct + workDir string outputDir string - filename string } -func (g *configMarkdownDoc) Prepare(ctx context.Context) error { - outputDir, err := filepath.Abs(filepath.Join(g.info.BasePath, g.o.Doc.OutputDir)) - if err != nil { - return err - } - g.outputDir = outputDir - return nil +func (g *configMarkdownDoc) Prepare(ctx context.Context) (err error) { + g.outputDir, err = filepath.Abs(filepath.Join(g.workDir, g.outputDir)) + return } func (g *configMarkdownDoc) Process(ctx context.Context) error { @@ -32,7 +28,7 @@ func (g *configMarkdownDoc) Process(ctx context.Context) error { var flags []fldOpts var envs []fldOpts - walkStruct(g.o.Struct, func(f, parent *stdtypes.Var, opts fldOpts) { + walkStruct(g.st, func(f, parent *stdtypes.Var, opts fldOpts) { if opts.isFlag { flags = append(flags, opts) } else { @@ -75,9 +71,13 @@ func (g *configMarkdownDoc) OutputDir() string { } func (g *configMarkdownDoc) Filename() string { - return g.filename + return "config_doc_gen.md" } -func NewConfigMarkdownDoc(filename string, o model.ConfigOption, info model.GenerateInfo) Generator { - return &configMarkdownDoc{filename: filename, o: o, info: info} +func NewConfigMarkdownDoc( + st *stdtypes.Struct, + workDir string, + outputDir string, +) generator.Generator { + return &configMarkdownDoc{st: st, workDir: workDir, outputDir: outputDir} } diff --git a/pkg/usecase/generator/endpoint.go b/internal/interface/generator/endpoint.go similarity index 70% rename from pkg/usecase/generator/endpoint.go rename to internal/interface/generator/endpoint.go index 1317ce98..4edb507e 100644 --- a/pkg/usecase/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -5,24 +5,26 @@ import ( stdtypes "go/types" stdstrings "strings" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/iancoleman/strcase" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/types" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/writer" ) type EndpointOption struct { } type endpoint struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + i *importer.Importer + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod } func (g *endpoint) Prepare(ctx context.Context) error { @@ -34,15 +36,15 @@ func (g *endpoint) Process(ctx context.Context) error { contextPkg string kitEndpointPkg string ) - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) - if len(g.o.Methods) > 0 { + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) + if len(g.serviceMethods) > 0 { contextPkg = g.i.Import("context", "context") kitEndpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") } g.W("type EndpointSet struct {\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W("%sEndpoint %s.Endpoint\n", m.Name, kitEndpointPkg) } @@ -50,15 +52,15 @@ func (g *endpoint) Process(ctx context.Context) error { g.W("func MakeEndpointSet(s %s) EndpointSet {\n", typeStr) g.W("return EndpointSet{\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W("%[1]sEndpoint: make%[1]sEndpoint(s),\n", m.Name) } g.W("}\n") g.W("}\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { if len(m.Params) > 0 { - g.W("type %sRequest%s struct {\n", m.LcName, g.o.ID) + g.W("type %sRequest%s struct {\n", m.LcName, g.serviceID) for _, p := range m.Params { g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(p.Name()), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(p.Name())) } @@ -66,7 +68,7 @@ func (g *endpoint) Process(ctx context.Context) error { } if m.ResultsNamed { - g.W("type %sResponse%s struct {\n", m.LcName, g.o.ID) + g.W("type %sResponse%s struct {\n", m.LcName, g.serviceID) for _, p := range m.Results { name := p.Name() g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(name), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(name)) @@ -91,7 +93,7 @@ func (g *endpoint) Process(ctx context.Context) error { }, nil)...) if len(m.Params) > 0 { - g.W("req := request.(%sRequest%s)\n", m.LcName, g.o.ID) + g.W("req := request.(%sRequest%s)\n", m.LcName, g.serviceID) } if len(m.Results) > 0 { @@ -122,7 +124,7 @@ func (g *endpoint) Process(ctx context.Context) error { g.W("return ") if len(m.Results) > 0 { if m.ResultsNamed { - g.W("%sResponse%s", m.LcName, g.o.ID) + g.W("%sResponse%s", m.LcName, g.serviceID) g.WriteStructAssign(structKeyValue(m.Results, nil)) } else { g.W("result") @@ -139,7 +141,7 @@ func (g *endpoint) Process(ctx context.Context) error { } func (g *endpoint) Filename() string { - return g.filename + return "endpoint_gen.go" } func (g *endpoint) OutputDir() string { @@ -154,11 +156,14 @@ func (g *endpoint) SetImporter(i *importer.Importer) { g.i = i } -func NewEndpoint(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { +func NewEndpoint( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, +) generator.Generator { return &endpoint{ - GoLangWriter: writer.NewGoLangWriter(), - filename: filename, - info: info, - o: o, + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, } } diff --git a/pkg/usecase/generator/endpoint_factory.go b/internal/interface/generator/endpoint_factory.go similarity index 56% rename from pkg/usecase/generator/endpoint_factory.go rename to internal/interface/generator/endpoint_factory.go index 332033e5..93520eae 100644 --- a/pkg/usecase/generator/endpoint_factory.go +++ b/internal/interface/generator/endpoint_factory.go @@ -3,17 +3,19 @@ package generator import ( "context" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/writer" ) type endpointFactory struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + i *importer.Importer + serviceID string + serviceMethods []model.ServiceMethod + transport model.TransportOption } func (g *endpointFactory) Prepare(ctx context.Context) error { @@ -22,21 +24,21 @@ func (g *endpointFactory) Prepare(ctx context.Context) error { func (g *endpointFactory) Process(ctx context.Context) error { g.W("type EndpointFactory struct{\n") - g.W("Options []%sClientOption\n", g.o.ID) + g.W("Option []%sClientOption\n", g.serviceID) g.W("Path string\n") g.W("}\n\n") - if len(g.o.Methods) > 0 { + if len(g.serviceMethods) > 0 { kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") ioPkg := g.i.Import("io", "io") stringsPkg := g.i.Import("strings", "strings") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W("func (f *EndpointFactory) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", m.Name, kitEndpointPkg, ioPkg) g.W("if f.Path != \"\"{\n") g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) g.W("}\n") - g.W("s, err := NewClient%s%s(instance, f.Options...)\n", g.o.Transport.Prefix, g.o.ID) + g.W("s, err := NewClient%s%s(instance, f.Option...)\n", g.transport.Prefix, g.serviceID) g.WriteCheckErr(func() { g.W("return nil, nil, err\n") }) @@ -56,13 +58,21 @@ func (g *endpointFactory) OutputDir() string { } func (g *endpointFactory) Filename() string { - return g.filename + return "endpoint_factory_gen.go" } func (g *endpointFactory) SetImporter(i *importer.Importer) { g.i = i } -func NewEndpointFactory(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &endpointFactory{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewEndpointFactory( + serviceID string, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &endpointFactory{ + serviceID: serviceID, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/gateway.go b/internal/interface/generator/http_gateway.go similarity index 52% rename from pkg/usecase/generator/gateway.go rename to internal/interface/generator/http_gateway.go index f9e213c4..ff28ec94 100644 --- a/pkg/usecase/generator/gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -3,29 +3,30 @@ package generator import ( "context" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/writer" ) -type gatewayGenerator struct { +type httpGatewayGenerator struct { writer.GoLangWriter - filename string - info model.GenerateInfo - o model.GatewayOption i *importer.Importer + services []model.GatewayServiceOption } -func (g *gatewayGenerator) Prepare(ctx context.Context) error { +func (g *httpGatewayGenerator) Prepare(ctx context.Context) error { return nil } -func (g *gatewayGenerator) Process(ctx context.Context) error { +func (g *httpGatewayGenerator) Process(ctx context.Context) error { ioPkg := g.i.Import("io", "io") + contextPkg := g.i.Import("context", "context") epPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - httpkitPkg := g.i.Import("endpoint", "github.com/go-kit/kit/transport/http") - jsonrpckitPkg := g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + httpKitPkg := g.i.Import("endpoint", "github.com/go-kit/kit/transport/http") + jsonRPCKitPkg := g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") logPkg := g.i.Import("endpoint", "github.com/go-kit/kit/log") sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") @@ -35,9 +36,9 @@ func (g *gatewayGenerator) Process(ctx context.Context) error { g.W("type BalancerFactory func(s %s.Endpointer) %s.Balancer\n\n", sdPkg, lbPkg) - g.W("func RetryErrorExtractor() endpoint.Middleware {\n") - g.W("return func(next endpoint.Endpoint) endpoint.Endpoint {\n") - g.W("return func(ctx context.Context, request interface{}) (response interface{}, err error) {\n") + g.W("func RetryErrorExtractor() %s.Middleware {\n", epPkg) + g.W("return func(next %[1]s.Endpoint) %[1]s.Endpoint {\n", epPkg) + g.W("return func(ctx %s.Context, request interface{}) (response interface{}, err error) {\n", contextPkg) g.W("response, err = next(ctx, request)\n") g.W("if err != nil {\n") g.W("if re, ok := err.(sd2.RetryError); ok {\n") @@ -56,9 +57,9 @@ func (g *gatewayGenerator) Process(ctx context.Context) error { g.W("return func(n int, received error) (keepTrying bool, replacement error) {\n") g.W("keepTrying = n < max\n") g.W("replacement = received\n") - g.W("if _, ok := received.(%s.StatusCoder); ok {\n", httpkitPkg) + g.W("if _, ok := received.(%s.StatusCoder); ok {\n", httpKitPkg) g.W("keepTrying = false\n") - g.W("} else if _, ok := received.(%s.ErrorCoder); ok {\n", jsonrpckitPkg) + g.W("} else if _, ok := received.(%s.ErrorCoder); ok {\n", jsonRPCKitPkg) g.W("keepTrying = false\n") g.W("}\n") @@ -67,21 +68,19 @@ func (g *gatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") g.W("type EndpointSet struct {\n") - for _, s := range g.o.Services { + for _, s := range g.services { g.W("%s struct {\n", s.ID) - for i := 0; i < s.Iface.NumMethods(); i++ { - m := s.Iface.Method(i) - g.W("%sEndpoint %s.Endpoint\n", m.Name(), epPkg) + for _, method := range s.Methods { + g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) } g.W("}\n") } g.W("}\n\n") - for _, s := range g.o.Services { + for _, s := range g.services { g.W("type %sEndpointFactory interface {\n", s.ID) - for i := 0; i < s.Iface.NumMethods(); i++ { - m := s.Iface.Method(i) - g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", m.Name(), epPkg, ioPkg) + for _, method := range s.Methods { + g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) } g.W("}\n\n") @@ -89,15 +88,14 @@ func (g *gatewayGenerator) Process(ctx context.Context) error { g.W("Instancer %s.Instancer \n", sdPkg) g.W("EndpointFactory %sEndpointFactory\n", s.ID) - for i := 0; i < s.Iface.NumMethods(); i++ { - m := s.Iface.Method(i) - g.W("%s EndpointOption\n", m.Name()) + for _, method := range s.Methods { + g.W("%s EndpointOption\n", method.Name) } g.W("}\n\n") } g.W("func NewGateway(") - for i, s := range g.o.Services { + for i, s := range g.services { if i > 0 { g.W(",") } @@ -106,30 +104,29 @@ func (g *gatewayGenerator) Process(ctx context.Context) error { g.W(", logger %s.Logger) (ep EndpointSet) {\n", logPkg) g.W("{\n") - for _, s := range g.o.Services { - for i := 0; i < s.Iface.NumMethods(); i++ { - m := s.Iface.Method(i) + for _, s := range g.services { + for _, method := range s.Methods { optName := strings.LcFirst(s.ID) g.W("{\n") - g.W("if %s.%s.Balancer == nil {\n", optName, m.Name()) - g.W("%s.%s.Balancer = %s.NewRoundRobin\n", optName, m.Name(), lbPkg) + g.W("if %s.%s.Balancer == nil {\n", optName, method.Name) + g.W("%s.%s.Balancer = %s.NewRoundRobin\n", optName, method.Name, lbPkg) g.W("}\n") - g.W("if %s.%s.RetryMax == 0 {\n", optName, m.Name()) - g.W("%s.%s.RetryMax = DefaultRetryMax\n", optName, m.Name()) + g.W("if %s.%s.RetryMax == 0 {\n", optName, method.Name) + g.W("%s.%s.RetryMax = DefaultRetryMax\n", optName, method.Name) g.W("}\n") - g.W("if %s.%s.RetryTimeout == 0 {\n", optName, m.Name()) - g.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name()) + g.W("if %s.%s.RetryTimeout == 0 {\n", optName, method.Name) + g.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, method.Name) g.W("}\n") - g.W("endpointer := %[1]s.NewEndpointer(%[2]s.Instancer, %[2]s.EndpointFactory.%[3]sEndpointFactory, logger)\n", sdPkg, optName, m.Name()) + g.W("endpointer := %[1]s.NewEndpointer(%[2]s.Instancer, %[2]s.EndpointFactory.%[3]sEndpointFactory, logger)\n", sdPkg, optName, method.Name) g.W( "ep.%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", - lbPkg, optName, m.Name(), s.ID, + lbPkg, optName, method.Name, s.ID, ) - g.W("ep.%[2]s.%[1]sEndpoint = RetryErrorExtractor()(ep.%[2]s.%[1]sEndpoint)\n", m.Name(), s.ID) + g.W("ep.%[2]s.%[1]sEndpoint = RetryErrorExtractor()(ep.%[2]s.%[1]sEndpoint)\n", method.Name, s.ID) g.W("}\n") } } @@ -139,22 +136,26 @@ func (g *gatewayGenerator) Process(ctx context.Context) error { return nil } -func (g *gatewayGenerator) PkgName() string { +func (g *httpGatewayGenerator) PkgName() string { return "" } -func (g *gatewayGenerator) OutputDir() string { +func (g *httpGatewayGenerator) OutputDir() string { return "" } -func (g *gatewayGenerator) Filename() string { - return g.filename +func (g *httpGatewayGenerator) Filename() string { + return "gateway_gen.go" } -func (g *gatewayGenerator) SetImporter(i *importer.Importer) { +func (g *httpGatewayGenerator) SetImporter(i *importer.Importer) { g.i = i } -func NewGatewayGenerator(filename string, info model.GenerateInfo, o model.GatewayOption) Generator { - return &gatewayGenerator{filename: filename, info: info, o: o} +func NewGatewayGenerator( + services []model.GatewayServiceOption, +) generator.Generator { + return &httpGatewayGenerator{ + services: services, + } } diff --git a/pkg/usecase/generator/http_transport.go b/internal/interface/generator/http_transport.go similarity index 64% rename from pkg/usecase/generator/http_transport.go rename to internal/interface/generator/http_transport.go index 11df0aa6..2c39bcb5 100644 --- a/pkg/usecase/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -4,19 +4,21 @@ import ( "context" "fmt" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/gogo/protobuf/sortkeys" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/writer" ) type httpTransport struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - i *importer.Importer - o model.ServiceOption + writer.GoLangWriter + serviceID string + serviceMethods []model.ServiceMethod + transport model.TransportOption + i *importer.Importer } func (g *httpTransport) Prepare(ctx context.Context) error { @@ -25,47 +27,40 @@ func (g *httpTransport) Prepare(ctx context.Context) error { func (g *httpTransport) Process(ctx context.Context) error { var ( - kithttpPkg string - httpPkg string + kitHTTPPkg string ) - transportOpt := g.o.Transport - - if transportOpt.JsonRPC.Enable { - if transportOpt.FastHTTP { - kithttpPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + if g.transport.JsonRPC.Enable { + if g.transport.FastHTTP { + kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") } else { - kithttpPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") } } else { - if transportOpt.FastHTTP { - kithttpPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + if g.transport.FastHTTP { + kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") } else { - kithttpPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") } } - if transportOpt.FastHTTP { - httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") - } else { - httpPkg = g.i.Import("http", "net/http") - } - endpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") g.W("type httpError struct {\n") g.W("code int\n") - if transportOpt.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { g.W("data interface{}\n") g.W("message string\n") } g.W("}\n") - if transportOpt.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { g.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") } else { - if transportOpt.FastHTTP { + if g.transport.FastHTTP { + httpPkg := g.i.Import("fasthttp", "github.com/valyala/fasthttp") g.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) } else { + httpPkg := g.i.Import("http", "net/http") g.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) } } @@ -73,7 +68,7 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") errorDecodeParams := []string{"code", "int"} - if transportOpt.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { g.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") g.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") g.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") @@ -85,27 +80,30 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("switch code {\n") g.W("default:\nerr = &httpError{code: code}\n") var errorKeys []uint32 - for key := range g.o.Transport.Errors { + for key := range g.transport.Errors { errorKeys = append(errorKeys, key) } sortkeys.Uint32s(errorKeys) for _, key := range errorKeys { - e := g.o.Transport.Errors[key] + e := g.transport.Errors[key] g.W("case %d:\n", e.Code) - pkg := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) + pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) + if pkgName != "" { + pkgName += "." + } newPrefix := "" if e.IsPointer { newPrefix = "&" } - g.W("err = %s%s.%s{}\n", newPrefix, pkg, e.Named.Obj().Name()) + g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) } g.W("}\n") - if transportOpt.JsonRPC.Enable { - g.W("if err, ok := err.(%s.ErrorData); ok {\n", kithttpPkg) + if g.transport.JsonRPC.Enable { + g.W("if err, ok := err.(%s.ErrorData); ok {\n", kitHTTPPkg) g.W("err.SetErrorData(data)\n") g.W("}\n") - g.W("if err, ok := err.(%s.ErrorMessager); ok {\n", kithttpPkg) + g.W("if err, ok := err.(%s.ErrorMessager); ok {\n", kitHTTPPkg) g.W("err.SetErrorMessage(message)\n") g.W("}\n") } @@ -126,9 +124,9 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("}\n") g.W("}\n") - serverOptType := fmt.Sprintf("server%sOpts", g.o.ID) - serverOptionType := fmt.Sprintf("%sServerOption", g.o.ID) - kithttpServerOption := fmt.Sprintf("%s.ServerOption", kithttpPkg) + serverOptType := fmt.Sprintf("server%sOpts", g.serviceID) + serverOptionType := fmt.Sprintf("%sServerOption", g.serviceID) + kithttpServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) g.W("type %s func (*%s)\n", serverOptionType, serverOptType) @@ -137,14 +135,14 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("genericServerOption []%s\n", kithttpServerOption) g.W("genericEndpointMiddleware []%s\n", endpointMiddlewareOption) - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W("%sServerOption []%s\n", m.LcName, kithttpServerOption) g.W("%sEndpointMiddleware []%s\n", m.LcName, endpointMiddlewareOption) } g.W("}\n") g.WriteFunc( - g.o.ID+"GenericServerOptions", + g.serviceID+"GenericServerOptions", "", []string{"v", "..." + kithttpServerOption}, []string{"", serverOptionType}, @@ -154,7 +152,7 @@ func (g *httpTransport) Process(ctx context.Context) error { ) g.WriteFunc( - g.o.ID+"GenericServerEndpointMiddlewares", + g.serviceID+"GenericServerEndpointMiddlewares", "", []string{"v", "..." + endpointMiddlewareOption}, []string{"", serverOptionType}, @@ -163,9 +161,9 @@ func (g *httpTransport) Process(ctx context.Context) error { }, ) - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.WriteFunc( - g.o.ID+m.Name+"ServerOptions", + g.serviceID+m.Name+"ServerOptions", "", []string{"opt", "..." + kithttpServerOption}, []string{"", serverOptionType}, @@ -175,7 +173,7 @@ func (g *httpTransport) Process(ctx context.Context) error { ) g.WriteFunc( - g.o.ID+m.Name+"ServerEndpointMiddlewares", + g.serviceID+m.Name+"ServerEndpointMiddlewares", "", []string{"opt", "..." + endpointMiddlewareOption}, []string{"", serverOptionType}, @@ -196,13 +194,21 @@ func (g *httpTransport) OutputDir() string { } func (g *httpTransport) Filename() string { - return g.filename + return "http_gen.go" } func (g *httpTransport) SetImporter(i *importer.Importer) { g.i = i } -func NewHttpTransport(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &httpTransport{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewHttpTransport( + serviceID string, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &httpTransport{ + serviceID: serviceID, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/instrumenting.go b/internal/interface/generator/instrumenting.go similarity index 59% rename from pkg/usecase/generator/instrumenting.go rename to internal/interface/generator/instrumenting.go index 6fc8c6a2..d963fb55 100644 --- a/pkg/usecase/generator/instrumenting.go +++ b/internal/interface/generator/instrumenting.go @@ -5,38 +5,41 @@ import ( stdtypes "go/types" "strconv" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/types" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/writer" ) -type instrumenting struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer +type instrumentingGenerator struct { + writer.GoLangWriter + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod + instrumenting model.InstrumentingOption + i *importer.Importer } -func (g *instrumenting) Prepare(ctx context.Context) error { +func (g *instrumentingGenerator) Prepare(ctx context.Context) error { return nil } -func (g *instrumenting) Process(ctx context.Context) error { +func (g *instrumentingGenerator) Process(ctx context.Context) error { var ( timePkg string ) - if len(g.o.Methods) > 0 { + if len(g.serviceMethods) > 0 { timePkg = g.i.Import("time", "time") } metricsPkg := g.i.Import("metrics", "github.com/go-kit/kit/metrics") - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") - name := "instrumentingMiddleware" + g.o.ID - constructName := "NewInstrumentingMiddleware" + g.o.ID + name := "instrumentingMiddleware" + g.serviceID + constructName := "NewInstrumentingMiddleware" + g.serviceID g.W("type %s struct {\n", name) g.W("next %s\n", typeStr) @@ -44,7 +47,7 @@ func (g *instrumenting) Process(ctx context.Context) error { g.W("requestLatency %s.Histogram\n", metricsPkg) g.W("}\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { var params []string if m.ParamCtx != nil { @@ -90,8 +93,8 @@ func (g *instrumenting) Process(ctx context.Context) error { g.W("if requestCount == nil {\n") g.W("requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.W("Namespace: %s,\n", strconv.Quote(g.o.Instrumenting.Namespace)) - g.W("Subsystem: %s,\n", strconv.Quote(g.o.Instrumenting.Subsystem)) + g.W("Namespace: %s,\n", strconv.Quote(g.instrumenting.Namespace)) + g.W("Subsystem: %s,\n", strconv.Quote(g.instrumenting.Subsystem)) g.W("Name: %s,\n", strconv.Quote("request_count")) g.W("Help: %s,\n", strconv.Quote("Number of requests received.")) g.W("}, []string{\"method\"})\n") @@ -99,8 +102,8 @@ func (g *instrumenting) Process(ctx context.Context) error { g.W("if requestLatency == nil {\n") g.W("requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.W("Namespace: %s,\n", strconv.Quote(g.o.Instrumenting.Namespace)) - g.W("Subsystem: %s,\n", strconv.Quote(g.o.Instrumenting.Subsystem)) + g.W("Namespace: %s,\n", strconv.Quote(g.instrumenting.Namespace)) + g.W("Subsystem: %s,\n", strconv.Quote(g.instrumenting.Subsystem)) g.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) g.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) g.W("}, []string{\"method\"})\n") @@ -110,22 +113,32 @@ func (g *instrumenting) Process(ctx context.Context) error { return nil } -func (g *instrumenting) PkgName() string { +func (g *instrumentingGenerator) PkgName() string { return "" } -func (g *instrumenting) OutputDir() string { +func (g *instrumentingGenerator) OutputDir() string { return "" } -func (g *instrumenting) Filename() string { - return g.filename +func (g *instrumentingGenerator) Filename() string { + return "instrumenting_gen.go" } -func (g *instrumenting) SetImporter(i *importer.Importer) { +func (g *instrumentingGenerator) SetImporter(i *importer.Importer) { g.i = i } -func NewInstrumenting(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &instrumenting{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewInstrumenting( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, + instrumenting model.InstrumentingOption, +) generator.Generator { + return &instrumentingGenerator{ + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, + instrumenting: instrumenting, + } } diff --git a/pkg/usecase/generator/jsonrpc_go_client.go b/internal/interface/generator/jsonrpc_go_client.go similarity index 65% rename from pkg/usecase/generator/jsonrpc_go_client.go rename to internal/interface/generator/jsonrpc_go_client.go index 91596b92..aa94e82e 100644 --- a/pkg/usecase/generator/jsonrpc_go_client.go +++ b/internal/interface/generator/jsonrpc_go_client.go @@ -6,17 +6,20 @@ import ( stdtypes "go/types" "strconv" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/writer" ) type jsonRPCGoClient struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod + transport model.TransportOption + i *importer.Importer } func (g *jsonRPCGoClient) Prepare(ctx context.Context) error { @@ -24,12 +27,12 @@ func (g *jsonRPCGoClient) Prepare(ctx context.Context) error { } func (g *jsonRPCGoClient) Process(ctx context.Context) error { - clientType := "client" + g.o.ID - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) + clientType := "client" + g.serviceID + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - g.W("func NewClient%s%s(tgt string", g.o.Transport.Prefix, g.o.ID) + g.W("func NewClient%s%s(tgt string", g.transport.Prefix, g.serviceID) - g.W(" ,opts ...%sClientOption", g.o.ID) + g.W(" ,opts ...%sClientOption", g.serviceID) g.W(") (%s, error) {\n", typeStr) @@ -39,12 +42,10 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("o(c)\n") g.W("}\n") - transportOpt := g.o.Transport - var ( jsonrpcPkg string contextPkg string - ffjsonPkg string + ffJSONPkg string jsonPkg string fmtPkg string urlPkg string @@ -52,22 +53,22 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { stringsPkg string ) - if len(g.o.Methods) > 0 { - if transportOpt.FastHTTP { + if len(g.serviceMethods) > 0 { + if g.transport.FastHTTP { jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") } else { jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") } urlPkg = g.i.Import("url", "net/url") contextPkg = g.i.Import("context", "context") - ffjsonPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + ffJSONPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") jsonPkg = g.i.Import("json", "encoding/json") fmtPkg = g.i.Import("fmt", "fmt") netPkg = g.i.Import("net", "net") stringsPkg = g.i.Import("strings", "strings") } - if len(g.o.Methods) > 0 { + if len(g.serviceMethods) > 0 { g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) g.WriteCheckErr(func() { @@ -85,8 +86,8 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("}\n") } - for _, m := range g.o.Methods { - mopt := transportOpt.MethodOptions[m.Name] + for _, m := range g.serviceMethods { + mopt := g.transport.MethodOptions[m.Name] g.W("c.%[1]sClientOption = append(\nc.%[1]sClientOption,\n", m.LcName) @@ -94,13 +95,13 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) if len(m.Params) > 0 { - g.W("req, ok := obj.(%sRequest%s)\n", m.LcName, g.o.ID) + g.W("req, ok := obj.(%sRequest%s)\n", m.LcName, g.serviceID) g.W("if !ok {\n") - g.W("return nil, %s.Errorf(\"couldn't assert request as %sRequest%s, got %%T\", obj)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return nil, %s.Errorf(\"couldn'tpl assert request as %sRequest%s, got %%T\", obj)\n", fmtPkg, m.LcName, g.serviceID) g.W("}\n") - g.W("b, err := %s.Marshal(req)\n", ffjsonPkg) + g.W("b, err := %s.Marshal(req)\n", ffJSONPkg) g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn't marshal request %%T: %%s\", obj, err)\n", fmtPkg) + g.W("return nil, %s.Errorf(\"couldn'tpl marshal request %%T: %%s\", obj, err)\n", fmtPkg) g.W("}\n") g.W("return b, nil\n") } else { @@ -117,7 +118,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { if len(m.Results) > 0 { var responseType string if m.ResultsNamed { - responseType = fmt.Sprintf("%sResponse%s", m.LcName, g.o.ID) + responseType = fmt.Sprintf("%sResponse%s", m.LcName, g.serviceID) } else { responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) } @@ -128,9 +129,9 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("var resp %s\n", responseType) } - g.W("err := %s.Unmarshal(response.Result, &resp)\n", ffjsonPkg) + g.W("err := %s.Unmarshal(response.Result, &resp)\n", ffJSONPkg) g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %sResponse%s: %%s\", err)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sResponse%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) g.W("}\n") if mopt.WrapResponse.Enable { @@ -174,13 +175,23 @@ func (g *jsonRPCGoClient) OutputDir() string { } func (g *jsonRPCGoClient) Filename() string { - return g.filename + return "client_gen.go" } func (g *jsonRPCGoClient) SetImporter(i *importer.Importer) { g.i = i } -func NewJsonRPCGoClient(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &jsonRPCGoClient{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewJsonRPCGoClient( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &jsonRPCGoClient{ + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go similarity index 84% rename from pkg/usecase/generator/jsonrpc_js_client.go rename to internal/interface/generator/jsonrpc_js_client.go index f2572830..c2c6506b 100644 --- a/pkg/usecase/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -8,10 +8,14 @@ import ( "strconv" "strings" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/fatih/structtag" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/writer" + + "golang.org/x/tools/go/types/typeutil" ) const jsonRPCClientBase = ` @@ -22,7 +26,7 @@ export class JSONRPCError extends Error { this.code = code; this.data = data; } - } + } class JSONRPCClient { /** * @@ -34,7 +38,7 @@ class JSONRPCClient { this._scheduleRequests = {}; this._commitTimerID = null; this._beforeRequest = null; - } + } beforeRequest(fn) { this._beforeRequest = fn; } @@ -60,16 +64,16 @@ class JSONRPCClient { scheduleRequests[responses[i].id].resolve(responses[i].result); } }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e) - } - } - }); + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e) + } + } + }); }, 0); } makeJSONRPCRequest(id, method, params) { @@ -102,14 +106,14 @@ class JSONRPCClient { __requestIDGenerate() { return ++this._requestID; } - } + } ` type jsonRPCJSClient struct { writer.BaseWriter - filename string - info model.GenerateInfo - o model.ServiceOption + serviceMethods []model.ServiceMethod + transport model.TransportOption + enums *typeutil.Map } func (g *jsonRPCJSClient) Prepare(_ context.Context) error { @@ -121,8 +125,8 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default class extends JSONRPCClient {\n") - for _, m := range g.o.Methods { - mopt := g.o.Transport.MethodOptions[m.Name] + for _, m := range g.serviceMethods { + mopt := g.transport.MethodOptions[m.Name] g.W("/**\n") if len(m.Comments) > 0 { @@ -187,7 +191,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("}\n") - for _, e := range g.o.Transport.Errors { + for _, e := range g.transport.Errors { g.W( "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %d, data);\n}\n}\n", e.Named.Obj().Name(), e.Code, @@ -198,14 +202,14 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("default:\n") g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") - for _, e := range g.o.Transport.Errors { + for _, e := range g.transport.Errors { g.W("case %d:\n", e.Code) g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) } g.W("}\n}\n") - g.info.Enums.Iterate(func(key stdtypes.Type, value interface{}) { + g.enums.Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic) if !ok { @@ -240,11 +244,11 @@ func (g *jsonRPCJSClient) OutputDir() string { } func (g *jsonRPCJSClient) Filename() string { - return g.filename + return "client_jsonrpc_gen.js" } -func (g *jsonRPCJSClient) getJSDocType(t stdtypes.Type, nested int) string { - switch v := t.(type) { +func (g *jsonRPCJSClient) getJSDocType(tpl stdtypes.Type, nested int) string { + switch v := tpl.(type) { default: return "*" case *stdtypes.Pointer: @@ -344,6 +348,14 @@ func (g *jsonRPCJSClient) getJSDocType(t stdtypes.Type, nested int) string { } } -func NewJsonRPCJSClient(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &jsonRPCJSClient{filename: filename, info: info, o: o} +func NewJsonRPCJSClient( + serviceMethods []model.ServiceMethod, + transport model.TransportOption, + enums *typeutil.Map, +) generator.Generator { + return &jsonRPCJSClient{ + serviceMethods: serviceMethods, + transport: transport, + enums: enums, + } } diff --git a/pkg/usecase/generator/jsonrpc_markdown_doc.go b/internal/interface/generator/jsonrpc_markdown_doc.go similarity index 82% rename from pkg/usecase/generator/jsonrpc_markdown_doc.go rename to internal/interface/generator/jsonrpc_markdown_doc.go index b14cc061..9ee4376e 100644 --- a/pkg/usecase/generator/jsonrpc_markdown_doc.go +++ b/internal/interface/generator/jsonrpc_markdown_doc.go @@ -10,11 +10,11 @@ import ( "regexp" "strings" - "github.com/fatih/structtag" - - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/fatih/structtag" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/writer" "golang.org/x/tools/go/types/typeutil" ) @@ -22,13 +22,17 @@ var paramCommentRegexp = regexp.MustCompile(`(?s)@([a-zA-Z0-9_]*) (.*)`) type jsonrpcMarkdownDoc struct { writer.BaseWriter - info model.GenerateInfo - o model.ServiceOption - outputDir string + serviceID string + serviceMethods []model.ServiceMethod + transport model.TransportOption + commentMap *typeutil.Map + enums *typeutil.Map + workDir string + outputDir string } func (g *jsonrpcMarkdownDoc) Prepare(ctx context.Context) error { - outputDir, err := filepath.Abs(filepath.Join(g.info.BasePath, g.o.Transport.MarkdownDoc.OutputDir)) + outputDir, err := filepath.Abs(filepath.Join(g.workDir, g.transport.MarkdownDoc.OutputDir)) if err != nil { return err } @@ -36,15 +40,15 @@ func (g *jsonrpcMarkdownDoc) Prepare(ctx context.Context) error { return nil } -func (g *jsonrpcMarkdownDoc) appendExistsTypes(m *typeutil.Map, t stdtypes.Type) { - t = normalizeType(t) - if isGolangNamedType(t) { +func (g *jsonrpcMarkdownDoc) appendExistsTypes(m *typeutil.Map, tpl stdtypes.Type) { + tpl = normalizeType(tpl) + if isGolangNamedType(tpl) { return } - if v := m.At(t); v != nil { + if v := m.At(tpl); v != nil { return } - if named, ok := t.(*stdtypes.Named); ok { + if named, ok := tpl.(*stdtypes.Named); ok { if st, ok := named.Obj().Type().Underlying().(*stdtypes.Struct); ok { m.Set(named, st) for i := 0; i < st.NumFields(); i++ { @@ -59,7 +63,7 @@ func (g *jsonrpcMarkdownDoc) appendExistsTypes(m *typeutil.Map, t stdtypes.Type) func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { var pkgImport string - pkgJsonFilepath := filepath.Join(g.info.RootPath, "package.json") + pkgJsonFilepath := filepath.Join(g.workDir, "package.json") data, err := ioutil.ReadFile(pkgJsonFilepath) if err == nil { var packageJSON map[string]interface{} @@ -71,7 +75,7 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { } } - g.W("# %s JSONRPC Client\n\n", g.o.ID) + g.W("# %s JSONRPC Client\n\n", g.serviceID) if pkgImport != "" { g.W("## Getting Started\n\n") @@ -86,7 +90,7 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { existsTypes := new(typeutil.Map) - for _, method := range g.o.Methods { + for _, method := range g.serviceMethods { for _, param := range method.Params { g.appendExistsTypes(existsTypes, param.Type()) } @@ -96,7 +100,7 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { g.W("%[1]s\n\n", method.Name) } - for _, method := range g.o.Methods { + for _, method := range g.serviceMethods { g.W("### %[1]s(", method.Name) for i, param := range method.Params { @@ -156,7 +160,7 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { existsTypes.Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { st := named.Obj().Type().Underlying().(*stdtypes.Struct) - comments, ok := g.info.CommentMap.At(st).(map[string]string) + comments, ok := g.commentMap.At(st).(map[string]string) if !ok { comments = map[string]string{} } @@ -208,9 +212,9 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { }) } - if g.info.Enums.Len() > 0 { + if g.enums.Len() > 0 { g.W("## Enums\n") - g.info.Enums.Iterate(func(key stdtypes.Type, value interface{}) { + g.enums.Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { typeName := "" if b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic); ok { @@ -242,11 +246,11 @@ func (g *jsonrpcMarkdownDoc) OutputDir() string { } func (g *jsonrpcMarkdownDoc) Filename() string { - return fmt.Sprintf("jsonrpc_%s_doc_gen.md", strings.ToLower(g.o.ID)) + return "jsonrpc_doc_gen.md" } -func (g *jsonrpcMarkdownDoc) getJSType(t stdtypes.Type) string { - switch v := t.(type) { +func (g *jsonrpcMarkdownDoc) getJSType(tpl stdtypes.Type) string { + switch v := tpl.(type) { default: return "" case *stdtypes.Interface: @@ -263,7 +267,7 @@ func (g *jsonrpcMarkdownDoc) getJSType(t stdtypes.Type) string { switch stdtypes.TypeString(v.Obj().Type(), nil) { default: var postfix string - if g.info.Enums.At(v) != nil { + if g.enums.At(v) != nil { postfix = "Enum" } return fmt.Sprintf("%[1]s%[2]s", v.Obj().Name(), postfix) @@ -298,6 +302,20 @@ func (g *jsonrpcMarkdownDoc) getJSType(t stdtypes.Type) string { } } -func NewJsonrpcMarkdownDoc(info model.GenerateInfo, o model.ServiceOption) Generator { - return &jsonrpcMarkdownDoc{info: info, o: o} +func NewJsonrpcMarkdownDoc( + serviceID string, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, + commentMap *typeutil.Map, + enums *typeutil.Map, + workDir string, +) generator.Generator { + return &jsonrpcMarkdownDoc{ + serviceID: serviceID, + serviceMethods: serviceMethods, + transport: transport, + commentMap: commentMap, + enums: enums, + workDir: workDir, + } } diff --git a/pkg/usecase/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go similarity index 63% rename from pkg/usecase/generator/jsonrpc_server.go rename to internal/interface/generator/jsonrpc_server.go index 0fb39985..5b5fc8a1 100644 --- a/pkg/usecase/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -5,17 +5,20 @@ import ( stdtypes "go/types" stdstrings "strings" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/writer" ) type jsonRPCServer struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod + transport model.TransportOption + i *importer.Importer } func (g *jsonRPCServer) Prepare(ctx context.Context) error { @@ -27,15 +30,12 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { routerPkg string jsonrpcPkg string ) - - ffjsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + ffJSONPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") jsonPkg := g.i.Import("json", "encoding/json") contextPkg := g.i.Import("context", "context") - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - transportOpt := g.o.Transport - - if transportOpt.FastHTTP { + if g.transport.FastHTTP { jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") routerPkg = g.i.Import("routing", "github.com/qiangxue/fasthttp-routing") } else { @@ -43,8 +43,8 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { routerPkg = g.i.Import("mux", "github.com/gorilla/mux") } - g.W("func encodeResponseJSONRPC%s(_ %s.Context, result interface{}) (%s.RawMessage, error) {\n", g.o.ID, contextPkg, jsonPkg) - g.W("b, err := %s.Marshal(result)\n", ffjsonPkg) + g.W("func encodeResponseJSONRPC%s(_ %s.Context, result interface{}) (%s.RawMessage, error) {\n", g.serviceID, contextPkg, jsonPkg) + g.W("b, err := %s.Marshal(result)\n", ffJSONPkg) g.W("if err != nil {\n") g.W("return nil, err\n") g.W("}\n") @@ -53,7 +53,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { stringsPkg := g.i.Import("strings", "strings") - g.W("func Make%sEndpointCodecMap(ep EndpointSet, ns ...string) %s.EndpointCodecMap {\n", g.o.ID, jsonrpcPkg) + g.W("func Make%sEndpointCodecMap(ep EndpointSet, ns ...string) %s.EndpointCodecMap {\n", g.serviceID, jsonrpcPkg) g.W("var namespace = %s.Join(ns, \".\")\n", stringsPkg) g.W("if len(ns) > 0 {\n") @@ -64,8 +64,8 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { //g.W("return %[1]s.EndpointCodecMap{\n", jsonrpcPkg) - for _, m := range g.o.Methods { - mopt := transportOpt.MethodOptions[m.Name] + for _, m := range g.serviceMethods { + mopt := g.transport.MethodOptions[m.Name] g.W("if ep.%sEndpoint != nil {\n", m.Name) @@ -81,10 +81,10 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) if len(m.Params) > 0 { - g.W("var req %sRequest%s\n", m.LcName, g.o.ID) - g.W("err := %s.Unmarshal(msg, &req)\n", ffjsonPkg) + g.W("var req %sRequest%s\n", m.LcName, g.serviceID) + g.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) g.W("}\n") g.W("return req, nil\n") @@ -101,10 +101,10 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if mopt.WrapResponse.Enable && len(m.Results) > 0 { jsonPkg := g.i.Import("json", "encoding/json") g.W("func (ctx context.Context, response interface{}) (%s.RawMessage, error) {\n", jsonPkg) - g.W("return encodeResponseJSONRPC%s(ctx, map[string]interface{}{\"%s\": response})\n", g.o.ID, mopt.WrapResponse.Name) + g.W("return encodeResponseJSONRPC%s(ctx, map[string]interface{}{\"%s\": response})\n", g.serviceID, mopt.WrapResponse.Name) g.W("},\n") } else { - g.W("encodeResponseJSONRPC%s,\n", g.o.ID) + g.W("encodeResponseJSONRPC%s,\n", g.serviceID) } g.W("}\n}\n") } @@ -113,12 +113,12 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("}\n") - g.W("// HTTP %s Transport\n", transportOpt.Prefix) - g.W("func MakeHandler%s%s(s %s", g.o.Transport.Prefix, g.o.ID, typeStr) + g.W("// HTTP %s Transport\n", g.transport.Prefix) + g.W("func MakeHandler%s%s(s %s", g.transport.Prefix, g.serviceID, typeStr) - g.W(", opts ...%sServerOption", g.o.ID) + g.W(", opts ...%sServerOption", g.serviceID) g.W(") (") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("%s.RequestHandler", g.i.Import("fasthttp", "github.com/valyala/fasthttp")) } else { g.W("%s.Handler", g.i.Import("http", "net/http")) @@ -126,27 +126,27 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W(", error) {\n") - g.W("sopt := &server%sOpts{}\n", g.o.ID) + g.W("sopt := &server%sOpts{}\n", g.serviceID) g.W("for _, o := range opts {\n o(sopt)\n }\n") g.W("ep := MakeEndpointSet(s)\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W( "ep.%[1]sEndpoint = middlewareChain(append(sopt.genericEndpointMiddleware, sopt.%[2]sEndpointMiddleware...))(ep.%[1]sEndpoint)\n", m.Name, m.LcName, ) } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r := %s.New()\n", routerPkg) } else { g.W("r := %s.NewRouter()\n", routerPkg) } - g.W("handler := %[1]s.NewServer(Make%sEndpointCodecMap(ep), sopt.genericServerOption...)\n", jsonrpcPkg, g.o.ID) - jsonRPCPath := transportOpt.JsonRPC.Path - if transportOpt.FastHTTP { + g.W("handler := %[1]s.NewServer(Make%sEndpointCodecMap(ep), sopt.genericServerOption...)\n", jsonrpcPkg, g.serviceID) + jsonRPCPath := g.transport.JsonRPC.Path + if g.transport.FastHTTP { r := stdstrings.NewReplacer("{", "<", "}", ">") jsonRPCPath = r.Replace(jsonRPCPath) @@ -154,7 +154,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } else { g.W("r.Methods(\"POST\").Path(\"%s\").Handler(handler)\n", jsonRPCPath) } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("return r.HandleRequest, nil") } else { g.W("return r, nil") @@ -172,13 +172,23 @@ func (g *jsonRPCServer) OutputDir() string { } func (g *jsonRPCServer) Filename() string { - return g.filename + return "server_gen.go" } func (g *jsonRPCServer) SetImporter(i *importer.Importer) { g.i = i } -func NewJsonRPCServer(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &jsonRPCServer{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewJsonRPCServer( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &jsonRPCServer{ + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/logging.go b/internal/interface/generator/logging.go similarity index 73% rename from pkg/usecase/generator/logging.go rename to internal/interface/generator/logging.go index cf8bdb55..c7d9b543 100644 --- a/pkg/usecase/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -6,18 +6,21 @@ import ( "strconv" "strings" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/types" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/writer" ) type logging struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod + i *importer.Importer } func (g *logging) Prepare(ctx context.Context) error { @@ -28,14 +31,14 @@ func (g *logging) Process(ctx context.Context) error { var ( timePkg string ) - if len(g.o.Methods) > 0 { + if len(g.serviceMethods) > 0 { timePkg = g.i.Import("time", "time") } loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - name := "loggingMiddleware" + g.o.ID - constructName := "NewLoggingMiddleware" + g.o.ID + name := "loggingMiddleware" + g.serviceID + constructName := "NewLoggingMiddleware" + g.serviceID g.WriteTypeStruct( name, @@ -45,7 +48,7 @@ func (g *logging) Process(ctx context.Context) error { }, ) - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { logParams := makeLogParams(m.Params...) if len(m.Results) > 0 { @@ -121,13 +124,21 @@ func (g *logging) OutputDir() string { } func (g *logging) Filename() string { - return g.filename + return "logging_gen.go" } func (g *logging) SetImporter(i *importer.Importer) { g.i = i } -func NewLogging(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &logging{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewLogging( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, +) generator.Generator { + return &logging{ + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, + } } diff --git a/pkg/usecase/generator/openapi.go b/internal/interface/generator/openapi.go similarity index 92% rename from pkg/usecase/generator/openapi.go rename to internal/interface/generator/openapi.go index 722d710e..0d239b32 100644 --- a/pkg/usecase/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -10,13 +10,15 @@ import ( "strconv" stdstrings "strings" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/iancoleman/strcase" "github.com/pquerna/ffjson/ffjson" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/openapi" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/types" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/openapi" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/types" ) func getOpenapiJSONRPCErrorSchemas() openapi.Schemas { @@ -167,13 +169,14 @@ func getOpenapiRestErrorSchema() *openapi.Schema { type openapiDoc struct { bytes.Buffer - info model.GenerateInfo - o model.ServiceOption - outputDir string + serviceMethods []model.ServiceMethod + transport model.TransportOption + workDir string + outputDir string } func (g *openapiDoc) Prepare(ctx context.Context) error { - outputDir, err := filepath.Abs(filepath.Join(g.info.BasePath, g.o.Transport.Openapi.Output)) + outputDir, err := filepath.Abs(filepath.Join(g.workDir, g.transport.Openapi.Output)) if err != nil { return err } @@ -182,7 +185,7 @@ func (g *openapiDoc) Prepare(ctx context.Context) error { } func (g *openapiDoc) Process(ctx context.Context) error { - opt := g.o.Transport.Openapi + opt := g.transport.Openapi swg := openapi.OpenAPI{ OpenAPI: "3.0.0", Info: opt.Info, @@ -193,15 +196,15 @@ func (g *openapiDoc) Process(ctx context.Context) error { }, } - if g.o.Transport.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { swg.Components.Schemas = getOpenapiJSONRPCErrorSchemas() } else { swg.Components.Schemas["Error"] = getOpenapiRestErrorSchema() } - for _, ei := range g.o.Transport.Errors { + for _, ei := range g.transport.Errors { var s *openapi.Schema - if g.o.Transport.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { s = &openapi.Schema{ Type: "object", Properties: openapi.Properties{ @@ -240,8 +243,8 @@ func (g *openapiDoc) Process(ctx context.Context) error { swg.Components.Schemas[ei.Named.Obj().Name()] = s } - for _, m := range g.o.Methods { - mopt := g.o.Transport.MethodOptions[m.Name] + for _, m := range g.serviceMethods { + mopt := g.transport.MethodOptions[m.Name] var ( o *openapi.Operation @@ -253,8 +256,8 @@ func (g *openapiDoc) Process(ctx context.Context) error { tags = append(tags, openapiMethodOpt.Tags...) } - if g.o.Transport.JsonRPC.Enable { - o = g.makeJSONRPCPath(opt, m) + if g.transport.JsonRPC.Enable { + o = g.makeJSONRPCPath(m) pathStr = "/" + strings.LcFirst(m.Name) mopt.MethodName = "POST" @@ -316,7 +319,7 @@ func (g *openapiDoc) OutputDir() string { func (g *openapiDoc) Filename() string { typeName := "rest" - if g.o.Transport.JsonRPC.Enable { + if g.transport.JsonRPC.Enable { typeName = "jsonrpc" } return fmt.Sprintf("openapi_%s_gen.json", typeName) @@ -326,8 +329,8 @@ func (g *openapiDoc) Imports() []string { return nil } -func (g *openapiDoc) makeJSONRPCPath(opt model.OpenapiHTTPTransportOption, m model.ServiceMethod) *openapi.Operation { - mopt := g.o.Transport.MethodOptions[m.Name] +func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod) *openapi.Operation { + mopt := g.transport.MethodOptions[m.Name] responseSchema := &openapi.Schema{ Type: "object", @@ -471,9 +474,9 @@ func (g *openapiDoc) makeJSONRPCPath(opt model.OpenapiHTTPTransportOption, m mod } } -func (g *openapiDoc) makeSwaggerSchema(t stdtypes.Type) (schema *openapi.Schema) { +func (g *openapiDoc) makeSwaggerSchema(tpl stdtypes.Type) (schema *openapi.Schema) { schema = &openapi.Schema{} - switch v := t.(type) { + switch v := tpl.(type) { case *stdtypes.Pointer: return g.makeSwaggerSchema(v.Elem()) case *stdtypes.Interface: @@ -580,7 +583,7 @@ func (g *openapiDoc) makeSwaggerSchema(t stdtypes.Type) (schema *openapi.Schema) } func (g *openapiDoc) makeRestPath(opt model.OpenapiHTTPTransportOption, m model.ServiceMethod) *openapi.Operation { - mopt := g.o.Transport.MethodOptions[m.Name] + mopt := g.transport.MethodOptions[m.Name] responseSchema := &openapi.Schema{ Type: "object", @@ -679,6 +682,14 @@ func (g *openapiDoc) makeRestPath(opt model.OpenapiHTTPTransportOption, m model. return o } -func NewOpenapi(info model.GenerateInfo, o model.ServiceOption) Generator { - return &openapiDoc{info: info, o: o} +func NewOpenapi( + serviceMethods []model.ServiceMethod, + transport model.TransportOption, + workDir string, +) generator.Generator { + return &openapiDoc{ + serviceMethods: serviceMethods, + transport: transport, + workDir: workDir, + } } diff --git a/internal/interface/generator/readme.go b/internal/interface/generator/readme.go new file mode 100644 index 00000000..29521e3f --- /dev/null +++ b/internal/interface/generator/readme.go @@ -0,0 +1,156 @@ +package generator + +import ( + "context" + "html/template" + "io/ioutil" + "os" + "path/filepath" + + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/git" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + + "github.com/swipe-io/swipe/v2/internal/writer" +) + +const defaultTemplate = `# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} +` + +type readmeGenerator struct { + writer.BaseWriter + serviceID string + serviceRawID string + basePkgPath string + outputDir string + workDir string + transport model.TransportOption + readme model.ServiceReadme + gitTags []git.Tag + markdownOutput string + tpl *template.Template +} + +func (g *readmeGenerator) Prepare(ctx context.Context) (err error) { + g.outputDir, err = filepath.Abs(filepath.Join(g.workDir, g.readme.OutputDir)) + if err != nil { + return err + } + g.markdownOutput, err = filepath.Abs(filepath.Join(g.workDir, g.transport.MarkdownDoc.OutputDir)) + if err != nil { + return err + } + var templatePath string + if templatePath == "" { + templatePath, err = filepath.Abs(filepath.Join(g.workDir, ".swipe")) + if err != nil { + return err + } + if _, err := os.Stat(templatePath); err != nil { + if err = os.MkdirAll(templatePath, 0755); err != nil { + return err + } + } + } else { + templatePath, err = filepath.Abs(filepath.Join(g.workDir, g.readme.TemplatePath)) + if err != nil { + return err + } + } + templateFilepath := filepath.Join(templatePath, "README.md.tpl") + if _, err := os.Stat(templateFilepath); err != nil { + err = ioutil.WriteFile(templateFilepath, []byte(defaultTemplate), 0755) + if err != nil { + return err + } + } + data, err := ioutil.ReadFile(templateFilepath) + if err != nil { + return err + } + t, err := template.New("readmeGenerator").Parse(string(data)) + if err != nil { + return err + } + g.tpl = t + return nil +} + +func (g *readmeGenerator) Process(ctx context.Context) (err error) { + return g.tpl.Execute(g, map[string]interface{}{ + "ID": g.serviceRawID, + "ServiceName": g.serviceID, + "RootPkgPath": g.basePkgPath, + "GIT": map[string]interface{}{ + "Tags": g.gitTags, + }, + }) +} + +func (g *readmeGenerator) PkgName() string { + return "" +} + +func (g *readmeGenerator) OutputDir() string { + return g.outputDir +} + +func (g *readmeGenerator) Filename() string { + return "README.md" +} + +func NewReadme( + serviceID string, + serviceRawID string, + basePkgPath string, + workDir string, + transport model.TransportOption, + readme model.ServiceReadme, + gitTags []git.Tag, +) generator.Generator { + return &readmeGenerator{ + serviceID: serviceID, + serviceRawID: serviceRawID, + basePkgPath: basePkgPath, + workDir: workDir, + transport: transport, + readme: readme, + gitTags: gitTags, + } +} diff --git a/pkg/usecase/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go similarity index 74% rename from pkg/usecase/generator/rest_go_client.go rename to internal/interface/generator/rest_go_client.go index bd06e2b7..96656521 100644 --- a/pkg/usecase/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -7,18 +7,21 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/writer" ) type restGoClient struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod + transport model.TransportOption + i *importer.Importer } func (g *restGoClient) Prepare(ctx context.Context) error { @@ -28,7 +31,7 @@ func (g *restGoClient) Prepare(ctx context.Context) error { func (g *restGoClient) Process(ctx context.Context) error { var ( - kithttpPkg string + kitHTTPPkg string contextPkg string httpPkg string jsonPkg string @@ -39,15 +42,13 @@ func (g *restGoClient) Process(ctx context.Context) error { pkgIO string ) - transportOpt := g.o.Transport - - if len(g.o.Methods) > 0 { - if transportOpt.FastHTTP { - kithttpPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + if len(g.serviceMethods) > 0 { + if g.transport.FastHTTP { + kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") } else { - kithttpPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") } else { httpPkg = g.i.Import("http", "net/http") @@ -61,12 +62,12 @@ func (g *restGoClient) Process(ctx context.Context) error { stringsPkg = g.i.Import("strings", "strings") } - clientType := "client" + g.o.ID - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) + clientType := "client" + g.serviceID + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - g.W("func NewClient%s%s(tgt string", g.o.Transport.Prefix, g.o.ID) + g.W("func NewClient%s%s(tgt string", g.transport.Prefix, g.serviceID) - g.W(" ,opts ...%[1]sClientOption", g.o.ID) + g.W(" ,opts ...%[1]sClientOption", g.serviceID) g.W(") (%s, error) {\n", typeStr) @@ -76,7 +77,7 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("o(c)\n") g.W("}\n") - if len(g.o.Methods) > 0 { + if len(g.serviceMethods) > 0 { g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) g.WriteCheckErr(func() { @@ -96,10 +97,10 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("}\n") } - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { epName := m.LcName + "Endpoint" - mopt := transportOpt.MethodOptions[m.Name] + mopt := g.transport.MethodOptions[m.Name] httpMethod := mopt.MethodName if httpMethod == "" { @@ -135,7 +136,7 @@ func (g *restGoClient) Process(ctx context.Context) error { } } - g.W("c.%s = %s.NewClient(\n", epName, kithttpPkg) + g.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) if mopt.Expr != nil { writer.WriteAST(g, g.i, mopt.Expr) } else { @@ -150,13 +151,13 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) if len(m.Params) > 0 { - g.W("req, ok := request.(%sRequest%s)\n", m.LcName, g.o.ID) + g.W("req, ok := request.(%sRequest%s)\n", m.LcName, g.serviceID) g.W("if !ok {\n") - g.W("return %s.Errorf(\"couldn't assert request as %sRequest%s, got %%T\", request)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return %s.Errorf(\"couldn'tpl assert request as %sRequest%s, got %%T\", request)\n", fmtPkg, m.LcName, g.serviceID) g.W("}\n") } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r.Header.SetMethod(") } else { g.W("r.Method = ") @@ -166,25 +167,25 @@ func (g *restGoClient) Process(ctx context.Context) error { } else { g.W(strconv.Quote(httpMethod)) } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W(")") } g.W("\n") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r.SetRequestURI(") } else { g.W("r.URL.Path += ") } g.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVars, ",")) - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W(")") } g.W("\n") if len(queryVars) > 0 { - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("q := r.URI().QueryArgs()\n") } else { g.W("q := r.URL.Query()\n") @@ -194,7 +195,7 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("q.Add(%s, %s)\n", queryVars[i], queryVars[i+1]) } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r.URI().SetQueryString(q.String())\n") } else { g.W("r.URL.RawQuery = q.Encode()\n") @@ -211,10 +212,10 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("data, err := %s.Marshal(req)\n", jsonPkg) g.W("if err != nil {\n") - g.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) + g.W("return %s.Errorf(\"couldn'tpl marshal request %%T: %%s\", req, err)\n", fmtPkg) g.W("}\n") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r.SetBody(data)\n") } else { ioutilPkg := g.i.Import("ioutil", "io/ioutil") @@ -234,7 +235,7 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) statusCode := "r.StatusCode" - if transportOpt.FastHTTP { + if g.transport.FastHTTP { statusCode = "r.StatusCode()" } @@ -245,7 +246,7 @@ func (g *restGoClient) Process(ctx context.Context) error { if len(m.Results) > 0 { var responseType string if m.ResultsNamed { - responseType = fmt.Sprintf("%sResponse%s", m.LcName, g.o.ID) + responseType = fmt.Sprintf("%sResponse%s", m.LcName, g.serviceID) } else { responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) } @@ -254,7 +255,7 @@ func (g *restGoClient) Process(ctx context.Context) error { } else { g.W("var resp %s\n", responseType) } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("err := %s.Unmarshal(r.Body(), ", jsonPkg) } else { ioutilPkg := g.i.Import("ioutil", "io/ioutil") @@ -269,7 +270,7 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("&resp)\n") g.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %sResponse%s: %%s\", err)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sResponse%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) g.W("}\n") if mopt.WrapResponse.Enable { @@ -310,13 +311,23 @@ func (g *restGoClient) OutputDir() string { } func (g *restGoClient) Filename() string { - return g.filename + return "client_gen.go" } func (g *restGoClient) SetImporter(i *importer.Importer) { g.i = i } -func NewRestGoClient(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &restGoClient{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewRestGoClient( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &restGoClient{ + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/rest_server.go b/internal/interface/generator/rest_server.go similarity index 71% rename from pkg/usecase/generator/rest_server.go rename to internal/interface/generator/rest_server.go index b0e9f7d2..0aea1167 100644 --- a/pkg/usecase/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -7,18 +7,22 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/writer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/writer" ) type restServer struct { - *writer.GoLangWriter - filename string - info model.GenerateInfo - o model.ServiceOption - i *importer.Importer + writer.GoLangWriter + serviceID string + serviceType stdtypes.Type + serviceMethods []model.ServiceMethod + transport model.TransportOption + i *importer.Importer } func (g *restServer) Prepare(ctx context.Context) error { @@ -29,22 +33,20 @@ func (g *restServer) Process(ctx context.Context) error { var ( routerPkg string httpPkg string - kithttpPkg string + kitHTTPPkg string ) kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") contextPkg := g.i.Import("context", "context") - typeStr := stdtypes.TypeString(g.o.Type, g.i.QualifyPkg) + typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - transportOpt := g.o.Transport - - if transportOpt.FastHTTP { + if g.transport.FastHTTP { httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") - kithttpPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") routerPkg = g.i.Import("routing", "github.com/qiangxue/fasthttp-routing") } else { routerPkg = g.i.Import("mux", "github.com/gorilla/mux") - kithttpPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") httpPkg = g.i.Import("http", "net/http") } @@ -52,9 +54,9 @@ func (g *restServer) Process(ctx context.Context) error { g.W("Error string `json:\"error\"`\n") g.W("}\n") - g.W("func encodeResponseHTTP%s(ctx %s.Context, ", g.o.ID, contextPkg) + g.W("func encodeResponseHTTP%s(ctx %s.Context, ", g.serviceID, contextPkg) - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("w *%s.Response", httpPkg) } else { g.W("w %s.ResponseWriter", httpPkg) @@ -62,7 +64,7 @@ func (g *restServer) Process(ctx context.Context) error { g.W(", response interface{}) error {\n") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("h := w.Header\n") } else { g.W("h := w.Header()\n") @@ -75,7 +77,7 @@ func (g *restServer) Process(ctx context.Context) error { g.W("return err\n") g.W("}\n") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("w.SetBody(data)\n") } else { g.W("w.Write(data)\n") @@ -89,7 +91,7 @@ func (g *restServer) Process(ctx context.Context) error { g.W("return err\n") g.W("}\n") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("w.SetBody(data)\n") } else { g.W("w.Write(data)\n") @@ -98,11 +100,11 @@ func (g *restServer) Process(ctx context.Context) error { g.W("return nil\n") g.W("}\n\n") - g.W("// HTTP %s Transport\n", transportOpt.Prefix) - g.W("func MakeHandler%s%s(s %s", transportOpt.Prefix, g.o.ID, typeStr) - g.W(", opts ...%sServerOption", g.o.ID) + g.W("// HTTP %s Transport\n", g.transport.Prefix) + g.W("func MakeHandler%s%s(s %s", g.transport.Prefix, g.serviceID, typeStr) + g.W(", opts ...%sServerOption", g.serviceID) g.W(") (") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("%s.RequestHandler", g.i.Import("fasthttp", "github.com/valyala/fasthttp")) } else { g.W("%s.Handler", g.i.Import("http", "net/http")) @@ -110,25 +112,25 @@ func (g *restServer) Process(ctx context.Context) error { g.W(", error) {\n") - g.W("sopt := &server%sOpts{}\n", g.o.ID) + g.W("sopt := &server%sOpts{}\n", g.serviceID) g.W("for _, o := range opts {\n o(sopt)\n }\n") g.W("ep := MakeEndpointSet(s)\n") - for _, m := range g.o.Methods { + for _, m := range g.serviceMethods { g.W("ep.%[1]sEndpoint = middlewareChain(append(sopt.genericEndpointMiddleware, sopt.%[2]sEndpointMiddleware...))(ep.%[1]sEndpoint)\n", m.Name, m.LcName) } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r := %s.New()\n", routerPkg) } else { g.W("r := %s.NewRouter()\n", routerPkg) } - for _, m := range g.o.Methods { - mopt := transportOpt.MethodOptions[m.Name] + for _, m := range g.serviceMethods { + mopt := g.transport.MethodOptions[m.Name] - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("r.To(") if mopt.MethodName != "" { @@ -169,7 +171,7 @@ func (g *restServer) Process(ctx context.Context) error { g.W( "%s.NewServer(\nep.%sEndpoint,\n", - kithttpPkg, + kitHTTPPkg, m.Name, ) @@ -179,43 +181,43 @@ func (g *restServer) Process(ctx context.Context) error { g.W("func(ctx %s.Context, r *%s.Request) (interface{}, error) {\n", contextPkg, httpPkg) if len(m.Params) > 0 { - g.W("var req %sRequest%s\n", m.LcName, g.o.ID) + g.W("var req %sRequest%s\n", m.LcName, g.serviceID) switch stdstrings.ToUpper(mopt.MethodName) { case "POST", "PUT", "PATCH": fmtPkg := g.i.Import("fmt", "fmt") jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") pkgIO := g.i.Import("io", "io") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("err := %s.Unmarshal(r.Body(), &req)\n", jsonPkg) } else { ioutilPkg := g.i.Import("ioutil", "io/ioutil") g.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) g.WriteCheckErr(func() { - g.W("return nil, %s.Errorf(\"couldn't read body for %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return nil, %s.Errorf(\"couldn'tpl read body for %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) }) g.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) } g.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.o.ID) + g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) g.W("}\n") } if len(mopt.PathVars) > 0 { - if transportOpt.FastHTTP { + if g.transport.FastHTTP { fmtPkg := g.i.Import("fmt", "fmt") - g.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kithttpPkg, routerPkg) + g.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kitHTTPPkg, routerPkg) g.W("if !ok {\n") - g.W("return nil, %s.Errorf(\"couldn't assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kithttpPkg, routerPkg) + g.W("return nil, %s.Errorf(\"couldn'tpl assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kitHTTPPkg, routerPkg) g.W("}\n") } else { g.W("vars := %s.Vars(r)\n", routerPkg) } } if len(mopt.QueryVars) > 0 { - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("q := r.URI().QueryArgs()\n") } else { g.W("q := r.URL.Query()\n") @@ -224,7 +226,7 @@ func (g *restServer) Process(ctx context.Context) error { for _, p := range m.Params { if _, ok := mopt.PathVars[p.Name()]; ok { var valueID string - if transportOpt.FastHTTP { + if g.transport.FastHTTP { valueID = "vars.Param(" + strconv.Quote(p.Name()) + ")" } else { valueID = "vars[" + strconv.Quote(p.Name()) + "]" @@ -232,7 +234,7 @@ func (g *restServer) Process(ctx context.Context) error { g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") } else if queryName, ok := mopt.QueryVars[p.Name()]; ok { var valueID string - if transportOpt.FastHTTP { + if g.transport.FastHTTP { valueID = "string(q.Peek(" + strconv.Quote(queryName) + "))" } else { valueID = "q.Get(" + strconv.Quote(queryName) + ")" @@ -240,7 +242,7 @@ func (g *restServer) Process(ctx context.Context) error { g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") } else if headerName, ok := mopt.HeaderVars[p.Name()]; ok { var valueID string - if transportOpt.FastHTTP { + if g.transport.FastHTTP { valueID = "string(r.Header.Peek(" + strconv.Quote(headerName) + "))" } else { valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" @@ -259,21 +261,21 @@ func (g *restServer) Process(ctx context.Context) error { if mopt.ServerResponseFunc.Expr != nil { writer.WriteAST(g, g.i, mopt.ServerResponseFunc.Expr) } else { - if transportOpt.JsonRPC.Enable { - g.W("encodeResponseJSONRPC%s", g.o.ID) + if g.transport.JsonRPC.Enable { + g.W("encodeResponseJSONRPC%s", g.serviceID) } else { if mopt.WrapResponse.Enable { var responseWriterType string - if transportOpt.FastHTTP { + if g.transport.FastHTTP { responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) } else { responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) } g.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.W("return encodeResponseHTTP%s(ctx, w, map[string]interface{}{\"%s\": response})\n", g.o.ID, mopt.WrapResponse.Name) + g.W("return encodeResponseHTTP%s(ctx, w, map[string]interface{}{\"%s\": response})\n", g.serviceID, mopt.WrapResponse.Name) g.W("}") } else { - g.W("encodeResponseHTTP%s", g.o.ID) + g.W("encodeResponseHTTP%s", g.serviceID) } } } @@ -282,12 +284,12 @@ func (g *restServer) Process(ctx context.Context) error { g.W("append(sopt.genericServerOption, sopt.%sServerOption...)...,\n", m.LcName) g.W(")") - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W(".RouterHandle()") } g.W(")\n") } - if transportOpt.FastHTTP { + if g.transport.FastHTTP { g.W("return r.HandleRequest, nil") } else { g.W("return r, nil") @@ -307,13 +309,23 @@ func (g *restServer) OutputDir() string { } func (g *restServer) Filename() string { - return g.filename + return "server_gen.go" } func (g *restServer) SetImporter(i *importer.Importer) { g.i = i } -func NewRestServer(filename string, info model.GenerateInfo, o model.ServiceOption) Generator { - return &restServer{GoLangWriter: writer.NewGoLangWriter(), filename: filename, info: info, o: o} +func NewRestServer( + serviceID string, + serviceType stdtypes.Type, + serviceMethods []model.ServiceMethod, + transport model.TransportOption, +) generator.Generator { + return &restServer{ + serviceID: serviceID, + serviceType: serviceType, + serviceMethods: serviceMethods, + transport: transport, + } } diff --git a/pkg/usecase/generator/utils.go b/internal/interface/generator/utils.go similarity index 96% rename from pkg/usecase/generator/utils.go rename to internal/interface/generator/utils.go index 67411817..60297595 100644 --- a/pkg/usecase/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -5,7 +5,7 @@ import ( "strconv" "strings" - "github.com/swipe-io/swipe/pkg/types" + "github.com/swipe-io/swipe/v2/internal/types" ) func structKeyValue(vars []*stdtypes.Var, filterFn types.FilterFn) (results []string) { diff --git a/internal/interface/processor/config.go b/internal/interface/processor/config.go new file mode 100644 index 00000000..1af2ad07 --- /dev/null +++ b/internal/interface/processor/config.go @@ -0,0 +1,33 @@ +package processor + +import ( + "github.com/swipe-io/swipe/v2/internal/interface/generator" + uga "github.com/swipe-io/swipe/v2/internal/usecase/gateway" + ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "golang.org/x/tools/go/packages" +) + +type configProcessor struct { + cg uga.ConfigGateway + pkg *packages.Package + workDir string +} + +func (p *configProcessor) Pkg() *packages.Package { + return p.pkg +} + +func (p *configProcessor) Generators() []ug.Generator { + generators := []ug.Generator{ + generator.NewConfig(p.cg.Struct(), p.cg.StructType(), p.cg.StructExpr(), p.cg.FuncName()), + } + if p.cg.DocEnable() { + generators = append(generators, generator.NewConfigMarkdownDoc(p.cg.Struct(), p.workDir, p.cg.DocOutputDir())) + } + return generators +} + +func NewConfig(cg uga.ConfigGateway, pkg *packages.Package, workDir string) processor.Processor { + return &configProcessor{cg: cg, pkg: pkg, workDir: workDir} +} diff --git a/internal/interface/processor/gateway.go b/internal/interface/processor/gateway.go new file mode 100644 index 00000000..ed49c84b --- /dev/null +++ b/internal/interface/processor/gateway.go @@ -0,0 +1,30 @@ +package processor + +import ( + "github.com/swipe-io/swipe/v2/internal/interface/generator" + "github.com/swipe-io/swipe/v2/internal/usecase/finder" + uga "github.com/swipe-io/swipe/v2/internal/usecase/gateway" + ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "golang.org/x/tools/go/packages" +) + +type gatewayProcessor struct { + hg uga.HTTPGatewayGateway + finder finder.ServiceFinder + pkg *packages.Package +} + +func (g *gatewayProcessor) Pkg() *packages.Package { + return g.pkg +} + +func (g *gatewayProcessor) Generators() []ug.Generator { + return []ug.Generator{ + generator.NewGatewayGenerator(g.hg.Services()), + } +} + +func NewGatewayProcessor(hg uga.HTTPGatewayGateway, pkg *packages.Package) processor.Processor { + return &gatewayProcessor{hg: hg, pkg: pkg} +} diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go new file mode 100644 index 00000000..e910ff12 --- /dev/null +++ b/internal/interface/processor/service.go @@ -0,0 +1,111 @@ +package processor + +import ( + "github.com/swipe-io/swipe/v2/internal/git" + "github.com/swipe-io/swipe/v2/internal/interface/generator" + "github.com/swipe-io/swipe/v2/internal/usecase/gateway" + ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "golang.org/x/tools/go/packages" + "golang.org/x/tools/go/types/typeutil" +) + +type serviceProcessor struct { + sg gateway.ServiceGateway + gi *git.GIT + workDir string + comments *typeutil.Map + enums *typeutil.Map + pkg *packages.Package +} + +func (p *serviceProcessor) Pkg() *packages.Package { + return p.pkg +} + +func (p *serviceProcessor) Generators() []ug.Generator { + generators := []ug.Generator{ + generator.NewEndpoint(p.sg.ID(), p.sg.Type(), p.sg.Methods()), + } + if p.sg.Readme().Enable { + tags, _ := p.gi.GetTags() + generators = append(generators, + generator.NewReadme( + p.sg.ID(), + p.sg.RawID(), + p.pkg.PkgPath, + p.workDir, + p.sg.Transport(), + p.sg.Readme(), + tags, + ), + ) + } + if p.sg.Transport().MarkdownDoc.Enable { + generators = append(generators, generator.NewJsonrpcMarkdownDoc( + p.sg.ID(), + p.sg.Methods(), + p.sg.Transport(), + p.comments, + p.enums, + p.workDir, + )) + } + if p.sg.Transport().Protocol == "http" { + generators = append(generators, generator.NewHttpTransport(p.sg.ID(), p.sg.Methods(), p.sg.Transport())) + if p.sg.EnableLogging() { + generators = append(generators, generator.NewLogging(p.sg.ID(), p.sg.Type(), p.sg.Methods())) + } + if p.sg.Instrumenting().Enable { + generators = append(generators, generator.NewInstrumenting( + p.sg.ID(), + p.sg.Type(), + p.sg.Methods(), + p.sg.Instrumenting(), + )) + } + if p.sg.Transport().JsonRPC.Enable { + generators = append(generators, generator.NewJsonRPCServer(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) + } else { + generators = append(generators, generator.NewRestServer(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) + } + } + if p.sg.Transport().Client.Enable { + generators = append(generators, + generator.NewEndpointFactory(p.sg.ID(), p.sg.Methods(), p.sg.Transport()), + generator.NewClientStruct(p.sg.ID(), p.sg.Methods(), p.sg.Transport()), + ) + if p.sg.Transport().JsonRPC.Enable { + generators = append( + generators, + generator.NewJsonRPCGoClient(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport()), + generator.NewJsonRPCJSClient(p.sg.Methods(), p.sg.Transport(), p.enums), + ) + } else { + generators = append(generators, generator.NewRestGoClient(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) + } + } + if p.sg.Transport().Openapi.Enable { + generators = append(generators, generator.NewOpenapi(p.sg.Methods(), p.sg.Transport(), p.workDir)) + } + return generators +} + +func NewService( + sg gateway.ServiceGateway, + gi *git.GIT, + comments *typeutil.Map, + enums *typeutil.Map, + workDir string, + pkg *packages.Package, + +) processor.Processor { + return &serviceProcessor{ + sg: sg, + gi: gi, + comments: comments, + enums: enums, + workDir: workDir, + pkg: pkg, + } +} diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go new file mode 100644 index 00000000..dbb660a5 --- /dev/null +++ b/internal/interface/registry/processor.go @@ -0,0 +1,55 @@ +package registry + +import ( + "errors" + + "github.com/swipe-io/swipe/v2/internal/usecase/finder" + + "github.com/swipe-io/swipe/v2/internal/astloader" + "github.com/swipe-io/swipe/v2/internal/git" + ig "github.com/swipe-io/swipe/v2/internal/interface/gateway" + "github.com/swipe-io/swipe/v2/internal/interface/processor" + "github.com/swipe-io/swipe/v2/internal/option" + up "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "github.com/swipe-io/swipe/v2/internal/usecase/registry" +) + +type registryProcessor struct { + finder finder.ServiceFinder +} + +func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader.Data) (up.Processor, error) { + gt := git.NewGIT() + switch o.Option.Name { + case "Gateway": + hg, err := ig.NewGatewayOption(o.Pkg, o.Option, r.finder) + if err != nil { + return nil, err + } + return processor.NewGatewayProcessor(hg, o.Pkg), nil + case "Service": + sg, err := ig.NewServiceGateway(o.Option, data.GraphTypes, data.CommentMaps) + if err != nil { + return nil, err + } + return processor.NewService( + sg, + gt, + data.CommentMaps, + data.Enums, + data.WorkDir, + o.Pkg, + ), nil + case "ConfigEnv": + return processor.NewConfig( + ig.NewConfigGateway(o.Option), + o.Pkg, + data.WorkDir, + ), nil + } + return nil, errors.New("unexpected processor: " + o.Option.Name) +} + +func NewRegistry(finder finder.ServiceFinder) registry.ProcessorRegistry { + return ®istryProcessor{finder: finder} +} diff --git a/pkg/openapi/openapi.go b/internal/openapi/openapi.go similarity index 100% rename from pkg/openapi/openapi.go rename to internal/openapi/openapi.go diff --git a/pkg/openapi/openapi_ffjson.go b/internal/openapi/openapi_ffjson.go similarity index 100% rename from pkg/openapi/openapi_ffjson.go rename to internal/openapi/openapi_ffjson.go diff --git a/internal/option/loader.go b/internal/option/loader.go new file mode 100644 index 00000000..6bad6da7 --- /dev/null +++ b/internal/option/loader.go @@ -0,0 +1,128 @@ +package option + +import ( + "go/ast" + stdtypes "go/types" + "sync" + + "github.com/swipe-io/swipe/v2/internal/astloader" + "github.com/swipe-io/swipe/v2/internal/value" + "golang.org/x/tools/go/packages" +) + +type ResultOption struct { + Pkg *packages.Package + Option *Option +} + +type Result struct { + Data *astloader.Data + Options []*ResultOption +} + +type Loader struct { +} + +func (l *Loader) declProcess(pkg *packages.Package, decl ast.Decl) (*ResultOption, error) { + switch decl := decl.(type) { + case *ast.FuncDecl: + call, err := l.findInjector(pkg.TypesInfo, decl) + if err != nil { + return nil, err + } + if call != nil { + opt, err := NewParser(pkg).Parse(call.Args[0]) + if err != nil { + return nil, err + } + + return &ResultOption{ + Pkg: pkg, + Option: opt, + }, nil + } + } + return nil, nil +} + +func (l *Loader) loadPkgs(pkgs []*packages.Package) (<-chan *ResultOption, <-chan error) { + outCh := make(chan *ResultOption) + errCh := make(chan error) + go func() { + var wg sync.WaitGroup + for _, pkg := range pkgs { + for _, f := range pkg.Syntax { + for _, decl := range f.Decls { + wg.Add(1) + go func(pkg *packages.Package, decl ast.Decl) { + defer wg.Done() + result, err := l.declProcess(pkg, decl) + if err != nil { + errCh <- err + return + } + if result != nil { + outCh <- result + } + }(pkg, decl) + } + } + } + wg.Wait() + close(errCh) + close(outCh) + }() + return outCh, errCh +} + +func (l *Loader) Load(wd string, env []string, patterns []string) (result *Result, errs []error) { + result = &Result{} + data, errs := astloader.NewLoader(wd, env, patterns).Process() + if len(errs) > 0 { + return nil, errs + } + result.Data = data + + optionsCh, errCh := l.loadPkgs(data.Pkgs) + + go func() { + for e := range errCh { + errs = append(errs, e) + } + }() + for option := range optionsCh { + result.Options = append(result.Options, option) + } + return +} + +func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallExpr, error) { + if fn.Body == nil { + return nil, nil + } + for _, stmt := range fn.Body.List { + switch stmt := stmt.(type) { + case *ast.ExprStmt: + call, ok := stmt.X.(*ast.CallExpr) + if !ok { + continue + } + obj := value.QualifiedIdentObject(info, call.Fun) + if obj == nil || obj.Pkg() == nil { + continue + } + if obj.Name() != "Build" { + continue + } + return call, nil + case *ast.EmptyStmt: + + return nil, nil + } + } + return nil, nil +} + +func NewLoader() *Loader { + return &Loader{} +} diff --git a/pkg/parser/parser.go b/internal/option/parser.go similarity index 99% rename from pkg/parser/parser.go rename to internal/option/parser.go index 638c7172..3e143aaa 100644 --- a/pkg/parser/parser.go +++ b/internal/option/parser.go @@ -1,4 +1,4 @@ -package parser +package option import ( "go/ast" diff --git a/pkg/queue/queue.go b/internal/queue/queue.go similarity index 100% rename from pkg/queue/queue.go rename to internal/queue/queue.go diff --git a/pkg/stcreator/config.go b/internal/stcreator/config.go similarity index 100% rename from pkg/stcreator/config.go rename to internal/stcreator/config.go diff --git a/pkg/stcreator/loader.go b/internal/stcreator/loader.go similarity index 100% rename from pkg/stcreator/loader.go rename to internal/stcreator/loader.go diff --git a/pkg/stcreator/mongo_loader.go b/internal/stcreator/mongo_loader.go similarity index 100% rename from pkg/stcreator/mongo_loader.go rename to internal/stcreator/mongo_loader.go diff --git a/pkg/stcreator/postgres_loader.go b/internal/stcreator/postgres_loader.go similarity index 100% rename from pkg/stcreator/postgres_loader.go rename to internal/stcreator/postgres_loader.go diff --git a/pkg/stcreator/project.go b/internal/stcreator/project.go similarity index 99% rename from pkg/stcreator/project.go rename to internal/stcreator/project.go index 3f364402..1a598c8b 100644 --- a/pkg/stcreator/project.go +++ b/internal/stcreator/project.go @@ -14,7 +14,7 @@ import ( "github.com/iancoleman/strcase" - "github.com/swipe-io/swipe/pkg/format" + "github.com/swipe-io/swipe/v2/internal/format" "gopkg.in/yaml.v3" ) diff --git a/pkg/strings/strings.go b/internal/strings/strings.go similarity index 100% rename from pkg/strings/strings.go rename to internal/strings/strings.go diff --git a/pkg/types/types.go b/internal/types/types.go similarity index 100% rename from pkg/types/types.go rename to internal/types/types.go diff --git a/pkg/types/utils.go b/internal/types/utils.go similarity index 62% rename from pkg/types/utils.go rename to internal/types/utils.go index 7037b44a..b25aab1d 100644 --- a/pkg/types/utils.go +++ b/internal/types/utils.go @@ -1,7 +1,12 @@ package types import ( + "errors" + "fmt" "go/types" + "path/filepath" + + "golang.org/x/tools/go/packages" ) type FilterFn func(p *types.Var) bool @@ -27,3 +32,17 @@ func NameType(vars []*types.Var, qf types.Qualifier, filterFn FilterFn) (results return []string{"", types.TypeString(p.Type(), qf)} }, filterFn) } + +func DetectBasePath(pkg *packages.Package) (string, error) { + paths := pkg.GoFiles + if len(paths) == 0 { + return "", errors.New("no files to derive output directory from") + } + dir := filepath.Dir(paths[0]) + for _, p := range paths[1:] { + if dir2 := filepath.Dir(p); dir2 != dir { + return "", fmt.Errorf("found conflicting directories %q and %q", dir, dir2) + } + } + return dir, nil +} diff --git a/internal/usecase/executor/generation.go b/internal/usecase/executor/generation.go new file mode 100644 index 00000000..7c02a6f4 --- /dev/null +++ b/internal/usecase/executor/generation.go @@ -0,0 +1,13 @@ +package executor + +type GenerateResult struct { + PkgPath string + OutputPath string + Content []byte + Errs []error +} + +type GenerationExecutor interface { + Execute(wd string, env []string, patterns []string) (results []GenerateResult, errs []error) + Cleanup(wd string) +} diff --git a/internal/usecase/factory/importer.go b/internal/usecase/factory/importer.go new file mode 100644 index 00000000..11061d47 --- /dev/null +++ b/internal/usecase/factory/importer.go @@ -0,0 +1,10 @@ +package factory + +import ( + "github.com/swipe-io/swipe/v2/internal/importer" + "golang.org/x/tools/go/packages" +) + +type ImporterFactory interface { + NewImporter(ns string, pkg *packages.Package) *importer.Importer +} diff --git a/internal/usecase/finder/finder.go b/internal/usecase/finder/finder.go new file mode 100644 index 00000000..f945d832 --- /dev/null +++ b/internal/usecase/finder/finder.go @@ -0,0 +1,11 @@ +package finder + +import ( + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/usecase/gateway" +) + +type ServiceFinder interface { + Find(named *stdtypes.Named) (gateway.ServiceGateway, []error) +} diff --git a/internal/usecase/frame/frame.go b/internal/usecase/frame/frame.go new file mode 100644 index 00000000..dde79c97 --- /dev/null +++ b/internal/usecase/frame/frame.go @@ -0,0 +1,14 @@ +package frame + +import ( + "github.com/swipe-io/swipe/v2/internal/importer" + "golang.org/x/tools/go/packages" +) + +type Frame interface { + Frame(data []byte) ([]byte, error) +} + +type Factory interface { + NewFrame(filename string, importer *importer.Importer, pkg *packages.Package) Frame +} diff --git a/internal/usecase/gateway/config.go b/internal/usecase/gateway/config.go new file mode 100644 index 00000000..a2f33703 --- /dev/null +++ b/internal/usecase/gateway/config.go @@ -0,0 +1,15 @@ +package gateway + +import ( + "go/ast" + "go/types" +) + +type ConfigGateway interface { + DocEnable() bool + DocOutputDir() string + Struct() *types.Struct + StructType() types.Type + StructExpr() ast.Expr + FuncName() string +} diff --git a/internal/usecase/gateway/http_gateway.go b/internal/usecase/gateway/http_gateway.go new file mode 100644 index 00000000..365090cb --- /dev/null +++ b/internal/usecase/gateway/http_gateway.go @@ -0,0 +1,7 @@ +package gateway + +import "github.com/swipe-io/swipe/v2/internal/domain/model" + +type HTTPGatewayGateway interface { + Services() []model.GatewayServiceOption +} diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go new file mode 100644 index 00000000..85cd533e --- /dev/null +++ b/internal/usecase/gateway/service.go @@ -0,0 +1,20 @@ +package gateway + +import ( + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/domain/model" +) + +type ServiceGateway interface { + ID() string + RawID() string + Transport() model.TransportOption + Instrumenting() model.InstrumentingOption + EnableLogging() bool + Methods() []model.ServiceMethod + Type() stdtypes.Type + TypeName() *stdtypes.Named + Interface() *stdtypes.Interface + Readme() model.ServiceReadme +} diff --git a/pkg/usecase/generator/generator.go b/internal/usecase/generator/generator.go similarity index 100% rename from pkg/usecase/generator/generator.go rename to internal/usecase/generator/generator.go diff --git a/internal/usecase/processor/processor.go b/internal/usecase/processor/processor.go new file mode 100644 index 00000000..a6716160 --- /dev/null +++ b/internal/usecase/processor/processor.go @@ -0,0 +1,11 @@ +package processor + +import ( + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "golang.org/x/tools/go/packages" +) + +type Processor interface { + Generators() []generator.Generator + Pkg() *packages.Package +} diff --git a/internal/usecase/registry/processor.go b/internal/usecase/registry/processor.go new file mode 100644 index 00000000..fd649f85 --- /dev/null +++ b/internal/usecase/registry/processor.go @@ -0,0 +1,11 @@ +package registry + +import ( + "github.com/swipe-io/swipe/v2/internal/astloader" + "github.com/swipe-io/swipe/v2/internal/option" + up "github.com/swipe-io/swipe/v2/internal/usecase/processor" +) + +type ProcessorRegistry interface { + NewProcessor(o *option.ResultOption, data *astloader.Data) (up.Processor, error) +} diff --git a/pkg/value/value.go b/internal/value/value.go similarity index 100% rename from pkg/value/value.go rename to internal/value/value.go diff --git a/pkg/writer/base_writer.go b/internal/writer/base_writer.go similarity index 100% rename from pkg/writer/base_writer.go rename to internal/writer/base_writer.go diff --git a/pkg/writer/golang_writer.go b/internal/writer/golang_writer.go similarity index 97% rename from pkg/writer/golang_writer.go rename to internal/writer/golang_writer.go index 2694fdfe..3c2854d1 100644 --- a/pkg/writer/golang_writer.go +++ b/internal/writer/golang_writer.go @@ -6,8 +6,8 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/pkg/strings" - "github.com/swipe-io/swipe/pkg/types" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/types" ) type GoLangWriter struct { @@ -281,7 +281,3 @@ func (w *GoLangWriter) WriteConvertType( } } } - -func NewGoLangWriter() *GoLangWriter { - return &GoLangWriter{} -} diff --git a/pkg/writer/utils.go b/internal/writer/utils.go similarity index 82% rename from pkg/writer/utils.go rename to internal/writer/utils.go index 4df613ee..4ec8cd3f 100644 --- a/pkg/writer/utils.go +++ b/internal/writer/utils.go @@ -5,7 +5,7 @@ import ( "go/printer" "io" - "github.com/swipe-io/swipe/pkg/importer" + "github.com/swipe-io/swipe/v2/internal/importer" ) func WriteAST(w io.Writer, i *importer.Importer, node ast.Node) { diff --git a/pkg/domain/model/generate_info.go b/pkg/domain/model/generate_info.go deleted file mode 100644 index 35b3756c..00000000 --- a/pkg/domain/model/generate_info.go +++ /dev/null @@ -1,28 +0,0 @@ -package model - -import ( - "github.com/swipe-io/swipe/pkg/git" - "github.com/swipe-io/swipe/pkg/graph" - "golang.org/x/tools/go/packages" - "golang.org/x/tools/go/types/typeutil" -) - -type GenerateInfo struct { - Pkg *packages.Package - BasePkgPath string - RootPath string - Pkgs []*packages.Package - CommentMap *typeutil.Map - ReturnTypes map[uint32][]interface{} - BasePath string - Version string - GraphTypes *graph.Graph - MapTypes map[uint32]*DeclType - Enums *typeutil.Map - GitTags []git.Tag -} - -type Enum struct { - Name string - Value string -} diff --git a/pkg/file/file.go b/pkg/file/file.go deleted file mode 100644 index 8a62333f..00000000 --- a/pkg/file/file.go +++ /dev/null @@ -1,82 +0,0 @@ -package file - -import ( - "bytes" - "fmt" - "os/exec" - "path/filepath" - - "github.com/swipe-io/swipe/pkg/format" - "github.com/swipe-io/swipe/pkg/importer" -) - -type File struct { - bytes.Buffer - PkgName string - PkgPath string - Version string - OutputDir string - Filename string - Errs []error - Importer *importer.Importer -} - -func (f *File) frameGO() ([]byte, error) { - var buf bytes.Buffer - buf.WriteString("//+build !swipe\n\n") - buf.WriteString("// Code generated by Swipe " + f.Version + ". DO NOT EDIT.\n\n") - buf.WriteString("//go:generate swipe\n") - buf.WriteString("package ") - buf.WriteString(f.PkgName) - buf.WriteString("\n\n") - - if f.Importer.HasImports() { - buf.WriteString("import (\n") - for _, imp := range f.Importer.SortedImports() { - _, _ = fmt.Fprint(&buf, imp) - } - buf.WriteString(")\n\n") - } - buf.Write(f.Bytes()) - - goSrc := buf.Bytes() - fmtSrc, err := format.Source(goSrc) - if err == nil { - goSrc = fmtSrc - } - return goSrc, err -} - -func (f *File) frameJS() ([]byte, error) { - buf := new(bytes.Buffer) - buf.WriteString("// Code generated by Swipe " + f.Version + ". DO NOT EDIT.\n\n") - buf.Write(f.Bytes()) - - cmd := exec.Command("prettier", "--stdin-filepath", "prettier.js") - stdin, err := cmd.StdinPipe() - if err != nil { - return nil, err - } - go func() { - defer stdin.Close() - _, _ = stdin.Write(buf.Bytes()) - }() - out, err := cmd.CombinedOutput() - if err != nil { - return nil, err - } - return out, nil -} - -func (f *File) Frame() ([]byte, error) { - ext := filepath.Ext(f.Filename) - switch ext { - default: - return f.Bytes(), nil - case ".go": - return f.frameGO() - case ".js": - return f.frameJS() - - } -} diff --git a/pkg/gen/gen.go b/pkg/gen/gen.go deleted file mode 100644 index 74bb8957..00000000 --- a/pkg/gen/gen.go +++ /dev/null @@ -1,235 +0,0 @@ -package gen - -import ( - "context" - "errors" - "fmt" - "go/ast" - "go/build" - "go/token" - stdtypes "go/types" - "os" - "path/filepath" - "strings" - - "github.com/swipe-io/swipe/pkg/astloader" - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/file" - "github.com/swipe-io/swipe/pkg/git" - "github.com/swipe-io/swipe/pkg/importer" - "github.com/swipe-io/swipe/pkg/parser" - "github.com/swipe-io/swipe/pkg/registry" - "github.com/swipe-io/swipe/pkg/usecase/processor" - "github.com/swipe-io/swipe/pkg/value" -) - -type importerer interface { - SetImporter(*importer.Importer) -} - -type Result struct { - PkgPath string - OutputPath string - Content []byte - Errs []error -} - -type Swipe struct { - ctx context.Context - version string - loader *astloader.Loader -} - -func (s *Swipe) Generate() ([]Result, []error) { - astData, errs := s.loader.Process() - if len(errs) > 0 { - return nil, errs - } - - g := git.NewGIT() - r := registry.NewRegistry() - - gitTags, _ := g.GetTags() - - var result []Result - files := make(map[string]*file.File) - basePaths := map[string]struct{}{} - - basePkgPath := strings.Split(astData.WorkDir, filepath.Join(build.Default.GOPATH, "src")+"/")[1] - - for _, pkg := range astData.Pkgs { - importerFactory := processor.NewImporterFactory(pkg) - - basePath, err := s.detectBasePath(pkg.GoFiles) - if err != nil { - return nil, []error{err} - } - - basePaths[basePath] = struct{}{} - - for _, f := range pkg.Syntax { - for _, decl := range f.Decls { - switch decl := decl.(type) { - case *ast.FuncDecl: - call, err := s.findInjector(pkg.TypesInfo, decl) - if err != nil { - return nil, []error{err} - } - if call != nil { - opt, err := parser.NewParser(pkg).Parse(call.Args[0]) - if err != nil { - return nil, []error{err} - } - - info := model.GenerateInfo{ - Pkg: pkg, - BasePkgPath: basePkgPath, - RootPath: astData.WorkDir, - Pkgs: astData.Pkgs, - BasePath: basePath, - Version: s.version, - CommentMap: astData.CommentMaps, - GraphTypes: astData.GraphTypes, - Enums: astData.Enums, - GitTags: gitTags, - } - option := r.Option(opt.Name, info) - if option == nil { - return nil, []error{errors.New("unknown option:" + opt.Name)} - } - o, err := option.Parse(opt) - if err != nil { - return nil, []error{err} - } - p, err := r.Processor(opt.Name, info) - if err != nil { - return nil, []error{err} - } - if !p.SetOption(o) { - return nil, []error{errors.New("option not suitable for processor: " + opt.Name)} - } - for _, g := range p.Generators() { - if err := g.Prepare(s.ctx); err != nil { - return nil, []error{err} - } - outputDir := g.OutputDir() - if outputDir == "" { - outputDir = basePath - } - filename := g.Filename() - if filename == "" { - filename = "swipe_gen.go" - } - - genFilePath := filepath.Join(outputDir, filename) - - i := importerFactory.Instance(genFilePath) - if is, ok := g.(importerer); ok { - is.SetImporter(i) - } - - if err := g.Process(s.ctx); err != nil { - return nil, []error{err} - } - - f, ok := files[genFilePath] - if !ok { - f = &file.File{ - PkgName: pkg.Name, - PkgPath: pkg.PkgPath, - OutputDir: outputDir, - Filename: filename, - Version: s.version, - Importer: i, - } - files[genFilePath] = f - } - - b := g.Bytes() - if len(b) > 0 { - _, _ = f.Write(b) - } - } - - continue - } - case *ast.GenDecl: - if decl.Tok == token.IMPORT { - continue - } - } - } - } - } - _ = filepath.Walk(astData.WorkDir, func(path string, info os.FileInfo, err error) error { - if !info.IsDir() { - if strings.Contains(info.Name(), "_gen") { - _ = os.Remove(path) - } - } - return nil - }) - for _, f := range files { - if len(f.Bytes()) > 0 { - goSrc, err := f.Frame() - if err != nil { - f.Errs = append(f.Errs, err) - } - result = append(result, Result{ - PkgPath: f.PkgPath, - OutputPath: filepath.Join(f.OutputDir, f.Filename), - Content: goSrc, - Errs: f.Errs, - }) - } - } - return result, nil -} - -func (s *Swipe) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallExpr, error) { - if fn.Body == nil { - return nil, nil - } - for _, stmt := range fn.Body.List { - switch stmt := stmt.(type) { - case *ast.ExprStmt: - call, ok := stmt.X.(*ast.CallExpr) - if !ok { - continue - } - obj := value.QualifiedIdentObject(info, call.Fun) - if obj == nil || obj.Pkg() == nil { - continue - } - if obj.Name() != "Build" { - continue - } - return call, nil - case *ast.EmptyStmt: - - return nil, nil - } - } - return nil, nil -} - -func (s *Swipe) detectBasePath(paths []string) (string, error) { - if len(paths) == 0 { - return "", errors.New("no files to derive output directory from") - } - dir := filepath.Dir(paths[0]) - for _, p := range paths[1:] { - if dir2 := filepath.Dir(p); dir2 != dir { - return "", fmt.Errorf("found conflicting directories %q and %q", dir, dir2) - } - } - return dir, nil -} - -func NewSwipe(ctx context.Context, version string, loader *astloader.Loader) *Swipe { - return &Swipe{ - ctx: ctx, - version: version, - loader: loader, - } -} diff --git a/pkg/interface/option/config_option.go b/pkg/interface/option/config_option.go deleted file mode 100644 index 83334733..00000000 --- a/pkg/interface/option/config_option.go +++ /dev/null @@ -1,40 +0,0 @@ -package option - -import ( - "go/types" - - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/parser" - "github.com/swipe-io/swipe/pkg/usecase/option" -) - -type configOption struct { -} - -func (g *configOption) Parse(option *parser.Option) (interface{}, error) { - o := model.ConfigOption{} - - structOpt := parser.MustOption(option.At("optionsStruct")) - - o.StructExpr = structOpt.Value.Expr() - o.StructType = structOpt.Value.Type() - - if ptr, ok := structOpt.Value.Type().(*types.Pointer); ok { - o.Struct = ptr.Elem().Underlying().(*types.Struct) - } else { - o.Struct = structOpt.Value.Type().(*types.Struct) - } - o.FuncName = "LoadConfig" - if funcNameOpt, ok := option.At("FuncName"); ok { - o.FuncName = funcNameOpt.Value.String() - } - if markdownDocOpt, ok := option.At("ConfigMarkdownDoc"); ok { - o.Doc.Enable = true - o.Doc.OutputDir = markdownDocOpt.Value.String() - } - return o, nil -} - -func NewConfigOption() option.Option { - return &configOption{} -} diff --git a/pkg/interface/option/gateway_option.go b/pkg/interface/option/gateway_option.go deleted file mode 100644 index e4175991..00000000 --- a/pkg/interface/option/gateway_option.go +++ /dev/null @@ -1,93 +0,0 @@ -package option - -import ( - "fmt" - "go/ast" - stdtypes "go/types" - stdstrings "strings" - - "github.com/iancoleman/strcase" - - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/errors" - "github.com/swipe-io/swipe/pkg/parser" - "github.com/swipe-io/swipe/pkg/usecase/option" -) - -type gatewayOption struct { - info model.GenerateInfo -} - -func (g *gatewayOption) parseMethodOption(iface *stdtypes.Interface, option *parser.Option) (model.GatewayMethodOption, error) { - o := model.GatewayMethodOption{} - signOpt := parser.MustOption(option.At("signature")) - fnSel, ok := signOpt.Value.Expr().(*ast.SelectorExpr) - if !ok { - return model.GatewayMethodOption{}, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) - } - o.Name = fnSel.Sel.Name - ifaceSel := g.info.Pkg.TypesInfo.TypeOf(fnSel.X).Underlying() - if !stdtypes.Identical(iface, ifaceSel) { - return model.GatewayMethodOption{}, errors.NotePosition( - signOpt.Position, - fmt.Errorf( - "the method signature does not match the interface, now %s should be %s", - ifaceSel, - iface, - ), - ) - } - if opt, ok := option.At("GatewayBalancer"); ok { - v := opt.Value.String() - if v != "random" && v != "roundrobin" { - return model.GatewayMethodOption{}, errors.NotePosition(opt.Position, fmt.Errorf("there can only be values: random, roundrobin")) - } - } - return o, nil -} - -func (g *gatewayOption) Parse(option *parser.Option) (interface{}, error) { - o := model.GatewayOption{} - - serviceOpts, _ := option.Slice("GatewayService") - - for _, serviceOpt := range serviceOpts { - so := model.GatewayServiceOption{ - MethodOptions: map[string]model.GatewayMethodOption{}, - } - ifaceOpt := parser.MustOption(serviceOpt.At("iface")) - ifacePtr, ok := ifaceOpt.Value.Type().(*stdtypes.Pointer) - if !ok { - return nil, errors.NotePosition(option.Position, - fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(option.Value.Type(), nil))) - } - iface, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) - if !ok { - return nil, errors.NotePosition(option.Position, - fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(option.Value.Type(), nil))) - } - - typeName := ifacePtr.Elem().(*stdtypes.Named) - rawID := stdstrings.Split(typeName.Obj().Pkg().Path(), "/")[2] - - so.ID = strcase.ToCamel(rawID) - so.RawID = rawID - so.Type = ifacePtr.Elem() - so.TypeName = typeName - so.Iface = iface - - if methodOpt, ok := serviceOpt.At("GatewayServiceMethod"); ok { - mo, err := g.parseMethodOption(iface, methodOpt) - if err != nil { - return nil, err - } - so.MethodOptions[mo.Name] = mo - } - o.Services = append(o.Services, so) - } - return o, nil -} - -func NewGatewayOption(info model.GenerateInfo) option.Option { - return &gatewayOption{info: info} -} diff --git a/pkg/registry/generator_registry.go b/pkg/registry/generator_registry.go deleted file mode 100644 index d1f6110c..00000000 --- a/pkg/registry/generator_registry.go +++ /dev/null @@ -1,39 +0,0 @@ -package registry - -import ( - "github.com/swipe-io/swipe/pkg/domain/model" - io "github.com/swipe-io/swipe/pkg/interface/option" - uo "github.com/swipe-io/swipe/pkg/usecase/option" - up "github.com/swipe-io/swipe/pkg/usecase/processor" -) - -type Registry struct { -} - -func (r *Registry) Option(name string, info model.GenerateInfo) uo.Option { - switch name { - case "Gateway": - return io.NewGatewayOption(info) - case "ConfigEnv": - return io.NewConfigOption() - case "Service": - return io.NewServiceOption(info) - } - return nil -} - -func (r *Registry) Processor(name string, info model.GenerateInfo) (up.Processor, error) { - switch name { - case "Gateway": - return up.NewGatewayProcessor(info), nil - case "ConfigEnv": - return up.NewConfig(info), nil - case "Service": - return up.NewService(info), nil - } - return nil, nil -} - -func NewRegistry() *Registry { - return &Registry{} -} diff --git a/pkg/swipe/swipe_test.go b/pkg/swipe/swipe_test.go deleted file mode 100644 index 483afbec..00000000 --- a/pkg/swipe/swipe_test.go +++ /dev/null @@ -1,220 +0,0 @@ -package swipe_test - -import ( - "net/http" - - "github.com/valyala/fasthttp" - - "github.com/swipe-io/swipe/fixtures/service" - "github.com/swipe-io/swipe/fixtures/transport/jsonrpc" - "github.com/swipe-io/swipe/fixtures/transport/rest" - . "github.com/swipe-io/swipe/pkg/swipe" -) - -func ExampleTransport() { - Build( - Service((*service.Interface)(nil), - Transport("http"), - ), - ) -} - -// Example enabled valyala/fasthttp. Supported in both REST and JSON RPC. -func ExampleFastEnable() { - Build( - Service((*service.Service)(nil), - Transport("http", - FastEnable(), - ), - ), - ) -} - -func ExampleTransport_restListener() { - h, err := rest.MakeHandlerRESTServiceInterface(&service.Service{}) - if err != nil { - panic(err) - } - go func() { - _ = fasthttp.ListenAndServe(":80", h) - }() -} - -func ExampleTransport_jsonRPCListener() { - h, err := jsonrpc.MakeHandlerJSONRPCServiceInterface(&service.Service{}) - if err != nil { - panic(err) - } - go func() { - _ = http.ListenAndServe(":80", h) - }() -} - -// Example basic use Service option. -func ExampleService() { - Build( - Service((*service.Service)(nil)), - ) -} - -// Example basic use logging. -func ExampleLogging() { - Build( - Service((*service.Service)(nil), - Transport("http"), - Logging(), - ), - ) -} - -// Example basic use instrumenting. -func ExampleInstrumenting() { - Build( - Service((*service.Service)(nil), - Transport("http"), - Instrumenting( - Namespace("api"), - Subsystem("api"), - ), - ), - ) -} - -// Use the swipe.MethodOptions option to specify settings for generating the service method. -func ExamplePath() { - Build( - Service((*service.Service)(nil), - Transport("http", - MethodOptions(service.Interface.Get, - Path("/users"), - ), - ), - ), - ) -} - -// Use the swipe.MethodOptions option to specify settings for generating the service method. -func ExampleMethod() { - Build( - Service((*service.Service)(nil), - Transport("http", - MethodOptions(service.Interface.Get, - Method(http.MethodGet), - ), - ), - ), - ) -} - -// A parameter is a key pair, where the key is the name of the method parameter, -// and the value is the name of the parameter in the header. -func ExampleHeaderVars() { - Build( - Service((*service.Service)(nil), - Transport("http", - MethodOptions(service.Interface.Get, - HeaderVars([]string{"name", "x-name"}), - ), - ), - ), - ) -} - -// A parameter is a key pair, where the key is the name of the method parameter, -// and the value is the name of the parameter in the url query arguments. -func ExampleQueryVars() { - Build( - Service((*service.Service)(nil), - Transport("http", - MethodOptions(service.Interface.Get, - QueryVars([]string{"name", "x-name"}), - ), - ), - ), - ) -} - -func ExampleOpenapi() { - Build( - Service((*service.Service)(nil), - Transport("http", - Openapi(), - ), - ), - ) -} - -func ExampleOpenapiOutput() { - Build( - Service((*service.Service)(nil), - Transport("http", - Openapi( - OpenapiOutput("../../docs"), - ), - ), - ), - ) -} - -func ExampleOpenapiInfo() { - Build( - Service((*service.Service)(nil), - Transport("http", - Openapi( - OpenapiInfo("Openapi doc title", "1.0.0", "description"), - ), - ), - ), - ) -} - -func ExampleOpenapiServer() { - Build( - Service((*service.Service)(nil), - Transport("http", - Openapi( - OpenapiServer("Description for server", "http://server.domain"), - ), - ), - ), - ) -} - -func ExampleOpenapiContact() { - Build( - Service((*service.Service)(nil), - Transport("http", - Openapi( - OpenapiContact("name", "your_email@mail.com", "http://contact.url"), - ), - ), - ), - ) -} - -func ExampleOpenapiLicence() { - Build( - Service((*service.Service)(nil), - Transport("http", - Openapi( - OpenapiLicence("MIT", "http://licence.url"), - ), - ), - ), - ) -} - -type Config struct { - BindAddr string -} - -func ExampleConfigEnv() { - Build( - ConfigEnv( - &Config{ - BindAddr: ":9000", - }, - FuncName("LoadConfig"), - ), - ) -} diff --git a/pkg/usecase/generator/readme.go b/pkg/usecase/generator/readme.go deleted file mode 100644 index 11aa1d92..00000000 --- a/pkg/usecase/generator/readme.go +++ /dev/null @@ -1,130 +0,0 @@ -package generator - -import ( - "context" - "html/template" - "io/ioutil" - "os" - "path/filepath" - - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/writer" -) - -const defaultTemplate = `# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.BasePkgPath}}/tree/{{$tag.Name}}) -{{end -}} -` - -type readme struct { - writer.BaseWriter - info model.GenerateInfo - o model.ServiceOption - outputDir string - markdownOutput string - t *template.Template -} - -func (g *readme) Prepare(ctx context.Context) (err error) { - g.outputDir, err = filepath.Abs(filepath.Join(g.info.BasePath, g.o.Readme.OutputDir)) - if err != nil { - return err - } - g.markdownOutput, err = filepath.Abs(filepath.Join(g.info.BasePath, g.o.Transport.MarkdownDoc.OutputDir)) - if err != nil { - return err - } - var templatePath string - if templatePath == "" { - templatePath, err = filepath.Abs(filepath.Join(g.info.BasePath, ".swipe")) - if err != nil { - return err - } - if _, err := os.Stat(templatePath); err != nil { - if err = os.MkdirAll(templatePath, 0755); err != nil { - return err - } - } - } else { - templatePath, err = filepath.Abs(filepath.Join(g.info.BasePath, g.o.Readme.TemplatePath)) - if err != nil { - return err - } - } - templateFilepath := filepath.Join(templatePath, "README.md.tpl") - if _, err := os.Stat(templateFilepath); err != nil { - err = ioutil.WriteFile(templateFilepath, []byte(defaultTemplate), 0755) - if err != nil { - return err - } - } - data, err := ioutil.ReadFile(templateFilepath) - if err != nil { - return err - } - t, err := template.New("readme").Parse(string(data)) - if err != nil { - return err - } - g.t = t - return nil -} - -func (g *readme) Process(ctx context.Context) (err error) { - return g.t.Execute(g, map[string]interface{}{ - "ID": g.o.RawID, - "ServiceName": g.o.ID, - "BasePkgPath": g.info.BasePkgPath, - "GIT": map[string]interface{}{ - "Tags": g.info.GitTags, - }, - }) -} - -func (g *readme) PkgName() string { - return "" -} - -func (g *readme) OutputDir() string { - return g.outputDir -} - -func (g *readme) Filename() string { - return "README.md" -} - -func NewReadme(info model.GenerateInfo, o model.ServiceOption) Generator { - return &readme{info: info, o: o} -} diff --git a/pkg/usecase/option/option.go b/pkg/usecase/option/option.go deleted file mode 100644 index f5426465..00000000 --- a/pkg/usecase/option/option.go +++ /dev/null @@ -1,9 +0,0 @@ -package option - -import ( - "github.com/swipe-io/swipe/pkg/parser" -) - -type Option interface { - Parse(option *parser.Option) (interface{}, error) -} diff --git a/pkg/usecase/processor/config_processor.go b/pkg/usecase/processor/config_processor.go deleted file mode 100644 index bf1e1bb0..00000000 --- a/pkg/usecase/processor/config_processor.go +++ /dev/null @@ -1,31 +0,0 @@ -package processor - -import ( - "github.com/swipe-io/swipe/pkg/domain/model" - ug "github.com/swipe-io/swipe/pkg/usecase/generator" -) - -type config struct { - info model.GenerateInfo - option model.ConfigOption -} - -func (p *config) SetOption(option interface{}) bool { - o, ok := option.(model.ConfigOption) - p.option = o - return ok -} - -func (p *config) Generators() []ug.Generator { - generators := []ug.Generator{ - ug.NewConfig(p.option), - } - if p.option.Doc.Enable { - generators = append(generators, ug.NewConfigMarkdownDoc("config_doc_gen.md", p.option, p.info)) - } - return generators -} - -func NewConfig(info model.GenerateInfo) Processor { - return &config{info: info} -} diff --git a/pkg/usecase/processor/gateway_processor.go b/pkg/usecase/processor/gateway_processor.go deleted file mode 100644 index 26f8368c..00000000 --- a/pkg/usecase/processor/gateway_processor.go +++ /dev/null @@ -1,27 +0,0 @@ -package processor - -import ( - "github.com/swipe-io/swipe/pkg/domain/model" - ug "github.com/swipe-io/swipe/pkg/usecase/generator" -) - -type gatewayProcessor struct { - option model.GatewayOption - info model.GenerateInfo -} - -func (g *gatewayProcessor) SetOption(option interface{}) bool { - o, ok := option.(model.GatewayOption) - g.option = o - return ok -} - -func (g *gatewayProcessor) Generators() []ug.Generator { - return []ug.Generator{ - ug.NewGatewayGenerator("gateway_gen.go", g.info, g.option), - } -} - -func NewGatewayProcessor(info model.GenerateInfo) Processor { - return &gatewayProcessor{info: info} -} diff --git a/pkg/usecase/processor/importer_factory.go b/pkg/usecase/processor/importer_factory.go deleted file mode 100644 index 39c0b3ca..00000000 --- a/pkg/usecase/processor/importer_factory.go +++ /dev/null @@ -1,23 +0,0 @@ -package processor - -import ( - "github.com/swipe-io/swipe/pkg/importer" - - "golang.org/x/tools/go/packages" -) - -type ImporterFactory struct { - pkg *packages.Package - importers map[string]*importer.Importer -} - -func (f *ImporterFactory) Instance(name string) *importer.Importer { - if _, ok := f.importers[name]; !ok { - f.importers[name] = importer.NewImporter(f.pkg) - } - return f.importers[name] -} - -func NewImporterFactory(pkg *packages.Package) *ImporterFactory { - return &ImporterFactory{pkg: pkg, importers: map[string]*importer.Importer{}} -} diff --git a/pkg/usecase/processor/processor.go b/pkg/usecase/processor/processor.go deleted file mode 100644 index fb9b34f6..00000000 --- a/pkg/usecase/processor/processor.go +++ /dev/null @@ -1,10 +0,0 @@ -package processor - -import ( - "github.com/swipe-io/swipe/pkg/usecase/generator" -) - -type Processor interface { - SetOption(option interface{}) bool - Generators() []generator.Generator -} diff --git a/pkg/usecase/processor/service_processor.go b/pkg/usecase/processor/service_processor.go deleted file mode 100644 index 15991d36..00000000 --- a/pkg/usecase/processor/service_processor.go +++ /dev/null @@ -1,66 +0,0 @@ -package processor - -import ( - "github.com/swipe-io/swipe/pkg/domain/model" - "github.com/swipe-io/swipe/pkg/importer" - ug "github.com/swipe-io/swipe/pkg/usecase/generator" -) - -type service struct { - info model.GenerateInfo - option model.ServiceOption - importers map[string]*importer.Importer -} - -func (p *service) SetOption(option interface{}) bool { - o, ok := option.(model.ServiceOption) - p.option = o - return ok -} - -func (p *service) Generators() []ug.Generator { - generators := []ug.Generator{ - ug.NewEndpoint("endpoint_gen.go", p.info, p.option), - ug.NewEndpointFactory("endpoint_gen.go", p.info, p.option), - } - if p.option.Readme.Enable { - generators = append(generators, ug.NewReadme(p.info, p.option)) - } - if p.option.Transport.MarkdownDoc.Enable { - generators = append(generators, ug.NewJsonrpcMarkdownDoc(p.info, p.option)) - } - if p.option.Transport.Protocol == "http" { - generators = append(generators, ug.NewHttpTransport("http_gen.go", p.info, p.option)) - if p.option.Logging { - generators = append(generators, ug.NewLogging("logging_gen.go", p.info, p.option)) - } - if p.option.Instrumenting.Enable { - generators = append(generators, ug.NewInstrumenting("instrumenting_gen.go", p.info, p.option)) - } - if p.option.Transport.JsonRPC.Enable { - generators = append(generators, ug.NewJsonRPCServer("server_gen.go", p.info, p.option)) - } else { - generators = append(generators, ug.NewRestServer("server_gen.go", p.info, p.option)) - } - if p.option.Transport.Client.Enable { - generators = append(generators, ug.NewClientStruct("client_gen.go", p.info, p.option)) - if p.option.Transport.JsonRPC.Enable { - generators = append( - generators, - ug.NewJsonRPCGoClient("client_gen.go", p.info, p.option), - ug.NewJsonRPCJSClient("client_jsonrpc_gen.js", p.info, p.option), - ) - } else { - generators = append(generators, ug.NewRestGoClient("client_gen.go", p.info, p.option)) - } - } - } - if p.option.Transport.Openapi.Enable { - generators = append(generators, ug.NewOpenapi(p.info, p.option)) - } - return generators -} - -func NewService(info model.GenerateInfo) Processor { - return &service{info: info, importers: map[string]*importer.Importer{}} -} diff --git a/pkg/swipe/swipe.go b/swipe.go similarity index 98% rename from pkg/swipe/swipe.go rename to swipe.go index c8029d6e..21501d81 100644 --- a/pkg/swipe/swipe.go +++ b/swipe.go @@ -20,9 +20,9 @@ // package jsonrpc // // import ( -// "github.com/swipe-io/swipe/fixtures/service" +// "github.com/swipe-io/swipe/v2/fixtures/service" // -// . "github.com/swipe-io/swipe/pkg/swipe" +// . "github.com/swipe-io/swipe/v2/pkg/swipe" // ) // // func Swipe() { @@ -43,6 +43,8 @@ // } package swipe +const Version = "v2.0.0" + // A Option is an option for a Swipe. type Option string diff --git a/swipe_test.go b/swipe_test.go new file mode 100644 index 00000000..11fc9acd --- /dev/null +++ b/swipe_test.go @@ -0,0 +1,194 @@ +package swipe_test + +//import ( +// "net/http" +// +// "github.com/swipe-io/swipe/v2" +// +// "github.com/swipe-io/swipe/v2/fixtures/service" +//) +// +//func ExampleTransport() { +// swipe.Build( +// swipe.Service((*service.Interface)(nil), +// swipe.Transport("http"), +// ), +// ) +//} +// +//// Example enabled valyala/fasthttp. Supported in both REST and JSON RPC. +//func ExampleFastEnable() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.FastEnable(), +// ), +// ), +// ) +//} +// +//// Example basic use Service option. +//func ExampleService() { +// swipe.Build( +// swipe.Service((*service.Service)(nil)), +// ) +//} +// +//// Example basic use logging. +//func ExampleLogging() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http"), +// swipe.Logging(), +// ), +// ) +//} +// +//// Example basic use instrumenting. +//func ExampleInstrumenting() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http"), +// swipe.Instrumenting("api", "api"), +// ), +// ) +//} +// +//// Use the swipe.MethodOptions option to specify settings for generating the service method. +//func ExamplePath() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.MethodOptions(service.Interface.Get, +// swipe.Path("/users"), +// ), +// ), +// ), +// ) +//} +// +//// Use the swipe.MethodOptions option to specify settings for generating the service method. +//func ExampleMethod() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.MethodOptions(service.Interface.Get, +// swipe.Method(http.MethodGet), +// ), +// ), +// ), +// ) +//} +// +//// A parameter is a key pair, where the key is the name of the method parameter, +//// and the value is the name of the parameter in the header. +//func ExampleHeaderVars() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.MethodOptions(service.Interface.Get, +// swipe.HeaderVars([]string{"name", "x-name"}), +// ), +// ), +// ), +// ) +//} +// +//// A parameter is a key pair, where the key is the name of the method parameter, +//// and the value is the name of the parameter in the url query arguments. +//func ExampleQueryVars() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.MethodOptions(service.Interface.Get, +// swipe.QueryVars([]string{"name", "x-name"}), +// ), +// ), +// ), +// ) +//} +// +//func ExampleOpenapi() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.Openapi(), +// ), +// ), +// ) +//} +// +//func ExampleOpenapiOutput() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.Openapi( +// swipe.OpenapiOutput("../../docs"), +// ), +// ), +// ), +// ) +//} +// +//func ExampleOpenapiInfo() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.Openapi( +// swipe.OpenapiInfo("Openapi doc title", "1.0.0", "description"), +// ), +// ), +// ), +// ) +//} +// +//func ExampleOpenapiServer() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.Openapi( +// swipe.OpenapiServer("Description for server", "http://server.domain"), +// ), +// ), +// ), +// ) +//} +// +//func ExampleOpenapiContact() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.Openapi( +// swipe.OpenapiContact("name", "your_email@mail.com", "http://contact.url"), +// ), +// ), +// ), +// ) +//} +// +//func ExampleOpenapiLicence() { +// swipe.Build( +// swipe.Service((*service.Service)(nil), +// swipe.Transport("http", +// swipe.Openapi( +// swipe.OpenapiLicence("MIT", "http://licence.url"), +// ), +// ), +// ), +// ) +//} +// +//type Config struct { +// BindAddr string +//} +// +//func ExampleConfigEnv() { +// swipe.Build( +// swipe.ConfigEnv( +// &Config{ +// BindAddr: ":9000", +// }, +// swipe.FuncName("LoadConfig"), +// ), +// ) +//} From b31dd43b931e4389fbb73722345d1d57d4231d91 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 15 Sep 2020 21:02:25 +0300 Subject: [PATCH 005/293] chore(release): 2.0.0-alpha.1 --- CHANGELOG.md | 13 ++++++++++++- swipe.go | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51c81cab..8e54d75a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## [Unreleased] + +## [v2.0.0-alpha.1] - 2020-09-11 +### Features +- Some internal changes, performance improvements. + +### BREAKING CHANGE + +The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg/swipe package, they are now located at github.com/swipe-io/swipe. + + ## [v1.26.7] - 2020-09-09 ### Features @@ -497,7 +507,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v1.26.7...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...HEAD +[v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 [v1.26.7]: https://github.com/swipe-io/swipe/compare/v1.26.6...v1.26.7 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 diff --git a/swipe.go b/swipe.go index 21501d81..1abfe896 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0" +const Version = "v2.0.0-alpha.1" // A Option is an option for a Swipe. type Option string From 1bef847e61e4993097d54a2b4d689f46da264ffd Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 16 Sep 2020 12:43:37 +0300 Subject: [PATCH 006/293] fix: Show notifications when generated. --- cmd/swipe/main.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 7ca77941..804c487b 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -63,15 +63,18 @@ func main() { log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) startCmd := time.Now() + + var code int if args := flag.Args(); len(args) == 0 || !allCmds[args[0]] { genCmd := &genCmd{} - os.Exit(int(genCmd.Execute(context.Background(), flag.CommandLine))) + code = int(genCmd.Execute(context.Background(), flag.CommandLine)) + } else { + code = int(subcommands.Execute(context.Background())) + } + if code == 0 { + log.Println(color.LightGreen.Render("Command execution completed successfully")) } - code := int(subcommands.Execute(context.Background())) - - log.Println(color.LightGreen.Render("Command execution completed successfully")) log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Now().Sub(startCmd).String())) - os.Exit(code) } From f089611cebbab6f3861c5aad65ddc74a29573153 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 16 Sep 2020 12:44:34 +0300 Subject: [PATCH 007/293] chore(release): 2.0.0-alpha.2 --- CHANGELOG.md | 26 ++++++++++++++++++-------- swipe.go | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e54d75a..13dff9bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,14 @@ ## [Unreleased] + +## [v2.0.0-alpha.2] - 2020-09-16 +### Bug Fixes +- Show notifications when generated. + + -## [v2.0.0-alpha.1] - 2020-09-11 +## [v2.0.0-alpha.1] - 2020-09-15 ### Features - Some internal changes, performance improvements. @@ -194,11 +200,14 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.1] - 2020-07-28 - -## [v1.24.2] - 2020-07-28 - ## [v1.24.3] - 2020-07-28 +### Bug Fixes +- Change enums JSON RPC client generate format. + + + +## [v1.24.2] - 2020-07-28 ## [v1.24.4] - 2020-07-28 @@ -507,7 +516,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...HEAD +[v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 [v1.26.7]: https://github.com/swipe-io/swipe/compare/v1.26.6...v1.26.7 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 @@ -533,9 +543,9 @@ if you used the ability to use the code in the generation description file, then [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 [v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.1 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.3 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.1 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 [v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 diff --git a/swipe.go b/swipe.go index 1abfe896..e0d1b44b 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.1" +const Version = "v2.0.0-alpha.2" // A Option is an option for a Swipe. type Option string From b0dcd46d64e205dee1ec70cc8565efe8617dd327 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 16 Sep 2020 13:41:29 +0300 Subject: [PATCH 008/293] fix: Not use json tag for struct in openapi generation. --- fixtures/service/app/jsonrpc_doc_gen.md | 20 ++++++++++---------- go.mod | 2 +- go.sum | 4 ++++ internal/interface/gateway/service.go | 2 +- internal/interface/generator/config.go | 2 +- internal/interface/generator/endpoint.go | 2 +- internal/interface/generator/openapi.go | 13 ++++++++++--- internal/stcreator/postgres_loader.go | 2 +- internal/stcreator/project.go | 2 +- swipe.go | 2 +- 10 files changed, 31 insertions(+), 20 deletions(-) diff --git a/fixtures/service/app/jsonrpc_doc_gen.md b/fixtures/service/app/jsonrpc_doc_gen.md index c26f02ed..5b12caec 100755 --- a/fixtures/service/app/jsonrpc_doc_gen.md +++ b/fixtures/service/app/jsonrpc_doc_gen.md @@ -110,6 +110,16 @@ New line comment. |permission|string|| ## Members +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| ### User | Field | Type | Description | @@ -123,13 +133,3 @@ New line comment. |profile|Profile|| |created_at|string|| |updated_at|string|| -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| diff --git a/go.mod b/go.mod index 6a77a235..50439abe 100644 --- a/go.mod +++ b/go.mod @@ -12,11 +12,11 @@ require ( github.com/google/uuid v1.0.0 github.com/gookit/color v1.2.5 github.com/gorilla/mux v1.7.3 - github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 github.com/l-vitaly/go-kit v1.12.2 github.com/lib/pq v1.8.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/spaolacci/murmur3 v1.1.0 + github.com/swipe-io/strcase v0.1.3 golang.org/x/mod v0.3.0 golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 diff --git a/go.sum b/go.sum index de81baf5..7bc27a6e 100644 --- a/go.sum +++ b/go.sum @@ -305,6 +305,10 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/swipe-io/strcase v0.1.2 h1:EK2Rd3bK1NiSBnsogPmaF40iT8M5C4MHRwnJk4DNr/Q= +github.com/swipe-io/strcase v0.1.2/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/swipe-io/strcase v0.1.3 h1:LawWgDOsOb/McgGZHBMdkn81cPGOHEza8SCq6M1g1Qg= +github.com/swipe-io/strcase v0.1.3/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 1defa8aa..5a4dc4d1 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -7,7 +7,7 @@ import ( stdtypes "go/types" stdstrings "strings" - "github.com/iancoleman/strcase" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/errors" "github.com/swipe-io/swipe/v2/internal/graph" "github.com/swipe-io/swipe/v2/internal/openapi" diff --git a/internal/interface/generator/config.go b/internal/interface/generator/config.go index d5b66ae5..6a15be64 100644 --- a/internal/interface/generator/config.go +++ b/internal/interface/generator/config.go @@ -10,7 +10,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/fatih/structtag" - "github.com/iancoleman/strcase" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/strings" diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index 4edb507e..fcd3bb06 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -7,7 +7,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/iancoleman/strcase" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 0d239b32..31dde7d0 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -10,15 +10,16 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/fatih/structtag" - "github.com/iancoleman/strcase" "github.com/pquerna/ffjson/ffjson" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/openapi" "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" ) func getOpenapiJSONRPCErrorSchemas() openapi.Schemas { @@ -546,7 +547,13 @@ func (g *openapiDoc) makeSwaggerSchema(tpl stdtypes.Type) (schema *openapi.Schem for i := 0; i < st.NumFields(); i++ { f := st.Field(i) if !f.Embedded() { - schema.Properties[strcase.ToLowerCamel(f.Name())] = g.makeSwaggerSchema(f.Type()) + name := f.Name() + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if tag, err := tags.Get("json"); err == nil { + name = tag.Value() + } + } + schema.Properties[name] = g.makeSwaggerSchema(f.Type()) } else { var st *stdtypes.Struct if ptr, ok := f.Type().(*stdtypes.Pointer); ok { diff --git a/internal/stcreator/postgres_loader.go b/internal/stcreator/postgres_loader.go index 29fa1e38..f83738a3 100644 --- a/internal/stcreator/postgres_loader.go +++ b/internal/stcreator/postgres_loader.go @@ -4,8 +4,8 @@ import ( "database/sql" "github.com/achiku/varfmt" - "github.com/iancoleman/strcase" _ "github.com/lib/pq" + "github.com/swipe-io/strcase" ) const tablesSQL = ` diff --git a/internal/stcreator/project.go b/internal/stcreator/project.go index 1a598c8b..de14aa86 100644 --- a/internal/stcreator/project.go +++ b/internal/stcreator/project.go @@ -12,7 +12,7 @@ import ( "strings" "text/template" - "github.com/iancoleman/strcase" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/format" diff --git a/swipe.go b/swipe.go index e0d1b44b..f8121af1 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.2" +const Version = "v2.0.0-alpha.3" // A Option is an option for a Swipe. type Option string From b55fd354e01918cee5b5e1000c14e14f078d1e82 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 16 Sep 2020 13:42:35 +0300 Subject: [PATCH 009/293] chore(release): 2.0.0-alpha.3 --- CHANGELOG.md | 27 +++++++++++++++++---------- cmd/swipe/main.go | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13dff9bf..f6951d7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +## [v2.0.0-alpha.3] - 2020-09-16 +### Bug Fixes +- Not use json tag for struct in openapi generation. + + ## [v2.0.0-alpha.2] - 2020-09-16 ### Bug Fixes @@ -200,19 +206,19 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.1] - 2020-07-28 - -## [v1.24.3] - 2020-07-28 + +## [v1.24.4] - 2020-07-28 ### Bug Fixes +- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. ## [v1.24.2] - 2020-07-28 - -## [v1.24.4] - 2020-07-28 + +## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -516,7 +522,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.3...HEAD +[v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 [v1.26.7]: https://github.com/swipe-io/swipe/compare/v1.26.6...v1.26.7 @@ -543,10 +550,10 @@ if you used the ability to use the code in the generation description file, then [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 [v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.1 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.4 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 804c487b..d1053010 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -16,7 +16,7 @@ import ( "github.com/google/subcommands" "github.com/gookit/color" - "github.com/iancoleman/strcase" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/interface/executor" "github.com/swipe-io/swipe/v2/internal/interface/factory" From 443ffa66b211eed09df473a9bcc68a92899f5549 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 11:49:24 +0300 Subject: [PATCH 010/293] refactor: Added install command for Makefile. --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fc960741..816c461d 100644 --- a/Makefile +++ b/Makefile @@ -6,4 +6,7 @@ check: go test ./... build: check - go build -o swipe ./cmd/swipe \ No newline at end of file + go build -o swipe ./cmd/swipe + +install: build + mv ./swipe ${GOPATH}/bin \ No newline at end of file From 7dac2f3154ca184dfa46b4edd408c5c6a7730834 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 11:52:40 +0300 Subject: [PATCH 011/293] refactor: Remove unused methods. --- internal/types/types.go | 39 ++++----------------------------------- 1 file changed, 4 insertions(+), 35 deletions(-) diff --git a/internal/types/types.go b/internal/types/types.go index 2d507c83..87a488aa 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -1,14 +1,11 @@ package types import ( - "fmt" "go/ast" "go/token" "go/types" "strconv" - "github.com/spaolacci/murmur3" - "golang.org/x/tools/go/packages" ) @@ -18,12 +15,6 @@ var ( NilType = types.Universe.Lookup("nil").Type() ) -func Hash(name string, hash uint32) uint32 { - h := murmur3.New32() - _, _ = h.Write([]byte(fmt.Sprintf("%s::%d", name, hash))) - return h.Sum32() -} - func GetBitSize(kind types.BasicKind) string { switch kind { case types.Int8, types.Uint8: @@ -37,6 +28,10 @@ func GetBitSize(kind types.BasicKind) string { } } +func IsNil(t types.Type) bool { + return types.Identical(t, NilType) +} + func IsError(t types.Type) bool { return types.Identical(t, ErrorType) } @@ -64,32 +59,6 @@ func IsContext(t types.Type) bool { return types.TypeString(t, nil) == "context.Context" } -func LenWithoutErr(t *types.Tuple) int { - len := t.Len() - if ContainsError(t) { - len-- - } - return len -} - -func LenWithoutContext(t *types.Tuple) int { - len := t.Len() - if ContainsContext(t) { - len-- - } - return len -} - -func LookupField(name string, sig *types.Signature) *types.Var { - for i := 0; i < sig.Params().Len(); i++ { - p := sig.Params().At(i) - if p.Name() == name { - return p - } - } - return nil -} - func IsNamed(t *types.Tuple) bool { if t.Len() > 0 { return t.At(0).Name() != "" From dabcdb98f2a13d289c14d11ce3d47475a590a723 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 11:55:31 +0300 Subject: [PATCH 012/293] fix: Incorrect project generation for files with $struct in the template file name. --- internal/stcreator/postgres_loader.go | 10 +++--- internal/stcreator/project.go | 44 +++++++++++++++------------ 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/internal/stcreator/postgres_loader.go b/internal/stcreator/postgres_loader.go index f83738a3..c890b8dc 100644 --- a/internal/stcreator/postgres_loader.go +++ b/internal/stcreator/postgres_loader.go @@ -220,9 +220,10 @@ func (l *PostgresLoader) Process() (result []StructMetadata, err error) { if name[len(name)-1] == 's' { name = name[:len(name)-1] } + structName := varfmt.PublicVarName(name) sm := StructMetadata{ - Name: varfmt.PublicVarName(name), - LowerName: strcase.ToLowerCamel(name), + Name: structName, + LowerName: strcase.ToLowerCamel(structName), } rows, err := conn.Query(columnsTableSQL, "public", t.Name) if err != nil { @@ -244,9 +245,10 @@ func (l *PostgresLoader) Process() (result []StructMetadata, err error) { NullType: "interface{}", } } + paramName := varfmt.PublicVarName(p.Name) sp := StructParam{ - Name: varfmt.PublicVarName(p.Name), - LowerName: strcase.ToLowerCamel(p.Name), + Name: paramName, + LowerName: strcase.ToLowerCamel(paramName), RawType: mt.Type, ColumnName: p.Name, Primary: p.Primary, diff --git a/internal/stcreator/project.go b/internal/stcreator/project.go index de14aa86..9e36e4df 100644 --- a/internal/stcreator/project.go +++ b/internal/stcreator/project.go @@ -3,7 +3,6 @@ package stcreator import ( "bytes" "fmt" - "io/ioutil" "os" "os/exec" @@ -12,8 +11,8 @@ import ( "strings" "text/template" + "github.com/achiku/varfmt" "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/format" "gopkg.in/yaml.v3" @@ -33,10 +32,11 @@ func (e FormatError) Error() string { } var funcs = template.FuncMap{ - "ToLowerCamel": strcase.ToLowerCamel, - "ToCamel": strcase.ToCamel, - "ToSnake": strcase.ToSnake, - "ToKebab": strcase.ToKebab, + "ToLowerCamel": strcase.ToLowerCamel, + "ToCamel": strcase.ToCamel, + "ToSnake": strcase.ToSnake, + "ToKebab": strcase.ToKebab, + "PublicVarName": varfmt.PublicVarName, } type StructParam struct { @@ -160,9 +160,9 @@ func (l *ProjectLoader) normalizeName(filename string) string { return strings.TrimSuffix(filename, ".tpl") } -func (l *ProjectLoader) executeTemplate(data []byte, varsMap interface{}) ([]byte, error) { +func (l *ProjectLoader) executeTemplate(name string, data []byte, varsMap interface{}) ([]byte, error) { var buf bytes.Buffer - t, err := template.New("template").Funcs(funcs).Parse(string(data)) + t, err := template.New(name).Funcs(funcs).Parse(string(data)) if err != nil { return nil, err } @@ -196,16 +196,10 @@ func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { return nil, err } wd := filepath.Join(l.wd, l.projectID) - varsMap := map[string]interface{}{ - "Structs": structs, - "PkgName": l.pkgName, - "ProjectName": l.projectName, - "ProjectID": l.projectID, - } err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { outputPath := filepath.Join(wd, strings.Replace(path, dir, "", -1)) if !info.IsDir() { - data, err := ioutil.ReadFile(path) + fileData, err := ioutil.ReadFile(path) if err != nil { return err } @@ -213,8 +207,15 @@ func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { normalizeName := l.normalizeName(info.Name()) if strings.HasPrefix(info.Name(), "$struct") { for _, st := range structs { - varsMap["Struct"] = st - data, err = l.executeTemplate(data, varsMap) + st := st + + data, err := l.executeTemplate(st.Name, fileData, map[string]interface{}{ + "Structs": structs, + "Struct": st, + "PkgName": l.pkgName, + "ProjectName": l.projectName, + "ProjectID": l.projectID, + }) if err != nil { return err } @@ -224,7 +225,12 @@ func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { } } } else { - data, err := l.executeTemplate(data, varsMap) + data, err := l.executeTemplate(info.Name(), fileData, map[string]interface{}{ + "Structs": structs, + "PkgName": l.pkgName, + "ProjectName": l.projectName, + "ProjectID": l.projectID, + }) if err != nil { return err } @@ -234,7 +240,7 @@ func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { } return nil } else { - if err := l.createFile(filepath.Join(filepath.Dir(outputPath), info.Name()), data); err != nil { + if err := l.createFile(filepath.Join(filepath.Dir(outputPath), info.Name()), fileData); err != nil { return err } } From eac9ca73877b5b9a7bbdc91f9909a9cd5ec92545 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 11:56:09 +0300 Subject: [PATCH 013/293] feat: Rename command crud-service to gen-tpl. --- cmd/swipe/main.go | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index d1053010..a988a625 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -41,7 +41,7 @@ func main() { subcommands.Register(subcommands.HelpCommand(), "") subcommands.Register(&versionCmd{}, "") subcommands.Register(&genCmd{}, "") - subcommands.Register(&crudServiceCmd{}, "") + subcommands.Register(&genTplCmd{}, "") flag.Parse() @@ -49,13 +49,13 @@ func main() { log.SetOutput(os.Stderr) allCmds := map[string]bool{ - "commands": true, - "crud-service": true, - "version": true, - "help": true, - "flags": true, - "gen": true, - "show": true, + "commands": true, + "gen-tpl": true, + "version": true, + "help": true, + "flags": true, + "gen": true, + "show": true, } log.Printf("%s %s", color.LightBlue.Render("Swipe"), color.Yellow.Render(swipe.Version)) @@ -211,23 +211,23 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa return subcommands.ExitSuccess } -type crudServiceCmd struct { +type genTplCmd struct { configFilepath string } -func (cmd *crudServiceCmd) Name() string { return "crud-service" } +func (cmd *genTplCmd) Name() string { return "gen-tpl" } -func (cmd *crudServiceCmd) Synopsis() string { return "generate CRUD service structure" } +func (cmd *genTplCmd) Synopsis() string { return "generating a project through templates" } -func (cmd *crudServiceCmd) Usage() string { - return `swipe crud-service [-config] projectName templatesPath` +func (cmd *genTplCmd) Usage() string { + return `swipe gen-tpl [--config] 'projectName' templatesPath` } -func (cmd *crudServiceCmd) SetFlags(set *flag.FlagSet) { - set.StringVar(&cmd.configFilepath, "config", "", "config file path") +func (cmd *genTplCmd) SetFlags(set *flag.FlagSet) { + set.StringVar(&cmd.configFilepath, "config", "", "config YAML path") } -func (cmd *crudServiceCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { +func (cmd *genTplCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { srcPath := filepath.Join(build.Default.GOPATH, "src") wd, err := os.Getwd() if err != nil { From 69f612e51c5c3a89bde71c320b750abfb672ae8f Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 11:56:28 +0300 Subject: [PATCH 014/293] ci: Added travis YAML. --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..433f66dd --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: go + +go: + - 1.4 + - 1.5 + - 1.6 + - tip + +script: + - make check From 790385ad3d02c7943a9d9afdc18b53b0ea0dc4dd Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 12:01:00 +0300 Subject: [PATCH 015/293] ci: Changes go version for check. --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 433f66dd..a0bb5b44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,7 @@ language: go go: - - 1.4 - - 1.5 - - 1.6 + - 1.13.7 - tip script: From b17cac4e880073393b2b5f63c8513e63e089af17 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 12:11:50 +0300 Subject: [PATCH 016/293] docs: Added build status badge. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 17922a0c..54768bba 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Swipe +[![Build Status](https://travis-ci.com/swipe-io/swipe.svg?branch=v2)](https://travis-ci.com/swipe-io/swipe) +[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/swipe-io/swipe/v2/LICENSE) + Swipe is a code generation tool that automates the creation of repetitively used code. Configuration parameters are presented in Swipe as parameters of the Golang function, using explicit initialization instead of global variables or reflections. From e3f1c03fc24880cace7df0b7b6f1866242f863c3 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Sep 2020 20:04:46 +0300 Subject: [PATCH 017/293] refactor: Added increment func for template generator. --- internal/stcreator/project.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/stcreator/project.go b/internal/stcreator/project.go index 9e36e4df..99df0d34 100644 --- a/internal/stcreator/project.go +++ b/internal/stcreator/project.go @@ -37,6 +37,9 @@ var funcs = template.FuncMap{ "ToSnake": strcase.ToSnake, "ToKebab": strcase.ToKebab, "PublicVarName": varfmt.PublicVarName, + "Add": func(v, n int) int { + return v + n + }, } type StructParam struct { @@ -206,12 +209,11 @@ func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { if strings.HasSuffix(info.Name(), ".tpl") { normalizeName := l.normalizeName(info.Name()) if strings.HasPrefix(info.Name(), "$struct") { - for _, st := range structs { - st := st - + for i, st := range structs { data, err := l.executeTemplate(st.Name, fileData, map[string]interface{}{ "Structs": structs, "Struct": st, + "Index": i, "PkgName": l.pkgName, "ProjectName": l.projectName, "ProjectID": l.projectID, From b37a67f07f23fab6753c5b15114e9041aab4c26c Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 28 Sep 2020 14:00:33 +0300 Subject: [PATCH 018/293] feat: Added the ability to generate circular structures for openapi and JavaScript JSON RPC client. --- fixtures/GatewaySuccess/app/swipe.go | 2 +- fixtures/Service/app/client_jsonrpc_gen.js | 219 +++++++++++++++ .../app/jsonrpc_doc_gen.md | 8 + fixtures/Service/app/openapi_jsonrpc_gen.json | 1 + fixtures/{service => Service}/app/service.go | 7 + fixtures/{service => Service}/app/swipe.go | 6 +- gen_test.go | 22 +- .../interface/generator/jsonrpc_js_client.go | 194 +++++--------- .../generator/jsonrpc_markdown_doc.go | 102 ++++--- .../interface/generator/jsonrpc_server.go | 2 +- internal/interface/generator/openapi.go | 252 ++++++++++-------- .../interface/typevisitor/js_def_visitor.go | 118 ++++++++ internal/interface/typevisitor/js_visitor.go | 146 ++++++++++ .../interface/typevisitor/named_collector.go | 83 ++++++ .../typevisitor/openapi_def_visitor.go | 111 ++++++++ .../interface/typevisitor/openapi_visitor.go | 156 +++++++++++ internal/usecase/typevisitor/type_visitor.go | 128 +++++++++ 17 files changed, 1254 insertions(+), 303 deletions(-) create mode 100755 fixtures/Service/app/client_jsonrpc_gen.js rename fixtures/{service => Service}/app/jsonrpc_doc_gen.md (90%) create mode 100755 fixtures/Service/app/openapi_jsonrpc_gen.json rename fixtures/{service => Service}/app/service.go (94%) rename fixtures/{service => Service}/app/swipe.go (63%) create mode 100644 internal/interface/typevisitor/js_def_visitor.go create mode 100644 internal/interface/typevisitor/js_visitor.go create mode 100644 internal/interface/typevisitor/named_collector.go create mode 100644 internal/interface/typevisitor/openapi_def_visitor.go create mode 100644 internal/interface/typevisitor/openapi_visitor.go create mode 100644 internal/usecase/typevisitor/type_visitor.go diff --git a/fixtures/GatewaySuccess/app/swipe.go b/fixtures/GatewaySuccess/app/swipe.go index d5408662..687f63d8 100644 --- a/fixtures/GatewaySuccess/app/swipe.go +++ b/fixtures/GatewaySuccess/app/swipe.go @@ -4,7 +4,7 @@ package app import ( "github.com/swipe-io/swipe/v2" - "github.com/swipe-io/swipe/v2/fixtures/service/app" + "github.com/swipe-io/swipe/v2/fixtures/Service/app" ) func Swipe() { diff --git a/fixtures/Service/app/client_jsonrpc_gen.js b/fixtures/Service/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..1059ccb8 --- /dev/null +++ b/fixtures/Service/app/client_jsonrpc_gen.js @@ -0,0 +1,219 @@ +// Code generated by Swipe v2.0.0-alpha.3. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} +class JSONRPCClient { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then(responses => { + for (let i = 0; i < responses.length; i++) { + if (responses[i].error) { + scheduleRequests[responses[i].id].reject( + convertError(responses[i].error) + ); + continue; + } + scheduleRequests[responses[i].id].resolve(responses[i].result); + } + }) + .catch(e => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} User + * @property {string} id + * @property {string} name + * @property {string} password + * @property {GeoJSON} point + * @property {string} last_seen + * @property {Array} photo + * @property {User} user + * @property {Profile} profile + * @property {Recurse} recurse + * @property {string} created_at + * @property {string} updated_at + **/ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + **/ + +/** + * @typedef {Object} Profile + * @property {string} phone + **/ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurses + **/ + +export default class extends JSONRPCClient { + /** + * Create new item of item. + * + * @param {string} name + * @param {Array} data + **/ + create(name, data) { + return this.__scheduleRequest("create", { name: name, data: data }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.__scheduleRequest("delete", { id: id }); + } + /** + * Get item. + * + * @param {number} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} c + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, c) { + return this.__scheduleRequest("get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + c: c + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @return {PromiseLike>} + **/ + getAll() { + return this.__scheduleRequest("getAll", {}); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.__scheduleRequest("testMethod", { data: data, ss: ss }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.__scheduleRequest("testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }); + } +} +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +export class ErrForbiddenError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrForbiddenError", -32002, data); + } +} +function convertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + case -32002: + return new ErrForbiddenError(e.message, e.data); + } +} diff --git a/fixtures/service/app/jsonrpc_doc_gen.md b/fixtures/Service/app/jsonrpc_doc_gen.md similarity index 90% rename from fixtures/service/app/jsonrpc_doc_gen.md rename to fixtures/Service/app/jsonrpc_doc_gen.md index 5b12caec..9ce57f5c 100755 --- a/fixtures/service/app/jsonrpc_doc_gen.md +++ b/fixtures/Service/app/jsonrpc_doc_gen.md @@ -120,6 +120,12 @@ New line comment. | Field | Type | Description | |------|------|------| |phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurses|Array.<Recurse>|| ### User | Field | Type | Description | @@ -130,6 +136,8 @@ New line comment. |point|GeoJSON|| |last_seen|string|| |photo|Array.<number>|| +|user|User|| |profile|Profile|| +|recurse|Recurse|| |created_at|string|| |updated_at|string|| diff --git a/fixtures/Service/app/openapi_jsonrpc_gen.json b/fixtures/Service/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..cea8a8a9 --- /dev/null +++ b/fixtures/Service/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"c":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurses":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/service/app/service.go b/fixtures/Service/app/service.go similarity index 94% rename from fixtures/service/app/service.go rename to fixtures/Service/app/service.go index 687577d2..f0691c15 100644 --- a/fixtures/service/app/service.go +++ b/fixtures/Service/app/service.go @@ -54,6 +54,11 @@ type Profile struct { Phone string `json:"phone"` } +type Recurse struct { + Name string `json:"name"` + Recurses []*Recurse `json:"recurses"` +} + type User struct { ID uuid.UUID `json:"id"` Name string `json:"name"` @@ -61,7 +66,9 @@ type User struct { Point GeoJSON `json:"point"` LastSeen time.Time `json:"last_seen"` Photo []byte `json:"photo"` + User *User `json:"user"` Profile *Profile `json:"profile"` + Recurse *Recurse `json:"recurse"` CreatedAt *time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } diff --git a/fixtures/service/app/swipe.go b/fixtures/Service/app/swipe.go similarity index 63% rename from fixtures/service/app/swipe.go rename to fixtures/Service/app/swipe.go index ae2c13ce..2ffb9d47 100644 --- a/fixtures/service/app/swipe.go +++ b/fixtures/Service/app/swipe.go @@ -9,7 +9,11 @@ func Swipe() { swipe.Service((*Interface)(nil), swipe.Transport("http", swipe.JSONRPC(), - swipe.MarkdownDoc("./fixtures/service/app"), + swipe.MarkdownDoc("./"), + swipe.ClientEnable(), + swipe.Openapi( + swipe.OpenapiOutput("./"), + ), ), ), ) diff --git a/gen_test.go b/gen_test.go index 0463bca6..23140d32 100644 --- a/gen_test.go +++ b/gen_test.go @@ -2,6 +2,7 @@ package swipe import ( "bytes" + "flag" "io/ioutil" "os" "path/filepath" @@ -19,6 +20,8 @@ import ( ue "github.com/swipe-io/swipe/v2/internal/usecase/executor" ) +var record = flag.Bool("record", false, "write expected result without running tests") + func newGeneratorExecutor() ue.GenerationExecutor { l := option.NewLoader() fi := finder.NewServiceFinder(l) @@ -59,12 +62,19 @@ func TestSwipe(t *testing.T) { t.Error(e) } } + for _, result := range results { - if actualContent, ok := test.expectedOutput[result.OutputPath]; ok { - if !bytes.Equal(result.Content, actualContent) { - actual, expected := string(actualContent), string(result.Content) - diff := cmp.Diff(strings.Split(actual, "\n"), strings.Split(expected, "\n")) - t.Fatalf("swipe output differs from expected file.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", actualContent, expected, diff) + if *record { + if err := ioutil.WriteFile(result.OutputPath, result.Content, 0755); err != nil { + t.Fatal(err) + } + } else { + if expectedContent, ok := test.expectedOutput[result.OutputPath]; ok { + if !bytes.Equal(expectedContent, result.Content) { + actual, expected := string(result.Content), string(expectedContent) + diff := cmp.Diff(strings.Split(actual, "\n"), strings.Split(expected, "\n")) + t.Fatalf("swipe output differs from expected file.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", actual, expected, diff) + } } } } @@ -92,7 +102,7 @@ func loadTestCase(root string) (*testCase, error) { } expectedOutput := make(map[string][]byte) for _, file := range expectedFiles { - if !file.IsDir() && strings.HasSuffix(file.Name(), "_gen.go") { + if !file.IsDir() && strings.Contains(file.Name(), "_gen") { expectedFile, err := filepath.Abs(filepath.Join(testCasePath, file.Name())) if err != nil { return nil, err diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index c2c6506b..37d4fe73 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -1,18 +1,14 @@ package generator import ( - "bytes" "context" - "fmt" stdtypes "go/types" "strconv" - "strings" - - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - - "github.com/fatih/structtag" + "github.com/gogo/protobuf/sortkeys" "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" "golang.org/x/tools/go/types/typeutil" @@ -123,86 +119,117 @@ func (g *jsonRPCJSClient) Prepare(_ context.Context) error { func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W(jsonRPCClientBase) - g.W("export default class extends JSONRPCClient {\n") + mw := writer.BaseWriter{} + + tdc := typevisitor.NewNamedTypeCollector() for _, m := range g.serviceMethods { mopt := g.transport.MethodOptions[m.Name] - g.W("/**\n") + mw.W("/**\n") if len(m.Comments) > 0 { for _, comment := range m.Comments { - g.W("* %s\n", comment) + mw.W("* %s\n", comment) } - g.W("*\n") + mw.W("*\n") } for _, p := range m.Params { - g.W("* @param {%s} %s\n", g.getJSDocType(p.Type(), 0), p.Name()) + buf := new(writer.BaseWriter) + typevisitor.JSTypeVisitor(buf).Visit(p.Type()) + + tdc.Visit(p.Type()) + + mw.W("* @param {%s} %s\n", buf.String(), p.Name()) } if len(m.Results) > 0 { - g.W("* @return {PromiseLike<") + mw.W("* @return {PromiseLike<") if m.ResultsNamed { if mopt.WrapResponse.Enable { - g.W("{%s: ", mopt.WrapResponse.Name) + mw.W("{%s: ", mopt.WrapResponse.Name) } else { - g.W("{") + mw.W("{") } } - for i, p := range m.Results { if i > 0 { - g.W(", ") + mw.W(", ") } if m.ResultsNamed { - g.W("%s: ", p.Name()) + mw.W("%s: ", p.Name()) } - g.W(g.getJSDocType(p.Type(), 0)) + + buf := new(writer.BaseWriter) + typevisitor.JSTypeVisitor(buf).Visit(p.Type()) + + tdc.Visit(p.Type()) + + mw.W(buf.String()) } if m.ResultsNamed || mopt.WrapResponse.Enable { - g.W("}") + mw.W("}") } - g.W(">}\n") + mw.W(">}\n") } - g.W("**/\n") - g.W("%s(", m.LcName) + mw.W("**/\n") + mw.W("%s(", m.LcName) for i, p := range m.Params { if i > 0 { - g.W(",") + mw.W(",") } - g.W(p.Name()) + mw.W(p.Name()) } - g.W(") {\n") - g.W("return this.__scheduleRequest(\"%s\", {", m.LcName) + mw.W(") {\n") + mw.W("return this.__scheduleRequest(\"%s\", {", m.LcName) for i, p := range m.Params { if i > 0 { - g.W(",") + mw.W(",") } - g.W("%[1]s:%[1]s", p.Name()) + mw.W("%[1]s:%[1]s", p.Name()) } - g.W("})\n") - g.W("}\n") + mw.W("})\n") + mw.W("}\n") } + buf := new(writer.BaseWriter) + + for _, t := range tdc.TypeDefs() { + typevisitor.JSTypeDefVisitor(buf).Visit(t) + } + + g.W(buf.String()) + + g.W("export default class extends JSONRPCClient {\n") + g.W(mw.String()) g.W("}\n") - for _, e := range g.transport.Errors { + errorKeys := make([]uint32, 0, len(g.transport.Errors)) + for key := range g.transport.Errors { + errorKeys = append(errorKeys, key) + } + sortkeys.Uint32s(errorKeys) + + for _, key := range errorKeys { + e := g.transport.Errors[key] g.W( "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %d, data);\n}\n}\n", e.Named.Obj().Name(), e.Code, ) } + g.W("function convertError(e) {\n") g.W("switch(e.code) {\n") g.W("default:\n") g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") - for _, e := range g.transport.Errors { + for _, key := range errorKeys { + e := g.transport.Errors[key] g.W("case %d:\n", e.Code) g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) @@ -247,107 +274,6 @@ func (g *jsonRPCJSClient) Filename() string { return "client_jsonrpc_gen.js" } -func (g *jsonRPCJSClient) getJSDocType(tpl stdtypes.Type, nested int) string { - switch v := tpl.(type) { - default: - return "*" - case *stdtypes.Pointer: - return g.getJSDocType(v.Elem(), nested) - case *stdtypes.Array: - return fmt.Sprintf("Array<%s>", g.getJSDocType(v.Elem(), nested)) - case *stdtypes.Slice: - return fmt.Sprintf("Array<%s>", g.getJSDocType(v.Elem(), nested)) - case *stdtypes.Map: - return fmt.Sprintf("Object", g.getJSDocType(v.Elem(), nested)) - case *stdtypes.Named: - switch stdtypes.TypeString(v.Obj().Type(), nil) { - case "encoding/json.RawMessage": - return "*" - case "github.com/pborman/uuid.UUID", - "github.com/google/uuid.UUID": - return "string" - case "time.Time": - return "string" - } - return g.getJSDocType(v.Obj().Type().Underlying(), nested) - case *stdtypes.Struct: - buf := new(bytes.Buffer) - _, _ = fmt.Fprintf(buf, "{\n") - - var writeStruct func(st *stdtypes.Struct) - writeStruct = func(st *stdtypes.Struct) { - var j int - for i := 0; i < st.NumFields(); i++ { - f := st.Field(i) - if f.Embedded() { - var st *stdtypes.Struct - if ptr, ok := f.Type().(*stdtypes.Pointer); ok { - st = ptr.Elem().Underlying().(*stdtypes.Struct) - } else { - st = f.Type().Underlying().(*stdtypes.Struct) - } - writeStruct(st) - _, _ = fmt.Fprint(buf, ",\n") - continue - } - var ( - skip bool - name = f.Name() - ) - if tags, err := structtag.Parse(st.Tag(i)); err == nil { - if jsonTag, err := tags.Get("json"); err == nil { - if jsonTag.Name == "-" { - skip = true - } else { - name = jsonTag.Name - } - } - } - if skip { - continue - } - if j > 0 { - _, _ = fmt.Fprint(buf, ",\n") - } - _, _ = fmt.Fprintf(buf, "* %s %s: %s", strings.Repeat(" ", nested), name, g.getJSDocType(f.Type(), nested+1)) - j++ - } - } - - writeStruct(v) - - _, _ = fmt.Fprintln(buf) - - endNested := nested - 2 - if endNested < 0 { - endNested = 0 - } - - _, _ = fmt.Fprintf(buf, "* %s }", strings.Repeat(" ", endNested)) - return buf.String() - case *stdtypes.Basic: - switch v.Kind() { - default: - return "string" - case stdtypes.Bool: - return "boolean" - case stdtypes.Float32, - stdtypes.Float64, - stdtypes.Int, - stdtypes.Int8, - stdtypes.Int16, - stdtypes.Int32, - stdtypes.Int64, - stdtypes.Uint, - stdtypes.Uint8, - stdtypes.Uint16, - stdtypes.Uint32, - stdtypes.Uint64: - return "number" - } - } -} - func NewJsonRPCJSClient( serviceMethods []model.ServiceMethod, transport model.TransportOption, diff --git a/internal/interface/generator/jsonrpc_markdown_doc.go b/internal/interface/generator/jsonrpc_markdown_doc.go index 9ee4376e..1bf0432d 100644 --- a/internal/interface/generator/jsonrpc_markdown_doc.go +++ b/internal/interface/generator/jsonrpc_markdown_doc.go @@ -8,6 +8,7 @@ import ( "io/ioutil" "path/filepath" "regexp" + "sort" "strings" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -18,6 +19,12 @@ import ( "golang.org/x/tools/go/types/typeutil" ) +type NamedSlice []*stdtypes.Named + +func (n NamedSlice) Len() int { return len(n) } +func (n NamedSlice) Swap(i, j int) { n[i], n[j] = n[j], n[i] } +func (n NamedSlice) Less(i, j int) bool { return n[i].Obj().Name() < n[j].Obj().Name() } + var paramCommentRegexp = regexp.MustCompile(`(?s)@([a-zA-Z0-9_]*) (.*)`) type jsonrpcMarkdownDoc struct { @@ -155,65 +162,72 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { } if existsTypes.Len() > 0 { - g.W("## Members\n\n") - + nameds := make(NamedSlice, 0, existsTypes.Len()) existsTypes.Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { - st := named.Obj().Type().Underlying().(*stdtypes.Struct) - comments, ok := g.commentMap.At(st).(map[string]string) - if !ok { - comments = map[string]string{} - } + nameds = append(nameds, named) + } + }) + sort.Sort(nameds) + + g.W("## Members\n\n") + + for _, named := range nameds { + st := named.Obj().Type().Underlying().(*stdtypes.Struct) + comments, ok := g.commentMap.At(st).(map[string]string) + if !ok { + comments = map[string]string{} + } - g.W("### %s\n\n", named.Obj().Name()) - - g.W("| Field | Type | Description |\n|------|------|------|\n") - - var writeStructInfo func(st *stdtypes.Struct) - writeStructInfo = func(st *stdtypes.Struct) { - for i := 0; i < st.NumFields(); i++ { - f := st.Field(i) - var ( - skip bool - name = f.Name() - ) - if tags, err := structtag.Parse(st.Tag(i)); err == nil { - if jsonTag, err := tags.Get("json"); err == nil { - if jsonTag.Name == "-" { - skip = true - } else { - name = jsonTag.Name - } + g.W("### %s\n\n", named.Obj().Name()) + + g.W("| Field | Type | Description |\n|------|------|------|\n") + + var writeStructInfo func(st *stdtypes.Struct) + writeStructInfo = func(st *stdtypes.Struct) { + for i := 0; i < st.NumFields(); i++ { + f := st.Field(i) + var ( + skip bool + name = f.Name() + ) + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if jsonTag, err := tags.Get("json"); err == nil { + if jsonTag.Name == "-" { + skip = true + } else { + name = jsonTag.Name } } - if skip { - continue - } - if tags, err := structtag.Parse(st.Tag(i)); err == nil { - if tag, err := tags.Get("json"); err == nil { - name = tag.Name - } + } + if skip { + continue + } + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if tag, err := tags.Get("json"); err == nil { + name = tag.Name } - if !f.Embedded() { - g.W("|%s|%s|%s|\n", name, g.getJSType(f.Type()), comments[f.Name()]) + } + if !f.Embedded() { + g.W("|%s|%s|%s|\n", name, g.getJSType(f.Type()), comments[f.Name()]) + } else { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) } else { - var st *stdtypes.Struct - if ptr, ok := f.Type().(*stdtypes.Pointer); ok { - st = ptr.Elem().Underlying().(*stdtypes.Struct) - } else { - st = f.Type().Underlying().(*stdtypes.Struct) - } - writeStructInfo(st) + st = f.Type().Underlying().(*stdtypes.Struct) } + writeStructInfo(st) } } - writeStructInfo(st) } - }) + writeStructInfo(st) + } } if g.enums.Len() > 0 { g.W("## Enums\n") + g.enums.Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { typeName := "" diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index 5b5fc8a1..e4a4c888 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -62,7 +62,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("ecm := %[1]s.EndpointCodecMap{}\n", jsonrpcPkg) - //g.W("return %[1]s.EndpointCodecMap{\n", jsonrpcPkg) + //g.w("return %[1]s.EndpointCodecMap{\n", jsonrpcPkg) for _, m := range g.serviceMethods { mopt := g.transport.MethodOptions[m.Name] diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 31dde7d0..2ffafe8c 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -10,16 +10,16 @@ import ( "strconv" stdstrings "strings" - "github.com/fatih/structtag" - "github.com/pquerna/ffjson/ffjson" "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" + iftypevisitor "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" "github.com/swipe-io/swipe/v2/internal/openapi" "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/generator" + ustypevisitor "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" ) func getOpenapiJSONRPCErrorSchemas() openapi.Schemas { @@ -197,6 +197,8 @@ func (g *openapiDoc) Process(ctx context.Context) error { }, } + ntc := iftypevisitor.NewNamedTypeCollector() + if g.transport.JsonRPC.Enable { swg.Components.Schemas = getOpenapiJSONRPCErrorSchemas() } else { @@ -258,7 +260,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { } if g.transport.JsonRPC.Enable { - o = g.makeJSONRPCPath(m) + o = g.makeJSONRPCPath(m, ntc) pathStr = "/" + strings.LcFirst(m.Name) mopt.MethodName = "POST" @@ -304,6 +306,13 @@ func (g *openapiDoc) Process(ctx context.Context) error { swg.Paths[pathStr].Delete = o } } + + for _, t := range ntc.TypeDefs() { + schema := &openapi.Schema{} + iftypevisitor.OpenapiDefVisitor(schema).Visit(t) + swg.Components.Schemas[t.Obj().Name()] = schema + } + if err := ffjson.NewEncoder(g).Encode(swg); err != nil { return err } @@ -330,7 +339,7 @@ func (g *openapiDoc) Imports() []string { return nil } -func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod) *openapi.Operation { +func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, ntc ustypevisitor.NamedTypeCollector) *openapi.Operation { mopt := g.transport.MethodOptions[m.Name] responseSchema := &openapi.Schema{ @@ -343,9 +352,15 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod) *openapi.Operation { Properties: map[string]*openapi.Schema{}, } + //ntc := typevisitor.NewNamedTypeCollector() + if len(m.Params) > 0 { for _, p := range m.Params { - requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = g.makeSwaggerSchema(p.Type()) + ntc.Visit(p.Type()) + + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(p.Type()) + requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = schema } } else { requestSchema.Example = json.RawMessage("null") @@ -353,10 +368,15 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod) *openapi.Operation { if len(m.Results) > 1 { for _, r := range m.Results { - responseSchema.Properties[strcase.ToLowerCamel(r.Name())] = g.makeSwaggerSchema(r.Type()) + ntc.Visit(r.Type()) + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(r.Type()) + responseSchema.Properties[strcase.ToLowerCamel(r.Name())] = schema } } else if len(m.Results) == 1 { - responseSchema = g.makeSwaggerSchema(m.Results[0].Type()) + ntc.Visit(m.Results[0].Type()) + responseSchema = &openapi.Schema{} + iftypevisitor.OpenapiVisitor(responseSchema).Visit(m.Results[0].Type()) } else { responseSchema.Example = json.RawMessage("null") } @@ -477,115 +497,115 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod) *openapi.Operation { func (g *openapiDoc) makeSwaggerSchema(tpl stdtypes.Type) (schema *openapi.Schema) { schema = &openapi.Schema{} - switch v := tpl.(type) { - case *stdtypes.Pointer: - return g.makeSwaggerSchema(v.Elem()) - case *stdtypes.Interface: - // TODO: not anyOf works in SwaggerUI, so the object type is used to display the field. - schema.Type = "object" - schema.Description = "Can be any value - string, number, boolean, array or object." - schema.Properties = openapi.Properties{} - schema.Example = json.RawMessage("null") - schema.AnyOf = []openapi.Schema{ - {Type: "string", Example: "abc"}, - {Type: "integer", Example: 1}, - {Type: "number", Format: "float", Example: 1.11}, - {Type: "boolean", Example: true}, - {Type: "array"}, - {Type: "object"}, - } - case *stdtypes.Map: - schema.Type = "object" - schema.Properties = openapi.Properties{ - "key": g.makeSwaggerSchema(v.Elem()), - } - case *stdtypes.Slice: - if vv, ok := v.Elem().(*stdtypes.Basic); ok && vv.Kind() == stdtypes.Byte { - schema.Type = "string" - schema.Format = "byte" - schema.Example = "U3dhZ2dlciByb2Nrcw==" - } else { - schema.Type = "array" - schema.Items = g.makeSwaggerSchema(v.Elem()) - } - case *stdtypes.Basic: - switch v.Kind() { - case stdtypes.String: - schema.Type = "string" - schema.Format = "string" - schema.Example = "abc" - case stdtypes.Bool: - schema.Type = "boolean" - schema.Example = true - case stdtypes.Int, - stdtypes.Uint, - stdtypes.Uint8, - stdtypes.Uint16, - stdtypes.Int8, - stdtypes.Int16: - schema.Type = "integer" - schema.Example = 1 - case stdtypes.Uint32, stdtypes.Int32: - schema.Type = "integer" - schema.Format = "int32" - schema.Example = 1 - case stdtypes.Uint64, stdtypes.Int64: - schema.Type = "integer" - schema.Format = "int64" - schema.Example = 1 - case stdtypes.Float32, stdtypes.Float64: - schema.Type = "number" - schema.Format = "float" - schema.Example = 1.11 - } - case *stdtypes.Struct: - schema.Type = "object" - schema.Properties = openapi.Properties{} - - var populateSchema func(st *stdtypes.Struct) - populateSchema = func(st *stdtypes.Struct) { - for i := 0; i < st.NumFields(); i++ { - f := st.Field(i) - if !f.Embedded() { - name := f.Name() - if tags, err := structtag.Parse(st.Tag(i)); err == nil { - if tag, err := tags.Get("json"); err == nil { - name = tag.Value() - } - } - schema.Properties[name] = g.makeSwaggerSchema(f.Type()) - } else { - var st *stdtypes.Struct - if ptr, ok := f.Type().(*stdtypes.Pointer); ok { - st = ptr.Elem().Underlying().(*stdtypes.Struct) - } else { - st = f.Type().Underlying().(*stdtypes.Struct) - } - populateSchema(st) - } - } - } - populateSchema(v) - case *stdtypes.Named: - switch stdtypes.TypeString(v, nil) { - case "encoding/json.RawMessage": - schema.Type = "object" - schema.Properties = openapi.Properties{} - return - case "time.Time": - schema.Type = "string" - schema.Format = "date-time" - schema.Example = "1985-04-02T01:30:00.00Z" - return - case "github.com/pborman/uuid.UUID", - "github.com/google/uuid.UUID": - schema.Type = "string" - schema.Format = "uuid" - schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" - return - } - return g.makeSwaggerSchema(v.Obj().Type().Underlying()) - } + //switch v := tpl.(type) { + //case *stdtypes.Pointer: + // return g.makeSwaggerSchema(v.Elem()) + //case *stdtypes.Interface: + // // TODO: not anyOf works in SwaggerUI, so the object type is used to display the field. + // schema.Type = "object" + // schema.Description = "Can be any value - string, number, boolean, array or object." + // schema.Properties = openapi.Properties{} + // schema.Example = json.RawMessage("null") + // schema.AnyOf = []openapi.Schema{ + // {Type: "string", Example: "abc"}, + // {Type: "integer", Example: 1}, + // {Type: "number", Format: "float", Example: 1.11}, + // {Type: "boolean", Example: true}, + // {Type: "array"}, + // {Type: "object"}, + // } + //case *stdtypes.Map: + // schema.Type = "object" + // schema.Properties = openapi.Properties{ + // "key": g.makeSwaggerSchema(v.Elem()), + // } + //case *stdtypes.Slice: + // if vv, ok := v.Elem().(*stdtypes.Basic); ok && vv.Kind() == stdtypes.Byte { + // schema.Type = "string" + // schema.Format = "byte" + // schema.Example = "U3dhZ2dlciByb2Nrcw==" + // } else { + // schema.Type = "array" + // schema.Items = g.makeSwaggerSchema(v.Elem()) + // } + //case *stdtypes.Basic: + // switch v.Kind() { + // case stdtypes.String: + // schema.Type = "string" + // schema.Format = "string" + // schema.Example = "abc" + // case stdtypes.Bool: + // schema.Type = "boolean" + // schema.Example = true + // case stdtypes.Int, + // stdtypes.Uint, + // stdtypes.Uint8, + // stdtypes.Uint16, + // stdtypes.Int8, + // stdtypes.Int16: + // schema.Type = "integer" + // schema.Example = 1 + // case stdtypes.Uint32, stdtypes.Int32: + // schema.Type = "integer" + // schema.Format = "int32" + // schema.Example = 1 + // case stdtypes.Uint64, stdtypes.Int64: + // schema.Type = "integer" + // schema.Format = "int64" + // schema.Example = 1 + // case stdtypes.Float32, stdtypes.Float64: + // schema.Type = "number" + // schema.Format = "float" + // schema.Example = 1.11 + // } + //case *stdtypes.Struct: + // schema.Type = "object" + // schema.Properties = openapi.Properties{} + // + // var populateSchema func(st *stdtypes.Struct) + // populateSchema = func(st *stdtypes.Struct) { + // for i := 0; i < st.NumFields(); i++ { + // f := st.Field(i) + // if !f.Embedded() { + // name := f.Name() + // if tags, err := structtag.Parse(st.Tag(i)); err == nil { + // if tag, err := tags.Get("json"); err == nil { + // name = tag.Value() + // } + // } + // schema.Properties[name] = g.makeSwaggerSchema(f.Type()) + // } else { + // var st *stdtypes.Struct + // if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + // st = ptr.Elem().Underlying().(*stdtypes.Struct) + // } else { + // st = f.Type().Underlying().(*stdtypes.Struct) + // } + // populateSchema(st) + // } + // } + // } + // populateSchema(v) + //case *stdtypes.Named: + // switch stdtypes.TypeString(v, nil) { + // case "encoding/json.RawMessage": + // schema.Type = "object" + // schema.Properties = openapi.Properties{} + // return + // case "time.Time": + // schema.Type = "string" + // schema.Format = "date-time" + // schema.Example = "1985-04-02T01:30:00.00Z" + // return + // case "github.com/pborman/uuid.UUID", + // "github.com/google/uuid.UUID": + // schema.Type = "string" + // schema.Format = "uuid" + // schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" + // return + // } + // return g.makeSwaggerSchema(v.Obj().Type().Underlying()) + //} return } diff --git a/internal/interface/typevisitor/js_def_visitor.go b/internal/interface/typevisitor/js_def_visitor.go new file mode 100644 index 00000000..cece541c --- /dev/null +++ b/internal/interface/typevisitor/js_def_visitor.go @@ -0,0 +1,118 @@ +package typevisitor + +import ( + stdtypes "go/types" + + "github.com/fatih/structtag" + + "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" + "github.com/swipe-io/swipe/v2/internal/writer" +) + +type jsTypeDefVisitor struct { + buf *writer.BaseWriter + jst typevisitor.TypeVisitor +} + +func (v *jsTypeDefVisitor) writeStruct(st *stdtypes.Struct, nested int) { + var j int + for i := 0; i < st.NumFields(); i++ { + f := st.Field(i) + if f.Embedded() { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + st = f.Type().Underlying().(*stdtypes.Struct) + } + v.writeStruct(st, nested) + v.buf.W(",\n") + continue + } + var ( + skip bool + name = f.Name() + ) + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if jsonTag, err := tags.Get("json"); err == nil { + if jsonTag.Name == "-" { + skip = true + } else { + name = jsonTag.Name + } + } + } + if skip { + continue + } + + v.buf.W("* @property {") + typevisitor.ConvertType(f.Type()).Accept(v, nested+1) + v.buf.W("} ") + v.buf.W("%s\n", name) + + j++ + } +} + +func (v *jsTypeDefVisitor) Visit(t stdtypes.Type) { + typevisitor.ConvertType(t).Accept(v, 0) +} + +func (v *jsTypeDefVisitor) VisitPointer(t *stdtypes.Pointer, nested int) { + v.jst.VisitPointer(t, nested) +} + +func (v *jsTypeDefVisitor) VisitArray(t *stdtypes.Array, nested int) { + v.jst.VisitArray(t, nested) +} + +func (v *jsTypeDefVisitor) VisitSlice(t *stdtypes.Slice, nested int) { + v.jst.VisitSlice(t, nested) +} + +func (v *jsTypeDefVisitor) VisitMap(t *stdtypes.Map, nested int) { + v.jst.VisitMap(t, nested) +} + +func (v *jsTypeDefVisitor) VisitBasic(t *stdtypes.Basic, nested int) { + v.jst.VisitBasic(t, nested) +} + +func (v *jsTypeDefVisitor) VisitInterface(t *stdtypes.Interface, nested int) { + v.jst.VisitInterface(t, nested) +} + +func (v *jsTypeDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { + switch stdtypes.TypeString(t.Obj().Type(), nil) { + case "encoding/json.RawMessage": + v.buf.W("*") + return + case "github.com/pborman/uuid.UUID", + "github.com/google/uuid.UUID", + "time.Time": + v.buf.W("string") + return + } + if nested == 0 { + if st, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + v.buf.W("/**\n") + v.buf.W("* @typedef {Object} %s\n", t.Obj().Name()) + v.writeStruct(st, nested) + v.buf.W("**/\n\n") + } + } else { + v.buf.W(t.Obj().Name()) + } +} + +func (v *jsTypeDefVisitor) VisitStruct(t *stdtypes.Struct, nested int) { + v.writeStruct(t, nested) +} + +func JSTypeDefVisitor(buf *writer.BaseWriter) typevisitor.TypeVisitor { + return &jsTypeDefVisitor{ + buf: buf, + jst: JSTypeVisitor(buf), + } +} diff --git a/internal/interface/typevisitor/js_visitor.go b/internal/interface/typevisitor/js_visitor.go new file mode 100644 index 00000000..b2d2d38c --- /dev/null +++ b/internal/interface/typevisitor/js_visitor.go @@ -0,0 +1,146 @@ +package typevisitor + +import ( + stdtypes "go/types" + "strings" + + "github.com/fatih/structtag" + + "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" + "github.com/swipe-io/swipe/v2/internal/writer" +) + +type jsTypeVisitor struct { + buf *writer.BaseWriter +} + +func (v *jsTypeVisitor) w(format string, a ...interface{}) { + v.buf.W(format, a...) + +} + +func (v *jsTypeVisitor) Out() string { + s := v.buf.String() + v.buf.Reset() + return s +} + +func (v *jsTypeVisitor) VisitPointer(t *stdtypes.Pointer, nested int) { + typevisitor.ConvertType(t.Elem()).Accept(v, nested) +} + +func (v *jsTypeVisitor) VisitArray(t *stdtypes.Array, nested int) { + v.w("Array<") + typevisitor.ConvertType(t.Elem()).Accept(v, nested) + v.w(">") +} + +func (v *jsTypeVisitor) VisitSlice(t *stdtypes.Slice, nested int) { + v.w("Array<") + typevisitor.ConvertType(t.Elem()).Accept(v, nested) + v.w(">") +} + +func (v *jsTypeVisitor) VisitMap(t *stdtypes.Map, nested int) { + v.w("Object") +} + +func (v *jsTypeVisitor) VisitNamed(t *stdtypes.Named, nested int) { + switch stdtypes.TypeString(t.Obj().Type(), nil) { + default: + v.w(t.Obj().Name()) + case "encoding/json.RawMessage": + v.w("*") + return + case "github.com/pborman/uuid.UUID", + "github.com/google/uuid.UUID", + "time.Time": + v.w("string") + return + } +} + +func (v *jsTypeVisitor) writeStruct(st *stdtypes.Struct, nested int) { + var j int + for i := 0; i < st.NumFields(); i++ { + f := st.Field(i) + if f.Embedded() { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + st = f.Type().Underlying().(*stdtypes.Struct) + } + v.writeStruct(st, nested) + v.w(",\n") + continue + } + var ( + skip bool + name = f.Name() + ) + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if jsonTag, err := tags.Get("json"); err == nil { + if jsonTag.Name == "-" { + skip = true + } else { + name = jsonTag.Name + } + } + } + if skip { + continue + } + if j > 0 { + v.w(",\n") + } + v.w("*%s", strings.Repeat(" ", nested)) + v.w(" %s:", name) + typevisitor.ConvertType(f.Type()).Accept(v, nested+1) + j++ + } +} + +func (v *jsTypeVisitor) VisitStruct(t *stdtypes.Struct, nested int) { + v.w("{\n") + v.writeStruct(t, nested) + v.w("\n* }") +} + +func (v *jsTypeVisitor) VisitBasic(t *stdtypes.Basic, nested int) { + switch t.Kind() { + default: + v.w("string") + case stdtypes.Bool: + v.w("boolean") + case stdtypes.Float32, + stdtypes.Float64, + stdtypes.Int, + stdtypes.Int8, + stdtypes.Int16, + stdtypes.Int32, + stdtypes.Int64, + stdtypes.Uint, + stdtypes.Uint8, + stdtypes.Uint16, + stdtypes.Uint32, + stdtypes.Uint64: + v.w("number") + } +} + +func (v *jsTypeVisitor) VisitInterface(t *stdtypes.Interface, nested int) { + v.w("object") +} + +func (v *jsTypeVisitor) Visit(t stdtypes.Type) { + typevisitor.ConvertType(t).Accept(v, 0) +} + +func JSTypeVisitor(buf *writer.BaseWriter) typevisitor.TypeVisitor { + return &jsTypeVisitor{ + buf: buf, + } +} diff --git a/internal/interface/typevisitor/named_collector.go b/internal/interface/typevisitor/named_collector.go new file mode 100644 index 00000000..46a54526 --- /dev/null +++ b/internal/interface/typevisitor/named_collector.go @@ -0,0 +1,83 @@ +package typevisitor + +import ( + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" + + "golang.org/x/tools/go/types/typeutil" +) + +type namedTypeCollector struct { + typeDefs []*stdtypes.Named + existsTypeDef map[uint32]struct{} + hasher typeutil.Hasher +} + +func (v *namedTypeCollector) Visit(t stdtypes.Type) { + typevisitor.ConvertType(t).Accept(v, 0) +} + +func (v *namedTypeCollector) VisitPointer(t *stdtypes.Pointer, nested int) { + typevisitor.ConvertType(t.Elem()).Accept(v, nested) +} + +func (v *namedTypeCollector) VisitArray(t *stdtypes.Array, nested int) { +} + +func (v *namedTypeCollector) VisitSlice(t *stdtypes.Slice, nested int) { +} + +func (v *namedTypeCollector) VisitMap(t *stdtypes.Map, nested int) { +} + +func (v *namedTypeCollector) VisitNamed(t *stdtypes.Named, nested int) { + switch stdtypes.TypeString(t.Obj().Type(), nil) { + case + "encoding/json.RawMessage", + "github.com/pborman/uuid.UUID", + "github.com/google/uuid.UUID", + "time.Time": + return + } + if !v.exists(t) { + v.add(t) + v.Visit(t.Underlying()) + } +} + +func (v *namedTypeCollector) VisitStruct(t *stdtypes.Struct, nested int) { + for i := 0; i < t.NumFields(); i++ { + p := t.Field(i) + typevisitor.ConvertType(p.Type()).Accept(v, nested+1) + } +} + +func (v *namedTypeCollector) VisitBasic(t *stdtypes.Basic, nested int) { +} + +func (v *namedTypeCollector) VisitInterface(t *stdtypes.Interface, nested int) { +} + +func (v *namedTypeCollector) TypeDefs() []*stdtypes.Named { + return v.typeDefs +} + +func (v *namedTypeCollector) exists(t *stdtypes.Named) bool { + h := v.hasher.Hash(t) + _, ok := v.existsTypeDef[h] + return ok +} + +func (v *namedTypeCollector) add(t *stdtypes.Named) { + h := v.hasher.Hash(t) + v.typeDefs = append(v.typeDefs, t) + v.existsTypeDef[h] = struct{}{} +} + +func NewNamedTypeCollector() typevisitor.NamedTypeCollector { + return &namedTypeCollector{ + existsTypeDef: map[uint32]struct{}{}, + hasher: typeutil.MakeHasher(), + } +} diff --git a/internal/interface/typevisitor/openapi_def_visitor.go b/internal/interface/typevisitor/openapi_def_visitor.go new file mode 100644 index 00000000..0db05307 --- /dev/null +++ b/internal/interface/typevisitor/openapi_def_visitor.go @@ -0,0 +1,111 @@ +package typevisitor + +import ( + stdtypes "go/types" + + "github.com/fatih/structtag" + + "github.com/swipe-io/swipe/v2/internal/openapi" + "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" +) + +type openapiDefVisitor struct { + schema *openapi.Schema + ov typevisitor.TypeVisitor +} + +func (v *openapiDefVisitor) populateSchema(st *stdtypes.Struct) { + for i := 0; i < st.NumFields(); i++ { + f := st.Field(i) + if !f.Embedded() { + name := f.Name() + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if tag, err := tags.Get("json"); err == nil { + name = tag.Value() + } + } + if name == "-" { + continue + } + v.schema.Properties[name] = &openapi.Schema{} + OpenapiVisitor(v.schema.Properties[name]).Visit(f.Type()) + } else { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + st = f.Type().Underlying().(*stdtypes.Struct) + } + v.populateSchema(st) + } + } +} + +func (v *openapiDefVisitor) Visit(t stdtypes.Type) { + typevisitor.ConvertType(t).Accept(v, 0) +} + +func (v *openapiDefVisitor) VisitPointer(t *stdtypes.Pointer, nested int) { + v.ov.VisitPointer(t, nested) +} + +func (v *openapiDefVisitor) VisitArray(t *stdtypes.Array, nested int) { + v.ov.VisitArray(t, nested) +} + +func (v *openapiDefVisitor) VisitSlice(t *stdtypes.Slice, nested int) { + v.VisitSlice(t, nested) +} + +func (v *openapiDefVisitor) VisitMap(t *stdtypes.Map, nested int) { + v.ov.VisitMap(t, nested) +} + +func (v *openapiDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { + switch stdtypes.TypeString(t, nil) { + case "encoding/json.RawMessage": + v.schema.Type = "object" + v.schema.Properties = openapi.Properties{} + return + case "time.Time": + v.schema.Type = "string" + v.schema.Format = "date-time" + v.schema.Example = "1985-04-02T01:30:00.00Z" + return + case "github.com/pborman/uuid.UUID", + "github.com/google/uuid.UUID": + v.schema.Type = "string" + v.schema.Format = "uuid" + v.schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" + return + } + + if nested == 0 { + if st, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + v.schema.Properties = openapi.Properties{} + v.populateSchema(st) + } + } else { + v.schema.Type = "object" + v.schema.Ref = "#/components/schemas/" + t.Obj().Name() + } +} + +func (v *openapiDefVisitor) VisitStruct(t *stdtypes.Struct, nested int) { + +} + +func (v *openapiDefVisitor) VisitBasic(t *stdtypes.Basic, nested int) { + v.ov.VisitBasic(t, nested) +} + +func (v *openapiDefVisitor) VisitInterface(t *stdtypes.Interface, nested int) { + v.ov.VisitInterface(t, nested) +} + +func OpenapiDefVisitor(schema *openapi.Schema) typevisitor.TypeVisitor { + return &openapiDefVisitor{ + schema: schema, + ov: OpenapiVisitor(schema), + } +} diff --git a/internal/interface/typevisitor/openapi_visitor.go b/internal/interface/typevisitor/openapi_visitor.go new file mode 100644 index 00000000..47d42b6c --- /dev/null +++ b/internal/interface/typevisitor/openapi_visitor.go @@ -0,0 +1,156 @@ +package typevisitor + +import ( + "encoding/json" + stdtypes "go/types" + + "github.com/fatih/structtag" + + "github.com/swipe-io/swipe/v2/internal/openapi" + + "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" +) + +type openapiVisitor struct { + schema *openapi.Schema +} + +func (v *openapiVisitor) populateSchema(st *stdtypes.Struct) { + for i := 0; i < st.NumFields(); i++ { + f := st.Field(i) + if !f.Embedded() { + name := f.Name() + if tags, err := structtag.Parse(st.Tag(i)); err == nil { + if tag, err := tags.Get("json"); err == nil { + name = tag.Value() + } + } + if name == "-" { + continue + } + v.schema.Properties[name] = &openapi.Schema{} + OpenapiVisitor(v.schema.Properties[name]).Visit(f.Type()) + } else { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + st = f.Type().Underlying().(*stdtypes.Struct) + } + v.populateSchema(st) + } + } +} + +func (v *openapiVisitor) Visit(t stdtypes.Type) { + typevisitor.ConvertType(t).Accept(v, 0) +} + +func (v *openapiVisitor) VisitPointer(t *stdtypes.Pointer, nested int) { + typevisitor.ConvertType(t.Elem()).Accept(v, nested) +} + +func (v *openapiVisitor) VisitArray(t *stdtypes.Array, nested int) { + v.schema.Type = "array" + v.schema.Items = &openapi.Schema{} + OpenapiVisitor(v.schema.Items).Visit(t.Elem()) +} + +func (v *openapiVisitor) VisitSlice(t *stdtypes.Slice, nested int) { + if vv, ok := t.Elem().(*stdtypes.Basic); ok && vv.Kind() == stdtypes.Byte { + v.schema.Type = "string" + v.schema.Format = "byte" + v.schema.Example = "U3dhZ2dlciByb2Nrcw==" + } else { + v.schema.Type = "array" + v.schema.Items = &openapi.Schema{} + OpenapiVisitor(v.schema.Items).Visit(t.Elem()) + } +} + +func (v *openapiVisitor) VisitMap(t *stdtypes.Map, nested int) { + v.schema.Properties = openapi.Properties{"key": &openapi.Schema{}} + OpenapiVisitor(v.schema.Properties["key"]).Visit(t.Elem()) +} + +func (v *openapiVisitor) VisitNamed(t *stdtypes.Named, nested int) { + switch stdtypes.TypeString(t, nil) { + default: + v.schema.Type = "object" + v.schema.Ref = "#/components/schemas/" + t.Obj().Name() + case "encoding/json.RawMessage": + v.schema.Type = "object" + v.schema.Properties = openapi.Properties{} + return + case "time.Time": + v.schema.Type = "string" + v.schema.Format = "date-time" + v.schema.Example = "1985-04-02T01:30:00.00Z" + return + case "github.com/pborman/uuid.UUID", + "github.com/google/uuid.UUID": + v.schema.Type = "string" + v.schema.Format = "uuid" + v.schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" + return + } +} + +func (v *openapiVisitor) VisitStruct(t *stdtypes.Struct, nested int) { + v.schema.Type = "object" + v.schema.Properties = openapi.Properties{} + v.populateSchema(t) +} + +func (v *openapiVisitor) VisitBasic(t *stdtypes.Basic, nested int) { + switch t.Kind() { + default: + v.schema.Type = "string" + v.schema.Format = "string" + v.schema.Example = "abc" + case stdtypes.Bool: + v.schema.Type = "boolean" + v.schema.Example = true + case stdtypes.Int, + stdtypes.Uint, + stdtypes.Uint8, + stdtypes.Uint16, + stdtypes.Int8, + stdtypes.Int16: + v.schema.Type = "integer" + v.schema.Example = 1 + case stdtypes.Uint32, stdtypes.Int32: + v.schema.Type = "integer" + v.schema.Format = "int32" + v.schema.Example = 1 + case stdtypes.Uint64, stdtypes.Int64: + v.schema.Type = "integer" + v.schema.Format = "int64" + v.schema.Example = 1 + case stdtypes.Float32, stdtypes.Float64: + v.schema.Type = "number" + v.schema.Format = "float" + v.schema.Example = 1.11 + } +} + +func (v *openapiVisitor) VisitInterface(t *stdtypes.Interface, nested int) { + v.schema.Type = "object" + v.schema.Description = "Can be any value - string, number, boolean, array or object." + v.schema.Properties = openapi.Properties{} + v.schema.Example = json.RawMessage("null") + v.schema.AnyOf = []openapi.Schema{ + {Type: "string", Example: "abc"}, + {Type: "integer", Example: 1}, + {Type: "number", Format: "float", Example: 1.11}, + {Type: "boolean", Example: true}, + {Type: "array"}, + {Type: "object"}, + } +} + +func OpenapiVisitor(schema *openapi.Schema) typevisitor.TypeVisitor { + return &openapiVisitor{ + schema: schema, + } +} diff --git a/internal/usecase/typevisitor/type_visitor.go b/internal/usecase/typevisitor/type_visitor.go new file mode 100644 index 00000000..3db4a4ed --- /dev/null +++ b/internal/usecase/typevisitor/type_visitor.go @@ -0,0 +1,128 @@ +package typevisitor + +import ( + stdtypes "go/types" +) + +type Type interface { + Accept(visitor TypeVisitor, nested int) +} + +type pointerWrapper struct { + *stdtypes.Pointer +} + +func (p *pointerWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitPointer(p.Pointer, nested) +} + +type arrayWrapper struct { + *stdtypes.Array +} + +func (a *arrayWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitArray(a.Array, nested) +} + +type sliceWrapper struct { + *stdtypes.Slice +} + +func (s *sliceWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitSlice(s.Slice, nested) +} + +type mapWrapper struct { + *stdtypes.Map +} + +func (m *mapWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitMap(m.Map, nested) +} + +type namedWrapper struct { + *stdtypes.Named +} + +func (n *namedWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitNamed(n.Named, nested) +} + +type structWrapper struct { + *stdtypes.Struct +} + +func (st *structWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitStruct(st.Struct, nested) +} + +type basicWrapper struct { + *stdtypes.Basic +} + +func (b *basicWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitBasic(b.Basic, nested) +} + +type interfaceWrapper struct { + *stdtypes.Interface +} + +func (i *interfaceWrapper) Accept(visitor TypeVisitor, nested int) { + visitor.VisitInterface(i.Interface, nested) +} + +func ConvertType(t stdtypes.Type) Type { + switch v := t.(type) { + case *stdtypes.Pointer: + return &pointerWrapper{ + Pointer: v, + } + case *stdtypes.Array: + return &arrayWrapper{ + Array: v, + } + case *stdtypes.Slice: + return &sliceWrapper{ + Slice: v, + } + case *stdtypes.Map: + return &mapWrapper{ + Map: v, + } + case *stdtypes.Named: + return &namedWrapper{ + Named: v, + } + case *stdtypes.Struct: + return &structWrapper{ + Struct: v, + } + case *stdtypes.Basic: + return &basicWrapper{ + Basic: v, + } + case *stdtypes.Interface: + return &interfaceWrapper{ + Interface: v, + } + } + panic("unexpected type:" + stdtypes.TypeString(t, nil)) +} + +type TypeVisitor interface { + Visit(t stdtypes.Type) + VisitPointer(t *stdtypes.Pointer, nested int) + VisitArray(t *stdtypes.Array, nested int) + VisitSlice(t *stdtypes.Slice, nested int) + VisitMap(t *stdtypes.Map, nested int) + VisitNamed(t *stdtypes.Named, nested int) + VisitStruct(t *stdtypes.Struct, nested int) + VisitBasic(t *stdtypes.Basic, nested int) + VisitInterface(t *stdtypes.Interface, nested int) +} + +type NamedTypeCollector interface { + TypeVisitor + TypeDefs() []*stdtypes.Named +} From 06fe38ab9b16a55c772b163eaa40342820a46faa Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 28 Sep 2020 14:02:00 +0300 Subject: [PATCH 019/293] chore(release): 2.0.0-alpha.4 --- CHANGELOG.md | 35 ++++++++++++++++++++++------------- swipe.go | 2 +- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6951d7c..f0585479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## [Unreleased] + +## [v2.0.0-alpha.4] - 2020-09-28 +### Bug Fixes +- Incorrect project generation for files with $struct in the template file name. + +### Features +- Added the ability to generate circular structures for openapi and JavaScript JSON RPC client. +- Rename command crud-service to gen-tpl. + + ## [v2.0.0-alpha.3] - 2020-09-16 ### Bug Fixes @@ -197,31 +207,29 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. -- Added generate enum constants for JSON RPC client. ### Features - Added command for generate CRUD service structure. - -## [v1.24.1] - 2020-07-28 + +## [v1.24.2] - 2020-07-28 ## [v1.24.4] - 2020-07-28 ### Bug Fixes - Incorrect generate enum name for markdown docs. -- Change enums JSON RPC client generate format. - -## [v1.24.2] - 2020-07-28 - ## [v1.24.3] - 2020-07-28 ### Bug Fixes - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. + + +## [v1.24.1] - 2020-07-28 ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -522,7 +530,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.3...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...HEAD +[v2.0.0-alpha.4]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.3...v2.0.0-alpha.4 [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 @@ -549,11 +558,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.4 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/swipe.go b/swipe.go index f8121af1..37006e64 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.3" +const Version = "v2.0.0-alpha.4" // A Option is an option for a Swipe. type Option string From 9b51e821f81aba18bb95b3348c7ea8b773d51288 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 28 Sep 2020 14:08:12 +0300 Subject: [PATCH 020/293] test: Fixtures update. --- fixtures/Service/app/client_jsonrpc_gen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fixtures/Service/app/client_jsonrpc_gen.js b/fixtures/Service/app/client_jsonrpc_gen.js index 1059ccb8..417eafd6 100755 --- a/fixtures/Service/app/client_jsonrpc_gen.js +++ b/fixtures/Service/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.3. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.4. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { From c7d2ea600e4083733ca7a355642d8529169283f8 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 28 Sep 2020 14:20:14 +0300 Subject: [PATCH 021/293] test: Added prettier and check result errors. --- .travis.yml | 4 ++++ gen_test.go | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a0bb5b44..f4f47477 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,5 +4,9 @@ go: - 1.13.7 - tip +node_js: + - tip + script: + - npm install prettier -g - make check diff --git a/gen_test.go b/gen_test.go index 23140d32..9aa2fb69 100644 --- a/gen_test.go +++ b/gen_test.go @@ -62,8 +62,10 @@ func TestSwipe(t *testing.T) { t.Error(e) } } - for _, result := range results { + if len(result.Errs) > 0 { + t.Fatalf("result errors: %v", result.Errs) + } if *record { if err := ioutil.WriteFile(result.OutputPath, result.Content, 0755); err != nil { t.Fatal(err) From dd85da7196608267b5551c8eea4ff199e621f562 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 28 Sep 2020 16:51:57 +0300 Subject: [PATCH 022/293] ci: Added show prettier version. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f4f47477..29d3bed0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,4 +9,5 @@ node_js: script: - npm install prettier -g + - prettier -v - make check From 9414deb9b3ffe88457c13700ba9fa0085d0518aa Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:22:43 +0300 Subject: [PATCH 023/293] test: Update fixtures. --- fixtures/Service/app/jsonrpc_doc_gen.md | 6 ++++-- fixtures/Service/app/openapi_jsonrpc_gen.json | 2 +- fixtures/Service/app/service.go | 13 +++++++++---- fixtures/Service/app/swipe.go | 10 ++++++++++ 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/fixtures/Service/app/jsonrpc_doc_gen.md b/fixtures/Service/app/jsonrpc_doc_gen.md index 9ce57f5c..6724befb 100755 --- a/fixtures/Service/app/jsonrpc_doc_gen.md +++ b/fixtures/Service/app/jsonrpc_doc_gen.md @@ -12,7 +12,7 @@ TestMethod2 -### Create(name, data) ⇒void +### Create(newData, name, data) ⇒void new item of item. @@ -26,6 +26,7 @@ | Param | Type | Description | |------|------|------| +|newData|Data|| |name|string|| |data|Array.<number>|| ### Delete(id) ⇒ @@ -125,7 +126,7 @@ New line comment. | Field | Type | Description | |------|------|------| |name|string|| -|recurses|Array.<Recurse>|| +|recurse|Array.<Recurse>|| ### User | Field | Type | Description | @@ -135,6 +136,7 @@ New line comment. |password|string|| |point|GeoJSON|| |last_seen|string|| +|data|Data|| |photo|Array.<number>|| |user|User|| |profile|Profile|| diff --git a/fixtures/Service/app/openapi_jsonrpc_gen.json b/fixtures/Service/app/openapi_jsonrpc_gen.json index cea8a8a9..7580e55d 100755 --- a/fixtures/Service/app/openapi_jsonrpc_gen.json +++ b/fixtures/Service/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"c":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurses":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"c":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}}},"components":{"schemas":{"Data":{},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":403},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":401},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/Service/app/service.go b/fixtures/Service/app/service.go index f0691c15..8e641fa1 100644 --- a/fixtures/Service/app/service.go +++ b/fixtures/Service/app/service.go @@ -45,6 +45,10 @@ func (ErrForbidden) ErrorCode() int { return -32002 } +type Data map[string]interface{} + +type AliasData = Data + type GeoJSON struct { Type string `json:"-"` Coordinates []float64 `json:"coordinates200"` @@ -55,8 +59,8 @@ type Profile struct { } type Recurse struct { - Name string `json:"name"` - Recurses []*Recurse `json:"recurses"` + Name string `json:"name"` + Recurse []*Recurse `json:"recurse"` } type User struct { @@ -65,6 +69,7 @@ type User struct { Password string `json:"password"` Point GeoJSON `json:"point"` LastSeen time.Time `json:"last_seen"` + Data AliasData `json:"data"` Photo []byte `json:"photo"` User *User `json:"user"` Profile *Profile `json:"profile"` @@ -75,7 +80,7 @@ type User struct { type Interface interface { // Create new item of item. - Create(ctx context.Context, name string, data []byte) (err error) + Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) // Get item. Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (data User, err error) // GetAll more comment and more and more comment and more and more comment and more. @@ -93,7 +98,7 @@ func NewService() Interface { return &service{} } -func (s *service) Create(ctx context.Context, name string, data []byte) (err error) { +func (s *service) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { return &ErrUnauthorized{} } diff --git a/fixtures/Service/app/swipe.go b/fixtures/Service/app/swipe.go index 2ffb9d47..2558bd1f 100644 --- a/fixtures/Service/app/swipe.go +++ b/fixtures/Service/app/swipe.go @@ -14,6 +14,16 @@ func Swipe() { swipe.Openapi( swipe.OpenapiOutput("./"), ), + + swipe.MethodOptions(Interface.Create, + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + ), + + swipe.MethodDefaultOptions( + swipe.Logging(false), + swipe.Instrumenting(true), + ), ), ), ) From dcf7e83ef8bf12104dea550e283f40482c4103a8 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:23:00 +0300 Subject: [PATCH 024/293] test: Update fixtures. --- fixtures/Service/app/client_jsonrpc_gen.js | 25 ++++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/fixtures/Service/app/client_jsonrpc_gen.js b/fixtures/Service/app/client_jsonrpc_gen.js index 417eafd6..4bcbb8d0 100755 --- a/fixtures/Service/app/client_jsonrpc_gen.js +++ b/fixtures/Service/app/client_jsonrpc_gen.js @@ -67,6 +67,11 @@ class JSONRPCClient { params: params }; } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ __scheduleRequest(method, params) { const p = new Promise((resolve, reject) => { const request = this.makeJSONRPCRequest( @@ -97,6 +102,7 @@ class JSONRPCClient { * @property {string} password * @property {GeoJSON} point * @property {string} last_seen + * @property {Object} data * @property {Array} photo * @property {User} user * @property {Profile} profile @@ -118,18 +124,23 @@ class JSONRPCClient { /** * @typedef {Object} Recurse * @property {string} name - * @property {Array} recurses + * @property {Array} recurse **/ export default class extends JSONRPCClient { /** * Create new item of item. * + * @param {Object} newData * @param {string} name * @param {Array} data **/ - create(name, data) { - return this.__scheduleRequest("create", { name: name, data: data }); + create(newData, name, data) { + return this.__scheduleRequest("create", { + newData: newData, + name: name, + data: data + }); } /** * @param {number} id @@ -199,21 +210,21 @@ export default class extends JSONRPCClient { } export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); + super(message, "ErrUnauthorizedError", 401, data); } } export class ErrForbiddenError extends JSONRPCError { constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); + super(message, "ErrForbiddenError", 403, data); } } function convertError(e) { switch (e.code) { default: return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: + case 401: return new ErrUnauthorizedError(e.message, e.data); - case -32002: + case 403: return new ErrForbiddenError(e.message, e.data); } } From fc255a0c4e33056c0fbfdceec2c6a95835525c5e Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:25:44 +0300 Subject: [PATCH 025/293] test: Added check if not generate file. --- gen_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gen_test.go b/gen_test.go index 9aa2fb69..6c588a48 100644 --- a/gen_test.go +++ b/gen_test.go @@ -77,9 +77,15 @@ func TestSwipe(t *testing.T) { diff := cmp.Diff(strings.Split(actual, "\n"), strings.Split(expected, "\n")) t.Fatalf("swipe output differs from expected file.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", actual, expected, diff) } + delete(test.expectedOutput, result.OutputPath) } } } + if !*record && len(test.expectedOutput) > 0 { + for _, expectedContent := range test.expectedOutput { + t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) + } + } }) } } From 2fd1d2ecaa9cc46357ee83c89a03d51fb92f2138 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:26:33 +0300 Subject: [PATCH 026/293] refactor: Wrap error. --- internal/format/fomrat.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/format/fomrat.go b/internal/format/fomrat.go index e39f93b5..5c18bfd2 100644 --- a/internal/format/fomrat.go +++ b/internal/format/fomrat.go @@ -1,6 +1,7 @@ package format import ( + "fmt" "go/format" "os/exec" ) @@ -23,7 +24,7 @@ func Source(src []byte) ([]byte, error) { }() out, err := cmd.Output() if err != nil { - return nil, err + return nil, fmt.Errorf("error: %w", err) } return out, nil } From a0208cf4c06f91d46627d1284c2b7e4b1e5e4800 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:28:38 +0300 Subject: [PATCH 027/293] refactor: For JS frame, added show source content if have error. --- internal/interface/frame/js_frame.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/interface/frame/js_frame.go b/internal/interface/frame/js_frame.go index cf0bd1be..a6aef91b 100644 --- a/internal/interface/frame/js_frame.go +++ b/internal/interface/frame/js_frame.go @@ -2,6 +2,7 @@ package frame import ( "bytes" + "fmt" "os/exec" "github.com/swipe-io/swipe/v2/internal/usecase/frame" @@ -15,7 +16,6 @@ func (f *jsFrame) Frame(data []byte) ([]byte, error) { buf := new(bytes.Buffer) buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") buf.Write(data) - cmd := exec.Command("prettier", "--stdin-filepath", "prettier.js") stdin, err := cmd.StdinPipe() if err != nil { @@ -27,7 +27,7 @@ func (f *jsFrame) Frame(data []byte) ([]byte, error) { }() out, err := cmd.CombinedOutput() if err != nil { - return nil, err + return nil, fmt.Errorf("error: %w\n ***\n%s\n***\n\n***%s***\n\n", err, string(out), string(data)) } return out, nil } From e71a280a070c44cd54722697cc9bc3e772ca72c1 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:29:12 +0300 Subject: [PATCH 028/293] refactor: For GO frame, added show source content if have error and use internal format. --- internal/interface/frame/golang_frame.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/internal/interface/frame/golang_frame.go b/internal/interface/frame/golang_frame.go index 9aeb5b72..88299deb 100644 --- a/internal/interface/frame/golang_frame.go +++ b/internal/interface/frame/golang_frame.go @@ -3,10 +3,9 @@ package frame import ( "bytes" "fmt" - "go/format" + "github.com/swipe-io/swipe/v2/internal/format" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/usecase/frame" ) @@ -36,10 +35,10 @@ func (f *golangFrame) Frame(data []byte) ([]byte, error) { goSrc := buf.Bytes() fmtSrc, err := format.Source(goSrc) - if err == nil { - goSrc = fmtSrc + if err != nil { + return nil, fmt.Errorf("error: %w\n ***\n%s\n***\n\n", err, string(goSrc)) } - return goSrc, err + return fmtSrc, nil } func NewGolangFrame(importer *importer.Importer, version, pkgName string) frame.Frame { From 1e9cf076fb8c2d5f663d448c4f8609cfe84aab0a Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:31:01 +0300 Subject: [PATCH 029/293] refactor: Rename field. --- internal/interface/generator/http_transport.go | 7 +++++-- internal/interface/generator/openapi.go | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index 2c39bcb5..80399a02 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -19,6 +19,7 @@ type httpTransport struct { serviceMethods []model.ServiceMethod transport model.TransportOption i *importer.Importer + errors map[uint32]*model.HTTPError } func (g *httpTransport) Prepare(ctx context.Context) error { @@ -80,12 +81,12 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("switch code {\n") g.W("default:\nerr = &httpError{code: code}\n") var errorKeys []uint32 - for key := range g.transport.Errors { + for key := range g.errors { errorKeys = append(errorKeys, key) } sortkeys.Uint32s(errorKeys) for _, key := range errorKeys { - e := g.transport.Errors[key] + e := g.errors[key] g.W("case %d:\n", e.Code) pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) if pkgName != "" { @@ -205,10 +206,12 @@ func NewHttpTransport( serviceID string, serviceMethods []model.ServiceMethod, transport model.TransportOption, + errors map[uint32]*model.HTTPError, ) generator.Generator { return &httpTransport{ serviceID: serviceID, serviceMethods: serviceMethods, transport: transport, + errors: errors, } } diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 2ffafe8c..ffecd297 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -174,6 +174,7 @@ type openapiDoc struct { transport model.TransportOption workDir string outputDir string + errors map[uint32]*model.HTTPError } func (g *openapiDoc) Prepare(ctx context.Context) error { @@ -205,7 +206,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { swg.Components.Schemas["Error"] = getOpenapiRestErrorSchema() } - for _, ei := range g.transport.Errors { + for _, ei := range g.errors { var s *openapi.Schema if g.transport.JsonRPC.Enable { s = &openapi.Schema{ @@ -713,10 +714,12 @@ func NewOpenapi( serviceMethods []model.ServiceMethod, transport model.TransportOption, workDir string, + errors map[uint32]*model.HTTPError, ) generator.Generator { return &openapiDoc{ serviceMethods: serviceMethods, transport: transport, workDir: workDir, + errors: errors, } } From b3d31cb94d57d81d406edbe6b9a2a854d8bec17d Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:33:54 +0300 Subject: [PATCH 030/293] fix: Generate js type for alias and type definitions. --- internal/interface/typevisitor/js_def_visitor.go | 8 ++++++-- internal/interface/typevisitor/js_visitor.go | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/interface/typevisitor/js_def_visitor.go b/internal/interface/typevisitor/js_def_visitor.go index cece541c..34a05e32 100644 --- a/internal/interface/typevisitor/js_def_visitor.go +++ b/internal/interface/typevisitor/js_def_visitor.go @@ -26,7 +26,7 @@ func (v *jsTypeDefVisitor) writeStruct(st *stdtypes.Struct, nested int) { st = f.Type().Underlying().(*stdtypes.Struct) } v.writeStruct(st, nested) - v.buf.W(",\n") + v.buf.W("\n") continue } var ( @@ -102,7 +102,11 @@ func (v *jsTypeDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { v.buf.W("**/\n\n") } } else { - v.buf.W(t.Obj().Name()) + if _, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + v.buf.W(t.Obj().Name()) + } else { + typevisitor.ConvertType(t.Obj().Type().Underlying()).Accept(v, nested+1) + } } } diff --git a/internal/interface/typevisitor/js_visitor.go b/internal/interface/typevisitor/js_visitor.go index b2d2d38c..d5235de5 100644 --- a/internal/interface/typevisitor/js_visitor.go +++ b/internal/interface/typevisitor/js_visitor.go @@ -50,7 +50,11 @@ func (v *jsTypeVisitor) VisitMap(t *stdtypes.Map, nested int) { func (v *jsTypeVisitor) VisitNamed(t *stdtypes.Named, nested int) { switch stdtypes.TypeString(t.Obj().Type(), nil) { default: - v.w(t.Obj().Name()) + if _, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + v.w(t.Obj().Name()) + } else { + typevisitor.ConvertType(t.Obj().Type().Underlying()).Accept(v, nested+1) + } case "encoding/json.RawMessage": v.w("*") return @@ -94,7 +98,7 @@ func (v *jsTypeVisitor) writeStruct(st *stdtypes.Struct, nested int) { continue } if j > 0 { - v.w(",\n") + v.w("\n") } v.w("*%s", strings.Repeat(" ", nested)) v.w(" %s:", name) From aff65a75c637be86b7fab573a37573cf714f551d Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:37:15 +0300 Subject: [PATCH 031/293] feat: Logging and Instrumenting moved to method options, added LoggingParams option allowing to enable or disable field logging. BREAKING CHANGE: Logging and Instrumenting cannot be used as ServiceOption. --- internal/domain/model/service.go | 8 +- internal/domain/model/transport.go | 48 ++--- internal/interface/gateway/service.go | 166 +++++++++++------- internal/interface/generator/instrumenting.go | 64 ++++--- .../interface/generator/jsonrpc_js_client.go | 20 ++- internal/interface/generator/logging.go | 23 ++- internal/interface/generator/utils.go | 23 ++- internal/interface/processor/service.go | 14 +- internal/usecase/gateway/service.go | 5 +- swipe.go | 37 ++-- 10 files changed, 247 insertions(+), 161 deletions(-) diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index c59a10df..c7db7cee 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -23,12 +23,6 @@ type DeclType struct { Values []stdtypes.TypeAndValue } -type InstrumentingOption struct { - Enable bool - Namespace string - Subsystem string -} - type ServiceReadme struct { Enable bool OutputDir string @@ -45,7 +39,7 @@ type ServiceMethod struct { ParamCtx *stdtypes.Var ReturnErr *stdtypes.Var ResultsNamed bool - Errors map[uint32]*ErrorHTTPTransportOption + Errors map[uint32]*HTTPError T stdtypes.Type } diff --git a/internal/domain/model/transport.go b/internal/domain/model/transport.go index d59df3cc..99092479 100644 --- a/internal/domain/model/transport.go +++ b/internal/domain/model/transport.go @@ -40,20 +40,24 @@ type JsonRPCHTTPTransportOption struct { } type MethodHTTPTransportOption struct { - MethodName string - Expr ast.Expr - Path string - PathVars map[string]string - HeaderVars map[string]string - QueryVars map[string]string - WrapResponse WrapResponseHTTPTransportOption - ServerRequestFunc ReqRespFunc - ServerResponseFunc ReqRespFunc - ClientRequestFunc ReqRespFunc - ClientResponseFunc ReqRespFunc + MethodName string + Expr ast.Expr + Path string + PathVars map[string]string + HeaderVars map[string]string + QueryVars map[string]string + WrapResponse WrapResponseHTTPTransportOption + ServerRequestFunc ReqRespFunc + ServerResponseFunc ReqRespFunc + ClientRequestFunc ReqRespFunc + ClientResponseFunc ReqRespFunc + LoggingEnable bool + LoggingIncludeParams map[string]struct{} + LoggingExcludeParams map[string]struct{} + InstrumentingEnable bool } -type ErrorHTTPTransportOption struct { +type HTTPError struct { Named *stdtypes.Named Code int64 IsPointer bool @@ -65,15 +69,13 @@ type MarkdownDocHTTPTransportOption struct { } type TransportOption struct { - Protocol string - Prefix string - ServerDisabled bool - Client ClientHTTPTransportOption - Openapi OpenapiHTTPTransportOption - MarkdownDoc MarkdownDocHTTPTransportOption - FastHTTP bool - JsonRPC JsonRPCHTTPTransportOption - MethodOptions map[string]MethodHTTPTransportOption - DefaultMethodOptions MethodHTTPTransportOption - Errors map[uint32]*ErrorHTTPTransportOption + Protocol string + Prefix string + ServerDisabled bool + Client ClientHTTPTransportOption + Openapi OpenapiHTTPTransportOption + MarkdownDoc MarkdownDocHTTPTransportOption + FastHTTP bool + JsonRPC JsonRPCHTTPTransportOption + MethodOptions map[string]MethodHTTPTransportOption } diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 5a4dc4d1..688ebe03 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -21,18 +21,46 @@ import ( ) type serviceGateway struct { - serviceID string - rawServiceID string - transport model.TransportOption - instrumenting model.InstrumentingOption - readme model.ServiceReadme - serviceType stdtypes.Type - serviceTypeName *stdtypes.Named - serviceIface *stdtypes.Interface - serviceMethods []model.ServiceMethod - enableLogging bool - graphTypes *graph.Graph - commentMap *typeutil.Map + serviceID string + rawServiceID string + transport model.TransportOption + readme model.ServiceReadme + serviceType stdtypes.Type + serviceTypeName *stdtypes.Named + serviceIface *stdtypes.Interface + serviceMethods []model.ServiceMethod + graphTypes *graph.Graph + commentMap *typeutil.Map + defaultMethodOptions model.MethodHTTPTransportOption + errors map[uint32]*model.HTTPError +} + +func (g *serviceGateway) Errors() map[uint32]*model.HTTPError { + return g.errors +} + +func (g *serviceGateway) InstrumentingEnable() bool { + if g.defaultMethodOptions.InstrumentingEnable { + return true + } + for _, transportOption := range g.transport.MethodOptions { + if transportOption.InstrumentingEnable { + return true + } + } + return false +} + +func (g *serviceGateway) LoggingEnable() bool { + if g.defaultMethodOptions.LoggingEnable { + return true + } + for _, transportOption := range g.transport.MethodOptions { + if transportOption.LoggingEnable { + return true + } + } + return false } func (g *serviceGateway) ID() string { @@ -47,14 +75,6 @@ func (g *serviceGateway) Transport() model.TransportOption { return g.transport } -func (g *serviceGateway) Instrumenting() model.InstrumentingOption { - return g.instrumenting -} - -func (g *serviceGateway) EnableLogging() bool { - return g.enableLogging -} - func (g *serviceGateway) Methods() []model.ServiceMethod { return g.serviceMethods } @@ -99,21 +119,7 @@ func (g *serviceGateway) load(o *option.Option) error { g.serviceID = strcase.ToCamel(name) } } - if transportOpt, ok := o.At("Transport"); ok { - transportOption, err := g.loadTransport(transportOpt) - if err != nil { - return err - } - g.transport = transportOption - } - if opt, ok := o.At("Readme"); ok { - g.readme.Enable = true - if readmeTemplateOpt, ok := opt.At("ReadmeTemplate"); ok { - g.readme.TemplatePath = readmeTemplateOpt.Value.String() - } - g.readme.OutputDir = option.MustOption(opt.At("outputDir")).Value.String() - } g.serviceType = ifacePtr.Elem() g.serviceTypeName = typeName g.serviceIface = iface @@ -129,18 +135,18 @@ func (g *serviceGateway) load(o *option.Option) error { g.graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { key := hasher.Hash(named) - if _, ok := g.transport.Errors[key]; ok { + if _, ok := g.errors[key]; ok { return true } if e := g.findError(named, errorMethodName); e != nil { - g.transport.Errors[key] = e + g.errors[key] = e } } return true }) }) - genericErrors := map[uint32]*model.ErrorHTTPTransportOption{} + genericErrors := map[uint32]*model.HTTPError{} g.graphTypes.Iterate(func(n *graph.Node) { g.graphTypes.Traverse(n, func(n *graph.Node) bool { @@ -153,7 +159,7 @@ func (g *serviceGateway) load(o *option.Option) error { if _, ok := genericErrors[key]; ok { return true } - if e, ok := g.transport.Errors[key]; ok { + if e, ok := g.errors[key]; ok { genericErrors[key] = e } } @@ -190,7 +196,7 @@ func (g *serviceGateway) load(o *option.Option) error { if _, ok := sm.Errors[key]; ok { return true } - if e, ok := g.transport.Errors[key]; ok { + if e, ok := g.errors[key]; ok { sm.Errors[key] = e } } @@ -206,7 +212,7 @@ func (g *serviceGateway) load(o *option.Option) error { if _, ok := sm.Errors[key]; ok { return true } - if e, ok := g.transport.Errors[key]; ok { + if e, ok := g.errors[key]; ok { sm.Errors[key] = e } } @@ -244,23 +250,25 @@ func (g *serviceGateway) load(o *option.Option) error { } g.serviceMethods = append(g.serviceMethods, sm) } - if _, ok := o.At("Logging"); ok { - g.enableLogging = true - } - if instrumentingOpt, ok := o.At("Instrumenting"); ok { - g.instrumenting.Enable = true - if namespace, ok := instrumentingOpt.At("namespace"); ok { - g.instrumenting.Namespace = namespace.Value.String() + + if transportOpt, ok := o.At("Transport"); ok { + transportOption, err := g.loadTransport(transportOpt) + if err != nil { + return err } - if subsystem, ok := instrumentingOpt.At("subsystem"); ok { - g.instrumenting.Subsystem = subsystem.Value.String() + g.transport = transportOption + } + if opt, ok := o.At("Readme"); ok { + g.readme.Enable = true + if readmeTemplateOpt, ok := opt.At("ReadmeTemplate"); ok { + g.readme.TemplatePath = readmeTemplateOpt.Value.String() } + g.readme.OutputDir = option.MustOption(opt.At("outputDir")).Value.String() } - return nil } -func (g *serviceGateway) findError(named *stdtypes.Named, methodName string) *model.ErrorHTTPTransportOption { +func (g *serviceGateway) findError(named *stdtypes.Named, methodName string) *model.HTTPError { for i := 0; i < named.NumMethods(); i++ { if named.Method(i).Name() != methodName { continue @@ -283,7 +291,7 @@ func (g *serviceGateway) findError(named *stdtypes.Named, methodName string) *mo continue } if code, ok := constant.Int64Val(e.Values()[0].Value); ok { - return &model.ErrorHTTPTransportOption{ + return &model.HTTPError{ Named: named, Code: code, IsPointer: isPointer, @@ -299,7 +307,6 @@ func (g *serviceGateway) loadTransport(o *option.Option) (transportOption model. Protocol: option.MustOption(o.At("protocol")).Value.String(), FastHTTP: fastHTTP, MethodOptions: map[string]model.MethodHTTPTransportOption{}, - Errors: map[uint32]*model.ErrorHTTPTransportOption{}, Openapi: model.OpenapiHTTPTransportOption{ Methods: map[string]*model.OpenapiMethodOption{}, }, @@ -388,7 +395,12 @@ func (g *serviceGateway) loadTransport(o *option.Option) (transportOption model. if err != nil { return transportOption, err } - transportOption.DefaultMethodOptions = defaultMethodOptions + + for _, method := range g.serviceMethods { + transportOption.MethodOptions[method.Name] = defaultMethodOptions + } + + g.defaultMethodOptions = defaultMethodOptions } if methods, ok := o.Slice("MethodOptions"); ok { @@ -398,6 +410,7 @@ func (g *serviceGateway) loadTransport(o *option.Option) (transportOption model. if !ok { return transportOption, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) } + baseMethodOpts := transportOption.MethodOptions[fnSel.Sel.Name] mopt, err := getMethodOptions(methodOpt, baseMethodOpts) if err != nil { @@ -415,16 +428,35 @@ func (g *serviceGateway) loadTransport(o *option.Option) (transportOption model. return } -func getMethodOptions(methodOpt *option.Option, baseMethodOpts model.MethodHTTPTransportOption) (model.MethodHTTPTransportOption, error) { - if wrapResponseOpt, ok := methodOpt.At("WrapResponse"); ok { +func getMethodOptions(o *option.Option, baseMethodOpts model.MethodHTTPTransportOption) (model.MethodHTTPTransportOption, error) { + if loggingOpt, ok := o.At("Logging"); ok { + baseMethodOpts.LoggingEnable = loggingOpt.Value.Bool() + } + if loggingParamsOpt, ok := o.At("LoggingParams"); ok { + baseMethodOpts.LoggingIncludeParams = map[string]struct{}{} + baseMethodOpts.LoggingExcludeParams = map[string]struct{}{} + + includes := option.MustOption(loggingParamsOpt.At("includes")).Value.StringSlice() + excludes := option.MustOption(loggingParamsOpt.At("excludes")).Value.StringSlice() + for _, field := range includes { + baseMethodOpts.LoggingIncludeParams[field] = struct{}{} + } + for _, field := range excludes { + baseMethodOpts.LoggingExcludeParams[field] = struct{}{} + } + } + if instrumentingOpt, ok := o.At("Instrumenting"); ok { + baseMethodOpts.InstrumentingEnable = instrumentingOpt.Value.Bool() + } + if wrapResponseOpt, ok := o.At("WrapResponse"); ok { baseMethodOpts.WrapResponse.Enable = true baseMethodOpts.WrapResponse.Name = wrapResponseOpt.Value.String() } - if httpMethodOpt, ok := methodOpt.At("Method"); ok { + if httpMethodOpt, ok := o.At("Method"); ok { baseMethodOpts.MethodName = httpMethodOpt.Value.String() baseMethodOpts.Expr = httpMethodOpt.Value.Expr() } - if path, ok := methodOpt.At("Path"); ok { + if path, ok := o.At("Path"); ok { baseMethodOpts.Path = path.Value.String() idxs, err := httpBraceIndices(baseMethodOpts.Path) @@ -449,30 +481,30 @@ func getMethodOptions(methodOpt *option.Option, baseMethodOpts model.MethodHTTPT } } } - if serverRequestFunc, ok := methodOpt.At("ServerDecodeRequestFunc"); ok { + if serverRequestFunc, ok := o.At("ServerDecodeRequestFunc"); ok { baseMethodOpts.ServerRequestFunc.Type = serverRequestFunc.Value.Type() baseMethodOpts.ServerRequestFunc.Expr = serverRequestFunc.Value.Expr() } - if serverResponseFunc, ok := methodOpt.At("ServerEncodeResponseFunc"); ok { + if serverResponseFunc, ok := o.At("ServerEncodeResponseFunc"); ok { baseMethodOpts.ServerResponseFunc.Type = serverResponseFunc.Value.Type() baseMethodOpts.ServerResponseFunc.Expr = serverResponseFunc.Value.Expr() } - if clientRequestFunc, ok := methodOpt.At("ClientEncodeRequestFunc"); ok { + if clientRequestFunc, ok := o.At("ClientEncodeRequestFunc"); ok { baseMethodOpts.ClientRequestFunc.Type = clientRequestFunc.Value.Type() baseMethodOpts.ClientRequestFunc.Expr = clientRequestFunc.Value.Expr() } - if clientResponseFunc, ok := methodOpt.At("ClientDecodeResponseFunc"); ok { + if clientResponseFunc, ok := o.At("ClientDecodeResponseFunc"); ok { baseMethodOpts.ClientResponseFunc.Type = clientResponseFunc.Value.Type() baseMethodOpts.ClientResponseFunc.Expr = clientResponseFunc.Value.Expr() } - if queryVars, ok := methodOpt.At("QueryVars"); ok { + if queryVars, ok := o.At("QueryVars"); ok { baseMethodOpts.QueryVars = map[string]string{} values := queryVars.Value.StringSlice() for i := 0; i < len(values); i += 2 { baseMethodOpts.QueryVars[values[i]] = values[i+1] } } - if headerVars, ok := methodOpt.At("HeaderVars"); ok { + if headerVars, ok := o.At("HeaderVars"); ok { baseMethodOpts.HeaderVars = map[string]string{} values := headerVars.Value.StringSlice() for i := 0; i < len(values); i += 2 { @@ -510,7 +542,11 @@ func NewServiceGateway( graphTypes *graph.Graph, commentMap *typeutil.Map, ) (gateway.ServiceGateway, error) { - g := &serviceGateway{graphTypes: graphTypes, commentMap: commentMap} + g := &serviceGateway{ + graphTypes: graphTypes, + commentMap: commentMap, + errors: map[uint32]*model.HTTPError{}, + } if err := g.load(o); err != nil { return nil, err } diff --git a/internal/interface/generator/instrumenting.go b/internal/interface/generator/instrumenting.go index d963fb55..0d52224c 100644 --- a/internal/interface/generator/instrumenting.go +++ b/internal/interface/generator/instrumenting.go @@ -18,7 +18,7 @@ type instrumentingGenerator struct { serviceID string serviceType stdtypes.Type serviceMethods []model.ServiceMethod - instrumenting model.InstrumentingOption + methodOptions map[string]model.MethodHTTPTransportOption i *importer.Importer } @@ -41,13 +41,26 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { name := "instrumentingMiddleware" + g.serviceID constructName := "NewInstrumentingMiddleware" + g.serviceID + g.W("type InstrumentingOption func(*%s)\n\n", name) + + g.W("func Namespace(v string) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.namespace = v\n}\n}\n\n") + g.W("func Subsystem(v string) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.subsystem = v\n}\n}\n\n") + + g.W("func RequestLatency(requestLatency %s.Histogram) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) + g.W("func RequestCount(requestCount %s.Counter) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.requestCount = requestCount\n}\n}\n\n", metricsPkg) + g.W("type %s struct {\n", name) g.W("next %s\n", typeStr) g.W("requestCount %s.Counter\n", metricsPkg) g.W("requestLatency %s.Histogram\n", metricsPkg) - g.W("}\n") + g.W("namespace string\n") + g.W("subsystem string\n") + + g.W("}\n\n") for _, m := range g.serviceMethods { + mopt := g.methodOptions[m.Name] + var params []string if m.ParamCtx != nil { @@ -62,14 +75,17 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { } g.WriteFunc(m.Name, "s *"+name, params, results, func() { - g.WriteDefer( - []string{"begin " + timePkg + ".Time"}, - []string{timePkg + ".Now()"}, - func() { - g.W("s.requestCount.With(\"method\", \"%s\").Add(1)\n", m.Name) - g.W("s.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", m.Name, timePkg) - }, - ) + if mopt.InstrumentingEnable { + g.WriteDefer( + []string{"begin " + timePkg + ".Time"}, + []string{timePkg + ".Now()"}, + func() { + g.W("s.requestCount.With(\"method\", \"%s\").Add(1)\n", m.Name) + g.W("s.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", m.Name, timePkg) + }, + ) + } + if len(m.Results) > 0 || m.ReturnErr != nil { g.W("return ") } @@ -89,27 +105,31 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { }) } - g.W("func %[1]s(s %[2]s, requestCount %[3]s.Counter, requestLatency %[3]s.Histogram) %[2]s {\n", constructName, typeStr, metricsPkg) + g.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) %[2]s {\n", constructName, typeStr, metricsPkg) + + g.W("i := &%s{next: s}\n", name) + + g.W("for _, o := range opts {\no(i)\n}\n") - g.W("if requestCount == nil {\n") - g.W("requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.W("Namespace: %s,\n", strconv.Quote(g.instrumenting.Namespace)) - g.W("Subsystem: %s,\n", strconv.Quote(g.instrumenting.Subsystem)) + g.W("if i.requestCount == nil {\n") + g.W("i.requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + g.W("Namespace: i.namespace,\n") + g.W("Subsystem: i.subsystem,\n") g.W("Name: %s,\n", strconv.Quote("request_count")) g.W("Help: %s,\n", strconv.Quote("Number of requests received.")) g.W("}, []string{\"method\"})\n") g.W("\n}\n") - g.W("if requestLatency == nil {\n") - g.W("requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.W("Namespace: %s,\n", strconv.Quote(g.instrumenting.Namespace)) - g.W("Subsystem: %s,\n", strconv.Quote(g.instrumenting.Subsystem)) + g.W("if i.requestLatency == nil {\n") + g.W("i.requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + g.W("Namespace: i.namespace,\n") + g.W("Subsystem: i.subsystem,\n") g.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) g.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) g.W("}, []string{\"method\"})\n") g.W("\n}\n") - g.W("return &%s{next: s, requestCount: requestCount, requestLatency: requestLatency}\n}\n", name) + g.W("return i\n}\n") return nil } @@ -133,12 +153,12 @@ func NewInstrumenting( serviceID string, serviceType stdtypes.Type, serviceMethods []model.ServiceMethod, - instrumenting model.InstrumentingOption, + methodOptions map[string]model.MethodHTTPTransportOption, ) generator.Generator { return &instrumentingGenerator{ serviceID: serviceID, serviceType: serviceType, serviceMethods: serviceMethods, - instrumenting: instrumenting, + methodOptions: methodOptions, } } diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 37d4fe73..6cfc1b03 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -37,7 +37,7 @@ class JSONRPCClient { } beforeRequest(fn) { this._beforeRequest = fn; - } + } __scheduleCommit() { if (this._commitTimerID) { clearTimeout(this._commitTimerID); @@ -80,6 +80,11 @@ class JSONRPCClient { params: params, }; } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ __scheduleRequest(method, params) { const p = new Promise((resolve, reject) => { const request = this.makeJSONRPCRequest( @@ -110,6 +115,7 @@ type jsonRPCJSClient struct { serviceMethods []model.ServiceMethod transport model.TransportOption enums *typeutil.Map + errors map[uint32]*model.HTTPError } func (g *jsonRPCJSClient) Prepare(_ context.Context) error { @@ -137,9 +143,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for _, p := range m.Params { buf := new(writer.BaseWriter) typevisitor.JSTypeVisitor(buf).Visit(p.Type()) - tdc.Visit(p.Type()) - mw.W("* @param {%s} %s\n", buf.String(), p.Name()) } @@ -209,14 +213,14 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W(mw.String()) g.W("}\n") - errorKeys := make([]uint32, 0, len(g.transport.Errors)) - for key := range g.transport.Errors { + errorKeys := make([]uint32, 0, len(g.errors)) + for key := range g.errors { errorKeys = append(errorKeys, key) } sortkeys.Uint32s(errorKeys) for _, key := range errorKeys { - e := g.transport.Errors[key] + e := g.errors[key] g.W( "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %d, data);\n}\n}\n", e.Named.Obj().Name(), e.Code, @@ -229,7 +233,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") for _, key := range errorKeys { - e := g.transport.Errors[key] + e := g.errors[key] g.W("case %d:\n", e.Code) g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) @@ -278,10 +282,12 @@ func NewJsonRPCJSClient( serviceMethods []model.ServiceMethod, transport model.TransportOption, enums *typeutil.Map, + errors map[uint32]*model.HTTPError, ) generator.Generator { return &jsonRPCJSClient{ serviceMethods: serviceMethods, transport: transport, enums: enums, + errors: errors, } } diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index c7d9b543..7a586013 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -20,6 +20,7 @@ type logging struct { serviceID string serviceType stdtypes.Type serviceMethods []model.ServiceMethod + methodOptions map[string]model.MethodHTTPTransportOption i *importer.Importer } @@ -49,11 +50,13 @@ func (g *logging) Process(ctx context.Context) error { ) for _, m := range g.serviceMethods { - logParams := makeLogParams(m.Params...) + mopt := g.methodOptions[m.Name] + + logParams := makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Params...) if len(m.Results) > 0 { if m.ResultsNamed { - logParams = append(logParams, makeLogParams(m.Results...)...) + logParams = append(logParams, makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Results...)...) } else { logParams = append(logParams, strconv.Quote("result"), makeLogParam("result", m.Results[0].Type())) } @@ -86,12 +89,14 @@ func (g *logging) Process(ctx context.Context) error { } g.WriteFunc(m.Name, "s *"+name, params, results, func() { - if len(logParams) > 0 { - g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) - g.W(strings.Join(logParams, ",")) - g.W(")\n") - }) + if mopt.LoggingEnable { + if len(logParams) > 0 { + g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) + g.W(strings.Join(logParams, ",")) + g.W(")\n") + }) + } } if len(m.Results) > 0 || m.ReturnErr != nil { g.W("return ") @@ -135,10 +140,12 @@ func NewLogging( serviceID string, serviceType stdtypes.Type, serviceMethods []model.ServiceMethod, + methodOptions map[string]model.MethodHTTPTransportOption, ) generator.Generator { return &logging{ serviceID: serviceID, serviceType: serviceType, serviceMethods: serviceMethods, + methodOptions: methodOptions, } } diff --git a/internal/interface/generator/utils.go b/internal/interface/generator/utils.go index 60297595..3654a66d 100644 --- a/internal/interface/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -20,9 +20,19 @@ func structKeyValue(vars []*stdtypes.Var, filterFn types.FilterFn) (results []st ) } -func makeLogParams(data ...*stdtypes.Var) (result []string) { +func makeLogParams(include, exclude map[string]struct{}, data ...*stdtypes.Var) (result []string) { for _, v := range data { - if logParam := makeLogParam(v.Name(), v.Type()); logParam != "" { + if len(include) > 0 { + if _, ok := include[v.Name()]; !ok { + continue + } + } + if len(exclude) > 0 { + if _, ok := exclude[v.Name()]; ok { + continue + } + } + if logParam := makeLogParam(v.Name(), v.Type().Underlying()); logParam != "" { result = append(result, strconv.Quote(v.Name()), logParam) } } @@ -30,9 +40,16 @@ func makeLogParams(data ...*stdtypes.Var) (result []string) { } func makeLogParam(name string, t stdtypes.Type) string { - switch t.(type) { + switch t := t.(type) { default: return name + case *stdtypes.Basic: + if t.Kind() == stdtypes.Byte { + return "len(" + name + ")" + } + return name + case *stdtypes.Pointer: + return makeLogParam(name, t.Elem().Underlying()) case *stdtypes.Slice, *stdtypes.Array, *stdtypes.Map, *stdtypes.Chan: return "len(" + name + ")" } diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index e910ff12..64a13701 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -52,16 +52,16 @@ func (p *serviceProcessor) Generators() []ug.Generator { )) } if p.sg.Transport().Protocol == "http" { - generators = append(generators, generator.NewHttpTransport(p.sg.ID(), p.sg.Methods(), p.sg.Transport())) - if p.sg.EnableLogging() { - generators = append(generators, generator.NewLogging(p.sg.ID(), p.sg.Type(), p.sg.Methods())) + generators = append(generators, generator.NewHttpTransport(p.sg.ID(), p.sg.Methods(), p.sg.Transport(), p.sg.Errors())) + if p.sg.LoggingEnable() { + generators = append(generators, generator.NewLogging(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport().MethodOptions)) } - if p.sg.Instrumenting().Enable { + if p.sg.InstrumentingEnable() { generators = append(generators, generator.NewInstrumenting( p.sg.ID(), p.sg.Type(), p.sg.Methods(), - p.sg.Instrumenting(), + p.sg.Transport().MethodOptions, )) } if p.sg.Transport().JsonRPC.Enable { @@ -79,14 +79,14 @@ func (p *serviceProcessor) Generators() []ug.Generator { generators = append( generators, generator.NewJsonRPCGoClient(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport()), - generator.NewJsonRPCJSClient(p.sg.Methods(), p.sg.Transport(), p.enums), + generator.NewJsonRPCJSClient(p.sg.Methods(), p.sg.Transport(), p.enums, p.sg.Errors()), ) } else { generators = append(generators, generator.NewRestGoClient(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) } } if p.sg.Transport().Openapi.Enable { - generators = append(generators, generator.NewOpenapi(p.sg.Methods(), p.sg.Transport(), p.workDir)) + generators = append(generators, generator.NewOpenapi(p.sg.Methods(), p.sg.Transport(), p.workDir, p.sg.Errors())) } return generators } diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index 85cd533e..a961dc2c 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -10,11 +10,12 @@ type ServiceGateway interface { ID() string RawID() string Transport() model.TransportOption - Instrumenting() model.InstrumentingOption - EnableLogging() bool + Errors() map[uint32]*model.HTTPError Methods() []model.ServiceMethod Type() stdtypes.Type TypeName() *stdtypes.Named Interface() *stdtypes.Interface Readme() model.ServiceReadme + LoggingEnable() bool + InstrumentingEnable() bool } diff --git a/swipe.go b/swipe.go index 37006e64..9f6da5ac 100644 --- a/swipe.go +++ b/swipe.go @@ -51,12 +51,6 @@ type Option string // A ServiceOption is an option service. type ServiceOption string -// A InstrumentingOption is an option metrics. -type InstrumentingOption string - -// A LoggingOption is an option logging. -type LoggingOption string - // A TransportOption is an option gokit transport. type TransportOption string @@ -136,16 +130,6 @@ func Name(string) ServiceOption { return "implementation not generated, run swipe" } -// Logging a option enabled logging middleware. -func Logging(...LoggingOption) ServiceOption { - return "implementation not generated, run swipe" -} - -// Instrumenting a option enabled instrumenting (collect metrics) middleware. -func Instrumenting(namespace, subsystem string, opts ...InstrumentingOption) ServiceOption { - return "implementation not generated, run swipe" -} - // Transport a option that defines the transport generation settings. // // Swipe generates a method for creating an transport handler using the @@ -202,8 +186,27 @@ func JSONRPCPath(string) JSONRPCOption { return "implementation not generated, run swipe" } +// Logging a option enabled/disable logging middleware. +func Logging(enable bool) MethodOption { + return "implementation not generated, run swipe" +} + +func LoggingParams(includes []string, excludes []string) MethodOption { + return "implementation not generated, run swipe" +} + +// InstrumentingEnable a option enabled/disable instrumenting (collect metrics) middleware. +func Instrumenting(enable bool) MethodOption { + return "implementation not generated, run swipe" +} + +// InstrumentingDisable a option disable instrumenting (collect metrics) middleware. +func InstrumentingDisable() MethodOption { + return "implementation not generated, run swipe" +} + // WrapResponse wrap the response from the server to an object, for example if you want to return as: -// {data: { you responce data }} +// {data: { you response data }} // need to add option: // ...code here... // WrapResponse("data") From f9d42db000e999e0eef056b900c073c3b2460905 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 6 Oct 2020 15:39:25 +0300 Subject: [PATCH 032/293] chore(release): 2.0.0-alpha.5 --- CHANGELOG.md | 31 +++- fixtures/Service/app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- swipe_test.go | 194 --------------------- 4 files changed, 26 insertions(+), 203 deletions(-) delete mode 100644 swipe_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index f0585479..35656426 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ ## [Unreleased] + +## [v2.0.0-alpha.5] - 2020-10-06 +### Bug Fixes +- Generate js type for alias and type definitions. + +### Features +- Logging and Instrumenting moved to method options, added LoggingParams option allowing to enable or disable field logging. + +### BREAKING CHANGE + +Logging and Instrumenting cannot be used as ServiceOption. + + ## [v2.0.0-alpha.4] - 2020-09-28 ### Bug Fixes @@ -214,6 +227,12 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.2] - 2020-07-28 +### Bug Fixes +- Added generate enum constants for JSON RPC client. + + + +## [v1.24.1] - 2020-07-28 ## [v1.24.4] - 2020-07-28 @@ -227,9 +246,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. - - -## [v1.24.1] - 2020-07-28 ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -530,7 +546,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...HEAD +[v2.0.0-alpha.5]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 [v2.0.0-alpha.4]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.3...v2.0.0-alpha.4 [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 @@ -559,10 +576,10 @@ if you used the ability to use the code in the generation description file, then [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 [v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 [v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/Service/app/client_jsonrpc_gen.js b/fixtures/Service/app/client_jsonrpc_gen.js index 4bcbb8d0..de6127ed 100755 --- a/fixtures/Service/app/client_jsonrpc_gen.js +++ b/fixtures/Service/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.4. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.5. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index 9f6da5ac..47b6f602 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.4" +const Version = "v2.0.0-alpha.5" // A Option is an option for a Swipe. type Option string diff --git a/swipe_test.go b/swipe_test.go deleted file mode 100644 index 11fc9acd..00000000 --- a/swipe_test.go +++ /dev/null @@ -1,194 +0,0 @@ -package swipe_test - -//import ( -// "net/http" -// -// "github.com/swipe-io/swipe/v2" -// -// "github.com/swipe-io/swipe/v2/fixtures/service" -//) -// -//func ExampleTransport() { -// swipe.Build( -// swipe.Service((*service.Interface)(nil), -// swipe.Transport("http"), -// ), -// ) -//} -// -//// Example enabled valyala/fasthttp. Supported in both REST and JSON RPC. -//func ExampleFastEnable() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.FastEnable(), -// ), -// ), -// ) -//} -// -//// Example basic use Service option. -//func ExampleService() { -// swipe.Build( -// swipe.Service((*service.Service)(nil)), -// ) -//} -// -//// Example basic use logging. -//func ExampleLogging() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http"), -// swipe.Logging(), -// ), -// ) -//} -// -//// Example basic use instrumenting. -//func ExampleInstrumenting() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http"), -// swipe.Instrumenting("api", "api"), -// ), -// ) -//} -// -//// Use the swipe.MethodOptions option to specify settings for generating the service method. -//func ExamplePath() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.MethodOptions(service.Interface.Get, -// swipe.Path("/users"), -// ), -// ), -// ), -// ) -//} -// -//// Use the swipe.MethodOptions option to specify settings for generating the service method. -//func ExampleMethod() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.MethodOptions(service.Interface.Get, -// swipe.Method(http.MethodGet), -// ), -// ), -// ), -// ) -//} -// -//// A parameter is a key pair, where the key is the name of the method parameter, -//// and the value is the name of the parameter in the header. -//func ExampleHeaderVars() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.MethodOptions(service.Interface.Get, -// swipe.HeaderVars([]string{"name", "x-name"}), -// ), -// ), -// ), -// ) -//} -// -//// A parameter is a key pair, where the key is the name of the method parameter, -//// and the value is the name of the parameter in the url query arguments. -//func ExampleQueryVars() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.MethodOptions(service.Interface.Get, -// swipe.QueryVars([]string{"name", "x-name"}), -// ), -// ), -// ), -// ) -//} -// -//func ExampleOpenapi() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.Openapi(), -// ), -// ), -// ) -//} -// -//func ExampleOpenapiOutput() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.Openapi( -// swipe.OpenapiOutput("../../docs"), -// ), -// ), -// ), -// ) -//} -// -//func ExampleOpenapiInfo() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.Openapi( -// swipe.OpenapiInfo("Openapi doc title", "1.0.0", "description"), -// ), -// ), -// ), -// ) -//} -// -//func ExampleOpenapiServer() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.Openapi( -// swipe.OpenapiServer("Description for server", "http://server.domain"), -// ), -// ), -// ), -// ) -//} -// -//func ExampleOpenapiContact() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.Openapi( -// swipe.OpenapiContact("name", "your_email@mail.com", "http://contact.url"), -// ), -// ), -// ), -// ) -//} -// -//func ExampleOpenapiLicence() { -// swipe.Build( -// swipe.Service((*service.Service)(nil), -// swipe.Transport("http", -// swipe.Openapi( -// swipe.OpenapiLicence("MIT", "http://licence.url"), -// ), -// ), -// ), -// ) -//} -// -//type Config struct { -// BindAddr string -//} -// -//func ExampleConfigEnv() { -// swipe.Build( -// swipe.ConfigEnv( -// &Config{ -// BindAddr: ":9000", -// }, -// swipe.FuncName("LoadConfig"), -// ), -// ) -//} From 6163e41dc17fcc6ec71688d1e1f1c43d38865786 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 21 Oct 2020 09:12:41 +0300 Subject: [PATCH 033/293] feat: added output format error message --- .../app/.swipe/README.md.tpl | 35 +++ fixtures/ServiceJSONRPCMulti/app/README.md | 103 +++++++ .../app/client_jsonrpc_gen.js | 273 ++++++++++++++++++ .../app/jsonrpc_doc_gen.md | 160 ++++++++++ .../app/openapi_jsonrpc_gen.json | 1 + .../app/.swipe/README.md.tpl | 35 +++ fixtures/ServiceJSONRPCSingle/app/README.md | 103 +++++++ .../app/client_jsonrpc_gen.js | 71 +++-- .../app/jsonrpc_doc_gen.md | 18 +- .../app/openapi_jsonrpc_gen.json | 1 + fixtures/ServiceRESTMulti/app/README.md | 103 +++++++ .../app/openapi_rest_gen.json | 1 + fixtures/ServiceRESTSingle/app/README.md | 103 +++++++ .../app/openapi_rest_gen.json | 1 + internal/format/fomrat.go | 5 +- 15 files changed, 983 insertions(+), 30 deletions(-) create mode 100755 fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl create mode 100755 fixtures/ServiceJSONRPCMulti/app/README.md create mode 100755 fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js create mode 100755 fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md create mode 100755 fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json create mode 100755 fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl create mode 100755 fixtures/ServiceJSONRPCSingle/app/README.md rename fixtures/{Service => ServiceJSONRPCSingle}/app/client_jsonrpc_gen.js (81%) rename fixtures/{Service => ServiceJSONRPCSingle}/app/jsonrpc_doc_gen.md (78%) create mode 100755 fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json create mode 100755 fixtures/ServiceRESTMulti/app/README.md create mode 100755 fixtures/ServiceRESTMulti/app/openapi_rest_gen.json create mode 100755 fixtures/ServiceRESTSingle/app/README.md create mode 100755 fixtures/ServiceRESTSingle/app/openapi_rest_gen.json diff --git a/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl b/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl new file mode 100755 index 00000000..b64b4415 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl @@ -0,0 +1,35 @@ +# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md new file mode 100755 index 00000000..48af7ed7 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -0,0 +1,103 @@ +# swipe : A short description of the service. +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) +, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.4) +, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.3) +, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.2) +, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.1) +, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.7) +, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.6) +, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.5) +, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.4) +, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.3) +, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.2) +, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.1) +, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.0) +, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.12) +, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.11) +, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.10) +, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.9) +, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.8) +, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.7) +, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.6) +, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.5) +, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.4) +, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.3) +, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.2) +, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.1) +, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.0) +, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.7) +, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.6) +, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.5) +, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.4) +, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.3) +, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.2) +, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.1) +, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.0) +, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.23.0) +, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.4) +, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.3) +, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.2) +, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.1) +, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.0) +, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.21.0) +, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.20.1) +, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.14.0) +, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.4) +, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.3) +, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.2) +, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.1) +, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.0) +, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.12.1) +, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.12.0) +, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.11.4) +, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.11.2) +, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.11.0) +, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.10.0) +, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.9.0) +, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.8.0) +, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.7.2) +, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.6.0) +, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.3.0) +, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.2.2) +, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.5) +, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.4) +, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.3) +, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.2) +, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.1) +, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.0) +, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.5) +, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.4) +, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.3) +, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.2) +, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.1) +, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.0) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..6e2aea37 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -0,0 +1,273 @@ +// Code generated by Swipe v2.0.0-alpha.5. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then(responses => { + for (let i = 0; i < responses.length; i++) { + if (responses[i].error) { + scheduleRequests[responses[i].id].reject( + convertError(responses[i].error) + ); + continue; + } + scheduleRequests[responses[i].id].resolve(responses[i].result); + } + }) + .catch(e => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** + * @typedef {Object} User + * @property {string} id + * @property {string} name + * @property {string} password + * @property {GeoJSON} point + * @property {string} last_seen + * @property {Data} data + * @property {Array} photo + * @property {User} user + * @property {Profile} profile + * @property {Recurse} recurse + * @property {string} created_at + * @property {string} updated_at + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class GRPCClient { + constructor(transport) { + this.InterfaceA = new JSONRPCClientInterfaceA(transport); + this.InterfaceB = new JSONRPCClientInterfaceB(transport); + } +} +export default RPCClient; + +export class JSONRPCClientInterfaceA { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + **/ + testMethod() { + return this.scheduler.__scheduleRequest("a.testMethod", {}); + } +} + +export class JSONRPCClientInterfaceB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler.__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler.__scheduleRequest("b.delete", { id: id }); + } + /** + * Get item. + * + * @param {number} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler.__scheduleRequest("b.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler.__scheduleRequest("b.getAll", { members: members }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler.__scheduleRequest("b.testMethod", { + data: data, + ss: ss + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler.__scheduleRequest("b.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }); + } +} + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +export class ErrForbiddenError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrForbiddenError", -32002, data); + } +} +function convertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + case -32002: + return new ErrForbiddenError(e.message, e.data); + } +} diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..cf27b454 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -0,0 +1,160 @@ +# Swipe JSONRPC Client + +interfaceA.TestMethod + +### interfaceA.TestMethod() ⇒void + + + +**Throws**: + +ErrUnauthorizedException + + + +interfaceB.Create + +interfaceB.Delete + +interfaceB.Get + +interfaceB.GetAll + +interfaceB.TestMethod + +interfaceB.TestMethod2 + +### interfaceB.Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### interfaceB.Delete(id) ⇒ + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### interfaceB.Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### interfaceB.GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more. + +New line comment. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### interfaceB.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### interfaceB.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|created_at|string|| +|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..f9ea1dc2 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["a"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["b"],"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["b"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["b"],"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["b"],"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["b"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["b"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl b/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl new file mode 100755 index 00000000..b64b4415 --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl @@ -0,0 +1,35 @@ +# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md new file mode 100755 index 00000000..7f230642 --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -0,0 +1,103 @@ +# swipe : A short description of the service. +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) +, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.4) +, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.3) +, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.2) +, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.1) +, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.7) +, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.6) +, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.5) +, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.4) +, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.3) +, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.2) +, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.1) +, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.0) +, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.12) +, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.11) +, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.10) +, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.9) +, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.8) +, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.7) +, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.6) +, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.5) +, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.4) +, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.3) +, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.2) +, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.1) +, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.0) +, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.7) +, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.6) +, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.5) +, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.4) +, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.3) +, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.2) +, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.1) +, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.0) +, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.23.0) +, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.4) +, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.3) +, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.2) +, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.1) +, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.0) +, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.21.0) +, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.20.1) +, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.14.0) +, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.4) +, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.3) +, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.2) +, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.1) +, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.0) +, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.12.1) +, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.12.0) +, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.11.4) +, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.11.2) +, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.11.0) +, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.10.0) +, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.9.0) +, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.8.0) +, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.7.2) +, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.6.0) +, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.3.0) +, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.2.2) +, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.5) +, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.4) +, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.3) +, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.2) +, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.1) +, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.0) +, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.5) +, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.4) +, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.3) +, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.2) +, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.1) +, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.0) diff --git a/fixtures/Service/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js similarity index 81% rename from fixtures/Service/app/client_jsonrpc_gen.js rename to fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index de6127ed..09b582bb 100755 --- a/fixtures/Service/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -8,7 +8,8 @@ export class JSONRPCError extends Error { this.data = data; } } -class JSONRPCClient { + +class JSONRPCScheduler { /** * * @param {*} transport @@ -95,6 +96,10 @@ class JSONRPCClient { return ++this._requestID; } } +/** + * @typedef {Object} Data + */ + /** * @typedef {Object} User * @property {string} id @@ -102,41 +107,58 @@ class JSONRPCClient { * @property {string} password * @property {GeoJSON} point * @property {string} last_seen - * @property {Object} data + * @property {Data} data * @property {Array} photo * @property {User} user * @property {Profile} profile * @property {Recurse} recurse + * @property {string} kind * @property {string} created_at * @property {string} updated_at - **/ + */ /** * @typedef {Object} GeoJSON * @property {Array} coordinates200 - **/ + */ /** * @typedef {Object} Profile * @property {string} phone - **/ + */ /** * @typedef {Object} Recurse * @property {string} name * @property {Array} recurse - **/ + */ + +string; +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +export default RPCClient; + +export class JSONRPCClient { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } -export default class extends JSONRPCClient { /** * Create new item of item. * - * @param {Object} newData + * @param {Data} newData * @param {string} name * @param {Array} data **/ create(newData, name, data) { - return this.__scheduleRequest("create", { + return this.scheduler.__scheduleRequest("create", { newData: newData, name: name, data: data @@ -147,7 +169,7 @@ export default class extends JSONRPCClient { * @return {PromiseLike<{a: string, b: string}>} **/ delete(id) { - return this.__scheduleRequest("delete", { id: id }); + return this.scheduler.__scheduleRequest("delete", { id: id }); } /** * Get item. @@ -158,28 +180,29 @@ export default class extends JSONRPCClient { * @param {number} price * @param {number} n * @param {number} b - * @param {number} c + * @param {number} cc * @return {PromiseLike} **/ - get(id, name, fname, price, n, b, c) { - return this.__scheduleRequest("get", { + get(id, name, fname, price, n, b, cc) { + return this.scheduler.__scheduleRequest("get", { id: id, name: name, fname: fname, price: price, n: n, b: b, - c: c + cc: cc }); } /** * GetAll more comment and more and more comment and more and more comment and more. * New line comment. * + * @param {Members} members * @return {PromiseLike>} **/ - getAll() { - return this.__scheduleRequest("getAll", {}); + getAll(members) { + return this.scheduler.__scheduleRequest("getAll", { members: members }); } /** * @param {Object} data @@ -187,7 +210,10 @@ export default class extends JSONRPCClient { * @return {PromiseLike>>>} **/ testMethod(data, ss) { - return this.__scheduleRequest("testMethod", { data: data, ss: ss }); + return this.scheduler.__scheduleRequest("testMethod", { + data: data, + ss: ss + }); } /** * @param {string} ns @@ -198,7 +224,7 @@ export default class extends JSONRPCClient { * @param {string} permission **/ testMethod2(ns, utype, user, restype, resource, permission) { - return this.__scheduleRequest("testMethod2", { + return this.scheduler.__scheduleRequest("testMethod2", { ns: ns, utype: utype, user: user, @@ -208,23 +234,24 @@ export default class extends JSONRPCClient { }); } } + export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { - super(message, "ErrUnauthorizedError", 401, data); + super(message, "ErrUnauthorizedError", -32001, data); } } export class ErrForbiddenError extends JSONRPCError { constructor(message, data) { - super(message, "ErrForbiddenError", 403, data); + super(message, "ErrForbiddenError", -32002, data); } } function convertError(e) { switch (e.code) { default: return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case 401: + case -32001: return new ErrUnauthorizedError(e.message, e.data); - case 403: + case -32002: return new ErrForbiddenError(e.message, e.data); } } diff --git a/fixtures/Service/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md similarity index 78% rename from fixtures/Service/app/jsonrpc_doc_gen.md rename to fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md index 6724befb..0a850a59 100755 --- a/fixtures/Service/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -12,7 +12,7 @@ TestMethod2 -### Create(newData, name, data) ⇒void +### Create(newData, name, data) ⇒void new item of item. @@ -29,7 +29,7 @@ |newData|Data|| |name|string|| |data|Array.<number>|| -### Delete(id) ⇒ +### Delete(id) ⇒ @@ -42,7 +42,7 @@ | Param | Type | Description | |------|------|------| |id|number|| -### Get(id, name, fname, price, n, b, c) ⇒User +### Get(id, name, fname, price, n, b, cc) ⇒User item. @@ -62,8 +62,8 @@ |price|number|| |n|number|| |b|number|| -|c|number|| -### GetAll() ⇒Array.<User> +|cc|number|| +### GetAll(members) ⇒Array.<User> more comment and more and more comment and more and more comment and more. @@ -77,7 +77,10 @@ New line comment. -### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> +| Param | Type | Description | +|------|------|------| +|members|Members|| +### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> @@ -91,7 +94,7 @@ New line comment. |------|------|------| |data|Object.<string, Object>|| |ss|Object|| -### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void +### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void @@ -141,5 +144,6 @@ New line comment. |user|User|| |profile|Profile|| |recurse|Recurse|| +|kind|Kind|| |created_at|string|| |updated_at|string|| diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..a386a798 --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md new file mode 100755 index 00000000..8cab13f5 --- /dev/null +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -0,0 +1,103 @@ +# swipe : A short description of the service. +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) +, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.4) +, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.3) +, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.2) +, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.1) +, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.7) +, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.6) +, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.5) +, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.4) +, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.3) +, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.2) +, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.1) +, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.0) +, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.12) +, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.11) +, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.10) +, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.9) +, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.8) +, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.7) +, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.6) +, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.5) +, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.4) +, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.3) +, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.2) +, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.1) +, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.0) +, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.7) +, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.6) +, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.5) +, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.4) +, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.3) +, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.2) +, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.1) +, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.0) +, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.23.0) +, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.4) +, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.3) +, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.2) +, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.1) +, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.0) +, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.21.0) +, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.20.1) +, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.14.0) +, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.4) +, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.3) +, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.2) +, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.1) +, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.0) +, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.12.1) +, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.12.0) +, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.11.4) +, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.11.2) +, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.11.0) +, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.10.0) +, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.9.0) +, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.8.0) +, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.7.2) +, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.6.0) +, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.3.0) +, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.2.2) +, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.5) +, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.4) +, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.3) +, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.2) +, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.1) +, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.0) +, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.5) +, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.4) +, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.3) +, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.2) +, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.1) +, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.0) diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json new file mode 100755 index 00000000..4f55084f --- /dev/null +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["a"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["b"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["b"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["b"],"summary":"Get","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["b"],"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["b"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["b"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md new file mode 100755 index 00000000..a49738d5 --- /dev/null +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -0,0 +1,103 @@ +# swipe : A short description of the service. +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) +, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.4) +, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.3) +, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.2) +, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.1) +, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.7) +, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.6) +, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.5) +, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.4) +, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.3) +, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.2) +, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.1) +, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.0) +, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.12) +, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.11) +, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.10) +, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.9) +, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.8) +, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.7) +, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.6) +, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.5) +, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.4) +, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.3) +, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.2) +, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.1) +, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.0) +, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.7) +, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.6) +, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.5) +, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.4) +, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.3) +, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.2) +, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.1) +, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.0) +, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.23.0) +, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.4) +, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.3) +, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.2) +, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.1) +, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.0) +, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.21.0) +, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.20.1) +, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.14.0) +, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.4) +, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.3) +, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.2) +, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.1) +, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.0) +, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.12.1) +, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.12.0) +, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.11.4) +, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.11.2) +, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.11.0) +, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.10.0) +, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.9.0) +, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.8.0) +, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.7.2) +, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.6.0) +, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.3.0) +, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.2.2) +, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.5) +, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.4) +, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.3) +, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.2) +, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.1) +, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.0) +, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.5) +, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.4) +, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.3) +, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.2) +, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.1) +, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.0) diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json new file mode 100755 index 00000000..7bd28a77 --- /dev/null +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get":{"post":{"summary":"Get","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/internal/format/fomrat.go b/internal/format/fomrat.go index 5c18bfd2..9b67b43a 100644 --- a/internal/format/fomrat.go +++ b/internal/format/fomrat.go @@ -24,7 +24,10 @@ func Source(src []byte) ([]byte, error) { }() out, err := cmd.Output() if err != nil { - return nil, fmt.Errorf("error: %w", err) + if err, ok := err.(*exec.ExitError); ok { + return nil, fmt.Errorf("error: %s %w", string(err.Stderr), err) + } + return nil, err } return out, nil } From 497c3eb599ca50b1de2f81fb8d679fb01d401e44 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 21 Oct 2020 09:19:16 +0300 Subject: [PATCH 034/293] feat: added multiple service interfaces, added time.Time type for REST query convert generate, added time.Duration for config generate, some not noticeable improvements. BREAKING CHANGE: the format of the settings description has been changed, see the file github.com/swipe-io/swipe/swipe.go for details. --- fixtures/ConfigSuccess/app/config.go | 3 + fixtures/GatewaySuccess/app/swipe.go | 5 +- fixtures/Service/app/openapi_jsonrpc_gen.json | 1 - fixtures/Service/app/swipe.go | 30 - .../app/service.go | 34 +- fixtures/ServiceJSONRPCMulti/app/swipe.go | 37 + fixtures/ServiceJSONRPCSingle/app/service.go | 128 ++++ fixtures/ServiceJSONRPCSingle/app/swipe.go | 36 + .../ServiceRESTMulti/app/.swipe/README.md.tpl | 35 + fixtures/ServiceRESTMulti/app/service.go | 129 ++++ fixtures/ServiceRESTMulti/app/swipe.go | 41 ++ .../app/.swipe/README.md.tpl | 35 + fixtures/ServiceRESTSingle/app/service.go | 132 ++++ fixtures/ServiceRESTSingle/app/swipe.go | 40 + gen_test.go | 14 +- go.mod | 1 + go.sum | 1 + internal/domain/model/gateway.go | 9 +- internal/domain/model/service.go | 140 +++- internal/domain/model/transport.go | 81 --- internal/interface/finder/finder.go | 20 +- internal/interface/gateway/config.go | 22 +- internal/interface/gateway/http_gateway.go | 19 +- internal/interface/gateway/service.go | 686 +++++++++++------- internal/interface/generator/client_struct.go | 269 +++---- internal/interface/generator/config.go | 7 +- .../{config_markdown_doc.go => config_doc.go} | 17 +- internal/interface/generator/endpoint.go | 218 +++--- .../interface/generator/endpoint_factory.go | 76 +- internal/interface/generator/http_gateway.go | 27 +- .../interface/generator/http_transport.go | 137 ++-- internal/interface/generator/instrumenting.go | 193 ++--- ...jsonrpc_markdown_doc.go => jsonrpc_doc.go} | 162 +++-- .../interface/generator/jsonrpc_go_client.go | 284 ++++---- .../interface/generator/jsonrpc_js_client.go | 193 ++--- .../interface/generator/jsonrpc_server.go | 206 ++++-- internal/interface/generator/logging.go | 235 +++--- internal/interface/generator/openapi.go | 336 ++++----- internal/interface/generator/readme.go | 45 +- .../interface/generator/rest_go_client.go | 492 +++++++------ internal/interface/generator/rest_server.go | 451 ++++++------ internal/interface/generator/utils.go | 10 + internal/interface/processor/config.go | 2 +- internal/interface/processor/service.go | 86 ++- internal/interface/registry/processor.go | 4 +- .../interface/typevisitor/js_def_visitor.go | 108 +-- internal/interface/typevisitor/js_visitor.go | 10 +- .../interface/typevisitor/named_collector.go | 3 + .../typevisitor/openapi_def_visitor.go | 72 +- internal/types/types.go | 6 +- internal/usecase/finder/finder.go | 3 +- internal/usecase/gateway/service.go | 42 +- internal/writer/golang_writer.go | 50 +- swipe.go | 127 ++-- 54 files changed, 3291 insertions(+), 2259 deletions(-) delete mode 100755 fixtures/Service/app/openapi_jsonrpc_gen.json delete mode 100644 fixtures/Service/app/swipe.go rename fixtures/{Service => ServiceJSONRPCMulti}/app/service.go (72%) create mode 100644 fixtures/ServiceJSONRPCMulti/app/swipe.go create mode 100644 fixtures/ServiceJSONRPCSingle/app/service.go create mode 100644 fixtures/ServiceJSONRPCSingle/app/swipe.go create mode 100755 fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl create mode 100644 fixtures/ServiceRESTMulti/app/service.go create mode 100644 fixtures/ServiceRESTMulti/app/swipe.go create mode 100755 fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl create mode 100644 fixtures/ServiceRESTSingle/app/service.go create mode 100644 fixtures/ServiceRESTSingle/app/swipe.go delete mode 100644 internal/domain/model/transport.go rename internal/interface/generator/{config_markdown_doc.go => config_doc.go} (76%) rename internal/interface/generator/{jsonrpc_markdown_doc.go => jsonrpc_doc.go} (69%) diff --git a/fixtures/ConfigSuccess/app/config.go b/fixtures/ConfigSuccess/app/config.go index 2d37b985..8e9ef288 100644 --- a/fixtures/ConfigSuccess/app/config.go +++ b/fixtures/ConfigSuccess/app/config.go @@ -1,5 +1,8 @@ package app +import "time" + type Config struct { Name string + Dur time.Duration } diff --git a/fixtures/GatewaySuccess/app/swipe.go b/fixtures/GatewaySuccess/app/swipe.go index 687f63d8..64eb9c28 100644 --- a/fixtures/GatewaySuccess/app/swipe.go +++ b/fixtures/GatewaySuccess/app/swipe.go @@ -4,13 +4,14 @@ package app import ( "github.com/swipe-io/swipe/v2" - "github.com/swipe-io/swipe/v2/fixtures/Service/app" + "github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app" ) func Swipe() { swipe.Build( swipe.Gateway( - swipe.GatewayService((*app.Interface)(nil)), + swipe.GatewayService((*app.InterfaceA)(nil)), + swipe.GatewayService((*app.InterfaceB)(nil)), ), ) } diff --git a/fixtures/Service/app/openapi_jsonrpc_gen.json b/fixtures/Service/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 7580e55d..00000000 --- a/fixtures/Service/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"c":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}},"x401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}}}}}},"components":{"schemas":{"Data":{},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":403},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":401},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/Service/app/swipe.go b/fixtures/Service/app/swipe.go deleted file mode 100644 index 2558bd1f..00000000 --- a/fixtures/Service/app/swipe.go +++ /dev/null @@ -1,30 +0,0 @@ -//+build swipe - -package app - -import "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.Service((*Interface)(nil), - swipe.Transport("http", - swipe.JSONRPC(), - swipe.MarkdownDoc("./"), - swipe.ClientEnable(), - swipe.Openapi( - swipe.OpenapiOutput("./"), - ), - - swipe.MethodOptions(Interface.Create, - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - ), - - swipe.MethodDefaultOptions( - swipe.Logging(false), - swipe.Instrumenting(true), - ), - ), - ), - ) -} diff --git a/fixtures/Service/app/service.go b/fixtures/ServiceJSONRPCMulti/app/service.go similarity index 72% rename from fixtures/Service/app/service.go rename to fixtures/ServiceJSONRPCMulti/app/service.go index 8e641fa1..b5a789b8 100644 --- a/fixtures/Service/app/service.go +++ b/fixtures/ServiceJSONRPCMulti/app/service.go @@ -45,6 +45,12 @@ func (ErrForbidden) ErrorCode() int { return -32002 } +type Member struct { + ID string `json:"id"` +} + +type Members []*Member + type Data map[string]interface{} type AliasData = Data @@ -78,46 +84,46 @@ type User struct { UpdatedAt time.Time `json:"updated_at"` } -type Interface interface { +type InterfaceA interface { + TestMethod() +} + +type InterfaceB interface { // Create new item of item. Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) // Get item. - Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (data User, err error) + Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) // GetAll more comment and more and more comment and more and more comment and more. // New line comment. - GetAll(ctx context.Context) ([]*User, error) + GetAll(ctx context.Context, members Members) ([]*User, error) Delete(ctx context.Context, id uint) (a string, b string, err error) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error } -type service struct { -} - -func NewService() Interface { - return &service{} +type serviceB struct { } -func (s *service) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { +func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { return &ErrUnauthorized{} } -func (s *service) Get(ctx context.Context, id int, name, fname string, price float32, n, b, c int) (data User, err error) { +func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { panic("implement me") } -func (s *service) GetAll(ctx context.Context) ([]*User, error) { +func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { panic("implement me") } -func (s *service) Delete(ctx context.Context, id uint) (a string, b string, err error) { +func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { panic("implement me") } -func (s *service) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { +func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { panic("implement me") } -func (s *service) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { +func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { panic("implement me") } diff --git a/fixtures/ServiceJSONRPCMulti/app/swipe.go b/fixtures/ServiceJSONRPCMulti/app/swipe.go new file mode 100644 index 00000000..0a81dabd --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/swipe.go @@ -0,0 +1,37 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.Service( + swipe.Interface((*InterfaceA)(nil), "a"), + swipe.Interface((*InterfaceB)(nil), "b"), + + swipe.HTTPServer(), + + swipe.ClientsEnable([]string{"go", "js"}), + + swipe.OpenapiEnable(), + swipe.OpenapiOutput("./"), + + swipe.JSONRPCEnable(), + swipe.JSONRPCDocEnable(), + swipe.JSONRPCDocOutput("./"), + + swipe.ReadmeEnable(), + + swipe.MethodOptions(InterfaceB.Create, + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + ), + + swipe.MethodDefaultOptions( + swipe.Logging(false), + swipe.Instrumenting(true), + ), + ), + ) +} diff --git a/fixtures/ServiceJSONRPCSingle/app/service.go b/fixtures/ServiceJSONRPCSingle/app/service.go new file mode 100644 index 00000000..ac27f9f7 --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/service.go @@ -0,0 +1,128 @@ +package app + +import ( + "context" + "time" + + "github.com/google/uuid" +) + +// ErrUnauthorized unauthorized. +type ErrUnauthorized struct{} + +func (ErrUnauthorized) Error() string { + return "unauthorized" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrUnauthorized) StatusCode() int { + return 401 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrUnauthorized) ErrorCode() int { + return -32001 +} + +// ErrForbidden forbidden. +type ErrForbidden struct{} + +func (ErrForbidden) Error() string { + return "forbidden" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrForbidden) StatusCode() int { + return 403 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrForbidden) ErrorCode() int { + return -32002 +} + +type Member struct { + ID string `json:"id"` +} + +type Members []*Member + +type Data map[string]interface{} + +type AliasData = Data + +type Kind string + +type GeoJSON struct { + Type string `json:"-"` + Coordinates []float64 `json:"coordinates200"` +} + +type Profile struct { + Phone string `json:"phone"` +} + +type Recurse struct { + Name string `json:"name"` + Recurse []*Recurse `json:"recurse"` +} + +type User struct { + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` + Point GeoJSON `json:"point"` + LastSeen time.Time `json:"last_seen"` + Data AliasData `json:"data"` + Photo []byte `json:"photo"` + User *User `json:"user"` + Profile *Profile `json:"profile"` + Recurse *Recurse `json:"recurse"` + Kind Kind `json:"kind"` + CreatedAt *time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +type InterfaceB interface { + // Create new item of item. + Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) + // Get item. + Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) + // GetAll more comment and more and more comment and more and more comment and more. + // New line comment. + GetAll(ctx context.Context, members Members) ([]*User, error) + Delete(ctx context.Context, id uint) (a string, b string, err error) + TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) + TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error +} + +type serviceB struct { +} + +func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { + return &ErrUnauthorized{} +} + +func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { + panic("implement me") +} + +func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { + panic("implement me") +} + +func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { + panic("implement me") +} + +func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { + panic("implement me") +} + +func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + panic("implement me") +} diff --git a/fixtures/ServiceJSONRPCSingle/app/swipe.go b/fixtures/ServiceJSONRPCSingle/app/swipe.go new file mode 100644 index 00000000..7e18d8ae --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/swipe.go @@ -0,0 +1,36 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.Service( + swipe.Interface((*InterfaceB)(nil), ""), + + swipe.HTTPServer(), + + swipe.ClientsEnable([]string{"go", "js"}), + + swipe.OpenapiEnable(), + swipe.OpenapiOutput("./"), + + swipe.JSONRPCEnable(), + swipe.JSONRPCDocEnable(), + swipe.JSONRPCDocOutput("./"), + + swipe.ReadmeEnable(), + + swipe.MethodOptions(InterfaceB.Create, + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + ), + + swipe.MethodDefaultOptions( + swipe.Logging(false), + swipe.Instrumenting(true), + ), + ), + ) +} diff --git a/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl b/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl new file mode 100755 index 00000000..b64b4415 --- /dev/null +++ b/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl @@ -0,0 +1,35 @@ +# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} diff --git a/fixtures/ServiceRESTMulti/app/service.go b/fixtures/ServiceRESTMulti/app/service.go new file mode 100644 index 00000000..b5a789b8 --- /dev/null +++ b/fixtures/ServiceRESTMulti/app/service.go @@ -0,0 +1,129 @@ +package app + +import ( + "context" + "time" + + "github.com/google/uuid" +) + +// ErrUnauthorized unauthorized. +type ErrUnauthorized struct{} + +func (ErrUnauthorized) Error() string { + return "unauthorized" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrUnauthorized) StatusCode() int { + return 401 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrUnauthorized) ErrorCode() int { + return -32001 +} + +// ErrForbidden forbidden. +type ErrForbidden struct{} + +func (ErrForbidden) Error() string { + return "forbidden" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrForbidden) StatusCode() int { + return 403 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrForbidden) ErrorCode() int { + return -32002 +} + +type Member struct { + ID string `json:"id"` +} + +type Members []*Member + +type Data map[string]interface{} + +type AliasData = Data + +type GeoJSON struct { + Type string `json:"-"` + Coordinates []float64 `json:"coordinates200"` +} + +type Profile struct { + Phone string `json:"phone"` +} + +type Recurse struct { + Name string `json:"name"` + Recurse []*Recurse `json:"recurse"` +} + +type User struct { + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` + Point GeoJSON `json:"point"` + LastSeen time.Time `json:"last_seen"` + Data AliasData `json:"data"` + Photo []byte `json:"photo"` + User *User `json:"user"` + Profile *Profile `json:"profile"` + Recurse *Recurse `json:"recurse"` + CreatedAt *time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +type InterfaceA interface { + TestMethod() +} + +type InterfaceB interface { + // Create new item of item. + Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) + // Get item. + Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) + // GetAll more comment and more and more comment and more and more comment and more. + // New line comment. + GetAll(ctx context.Context, members Members) ([]*User, error) + Delete(ctx context.Context, id uint) (a string, b string, err error) + TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) + TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error +} + +type serviceB struct { +} + +func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { + return &ErrUnauthorized{} +} + +func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { + panic("implement me") +} + +func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { + panic("implement me") +} + +func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { + panic("implement me") +} + +func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { + panic("implement me") +} + +func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + panic("implement me") +} diff --git a/fixtures/ServiceRESTMulti/app/swipe.go b/fixtures/ServiceRESTMulti/app/swipe.go new file mode 100644 index 00000000..f8e33eab --- /dev/null +++ b/fixtures/ServiceRESTMulti/app/swipe.go @@ -0,0 +1,41 @@ +//+build swipe + +package app + +import ( + "net/http" + + "github.com/swipe-io/swipe/v2" +) + +func Swipe() { + swipe.Build( + swipe.Service( + swipe.Interface((*InterfaceA)(nil), "a"), + swipe.Interface((*InterfaceB)(nil), "b"), + + swipe.HTTPServer(), + + swipe.ClientsEnable([]string{"go", "js"}), + + swipe.OpenapiEnable(), + swipe.OpenapiOutput("./"), + + swipe.ReadmeEnable(), + + swipe.MethodOptions(InterfaceB.Create, + swipe.RESTMethod(http.MethodPost), + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + ), + swipe.MethodOptions(InterfaceB.Get, + swipe.RESTMethod(http.MethodPost), + swipe.RESTQueryVars([]string{"cc", "cc"}), + ), + swipe.MethodDefaultOptions( + swipe.Logging(false), + swipe.Instrumenting(true), + ), + ), + ) +} diff --git a/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl b/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl new file mode 100755 index 00000000..b64b4415 --- /dev/null +++ b/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl @@ -0,0 +1,35 @@ +# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} diff --git a/fixtures/ServiceRESTSingle/app/service.go b/fixtures/ServiceRESTSingle/app/service.go new file mode 100644 index 00000000..a90a6231 --- /dev/null +++ b/fixtures/ServiceRESTSingle/app/service.go @@ -0,0 +1,132 @@ +package app + +import ( + "context" + "time" + + "github.com/google/uuid" +) + +// ErrUnauthorized unauthorized. +type ErrUnauthorized struct{} + +func (ErrUnauthorized) Error() string { + return "unauthorized" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrUnauthorized) StatusCode() int { + return 401 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrUnauthorized) ErrorCode() int { + return -32001 +} + +// ErrForbidden forbidden. +type ErrForbidden struct{} + +func (ErrForbidden) Error() string { + return "forbidden" +} + +// StatusCode error value implements StatusCoder, +// the StatusCode will be used when encoding the error. +func (ErrForbidden) StatusCode() int { + return 403 +} + +// ErrorCode error value implements ErrorCoder, +// the ErrorCode will be used when encoding the error. +func (ErrForbidden) ErrorCode() int { + return -32002 +} + +type Member struct { + ID string `json:"id"` +} + +type Members []*Member + +type Data map[string]interface{} + +type AliasData = Data + +type GeoJSON struct { + Type string `json:"-"` + Coordinates []float64 `json:"coordinates200"` +} + +type Profile struct { + Phone string `json:"phone"` +} + +type Recurse struct { + Name string `json:"name"` + Recurse []*Recurse `json:"recurse"` +} + +type Kind string + +type User struct { + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` + Point GeoJSON `json:"point"` + LastSeen time.Time `json:"last_seen"` + Data AliasData `json:"data"` + Photo []byte `json:"photo"` + User *User `json:"user"` + Profile *Profile `json:"profile"` + Recurse *Recurse `json:"recurse"` + Kind Kind `json:"kind"` + CreatedAt *time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +type AppInterface interface { + InterfaceB +} + +type InterfaceB interface { + // Create new item of item. + Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) + // Get item. + Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) + // GetAll more comment and more and more comment and more and more comment and more. + // New line comment. + GetAll(ctx context.Context, members Members) ([]*User, error) + Delete(ctx context.Context, id uint) (a string, b string, err error) + TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) + TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error +} + +type serviceB struct { +} + +func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { + return &ErrUnauthorized{} +} + +func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { + panic("implement me") +} + +func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { + panic("implement me") +} + +func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { + panic("implement me") +} + +func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { + panic("implement me") +} + +func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + panic("implement me") +} diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/fixtures/ServiceRESTSingle/app/swipe.go new file mode 100644 index 00000000..d336091d --- /dev/null +++ b/fixtures/ServiceRESTSingle/app/swipe.go @@ -0,0 +1,40 @@ +//+build swipe + +package app + +import ( + "net/http" + + "github.com/swipe-io/swipe/v2" +) + +func Swipe() { + swipe.Build( + swipe.Service( + swipe.Interface((*AppInterface)(nil), ""), + + swipe.HTTPServer(), + + swipe.ClientsEnable([]string{"go", "js"}), + + swipe.OpenapiEnable(), + swipe.OpenapiOutput("./"), + + swipe.ReadmeEnable(), + + swipe.MethodOptions(AppInterface.Create, + swipe.RESTMethod(http.MethodPost), + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + ), + swipe.MethodOptions(AppInterface.Get, + swipe.RESTMethod(http.MethodPost), + swipe.RESTQueryVars([]string{"cc", "cc"}), + ), + swipe.MethodDefaultOptions( + swipe.Logging(false), + swipe.Instrumenting(true), + ), + ), + ) +} diff --git a/gen_test.go b/gen_test.go index 6c588a48..4aef9db9 100644 --- a/gen_test.go +++ b/gen_test.go @@ -74,18 +74,18 @@ func TestSwipe(t *testing.T) { if expectedContent, ok := test.expectedOutput[result.OutputPath]; ok { if !bytes.Equal(expectedContent, result.Content) { actual, expected := string(result.Content), string(expectedContent) - diff := cmp.Diff(strings.Split(actual, "\n"), strings.Split(expected, "\n")) - t.Fatalf("swipe output differs from expected file.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", actual, expected, diff) + diff := cmp.Diff(strings.Split(expected, "\n"), strings.Split(actual, "\n")) + t.Fatalf("swipe output differs from expected file %s.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", result.OutputPath, actual, expected, diff) } delete(test.expectedOutput, result.OutputPath) } } } - if !*record && len(test.expectedOutput) > 0 { - for _, expectedContent := range test.expectedOutput { - t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) - } - } + //if !*record && len(test.expectedOutput) > 0 { + //for _, expectedContent := range test.expectedOutput { + //t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) + //} + //} }) } } diff --git a/go.mod b/go.mod index 50439abe..9c988084 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( github.com/l-vitaly/go-kit v1.12.2 github.com/lib/pq v1.8.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 + github.com/prometheus/client_golang v1.3.0 github.com/spaolacci/murmur3 v1.1.0 github.com/swipe-io/strcase v0.1.3 golang.org/x/mod v0.3.0 diff --git a/go.sum b/go.sum index 7bc27a6e..7dfc9df5 100644 --- a/go.sum +++ b/go.sum @@ -309,6 +309,7 @@ github.com/swipe-io/strcase v0.1.2 h1:EK2Rd3bK1NiSBnsogPmaF40iT8M5C4MHRwnJk4DNr/ github.com/swipe-io/strcase v0.1.2/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= github.com/swipe-io/strcase v0.1.3 h1:LawWgDOsOb/McgGZHBMdkn81cPGOHEza8SCq6M1g1Qg= github.com/swipe-io/strcase v0.1.3/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/swipe-io/swipe v1.26.7 h1:qF7x/GiT2AcqAvhbpBYmpMzG1dol/rvsFJvzfliee8U= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= diff --git a/internal/domain/model/gateway.go b/internal/domain/model/gateway.go index 76dd89ba..bd58e1da 100644 --- a/internal/domain/model/gateway.go +++ b/internal/domain/model/gateway.go @@ -1,18 +1,11 @@ package model -import stdtypes "go/types" - type GatewayMethodOption struct { Name string BalancerType string } type GatewayServiceOption struct { - ID string - RawID string - Type stdtypes.Type - TypeName *stdtypes.Named - Iface *stdtypes.Interface + Iface *ServiceInterface MethodOptions map[string]GatewayMethodOption - Methods []ServiceMethod } diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index c7db7cee..0f296251 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -2,9 +2,94 @@ package model import ( "container/list" + "go/ast" stdtypes "go/types" ) +type Transport string + +const ( + HTTPTransport Transport = "http" +) + +type Interfaces []*ServiceInterface + +func (i Interfaces) Len() int { + return len(i) +} + +func (i Interfaces) At(index int) *ServiceInterface { + return i[index] +} + +type ServiceInterface struct { + prefix string + name string + loweName string + nameExport string + nameUnExport string + serviceType stdtypes.Type + serviceTypeName *stdtypes.Named + serviceIface *stdtypes.Interface + serviceMethods []ServiceMethod +} + +func (g *ServiceInterface) Prefix() string { + return g.prefix +} + +func (g *ServiceInterface) NameExport() string { + return g.nameExport +} + +func (g *ServiceInterface) NameUnExport() string { + return g.nameUnExport +} + +func (g *ServiceInterface) Name() string { + return g.name +} + +func (g *ServiceInterface) LoweName() string { + return g.loweName +} + +func (g *ServiceInterface) Methods() []ServiceMethod { + return g.serviceMethods +} + +func (g *ServiceInterface) Type() stdtypes.Type { + return g.serviceType +} + +func (g *ServiceInterface) TypeName() *stdtypes.Named { + return g.serviceTypeName +} + +func (g *ServiceInterface) Interface() *stdtypes.Interface { + return g.serviceIface +} + +func NewServiceInterface( + prefix, name, lowerName, nameExport, nameUnExport string, + serviceType stdtypes.Type, + serviceTypeName *stdtypes.Named, + serviceIface *stdtypes.Interface, + serviceMethods []ServiceMethod, +) *ServiceInterface { + return &ServiceInterface{ + prefix: prefix, + name: name, + loweName: lowerName, + nameExport: nameExport, + nameUnExport: nameUnExport, + serviceType: serviceType, + serviceTypeName: serviceTypeName, + serviceIface: serviceIface, + serviceMethods: serviceMethods, + } +} + type VarSlice []*stdtypes.Var func (s VarSlice) LookupField(name string) *stdtypes.Var { @@ -23,16 +108,14 @@ type DeclType struct { Values []stdtypes.TypeAndValue } -type ServiceReadme struct { - Enable bool - OutputDir string - TemplatePath string -} - type ServiceMethod struct { Type *stdtypes.Func Name string + NameExport string + NameUnExport string LcName string + NameRequest string + NameResponse string Params VarSlice Results VarSlice Comments []string @@ -43,15 +126,36 @@ type ServiceMethod struct { T stdtypes.Type } -//type ServiceOption struct { -// ID string -// RawID string -// Transport TransportOption -// Instrumenting InstrumentingOption -// EnableLogging bool -// Methods []ServiceMethod -// Type stdtypes.Type -// TypeName *stdtypes.Named -// Interface *stdtypes.Interface -// Readme ServiceReadme -//} +type ReqRespFunc struct { + Type stdtypes.Type + Expr ast.Expr +} + +type WrapResponseHTTPTransportOption struct { + Enable bool + Name string +} + +type MethodOption struct { + MethodName string + Expr ast.Expr + Path string + PathVars map[string]string + HeaderVars map[string]string + QueryVars map[string]string + WrapResponse WrapResponseHTTPTransportOption + ServerRequestFunc ReqRespFunc + ServerResponseFunc ReqRespFunc + ClientRequestFunc ReqRespFunc + ClientResponseFunc ReqRespFunc + LoggingEnable bool + LoggingIncludeParams map[string]struct{} + LoggingExcludeParams map[string]struct{} + InstrumentingEnable bool +} + +type HTTPError struct { + Named *stdtypes.Named + Code int64 + IsPointer bool +} diff --git a/internal/domain/model/transport.go b/internal/domain/model/transport.go deleted file mode 100644 index 99092479..00000000 --- a/internal/domain/model/transport.go +++ /dev/null @@ -1,81 +0,0 @@ -package model - -import ( - "go/ast" - stdtypes "go/types" - - "github.com/swipe-io/swipe/v2/internal/openapi" -) - -type ReqRespFunc struct { - Type stdtypes.Type - Expr ast.Expr -} - -type ClientHTTPTransportOption struct { - Enable bool -} - -type OpenapiMethodOption struct { - Tags []string -} - -type OpenapiHTTPTransportOption struct { - Enable bool - Output string - Servers []openapi.Server - Info openapi.Info - Methods map[string]*OpenapiMethodOption - DefaultMethod OpenapiMethodOption -} - -type WrapResponseHTTPTransportOption struct { - Enable bool - Name string -} - -type JsonRPCHTTPTransportOption struct { - Enable bool - Path string -} - -type MethodHTTPTransportOption struct { - MethodName string - Expr ast.Expr - Path string - PathVars map[string]string - HeaderVars map[string]string - QueryVars map[string]string - WrapResponse WrapResponseHTTPTransportOption - ServerRequestFunc ReqRespFunc - ServerResponseFunc ReqRespFunc - ClientRequestFunc ReqRespFunc - ClientResponseFunc ReqRespFunc - LoggingEnable bool - LoggingIncludeParams map[string]struct{} - LoggingExcludeParams map[string]struct{} - InstrumentingEnable bool -} - -type HTTPError struct { - Named *stdtypes.Named - Code int64 - IsPointer bool -} - -type MarkdownDocHTTPTransportOption struct { - Enable bool - OutputDir string -} - -type TransportOption struct { - Protocol string - Prefix string - ServerDisabled bool - Client ClientHTTPTransportOption - Openapi OpenapiHTTPTransportOption - MarkdownDoc MarkdownDocHTTPTransportOption - FastHTTP bool - JsonRPC JsonRPCHTTPTransportOption - MethodOptions map[string]MethodHTTPTransportOption -} diff --git a/internal/interface/finder/finder.go b/internal/interface/finder/finder.go index 16c061bc..7f3aa5e0 100644 --- a/internal/interface/finder/finder.go +++ b/internal/interface/finder/finder.go @@ -6,7 +6,10 @@ import ( "path/filepath" stdstrings "strings" + "github.com/swipe-io/swipe/v2/internal/domain/model" + ig "github.com/swipe-io/swipe/v2/internal/interface/gateway" + "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/usecase/finder" @@ -17,26 +20,29 @@ type serviceFinder struct { loader *option.Loader } -func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, []error) { +func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, *model.ServiceInterface, []error) { pkgPathParts := stdstrings.Split(named.Obj().Pkg().Path(), "/") servicePath := filepath.Join(build.Default.GOPATH, "src", stdstrings.Join(pkgPathParts[:3], "/")) o, errs := s.loader.Load(servicePath, nil, []string{"./..."}) if len(errs) > 0 { - return nil, errs + return nil, nil, errs } for _, resultOption := range o.Options { if resultOption.Option.Name == "Service" { - sg, err := ig.NewServiceGateway(resultOption.Option, o.Data.GraphTypes, o.Data.Enums) + sg, err := ig.NewServiceGateway(resultOption.Pkg, resultOption.Option, o.Data.GraphTypes, o.Data.Enums) if err != nil { - return nil, []error{err} + return nil, nil, []error{err} } - if sg.TypeName().Obj().String() == named.Obj().String() && sg.Transport().JsonRPC.Enable { - return sg, nil + for i := 0; i < sg.Interfaces().Len(); i++ { + iface := sg.Interfaces().At(i) + if iface.TypeName().Obj().String() == named.Obj().String() && sg.JSONRPCEnable() { + return sg, iface, nil + } } } } - return nil, nil + return nil, nil, nil } func NewServiceFinder(loader *option.Loader) finder.ServiceFinder { diff --git a/internal/interface/gateway/config.go b/internal/interface/gateway/config.go index b5645a4f..b0827def 100644 --- a/internal/interface/gateway/config.go +++ b/internal/interface/gateway/config.go @@ -42,23 +42,23 @@ func (g *configGateway) FuncName() string { } func (g *configGateway) load(o *option.Option) { - structOpt := option.MustOption(o.At("optionsStruct")) + g.stExpr = o.Value.Expr() + g.stType = o.Value.Type() - g.stExpr = structOpt.Value.Expr() - g.stType = structOpt.Value.Type() - - if ptr, ok := structOpt.Value.Type().(*stdtypes.Pointer); ok { + if ptr, ok := o.Value.Type().(*stdtypes.Pointer); ok { g.st = ptr.Elem().Underlying().(*stdtypes.Struct) } else { - g.st = structOpt.Value.Type().(*stdtypes.Struct) + g.st = o.Value.Type().(*stdtypes.Struct) + } + if _, ok := o.At("ConfigEnvDocEnable"); ok { + g.docEnable = true } g.funcName = "LoadConfig" - if funcNameOpt, ok := o.At("FuncName"); ok { - g.funcName = funcNameOpt.Value.String() + if opt, ok := o.At("ConfigEnvFuncName"); ok { + g.funcName = opt.Value.String() } - if markdownDocOpt, ok := o.At("ConfigMarkdownDoc"); ok { - g.docEnable = true - g.docOutputDir = markdownDocOpt.Value.String() + if opt, ok := o.At("ConfigEnvDocOutput"); ok { + g.docOutputDir = opt.Value.String() } } diff --git a/internal/interface/gateway/http_gateway.go b/internal/interface/gateway/http_gateway.go index 96c29fa1..c709f689 100644 --- a/internal/interface/gateway/http_gateway.go +++ b/internal/interface/gateway/http_gateway.go @@ -62,31 +62,20 @@ func (g *httpGatewayGateway) load(o *option.Option) error { return errors.NotePosition(o.Position, fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) } - //iface, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) - //if !ok { - // return errors.NotePosition(o.Position, - // fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) - //} typeName := ifacePtr.Elem().(*stdtypes.Named) - sg, errs := g.finder.Find(typeName) + _, iface, errs := g.finder.Find(typeName) if len(errs) > 0 { continue } so := model.GatewayServiceOption{ - ID: sg.ID(), - RawID: sg.RawID(), - TypeName: sg.TypeName(), - Type: sg.Type(), - Iface: sg.Interface(), - Methods: sg.Methods(), + Iface: iface, MethodOptions: map[string]model.GatewayMethodOption{}, } - if methodOpt, ok := serviceOpt.At("GatewayServiceMethod"); ok { - mo, err := g.parseMethodOption(sg.Interface(), methodOpt) + mo, err := g.parseMethodOption(iface.Interface(), methodOpt) if err != nil { return err } @@ -97,7 +86,7 @@ func (g *httpGatewayGateway) load(o *option.Option) error { return nil } -func NewGatewayOption( +func NewGateway( pkg *packages.Package, o *option.Option, finder finder.ServiceFinder, diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 688ebe03..ff580c4e 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -8,183 +8,271 @@ import ( stdstrings "strings" "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/errors" "github.com/swipe-io/swipe/v2/internal/graph" "github.com/swipe-io/swipe/v2/internal/openapi" + "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" - "golang.org/x/tools/go/types/typeutil" - - "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" + + "github.com/gogo/protobuf/sortkeys" + + "golang.org/x/tools/go/packages" + "golang.org/x/tools/go/types/typeutil" ) type serviceGateway struct { - serviceID string - rawServiceID string - transport model.TransportOption - readme model.ServiceReadme - serviceType stdtypes.Type - serviceTypeName *stdtypes.Named - serviceIface *stdtypes.Interface - serviceMethods []model.ServiceMethod - graphTypes *graph.Graph - commentMap *typeutil.Map - defaultMethodOptions model.MethodHTTPTransportOption - errors map[uint32]*model.HTTPError + pkg *packages.Package + transportType model.Transport + useFast bool + graphTypes *graph.Graph + commentMap *typeutil.Map + methodOptions map[string]model.MethodOption + defaultMethodOptions model.MethodOption + clientsEnable []string + errors map[uint32]*model.HTTPError + prefix string + openapiEnable bool + openapiOutput string + openapiInfo openapi.Info + openapiServers []openapi.Server + openapiMethodTags map[string][]string + openapiDefaultMethodTags []string + jsonRPCEnable bool + jsonRPCDocEnable bool + jsonRPCDocOutputDir string + jsonRPCPath string + readmeEnable bool + readmeOutput string + readmeTemplatePath string + interfaces model.Interfaces + hasher typeutil.Hasher + appName string + appID string } -func (g *serviceGateway) Errors() map[uint32]*model.HTTPError { - return g.errors +func (g *serviceGateway) AppID() string { + return g.appID } -func (g *serviceGateway) InstrumentingEnable() bool { - if g.defaultMethodOptions.InstrumentingEnable { - return true +func (g *serviceGateway) AppName() string { + return g.appName +} + +func (g *serviceGateway) Interfaces() model.Interfaces { + return g.interfaces +} + +func (g *serviceGateway) Prefix() string { + return g.prefix +} + +func (g *serviceGateway) UseFast() bool { + return g.useFast +} + +func (g *serviceGateway) MethodOption(m model.ServiceMethod) model.MethodOption { + if sign, ok := m.T.(*stdtypes.Signature); ok && sign.Recv() != nil { + ifaceName := stdtypes.TypeString(sign.Recv().Type(), func(p *stdtypes.Package) string { + return "" + }) + mopt, ok := g.methodOptions[ifaceName+m.Name] + if ok { + return mopt + } } - for _, transportOption := range g.transport.MethodOptions { - if transportOption.InstrumentingEnable { + return g.defaultMethodOptions +} + +func (g *serviceGateway) ClientEnable() bool { + return len(g.clientsEnable) > 0 +} + +func (g *serviceGateway) GoClientEnable() bool { + for _, client := range g.clientsEnable { + if client == "go" { return true } } return false } -func (g *serviceGateway) LoggingEnable() bool { - if g.defaultMethodOptions.LoggingEnable { - return true - } - for _, transportOption := range g.transport.MethodOptions { - if transportOption.LoggingEnable { +func (g *serviceGateway) JSClientEnable() bool { + for _, client := range g.clientsEnable { + if client == "js" { return true } } return false } -func (g *serviceGateway) ID() string { - return g.serviceID +func (g *serviceGateway) OpenapiEnable() bool { + return g.openapiEnable } -func (g *serviceGateway) RawID() string { - return g.rawServiceID +func (g *serviceGateway) OpenapiOutput() string { + return g.openapiOutput } -func (g *serviceGateway) Transport() model.TransportOption { - return g.transport +func (g *serviceGateway) OpenapiInfo() openapi.Info { + return g.openapiInfo } -func (g *serviceGateway) Methods() []model.ServiceMethod { - return g.serviceMethods +func (g *serviceGateway) OpenapiServers() []openapi.Server { + return g.openapiServers } -func (g *serviceGateway) Type() stdtypes.Type { - return g.serviceType +func (g *serviceGateway) OpenapiMethodTags(name string) []string { + return g.openapiMethodTags[name] } -func (g *serviceGateway) TypeName() *stdtypes.Named { - return g.serviceTypeName +func (g *serviceGateway) OpenapiDefaultMethodTags() []string { + return g.openapiDefaultMethodTags } -func (g *serviceGateway) Interface() *stdtypes.Interface { - return g.serviceIface +func (g *serviceGateway) TransportType() model.Transport { + return g.transportType } -func (g *serviceGateway) Readme() model.ServiceReadme { - return g.readme +func (g *serviceGateway) JSONRPCEnable() bool { + return g.jsonRPCEnable } -func (g *serviceGateway) load(o *option.Option) error { - serviceOpt := option.MustOption(o.At("iface")) - ifacePtr, ok := serviceOpt.Value.Type().(*stdtypes.Pointer) - if !ok { - return errors.NotePosition(serviceOpt.Position, - fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(serviceOpt.Value.Type(), nil))) - } - iface, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) - if !ok { - return errors.NotePosition(serviceOpt.Position, - fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(serviceOpt.Value.Type(), nil))) - } +func (g *serviceGateway) JSONRPCDocEnable() bool { + return g.jsonRPCDocEnable +} - typeName := ifacePtr.Elem().(*stdtypes.Named) - rawID := stdstrings.Split(typeName.Obj().Pkg().Path(), "/")[2] +func (g *serviceGateway) JSONRPCDocOutput() string { + return g.jsonRPCDocOutputDir +} - g.serviceID = strcase.ToCamel(rawID) - g.rawServiceID = rawID +func (g *serviceGateway) JSONRPCPath() string { + return g.jsonRPCPath +} - if nameOpt, ok := o.At("Name"); ok { - if name := nameOpt.Value.String(); name != "" { - g.serviceID = strcase.ToCamel(name) +func (g *serviceGateway) ReadmeOutput() string { + return g.readmeOutput +} + +func (g *serviceGateway) ReadmeTemplatePath() string { + return g.readmeTemplatePath +} + +func (g *serviceGateway) Error(key uint32) *model.HTTPError { + return g.errors[key] +} + +func (g *serviceGateway) ErrorKeys() (errorKeys []uint32) { + for key := range g.errors { + errorKeys = append(errorKeys, key) + } + sortkeys.Uint32s(errorKeys) + return +} + +func (g *serviceGateway) InstrumentingEnable() bool { + if g.defaultMethodOptions.InstrumentingEnable { + return true + } + for _, transportOption := range g.methodOptions { + if transportOption.InstrumentingEnable { + return true } } + return false +} - g.serviceType = ifacePtr.Elem() - g.serviceTypeName = typeName - g.serviceIface = iface +func (g *serviceGateway) LoggingEnable() bool { + if g.defaultMethodOptions.LoggingEnable { + return true + } + for _, transportOption := range g.methodOptions { + if transportOption.LoggingEnable { + return true + } + } + return false +} - errorMethodName := "StatusCode" - if g.transport.JsonRPC.Enable { - errorMethodName = "ErrorCode" +func (g *serviceGateway) ReadmeEnable() bool { + return g.readmeEnable +} + +func (g *serviceGateway) loadReadme(o *option.Option) error { + if _, ok := o.At("ReadmeEnable"); ok { + g.readmeEnable = true + } + if opt, ok := o.At("ReadmeOutput"); ok { + g.readmeOutput = opt.Value.String() } + if opt, ok := o.At("ReadmeTemplatePath"); ok { + g.readmeTemplatePath = opt.Value.String() + } + return nil +} - hasher := typeutil.MakeHasher() +func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32]*model.HTTPError, ifaceLen int) (*model.ServiceInterface, error) { + ifaceOpt := option.MustOption(o.At("iface")) + prefixOpt := option.MustOption(o.At("prefix")) - g.graphTypes.Iterate(func(n *graph.Node) { - g.graphTypes.Traverse(n, func(n *graph.Node) bool { - if named, ok := n.Object.Type().(*stdtypes.Named); ok { - key := hasher.Hash(named) - if _, ok := g.errors[key]; ok { - return true - } - if e := g.findError(named, errorMethodName); e != nil { - g.errors[key] = e - } - } - return true - }) - }) + ifacePtr, ok := ifaceOpt.Value.Type().(*stdtypes.Pointer) + if !ok { + return nil, errors.NotePosition(o.Position, + fmt.Errorf("the iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) + } + ifaceType, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) + if !ok { + return nil, errors.NotePosition(o.Position, + fmt.Errorf("the iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) + } + typeName := ifacePtr.Elem().(*stdtypes.Named) + ifaceName := strcase.ToCamel(typeName.Obj().Name()) + ifaceLcName := strcase.ToLowerCamel(ifaceName) - genericErrors := map[uint32]*model.HTTPError{} + nameExport := "" + nameUnExport := "" - g.graphTypes.Iterate(func(n *graph.Node) { - g.graphTypes.Traverse(n, func(n *graph.Node) bool { - if sig, ok := n.Object.Type().(*stdtypes.Signature); ok { - if sig.Results().Len() == 1 { - if stdtypes.TypeString(sig.Results().At(0).Type(), nil) == "github.com/go-kit/kit/endpoint.Middleware" { - g.graphTypes.Traverse(n, func(n *graph.Node) bool { - if named, ok := n.Object.Type().(*stdtypes.Named); ok { - key := hasher.Hash(named) - if _, ok := genericErrors[key]; ok { - return true - } - if e, ok := g.errors[key]; ok { - genericErrors[key] = e - } - } - return true - }) - } - } - } - return true - }) - }) + if ifaceLen > 1 { + nameExport = ifaceName + nameUnExport = ifaceLcName + } + + var serviceMethods []model.ServiceMethod - for i := 0; i < iface.NumMethods(); i++ { - m := iface.Method(i) + for i := 0; i < ifaceType.NumMethods(); i++ { + m := ifaceType.Method(i) sig := m.Type().(*stdtypes.Signature) comments, _ := g.commentMap.At(m.Type()).([]string) + lcName := strings.LcFirst(m.Name()) + + nameExport := m.Name() + nameUnExport := lcName + + nameRequest := m.Name() + "Request" + nameResponse := m.Name() + "Response" + + if ifaceLen > 1 { + nameRequest = ifaceName + m.Name() + "Request" + nameResponse = ifaceName + m.Name() + "Response" + nameExport = ifaceName + m.Name() + nameUnExport = ifaceLcName + m.Name() + } + sm := model.ServiceMethod{ - Type: m, - T: m.Type(), - Name: m.Name(), - LcName: strings.LcFirst(m.Name()), - Errors: genericErrors, - Comments: comments, + Type: m, + T: m.Type(), + Name: m.Name(), + NameExport: nameExport, + NameUnExport: nameUnExport, + LcName: lcName, + NameRequest: nameRequest, + NameResponse: nameResponse, + Errors: genericErrors, + Comments: comments, } g.graphTypes.Iterate(func(n *graph.Node) { @@ -192,7 +280,7 @@ func (g *serviceGateway) load(o *option.Option) error { if n.Object.Name() == m.Name() && stdtypes.Identical(n.Object.Type(), m.Type()) { g.graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { - key := hasher.Hash(named) + key := g.hasher.Hash(named) if _, ok := sm.Errors[key]; ok { return true } @@ -208,7 +296,7 @@ func (g *serviceGateway) load(o *option.Option) error { elem = ptr.Elem() } if named, ok := elem.(*stdtypes.Named); ok { - key := hasher.Hash(named) + key := g.hasher.Hash(named) if _, ok := sm.Errors[key]; ok { return true } @@ -239,7 +327,7 @@ func (g *serviceGateway) load(o *option.Option) error { } if !sm.ResultsNamed && sig.Results().Len()-resultOffset > 1 { - return errors.NotePosition(serviceOpt.Position, + return nil, errors.NotePosition(o.Position, fmt.Errorf("interface method with unnamed results cannot be greater than 1")) } for j := paramOffset; j < sig.Params().Len(); j++ { @@ -248,22 +336,111 @@ func (g *serviceGateway) load(o *option.Option) error { for j := 0; j < sig.Results().Len()-resultOffset; j++ { sm.Results = append(sm.Results, sig.Results().At(j)) } - g.serviceMethods = append(g.serviceMethods, sm) - } + serviceMethods = append(serviceMethods, sm) + } + return model.NewServiceInterface( + prefixOpt.Value.String(), + ifaceName, + ifaceLcName, + nameExport, + nameUnExport, + ifacePtr.Elem(), + typeName, + ifaceType, + serviceMethods, + ), nil +} - if transportOpt, ok := o.At("Transport"); ok { - transportOption, err := g.loadTransport(transportOpt) - if err != nil { - return err +func (g *serviceGateway) load(o *option.Option) error { + g.appName = stdstrings.Split(g.pkg.PkgPath, "/")[2] + if nameOpt, ok := o.At("Name"); ok { + if name := nameOpt.Value.String(); name != "" { + g.appName = strcase.ToCamel(name) } - g.transport = transportOption } - if opt, ok := o.At("Readme"); ok { - g.readme.Enable = true - if readmeTemplateOpt, ok := opt.At("ReadmeTemplate"); ok { - g.readme.TemplatePath = readmeTemplateOpt.Value.String() + g.appID = strcase.ToCamel(g.appName) + if err := g.loadJSONRPC(o); err != nil { + return err + } + if err := g.loadOpenapi(o); err != nil { + return err + } + if err := g.loadMethodOptions(o); err != nil { + return err + } + if err := g.loadReadme(o); err != nil { + return err + } + + g.prefix = "REST" + if g.jsonRPCEnable { + g.prefix = "JSONRPC" + } + + errorMethodName := "StatusCode" + if g.jsonRPCEnable { + errorMethodName = "ErrorCode" + } + + g.graphTypes.Iterate(func(n *graph.Node) { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { + if named, ok := n.Object.Type().(*stdtypes.Named); ok { + key := g.hasher.Hash(named) + if _, ok := g.errors[key]; ok { + return true + } + if e := g.findError(named, errorMethodName); e != nil { + g.errors[key] = e + } + } + return true + }) + }) + + genericErrors := map[uint32]*model.HTTPError{} + + g.graphTypes.Iterate(func(n *graph.Node) { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { + if sig, ok := n.Object.Type().(*stdtypes.Signature); ok { + if sig.Results().Len() == 1 { + if stdtypes.TypeString(sig.Results().At(0).Type(), nil) == "github.com/go-kit/kit/endpoint.Middleware" { + g.graphTypes.Traverse(n, func(n *graph.Node) bool { + if named, ok := n.Object.Type().(*stdtypes.Named); ok { + key := g.hasher.Hash(named) + if _, ok := genericErrors[key]; ok { + return true + } + if e, ok := g.errors[key]; ok { + genericErrors[key] = e + } + } + return true + }) + } + } + } + return true + }) + }) + + if ifaces, ok := o.Slice("Interface"); ok { + for _, iface := range ifaces { + svc, err := g.loadService(iface, genericErrors, len(ifaces)) + if err != nil { + return err + } + g.interfaces = append(g.interfaces, svc) } - g.readme.OutputDir = option.MustOption(opt.At("outputDir")).Value.String() + } + + if _, ok := o.At("HTTPServer"); ok { + g.transportType = model.HTTPTransport + } + if _, ok := o.At("HTTPFast"); ok { + g.useFast = true + } + if o, ok := o.At("ClientsEnable"); ok { + g.clientsEnable = o.Value.StringSlice() } return nil } @@ -301,143 +478,131 @@ func (g *serviceGateway) findError(named *stdtypes.Named, methodName string) *mo return nil } -func (g *serviceGateway) loadTransport(o *option.Option) (transportOption model.TransportOption, err error) { - _, fastHTTP := o.At("FastEnable") - transportOption = model.TransportOption{ - Protocol: option.MustOption(o.At("protocol")).Value.String(), - FastHTTP: fastHTTP, - MethodOptions: map[string]model.MethodHTTPTransportOption{}, - Openapi: model.OpenapiHTTPTransportOption{ - Methods: map[string]*model.OpenapiMethodOption{}, - }, +func (g *serviceGateway) loadOpenapi(o *option.Option) (err error) { + if _, ok := o.At("OpenapiEnable"); ok { + g.openapiEnable = true } - if v, ok := o.At("MarkdownDoc"); ok { - transportOption.MarkdownDoc.Enable = true - transportOption.MarkdownDoc.OutputDir = v.Value.String() + if v, ok := o.At("OpenapiOutput"); ok { + g.openapiOutput = v.Value.String() } - if _, ok := o.At("ClientEnable"); ok { - transportOption.Client.Enable = true + if v, ok := o.At("OpenapiInfo"); ok { + g.openapiInfo = openapi.Info{ + Title: option.MustOption(v.At("title")).Value.String(), + Description: option.MustOption(v.At("description")).Value.String(), + Version: option.MustOption(v.At("version")).Value.String(), + } } - if _, ok := o.At("ServerDisabled"); ok { - transportOption.ServerDisabled = true + if v, ok := o.At("OpenapiContact"); ok { + g.openapiInfo.Contact = &openapi.Contact{ + Name: option.MustOption(v.At("name")).Value.String(), + Email: option.MustOption(v.At("email")).Value.String(), + URL: option.MustOption(v.At("url")).Value.String(), + } } - if openapiDocOpt, ok := o.At("Openapi"); ok { - transportOption.Openapi.Enable = true - if v, ok := openapiDocOpt.At("OpenapiOutput"); ok { - transportOption.Openapi.Output = v.Value.String() + if v, ok := o.At("OpenapiLicence"); ok { + g.openapiInfo.License = &openapi.License{ + Name: option.MustOption(v.At("name")).Value.String(), + URL: option.MustOption(v.At("url")).Value.String(), } - if v, ok := openapiDocOpt.At("OpenapiInfo"); ok { - transportOption.Openapi.Info = openapi.Info{ - Title: option.MustOption(v.At("title")).Value.String(), + } + if s, ok := o.Slice("OpenapiServer"); ok { + for _, v := range s { + g.openapiServers = append(g.openapiServers, openapi.Server{ Description: option.MustOption(v.At("description")).Value.String(), - Version: option.MustOption(v.At("version")).Value.String(), - } - } - if v, ok := openapiDocOpt.At("OpenapiContact"); ok { - transportOption.Openapi.Info.Contact = &openapi.Contact{ - Name: option.MustOption(v.At("name")).Value.String(), - Email: option.MustOption(v.At("email")).Value.String(), - URL: option.MustOption(v.At("url")).Value.String(), - } - } - if v, ok := openapiDocOpt.At("OpenapiLicence"); ok { - transportOption.Openapi.Info.License = &openapi.License{ - Name: option.MustOption(v.At("name")).Value.String(), - URL: option.MustOption(v.At("url")).Value.String(), - } - } - if s, ok := openapiDocOpt.Slice("OpenapiServer"); ok { - for _, v := range s { - transportOption.Openapi.Servers = append(transportOption.Openapi.Servers, openapi.Server{ - Description: option.MustOption(v.At("description")).Value.String(), - URL: option.MustOption(v.At("url")).Value.String(), - }) - } + URL: option.MustOption(v.At("url")).Value.String(), + }) } - if openapiTags, ok := openapiDocOpt.Slice("OpenapiTags"); ok { - for _, openapiTagsOpt := range openapiTags { - var methods []string - if methodsOpt, ok := openapiTagsOpt.At("methods"); ok { - for _, expr := range methodsOpt.Value.ExprSlice() { - fnSel, ok := expr.(*ast.SelectorExpr) - if !ok { - return transportOption, errors.NotePosition(methodsOpt.Position, fmt.Errorf("the %s value must be func selector", methodsOpt.Name)) - } - methods = append(methods, fnSel.Sel.Name) - if _, ok := transportOption.Openapi.Methods[fnSel.Sel.Name]; !ok { - transportOption.Openapi.Methods[fnSel.Sel.Name] = &model.OpenapiMethodOption{} - } + } + if openapiTags, ok := o.Slice("OpenapiTags"); ok { + for _, openapiTagsOpt := range openapiTags { + var methods []string + if methodsOpt, ok := openapiTagsOpt.At("methods"); ok { + for _, expr := range methodsOpt.Value.ExprSlice() { + fnSel, ok := expr.(*ast.SelectorExpr) + if !ok { + return errors.NotePosition(methodsOpt.Position, fmt.Errorf("the %s value must be func selector", methodsOpt.Name)) + } + methods = append(methods, fnSel.Sel.Name) + if _, ok := g.openapiMethodTags[fnSel.Sel.Name]; !ok { + g.openapiMethodTags[fnSel.Sel.Name] = []string{} } } - if tagsOpt, ok := openapiTagsOpt.At("tags"); ok { - if len(methods) > 0 { - for _, method := range methods { - transportOption.Openapi.Methods[method].Tags = append(transportOption.Openapi.Methods[method].Tags, tagsOpt.Value.StringSlice()...) - } - } else { - transportOption.Openapi.DefaultMethod.Tags = append(transportOption.Openapi.DefaultMethod.Tags, tagsOpt.Value.StringSlice()...) + } + if tagsOpt, ok := openapiTagsOpt.At("tags"); ok { + if len(methods) > 0 { + for _, method := range methods { + g.openapiMethodTags[method] = append(g.openapiMethodTags[method], tagsOpt.Value.StringSlice()...) } + } else { + g.openapiDefaultMethodTags = append(g.openapiDefaultMethodTags, tagsOpt.Value.StringSlice()...) } } } - if transportOption.Openapi.Output == "" { - transportOption.Openapi.Output = "./" - } } - if jsonRpcOpt, ok := o.At("JSONRPC"); ok { - transportOption.JsonRPC.Enable = true - if path, ok := jsonRpcOpt.At("JSONRPCPath"); ok { - transportOption.JsonRPC.Path = path.Value.String() - } + if g.openapiOutput == "" { + g.openapiOutput = "./" } + return nil +} + +func (g *serviceGateway) loadMethodOptions(o *option.Option) (err error) { if methodDefaultOpt, ok := o.At("MethodDefaultOptions"); ok { - defaultMethodOptions, err := getMethodOptions(methodDefaultOpt, model.MethodHTTPTransportOption{}) + g.defaultMethodOptions, err = getMethodOptions(methodDefaultOpt, model.MethodOption{}) if err != nil { - return transportOption, err - } - - for _, method := range g.serviceMethods { - transportOption.MethodOptions[method.Name] = defaultMethodOptions + return err } - - g.defaultMethodOptions = defaultMethodOptions } - if methods, ok := o.Slice("MethodOptions"); ok { for _, methodOpt := range methods { signOpt := option.MustOption(methodOpt.At("signature")) fnSel, ok := signOpt.Value.Expr().(*ast.SelectorExpr) if !ok { - return transportOption, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) + return errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) } - - baseMethodOpts := transportOption.MethodOptions[fnSel.Sel.Name] - mopt, err := getMethodOptions(methodOpt, baseMethodOpts) + mopt, err := getMethodOptions(methodOpt, g.defaultMethodOptions) if err != nil { - return transportOption, err + return err + } + obj := g.pkg.TypesInfo.ObjectOf(fnSel.Sel) + if obj != nil { + if sign, ok := obj.Type().(*stdtypes.Signature); ok && sign.Recv() != nil { + ifaceName := stdtypes.TypeString(sign.Recv().Type(), func(p *stdtypes.Package) string { + return "" + }) + g.methodOptions[ifaceName+obj.Name()] = mopt + } } - transportOption.MethodOptions[fnSel.Sel.Name] = mopt } } + return +} - transportOption.Prefix = "REST" - if transportOption.JsonRPC.Enable { - transportOption.Prefix = "JSONRPC" +func (g *serviceGateway) loadJSONRPC(o *option.Option) (err error) { + if _, ok := o.At("JSONRPCEnable"); ok { + g.jsonRPCEnable = true + } + if _, ok := o.At("JSONRPCDocEnable"); ok { + g.jsonRPCDocEnable = true + } + if opt, ok := o.At("JSONRPCDocOutput"); ok { + g.jsonRPCDocOutputDir = opt.Value.String() + } + if opt, ok := o.At("JSONRPCPath"); ok { + g.jsonRPCPath = opt.Value.String() } - return } -func getMethodOptions(o *option.Option, baseMethodOpts model.MethodHTTPTransportOption) (model.MethodHTTPTransportOption, error) { - if loggingOpt, ok := o.At("Logging"); ok { - baseMethodOpts.LoggingEnable = loggingOpt.Value.Bool() +func getMethodOptions(o *option.Option, baseMethodOpts model.MethodOption) (model.MethodOption, error) { + if opt, ok := o.At("Logging"); ok { + baseMethodOpts.LoggingEnable = opt.Value.Bool() } - if loggingParamsOpt, ok := o.At("LoggingParams"); ok { + if opt, ok := o.At("LoggingParams"); ok { baseMethodOpts.LoggingIncludeParams = map[string]struct{}{} baseMethodOpts.LoggingExcludeParams = map[string]struct{}{} - includes := option.MustOption(loggingParamsOpt.At("includes")).Value.StringSlice() - excludes := option.MustOption(loggingParamsOpt.At("excludes")).Value.StringSlice() + includes := option.MustOption(opt.At("includes")).Value.StringSlice() + excludes := option.MustOption(opt.At("excludes")).Value.StringSlice() for _, field := range includes { baseMethodOpts.LoggingIncludeParams[field] = struct{}{} } @@ -445,18 +610,18 @@ func getMethodOptions(o *option.Option, baseMethodOpts model.MethodHTTPTransport baseMethodOpts.LoggingExcludeParams[field] = struct{}{} } } - if instrumentingOpt, ok := o.At("Instrumenting"); ok { - baseMethodOpts.InstrumentingEnable = instrumentingOpt.Value.Bool() + if opt, ok := o.At("Instrumenting"); ok { + baseMethodOpts.InstrumentingEnable = opt.Value.Bool() } - if wrapResponseOpt, ok := o.At("WrapResponse"); ok { + if opt, ok := o.At("RESTWrapResponse"); ok { baseMethodOpts.WrapResponse.Enable = true - baseMethodOpts.WrapResponse.Name = wrapResponseOpt.Value.String() + baseMethodOpts.WrapResponse.Name = opt.Value.String() } - if httpMethodOpt, ok := o.At("Method"); ok { - baseMethodOpts.MethodName = httpMethodOpt.Value.String() - baseMethodOpts.Expr = httpMethodOpt.Value.Expr() + if opt, ok := o.At("RESTMethod"); ok { + baseMethodOpts.MethodName = opt.Value.String() + baseMethodOpts.Expr = opt.Value.Expr() } - if path, ok := o.At("Path"); ok { + if path, ok := o.At("RESTPath"); ok { baseMethodOpts.Path = path.Value.String() idxs, err := httpBraceIndices(baseMethodOpts.Path) @@ -481,32 +646,32 @@ func getMethodOptions(o *option.Option, baseMethodOpts model.MethodHTTPTransport } } } - if serverRequestFunc, ok := o.At("ServerDecodeRequestFunc"); ok { - baseMethodOpts.ServerRequestFunc.Type = serverRequestFunc.Value.Type() - baseMethodOpts.ServerRequestFunc.Expr = serverRequestFunc.Value.Expr() + if opt, ok := o.At("ServerDecodeRequestFunc"); ok { + baseMethodOpts.ServerRequestFunc.Type = opt.Value.Type() + baseMethodOpts.ServerRequestFunc.Expr = opt.Value.Expr() } - if serverResponseFunc, ok := o.At("ServerEncodeResponseFunc"); ok { - baseMethodOpts.ServerResponseFunc.Type = serverResponseFunc.Value.Type() - baseMethodOpts.ServerResponseFunc.Expr = serverResponseFunc.Value.Expr() + if opt, ok := o.At("ServerEncodeResponseFunc"); ok { + baseMethodOpts.ServerResponseFunc.Type = opt.Value.Type() + baseMethodOpts.ServerResponseFunc.Expr = opt.Value.Expr() } - if clientRequestFunc, ok := o.At("ClientEncodeRequestFunc"); ok { - baseMethodOpts.ClientRequestFunc.Type = clientRequestFunc.Value.Type() - baseMethodOpts.ClientRequestFunc.Expr = clientRequestFunc.Value.Expr() + if opt, ok := o.At("ClientEncodeRequestFunc"); ok { + baseMethodOpts.ClientRequestFunc.Type = opt.Value.Type() + baseMethodOpts.ClientRequestFunc.Expr = opt.Value.Expr() } - if clientResponseFunc, ok := o.At("ClientDecodeResponseFunc"); ok { - baseMethodOpts.ClientResponseFunc.Type = clientResponseFunc.Value.Type() - baseMethodOpts.ClientResponseFunc.Expr = clientResponseFunc.Value.Expr() + if opt, ok := o.At("ClientDecodeResponseFunc"); ok { + baseMethodOpts.ClientResponseFunc.Type = opt.Value.Type() + baseMethodOpts.ClientResponseFunc.Expr = opt.Value.Expr() } - if queryVars, ok := o.At("QueryVars"); ok { + if opt, ok := o.At("RESTQueryVars"); ok { baseMethodOpts.QueryVars = map[string]string{} - values := queryVars.Value.StringSlice() + values := opt.Value.StringSlice() for i := 0; i < len(values); i += 2 { baseMethodOpts.QueryVars[values[i]] = values[i+1] } } - if headerVars, ok := o.At("HeaderVars"); ok { + if opt, ok := o.At("RESTHeaderVars"); ok { baseMethodOpts.HeaderVars = map[string]string{} - values := headerVars.Value.StringSlice() + values := opt.Value.StringSlice() for i := 0; i < len(values); i += 2 { baseMethodOpts.HeaderVars[values[i]] = values[i+1] } @@ -538,14 +703,19 @@ func httpBraceIndices(s string) ([]int, error) { } func NewServiceGateway( + pkg *packages.Package, o *option.Option, graphTypes *graph.Graph, commentMap *typeutil.Map, ) (gateway.ServiceGateway, error) { g := &serviceGateway{ - graphTypes: graphTypes, - commentMap: commentMap, - errors: map[uint32]*model.HTTPError{}, + pkg: pkg, + graphTypes: graphTypes, + commentMap: commentMap, + methodOptions: map[string]model.MethodOption{}, + openapiMethodTags: map[string][]string{}, + errors: map[uint32]*model.HTTPError{}, + hasher: typeutil.MakeHasher(), } if err := g.load(o); err != nil { return nil, err diff --git a/internal/interface/generator/client_struct.go b/internal/interface/generator/client_struct.go index 81a3271c..e7205c31 100644 --- a/internal/interface/generator/client_struct.go +++ b/internal/interface/generator/client_struct.go @@ -3,24 +3,27 @@ package generator import ( "context" "fmt" - - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - stdtypes "go/types" - "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type clientStructOptionsGateway interface { + UseFast() bool + JSONRPCEnable() bool + Interfaces() model.Interfaces +} + type clientStruct struct { writer.GoLangWriter - i *importer.Importer - serviceID string - serviceMethods []model.ServiceMethod - transport model.TransportOption + options clientStructOptionsGateway + i *importer.Importer } func (g *clientStruct) Prepare(ctx context.Context) error { @@ -34,171 +37,195 @@ func (g *clientStruct) Process(ctx context.Context) error { endpointPkg string ) - clientType := fmt.Sprintf("client%s", g.serviceID) - clientOptionType := fmt.Sprintf("%sClientOption", g.serviceID) - - if len(g.serviceMethods) > 0 { - contextPkg = g.i.Import("context", "context") - } - - endpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - - if g.transport.JsonRPC.Enable { - if g.transport.FastHTTP { + if g.options.JSONRPCEnable() { + if g.options.UseFast() { kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") } else { kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") } } else { - if g.transport.FastHTTP { + if g.options.UseFast() { kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") } else { kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") } } - g.W("type %s func(*%s)\n", clientOptionType, clientType) + endpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + + clientOptionType := fmt.Sprintf("ClientOption") + + g.W("type %s func(*clientOpts)\n", clientOptionType) + g.W("type clientOpts struct {\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, m := range iface.Methods() { + g.W("%sClientOption []%s.ClientOption\n", m.NameUnExport, kitHTTPPkg) + g.W("%sEndpointMiddleware []%s.Middleware\n", m.NameUnExport, endpointPkg) + } + } + g.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) + g.W("genericEndpointMiddleware []%s.Middleware\n", endpointPkg) + g.W("}\n\n") g.WriteFunc( - g.serviceID+"GenericClientOptions", + "GenericClientOptions", "", []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, []string{"", clientOptionType}, func() { - g.W("return func(c *%s) { c.genericClientOption = opt }\n", clientType) + g.W("return func(c *clientOpts) { c.genericClientOption = opt }\n") }, ) g.WriteFunc( - g.serviceID+"GenericClientEndpointMiddlewares", + "GenericClientEndpointMiddlewares", "", []string{"opt", "..." + endpointPkg + ".Middleware"}, []string{"", clientOptionType}, func() { - g.W("return func(c *%s) { c.genericEndpointMiddleware = opt }\n", clientType) + g.W("return func(c *clientOpts) { c.genericEndpointMiddleware = opt }\n") }, ) - for _, m := range g.serviceMethods { - g.WriteFunc(g.serviceID+m.Name+"ClientOptions", - "", - []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, - []string{"", clientOptionType}, - func() { - g.W("return func(c *%s) { c.%sClientOption = opt }\n", clientType, m.LcName) - }, - ) - - g.WriteFunc(g.serviceID+m.Name+"ClientEndpointMiddlewares", - "", - []string{"opt", "..." + endpointPkg + ".Middleware"}, - []string{"", clientOptionType}, - func() { - g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", clientType, m.LcName) - }, - ) - } - - g.W("type %s struct {\n", clientType) - for _, m := range g.serviceMethods { - g.W("%sEndpoint %s.Endpoint\n", m.LcName, endpointPkg) - g.W("%sClientOption []%s.ClientOption\n", m.LcName, kitHTTPPkg) - g.W("%sEndpointMiddleware []%s.Middleware\n", m.LcName, endpointPkg) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, m := range iface.Methods() { + g.WriteFunc(m.NameExport+"ClientOptions", + "", + []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, + []string{"", clientOptionType}, + func() { + g.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", m.NameUnExport) + }, + ) + g.WriteFunc(m.NameExport+"ClientEndpointMiddlewares", + "", + []string{"opt", "..." + endpointPkg + ".Middleware"}, + []string{"", clientOptionType}, + func() { + g.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", m.NameUnExport) + }, + ) + } } - g.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) - g.W("genericEndpointMiddleware []%s.Middleware\n", endpointPkg) - g.W("}\n\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) - for _, m := range g.serviceMethods { - var params []string + clientType := fmt.Sprintf("client%s", iface.NameExport()) - if m.ParamCtx != nil { - params = append(params, m.ParamCtx.Name(), stdtypes.TypeString(m.ParamCtx.Type(), g.i.QualifyPkg)) + if len(iface.Methods()) > 0 { + contextPkg = g.i.Import("context", "context") } - params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) - results := types.NameType(m.Results, g.i.QualifyPkg, nil) + g.W("type %s struct {\n", clientType) + for _, m := range iface.Methods() { + g.W("%sEndpoint %s.Endpoint\n", m.LcName, endpointPkg) - if m.ReturnErr != nil { - results = append(results, "", "error") } - g.WriteFunc(m.Name, "c *"+clientType, params, results, func() { - if len(m.Results) > 0 { - g.W("resp") - } else { - g.W("_") - } - g.W(", err := ") + g.W("}\n\n") - g.W("c.%sEndpoint(", m.LcName) + for _, m := range iface.Methods() { + var params []string if m.ParamCtx != nil { - g.W("%s,", m.ParamCtx.Name()) - } else { - g.W("%s.Background(),", contextPkg) - } - - if len(m.Params) > 0 { - g.W("%sRequest%s", m.LcName, g.serviceID) - params := structKeyValue(m.Params, func(p *stdtypes.Var) bool { - return !types.IsContext(p.Type()) - }) - g.WriteStructAssign(params) - } else { - g.W(" nil") + params = append(params, m.ParamCtx.Name(), stdtypes.TypeString(m.ParamCtx.Type(), g.i.QualifyPkg)) } - g.W(")\n") + params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) + results := types.NameType(m.Results, g.i.QualifyPkg, nil) if m.ReturnErr != nil { - g.W("if err != nil {\n") - g.W("return ") + results = append(results, "", "error") + } + g.WriteFunc(m.Name, "c *"+clientType, params, results, func() { if len(m.Results) > 0 { - for i, r := range m.Results { - if i > 0 { - g.W(",") - } - g.W(types.ZeroValue(r.Type())) - } - g.W(",") + g.W("resp") + } else { + g.W("_") + } + if m.ReturnErr != nil { + g.W(", err") + } else { + g.W(", _") + } + if len(m.Results) == 0 && m.ReturnErr == nil { + g.W(" = ") + } else { + g.W(" := ") } - g.W(" err\n") + g.W("c.%sEndpoint(", m.LcName) - g.W("}\n") - } + if m.ParamCtx != nil { + g.W("%s,", m.ParamCtx.Name()) + } else { + g.W("%s.Background(),", contextPkg) + } - if len(m.Results) > 0 { - if m.ResultsNamed { - g.W("response := resp.(%sResponse%s)\n", m.LcName, g.serviceID) + if len(m.Params) > 0 { + g.W("%s", m.NameRequest) + params := structKeyValue(m.Params, func(p *stdtypes.Var) bool { + return !types.IsContext(p.Type()) + }) + g.WriteStructAssign(params) } else { - g.W("response := resp.(%s)\n", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) + g.W(" nil") } - } - g.W("return ") + g.W(")\n") - if len(m.Results) > 0 { - if m.ResultsNamed { - for i, r := range m.Results { - if i > 0 { - g.W(",") + if m.ReturnErr != nil { + g.W("if err != nil {\n") + g.W("return ") + + if len(m.Results) > 0 { + for i, r := range m.Results { + if i > 0 { + g.W(",") + } + g.W(types.ZeroValue(r.Type(), g.i.QualifyPkg)) } - g.W("response.%s", strings.UcFirst(r.Name())) + g.W(",") } - } else { - g.W("response") + + g.W(" err\n") + + g.W("}\n") } - g.W(", ") - } - if m.ReturnErr != nil { - g.W("nil") - } - g.W("\n") - }) + + if len(m.Results) > 0 { + if m.ResultsNamed { + g.W("response := resp.(%s)\n", m.NameResponse) + } else { + g.W("response := resp.(%s)\n", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) + } + } + + g.W("return ") + + if len(m.Results) > 0 { + if m.ResultsNamed { + for i, r := range m.Results { + if i > 0 { + g.W(",") + } + g.W("response.%s", strings.UcFirst(r.Name())) + } + } else { + g.W("response") + } + g.W(", ") + } + if m.ReturnErr != nil { + g.W("nil") + } + g.W("\n") + }) + } } return nil } @@ -220,13 +247,9 @@ func (g *clientStruct) SetImporter(i *importer.Importer) { } func NewClientStruct( - serviceID string, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options clientStructOptionsGateway, ) generator.Generator { return &clientStruct{ - serviceID: serviceID, - serviceMethods: serviceMethods, - transport: transport, + options: options, } } diff --git a/internal/interface/generator/config.go b/internal/interface/generator/config.go index 6a15be64..0689e447 100644 --- a/internal/interface/generator/config.go +++ b/internal/interface/generator/config.go @@ -7,14 +7,13 @@ import ( stdtypes "go/types" "strconv" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/fatih/structtag" - "github.com/swipe-io/strcase" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -140,7 +139,7 @@ func (g *config) Process(ctx context.Context) error { errorsPkg := g.i.Import("errors", "errors") - g.W("if %s == %s {\n", "cfg."+opts.fieldPath, types.ZeroValue(f.Type())) + g.W("if %s == %s {\n", "cfg."+opts.fieldPath, types.ZeroValue(f.Type(), g.i.QualifyPkg)) requiredMsg := strconv.Quote(fmt.Sprintf("%s %s required", tagName, opts.name)) diff --git a/internal/interface/generator/config_markdown_doc.go b/internal/interface/generator/config_doc.go similarity index 76% rename from internal/interface/generator/config_markdown_doc.go rename to internal/interface/generator/config_doc.go index acd63862..a89d7298 100644 --- a/internal/interface/generator/config_markdown_doc.go +++ b/internal/interface/generator/config_doc.go @@ -6,23 +6,22 @@ import ( "path/filepath" "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/writer" ) -type configMarkdownDoc struct { +type configDoc struct { writer.BaseWriter st *stdtypes.Struct workDir string outputDir string } -func (g *configMarkdownDoc) Prepare(ctx context.Context) (err error) { +func (g *configDoc) Prepare(ctx context.Context) (err error) { g.outputDir, err = filepath.Abs(filepath.Join(g.workDir, g.outputDir)) return } -func (g *configMarkdownDoc) Process(ctx context.Context) error { +func (g *configDoc) Process(ctx context.Context) error { g.W("# Config\n\n") var flags []fldOpts @@ -62,22 +61,22 @@ func (g *configMarkdownDoc) Process(ctx context.Context) error { return nil } -func (g *configMarkdownDoc) PkgName() string { +func (g *configDoc) PkgName() string { return "" } -func (g *configMarkdownDoc) OutputDir() string { +func (g *configDoc) OutputDir() string { return g.outputDir } -func (g *configMarkdownDoc) Filename() string { +func (g *configDoc) Filename() string { return "config_doc_gen.md" } -func NewConfigMarkdownDoc( +func NewConfigDoc( st *stdtypes.Struct, workDir string, outputDir string, ) generator.Generator { - return &configMarkdownDoc{st: st, workDir: workDir, outputDir: outputDir} + return &configDoc{st: st, workDir: workDir, outputDir: outputDir} } diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index fcd3bb06..98acd799 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -5,26 +5,28 @@ import ( stdtypes "go/types" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - - "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/domain/model" + + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/strings" - "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type endpointOptionsGateway interface { + Interfaces() model.Interfaces +} + type EndpointOption struct { } type endpoint struct { writer.GoLangWriter - i *importer.Importer - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod + options endpointOptionsGateway + i *importer.Importer } func (g *endpoint) Prepare(ctx context.Context) error { @@ -32,110 +34,51 @@ func (g *endpoint) Prepare(ctx context.Context) error { } func (g *endpoint) Process(ctx context.Context) error { - var ( - contextPkg string - kitEndpointPkg string - ) - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - if len(g.serviceMethods) > 0 { - contextPkg = g.i.Import("context", "context") - kitEndpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - } - - g.W("type EndpointSet struct {\n") + g.writeEndpointMake() - for _, m := range g.serviceMethods { - g.W("%sEndpoint %s.Endpoint\n", m.Name, kitEndpointPkg) - } + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + epSetName := iface.NameExport() + "EndpointSet" - g.W("}\n") + g.W("type %s struct {\n", epSetName) - g.W("func MakeEndpointSet(s %s) EndpointSet {\n", typeStr) - g.W("return EndpointSet{\n") - for _, m := range g.serviceMethods { - g.W("%[1]sEndpoint: make%[1]sEndpoint(s),\n", m.Name) - } - g.W("}\n") - g.W("}\n") - - for _, m := range g.serviceMethods { - if len(m.Params) > 0 { - g.W("type %sRequest%s struct {\n", m.LcName, g.serviceID) - for _, p := range m.Params { - g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(p.Name()), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(p.Name())) - } - g.W("}\n") - } - - if m.ResultsNamed { - g.W("type %sResponse%s struct {\n", m.LcName, g.serviceID) - for _, p := range m.Results { - name := p.Name() - g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(name), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(name)) + if len(iface.Methods()) > 0 { + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + for _, m := range iface.Methods() { + g.W("%sEndpoint %s.Endpoint\n", m.Name, kitEndpointPkg) } - g.W("}\n") } - g.W("func make%sEndpoint(s %s", m.Name, typeStr) - g.W(") %s.Endpoint {\n", kitEndpointPkg) - g.W("w := func(ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) - - var callParams []string - - if m.ParamCtx != nil { - callParams = append(callParams, "ctx") - } + g.W("}\n") - callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { - name := p.Name() - name = stdstrings.ToUpper(name[:1]) + name[1:] - return []string{"req." + name} - }, nil)...) + g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) + g.W("return %s{\n", epSetName) + for _, m := range iface.Methods() { + g.W("%sEndpoint: make%sEndpoint(svc),\n", m.Name, m.NameExport) - if len(m.Params) > 0 { - g.W("req := request.(%sRequest%s)\n", m.LcName, g.serviceID) } + g.W("}\n") + g.W("}\n") - if len(m.Results) > 0 { - if m.ResultsNamed { - for i, p := range m.Results { - if i > 0 { - g.W(", ") - } - g.W(p.Name()) + for _, m := range iface.Methods() { + if len(m.Params) > 0 { + g.W("type %s struct {\n", m.NameRequest) + for _, p := range m.Params { + g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(p.Name()), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(p.Name())) } - } else { - g.W("result") + g.W("}\n") } - g.W(", ") - } - if m.ReturnErr != nil { - g.W("err") - } - if len(m.Results) > 0 || m.ReturnErr != nil { - g.W(" := ") - } - g.WriteFuncCall("s", m.Name, callParams) - if m.ReturnErr != nil { - g.WriteCheckErr(func() { - g.W("return nil, err\n") - }) - } - g.W("return ") - if len(m.Results) > 0 { + if m.ResultsNamed { - g.W("%sResponse%s", m.LcName, g.serviceID) - g.WriteStructAssign(structKeyValue(m.Results, nil)) - } else { - g.W("result") + g.W("type %s struct {\n", m.NameResponse) + for _, p := range m.Results { + name := p.Name() + g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(name), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(name)) + } + g.W("}\n") } - } else { - g.W("nil") } - g.W(" ,nil\n") - g.W("}\n") - g.W("return w\n") - g.W("}\n\n") } return nil } @@ -156,14 +99,79 @@ func (g *endpoint) SetImporter(i *importer.Importer) { g.i = i } -func NewEndpoint( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, -) generator.Generator { +func (g *endpoint) writeEndpointMake() { + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + if len(iface.Methods()) > 0 { + contextPkg := g.i.Import("context", "context") + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + + for _, m := range iface.Methods() { + g.W("func make%sEndpoint(s %s) %s.Endpoint {\n", m.NameExport, typeStr, kitEndpointPkg) + g.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) + + var callParams []string + if m.ParamCtx != nil { + callParams = append(callParams, "ctx") + } + callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { + name := p.Name() + name = stdstrings.ToUpper(name[:1]) + name[1:] + return []string{"req." + name} + }, nil)...) + + if len(m.Params) > 0 { + g.W("req := request.(%s)\n", m.NameRequest) + } + + if len(m.Results) > 0 { + if m.ResultsNamed { + for i, p := range m.Results { + if i > 0 { + g.W(", ") + } + g.W(p.Name()) + } + } else { + g.W("result") + } + g.W(", ") + } + if m.ReturnErr != nil { + g.W("err") + } + if len(m.Results) > 0 || m.ReturnErr != nil { + g.W(" := ") + } + g.WriteFuncCall("s", m.Name, callParams) + if m.ReturnErr != nil { + g.WriteCheckErr(func() { + g.W("return nil, err\n") + }) + } + g.W("return ") + if len(m.Results) > 0 { + if m.ResultsNamed { + g.W("%s", m.NameResponse) + g.WriteStructAssign(structKeyValue(m.Results, nil)) + } else { + g.W("result") + } + } else { + g.W("nil") + } + g.W(" ,nil\n") + g.W("}\n\n") + g.W("}\n\n") + } + } + } +} + +func NewEndpoint(options endpointOptionsGateway) generator.Generator { return &endpoint{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, + options: options, } } diff --git a/internal/interface/generator/endpoint_factory.go b/internal/interface/generator/endpoint_factory.go index 93520eae..1924a906 100644 --- a/internal/interface/generator/endpoint_factory.go +++ b/internal/interface/generator/endpoint_factory.go @@ -3,19 +3,21 @@ package generator import ( "context" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type endpointFactoryOptionsGateway interface { + Interfaces() model.Interfaces + Prefix() string +} + type endpointFactory struct { writer.GoLangWriter - i *importer.Importer - serviceID string - serviceMethods []model.ServiceMethod - transport model.TransportOption + options endpointFactoryOptionsGateway + i *importer.Importer } func (g *endpointFactory) Prepare(ctx context.Context) error { @@ -23,27 +25,39 @@ func (g *endpointFactory) Prepare(ctx context.Context) error { } func (g *endpointFactory) Process(ctx context.Context) error { - g.W("type EndpointFactory struct{\n") - g.W("Option []%sClientOption\n", g.serviceID) - g.W("Path string\n") - g.W("}\n\n") - - if len(g.serviceMethods) > 0 { - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - ioPkg := g.i.Import("io", "io") - stringsPkg := g.i.Import("strings", "strings") - - for _, m := range g.serviceMethods { - g.W("func (f *EndpointFactory) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", m.Name, kitEndpointPkg, ioPkg) - g.W("if f.Path != \"\"{\n") - g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) - g.W("}\n") - g.W("s, err := NewClient%s%s(instance, f.Option...)\n", g.transport.Prefix, g.serviceID) - g.WriteCheckErr(func() { - g.W("return nil, nil, err\n") - }) - g.W("return make%sEndpoint(s), nil, nil\n", m.Name) - g.W("\n}\n\n") + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + epFactoryName := iface.NameExport() + "EndpointFactory" + + g.W("type %s struct{\n", epFactoryName) + g.W("Option []ClientOption\n") + g.W("Path string\n") + g.W("}\n\n") + + if len(iface.Methods()) > 0 { + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + ioPkg := g.i.Import("io", "io") + stringsPkg := g.i.Import("strings", "strings") + + for _, m := range iface.Methods() { + g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) + g.W("if f.Path != \"\"{\n") + g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) + g.W("}\n") + g.W("c, err := NewClient%s(instance, f.Option...)\n", g.options.Prefix()) + g.WriteCheckErr(func() { + g.W("return nil, nil, err\n") + }) + g.W("return ") + if g.options.Interfaces().Len() > 1 { + g.W("make%s%sEndpoint(c.%sClient), nil, nil\n", iface.NameExport(), m.Name, iface.NameExport()) + } else { + g.W("make%s%sEndpoint(c), nil, nil\n", iface.NameExport(), m.Name) + } + g.W("\n}\n\n") + } } } return nil @@ -66,13 +80,9 @@ func (g *endpointFactory) SetImporter(i *importer.Importer) { } func NewEndpointFactory( - serviceID string, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options endpointFactoryOptionsGateway, ) generator.Generator { return &endpointFactory{ - serviceID: serviceID, - serviceMethods: serviceMethods, - transport: transport, + options: options, } } diff --git a/internal/interface/generator/http_gateway.go b/internal/interface/generator/http_gateway.go index ff28ec94..e39430ec 100644 --- a/internal/interface/generator/http_gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -3,11 +3,10 @@ package generator import ( "context" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -69,8 +68,8 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("type EndpointSet struct {\n") for _, s := range g.services { - g.W("%s struct {\n", s.ID) - for _, method := range s.Methods { + g.W("%s struct {\n", s.Iface.Name()) + for _, method := range s.Iface.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) } g.W("}\n") @@ -78,17 +77,17 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") for _, s := range g.services { - g.W("type %sEndpointFactory interface {\n", s.ID) - for _, method := range s.Methods { + g.W("type %sEndpointFactory interface {\n", s.Iface.Name()) + for _, method := range s.Iface.Methods() { g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) } g.W("}\n\n") - g.W("type %sOption struct {\n", s.ID) + g.W("type %sOption struct {\n", s.Iface.Name()) g.W("Instancer %s.Instancer \n", sdPkg) - g.W("EndpointFactory %sEndpointFactory\n", s.ID) + g.W("EndpointFactory %sEndpointFactory\n", s.Iface.Name()) - for _, method := range s.Methods { + for _, method := range s.Iface.Methods() { g.W("%s EndpointOption\n", method.Name) } g.W("}\n\n") @@ -99,14 +98,14 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { if i > 0 { g.W(",") } - g.W("%s %sOption", strings.LcFirst(s.ID), s.ID) + g.W("%s %sOption", strings.LcFirst(s.Iface.Name()), s.Iface.Name()) } g.W(", logger %s.Logger) (ep EndpointSet) {\n", logPkg) g.W("{\n") for _, s := range g.services { - for _, method := range s.Methods { - optName := strings.LcFirst(s.ID) + for _, method := range s.Iface.Methods() { + optName := strings.LcFirst(s.Iface.Name()) g.W("{\n") g.W("if %s.%s.Balancer == nil {\n", optName, method.Name) @@ -124,9 +123,9 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("endpointer := %[1]s.NewEndpointer(%[2]s.Instancer, %[2]s.EndpointFactory.%[3]sEndpointFactory, logger)\n", sdPkg, optName, method.Name) g.W( "ep.%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", - lbPkg, optName, method.Name, s.ID, + lbPkg, optName, method.Name, s.Iface.Name(), ) - g.W("ep.%[2]s.%[1]sEndpoint = RetryErrorExtractor()(ep.%[2]s.%[1]sEndpoint)\n", method.Name, s.ID) + g.W("ep.%[2]s.%[1]sEndpoint = RetryErrorExtractor()(ep.%[2]s.%[1]sEndpoint)\n", method.Name, s.Iface.Name()) g.W("}\n") } } diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index 80399a02..b69fd718 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -4,22 +4,25 @@ import ( "context" "fmt" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - - "github.com/gogo/protobuf/sortkeys" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type httpTransportOptionsGateway interface { + AppID() string + Interfaces() model.Interfaces + JSONRPCEnable() bool + UseFast() bool + Error(uint32) *model.HTTPError + ErrorKeys() []uint32 +} + type httpTransport struct { writer.GoLangWriter - serviceID string - serviceMethods []model.ServiceMethod - transport model.TransportOption - i *importer.Importer - errors map[uint32]*model.HTTPError + options httpTransportOptionsGateway + i *importer.Importer } func (g *httpTransport) Prepare(ctx context.Context) error { @@ -30,14 +33,14 @@ func (g *httpTransport) Process(ctx context.Context) error { var ( kitHTTPPkg string ) - if g.transport.JsonRPC.Enable { - if g.transport.FastHTTP { + if g.options.JSONRPCEnable() { + if g.options.UseFast() { kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") } else { kitHTTPPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") } } else { - if g.transport.FastHTTP { + if g.options.UseFast() { kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") } else { kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") @@ -48,16 +51,16 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("type httpError struct {\n") g.W("code int\n") - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { g.W("data interface{}\n") g.W("message string\n") } g.W("}\n") - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { g.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") } else { - if g.transport.FastHTTP { + if g.options.UseFast() { httpPkg := g.i.Import("fasthttp", "github.com/valyala/fasthttp") g.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) } else { @@ -69,7 +72,7 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") errorDecodeParams := []string{"code", "int"} - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { g.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") g.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") g.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") @@ -80,13 +83,9 @@ func (g *httpTransport) Process(ctx context.Context) error { g.WriteFunc("ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { g.W("switch code {\n") g.W("default:\nerr = &httpError{code: code}\n") - var errorKeys []uint32 - for key := range g.errors { - errorKeys = append(errorKeys, key) - } - sortkeys.Uint32s(errorKeys) - for _, key := range errorKeys { - e := g.errors[key] + + for _, key := range g.options.ErrorKeys() { + e := g.options.Error(key) g.W("case %d:\n", e.Code) pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) if pkgName != "" { @@ -99,7 +98,7 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) } g.W("}\n") - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { g.W("if err, ok := err.(%s.ErrorData); ok {\n", kitHTTPPkg) g.W("err.SetErrorData(data)\n") g.W("}\n") @@ -125,25 +124,13 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("}\n") g.W("}\n") - serverOptType := fmt.Sprintf("server%sOpts", g.serviceID) - serverOptionType := fmt.Sprintf("%sServerOption", g.serviceID) + serverOptType := fmt.Sprintf("serverOpts") + serverOptionType := fmt.Sprintf("ServerOption") kithttpServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) - g.W("type %s func (*%s)\n", serverOptionType, serverOptType) - - g.W("type %s struct {\n", serverOptType) - g.W("genericServerOption []%s\n", kithttpServerOption) - g.W("genericEndpointMiddleware []%s\n", endpointMiddlewareOption) - - for _, m := range g.serviceMethods { - g.W("%sServerOption []%s\n", m.LcName, kithttpServerOption) - g.W("%sEndpointMiddleware []%s\n", m.LcName, endpointMiddlewareOption) - } - g.W("}\n") - g.WriteFunc( - g.serviceID+"GenericServerOptions", + "GenericServerOptions", "", []string{"v", "..." + kithttpServerOption}, []string{"", serverOptionType}, @@ -153,7 +140,7 @@ func (g *httpTransport) Process(ctx context.Context) error { ) g.WriteFunc( - g.serviceID+"GenericServerEndpointMiddlewares", + "GenericServerEndpointMiddlewares", "", []string{"v", "..." + endpointMiddlewareOption}, []string{"", serverOptionType}, @@ -162,27 +149,47 @@ func (g *httpTransport) Process(ctx context.Context) error { }, ) - for _, m := range g.serviceMethods { - g.WriteFunc( - g.serviceID+m.Name+"ServerOptions", - "", - []string{"opt", "..." + kithttpServerOption}, - []string{"", serverOptionType}, - func() { - g.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, m.LcName) - }, - ) - - g.WriteFunc( - g.serviceID+m.Name+"ServerEndpointMiddlewares", - "", - []string{"opt", "..." + endpointMiddlewareOption}, - []string{"", serverOptionType}, - func() { - g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, m.LcName) - }, - ) + g.W("type %s func (*%s)\n", serverOptionType, serverOptType) + + g.W("type %s struct {\n", serverOptType) + g.W("genericServerOption []%s\n", kithttpServerOption) + g.W("genericEndpointMiddleware []%s\n", endpointMiddlewareOption) + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + for _, m := range iface.Methods() { + g.W("%sServerOption []%s\n", m.NameUnExport, kithttpServerOption) + g.W("%sEndpointMiddleware []%s\n", m.NameUnExport, endpointMiddlewareOption) + } } + g.W("}\n") + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, m := range iface.Methods() { + g.WriteFunc( + fmt.Sprintf("%sServerOptions", m.NameExport), + "", + []string{"opt", "..." + kithttpServerOption}, + []string{"", serverOptionType}, + func() { + g.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, m.NameUnExport) + }, + ) + + g.WriteFunc( + fmt.Sprintf("%sServerEndpointMiddlewares", m.NameExport), + "", + []string{"opt", "..." + endpointMiddlewareOption}, + []string{"", serverOptionType}, + func() { + g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, m.NameUnExport) + }, + ) + } + } + return nil } @@ -203,15 +210,9 @@ func (g *httpTransport) SetImporter(i *importer.Importer) { } func NewHttpTransport( - serviceID string, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, - errors map[uint32]*model.HTTPError, + options httpTransportOptionsGateway, ) generator.Generator { return &httpTransport{ - serviceID: serviceID, - serviceMethods: serviceMethods, - transport: transport, - errors: errors, + options: options, } } diff --git a/internal/interface/generator/instrumenting.go b/internal/interface/generator/instrumenting.go index 0d52224c..755f836e 100644 --- a/internal/interface/generator/instrumenting.go +++ b/internal/interface/generator/instrumenting.go @@ -2,24 +2,27 @@ package generator import ( "context" + "fmt" stdtypes "go/types" "strconv" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type instrumentingGeneratorOptionsGateway interface { + AppID() string + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption +} + type instrumentingGenerator struct { writer.GoLangWriter - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod - methodOptions map[string]model.MethodHTTPTransportOption - i *importer.Importer + options instrumentingGeneratorOptionsGateway + i *importer.Importer } func (g *instrumentingGenerator) Prepare(ctx context.Context) error { @@ -27,109 +30,117 @@ func (g *instrumentingGenerator) Prepare(ctx context.Context) error { } func (g *instrumentingGenerator) Process(ctx context.Context) error { - var ( - timePkg string - ) - if len(g.serviceMethods) > 0 { - timePkg = g.i.Import("time", "time") - } metricsPkg := g.i.Import("metrics", "github.com/go-kit/kit/metrics") - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") - kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") - - name := "instrumentingMiddleware" + g.serviceID - constructName := "NewInstrumentingMiddleware" + g.serviceID - - g.W("type InstrumentingOption func(*%s)\n\n", name) - g.W("func Namespace(v string) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.namespace = v\n}\n}\n\n") - g.W("func Subsystem(v string) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.subsystem = v\n}\n}\n\n") - - g.W("func RequestLatency(requestLatency %s.Histogram) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) - g.W("func RequestCount(requestCount %s.Counter) InstrumentingOption {\nreturn func(i *instrumentingMiddlewareSwipe) {\ni.requestCount = requestCount\n}\n}\n\n", metricsPkg) - - g.W("type %s struct {\n", name) - g.W("next %s\n", typeStr) + g.W("type instrumentingOpts struct {\n") g.W("requestCount %s.Counter\n", metricsPkg) g.W("requestLatency %s.Histogram\n", metricsPkg) g.W("namespace string\n") g.W("subsystem string\n") - g.W("}\n\n") - for _, m := range g.serviceMethods { - mopt := g.methodOptions[m.Name] + g.W("type InstrumentingOption func(*instrumentingOpts)\n\n") - var params []string + g.W("func Namespace(v string) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.namespace = v\n}\n}\n\n") + g.W("func Subsystem(v string) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.subsystem = v\n}\n}\n\n") - if m.ParamCtx != nil { - params = append(params, m.ParamCtx.Name(), stdtypes.TypeString(m.ParamCtx.Type(), g.i.QualifyPkg)) - } + g.W("func RequestLatency(requestLatency %s.Histogram) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) + g.W("func RequestCount(requestCount %s.Counter) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestCount = requestCount\n}\n}\n\n", metricsPkg) - params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) - results := types.NameTypeParams(m.Results, g.i.QualifyPkg, nil) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) - if m.ReturnErr != nil { - results = append(results, "", "error") + var ( + timePkg string + ) + if len(iface.Methods()) > 0 { + timePkg = g.i.Import("time", "time") } - g.WriteFunc(m.Name, "s *"+name, params, results, func() { - if mopt.InstrumentingEnable { - g.WriteDefer( - []string{"begin " + timePkg + ".Time"}, - []string{timePkg + ".Now()"}, - func() { - g.W("s.requestCount.With(\"method\", \"%s\").Add(1)\n", m.Name) - g.W("s.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", m.Name, timePkg) - }, - ) - } + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") + kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") - if len(m.Results) > 0 || m.ReturnErr != nil { - g.W("return ") - } - g.W("s.next.%s(", m.Name) - if m.ParamCtx != nil { - g.W("%s,", m.ParamCtx.Name()) - } + name := iface.NameExport() + "InstrumentingMiddleware" + constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", iface.NameExport()) - for i, p := range m.Params { - if i > 0 { - g.W(",") - } - g.W(p.Name()) + g.W("type %s struct {\n", name) + g.W("next %s\n", typeStr) + g.W("opts *instrumentingOpts\n") + g.W("}\n\n") + + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) + + var params []string + + if m.ParamCtx != nil { + params = append(params, m.ParamCtx.Name(), stdtypes.TypeString(m.ParamCtx.Type(), g.i.QualifyPkg)) } - g.W(")\n") - }) - } + params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) + results := types.NameType(m.Results, g.i.QualifyPkg, nil) - g.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) %[2]s {\n", constructName, typeStr, metricsPkg) + if m.ReturnErr != nil { + results = append(results, "", "error") + } - g.W("i := &%s{next: s}\n", name) + g.WriteFunc(m.Name, "s *"+name, params, results, func() { + if mopt.InstrumentingEnable { + g.WriteDefer( + []string{"begin " + timePkg + ".Time"}, + []string{timePkg + ".Now()"}, + func() { + g.W("s.opts.requestCount.With(\"method\", \"%s\").Add(1)\n", m.Name) + g.W("s.opts.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", m.Name, timePkg) + }, + ) + } - g.W("for _, o := range opts {\no(i)\n}\n") + if len(m.Results) > 0 || m.ReturnErr != nil { + g.W("return ") + } + g.W("s.next.%s(", m.Name) + if m.ParamCtx != nil { + g.W("%s,", m.ParamCtx.Name()) + } - g.W("if i.requestCount == nil {\n") - g.W("i.requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.W("Namespace: i.namespace,\n") - g.W("Subsystem: i.subsystem,\n") - g.W("Name: %s,\n", strconv.Quote("request_count")) - g.W("Help: %s,\n", strconv.Quote("Number of requests received.")) - g.W("}, []string{\"method\"})\n") - g.W("\n}\n") + for i, p := range m.Params { + if i > 0 { + g.W(",") + } + g.W(p.Name()) + } - g.W("if i.requestLatency == nil {\n") - g.W("i.requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.W("Namespace: i.namespace,\n") - g.W("Subsystem: i.subsystem,\n") - g.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) - g.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) - g.W("}, []string{\"method\"})\n") - g.W("\n}\n") + g.W(")\n") + }) + } - g.W("return i\n}\n") + g.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) %[2]s {\n", constructName, typeStr, metricsPkg) + g.W("i := &%s{next: s, opts: &instrumentingOpts{}}\n", name) + + g.W("for _, o := range opts {\no(i.opts)\n}\n") + + g.W("if i.opts.requestCount == nil {\n") + g.W("i.opts.requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + g.W("Namespace: i.opts.namespace,\n") + g.W("Subsystem: i.opts.subsystem,\n") + g.W("Name: %s,\n", strconv.Quote("request_count")) + g.W("Help: %s,\n", strconv.Quote("Number of requests received.")) + g.W("}, []string{\"method\"})\n") + g.W("\n}\n") + + g.W("if i.opts.requestLatency == nil {\n") + g.W("i.opts.requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + g.W("Namespace: i.opts.namespace,\n") + g.W("Subsystem: i.opts.subsystem,\n") + g.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) + g.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) + g.W("}, []string{\"method\"})\n") + g.W("\n}\n") + + g.W("return i\n}\n") + } return nil } @@ -150,15 +161,9 @@ func (g *instrumentingGenerator) SetImporter(i *importer.Importer) { } func NewInstrumenting( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, - methodOptions map[string]model.MethodHTTPTransportOption, + options instrumentingGeneratorOptionsGateway, ) generator.Generator { return &instrumentingGenerator{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, - methodOptions: methodOptions, + options: options, } } diff --git a/internal/interface/generator/jsonrpc_markdown_doc.go b/internal/interface/generator/jsonrpc_doc.go similarity index 69% rename from internal/interface/generator/jsonrpc_markdown_doc.go rename to internal/interface/generator/jsonrpc_doc.go index 1bf0432d..27e93f7a 100644 --- a/internal/interface/generator/jsonrpc_markdown_doc.go +++ b/internal/interface/generator/jsonrpc_doc.go @@ -11,11 +11,12 @@ import ( "sort" "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/fatih/structtag" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" + "golang.org/x/tools/go/types/typeutil" ) @@ -27,19 +28,23 @@ func (n NamedSlice) Less(i, j int) bool { return n[i].Obj().Name() < n[j].Obj(). var paramCommentRegexp = regexp.MustCompile(`(?s)@([a-zA-Z0-9_]*) (.*)`) -type jsonrpcMarkdownDoc struct { +type jsonrpcDocOptionsGateway interface { + AppID() string + Interfaces() model.Interfaces + JSONRPCDocOutput() string +} + +type jsonrpcDoc struct { writer.BaseWriter - serviceID string - serviceMethods []model.ServiceMethod - transport model.TransportOption - commentMap *typeutil.Map - enums *typeutil.Map - workDir string - outputDir string + options jsonrpcDocOptionsGateway + commentMap *typeutil.Map + enums *typeutil.Map + workDir string + outputDir string } -func (g *jsonrpcMarkdownDoc) Prepare(ctx context.Context) error { - outputDir, err := filepath.Abs(filepath.Join(g.workDir, g.transport.MarkdownDoc.OutputDir)) +func (g *jsonrpcDoc) Prepare(ctx context.Context) error { + outputDir, err := filepath.Abs(filepath.Join(g.workDir, g.options.JSONRPCDocOutput())) if err != nil { return err } @@ -47,7 +52,7 @@ func (g *jsonrpcMarkdownDoc) Prepare(ctx context.Context) error { return nil } -func (g *jsonrpcMarkdownDoc) appendExistsTypes(m *typeutil.Map, tpl stdtypes.Type) { +func (g *jsonrpcDoc) appendExistsTypes(m *typeutil.Map, tpl stdtypes.Type) { tpl = normalizeType(tpl) if isGolangNamedType(tpl) { return @@ -68,7 +73,7 @@ func (g *jsonrpcMarkdownDoc) appendExistsTypes(m *typeutil.Map, tpl stdtypes.Typ } } -func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { +func (g *jsonrpcDoc) Process(ctx context.Context) error { var pkgImport string pkgJsonFilepath := filepath.Join(g.workDir, "package.json") data, err := ioutil.ReadFile(pkgJsonFilepath) @@ -82,7 +87,7 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { } } - g.W("# %s JSONRPC Client\n\n", g.serviceID) + g.W("# %s JSONRPC Client\n\n", g.options.AppID()) if pkgImport != "" { g.W("## Getting Started\n\n") @@ -97,66 +102,79 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { existsTypes := new(typeutil.Map) - for _, method := range g.serviceMethods { - for _, param := range method.Params { - g.appendExistsTypes(existsTypes, param.Type()) - } - for _, result := range method.Results { - g.appendExistsTypes(existsTypes, result.Type()) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + for _, method := range iface.Methods() { + for _, param := range method.Params { + g.appendExistsTypes(existsTypes, param.Type()) + } + for _, result := range method.Results { + g.appendExistsTypes(existsTypes, result.Type()) + } + name := method.Name + if g.options.Interfaces().Len() > 1 { + name = iface.NameUnExport() + "." + method.Name + } + g.W("%[1]s\n\n", name) } - g.W("%[1]s\n\n", method.Name) - } - for _, method := range g.serviceMethods { - g.W("### %[1]s(", method.Name) + for _, method := range iface.Methods() { + name := method.Name + if g.options.Interfaces().Len() > 1 { + name = iface.NameUnExport() + "." + method.Name + } + + g.W("### %[1]s(", name) - for i, param := range method.Params { - if i > 0 { - g.W(", ") + for i, param := range method.Params { + if i > 0 { + g.W(", ") + } + g.W("%s", param.Name()) } - g.W("%s", param.Name()) - } - g.W(") ⇒") + g.W(") ⇒") - if len(method.Results) > 0 { - if len(method.Results) == 1 { - g.W("%s", g.getJSType(method.Results[0].Type())) + if len(method.Results) > 0 { + if len(method.Results) == 1 { + g.W("%s", g.getJSType(method.Results[0].Type())) + } + } else { + g.W("void") } - } else { - g.W("void") - } - g.W("\n\n") + g.W("\n\n") - paramsComment := make(map[string]string, len(method.Params)) - for _, comment := range method.Comments { - comment = strings.TrimSpace(comment) - if strings.HasPrefix(comment, "@") { - matches := paramCommentRegexp.FindAllStringSubmatch(comment, -1) - if len(matches) == 1 && len(matches[0]) == 3 { - paramsComment[matches[0][1]] = matches[0][2] + paramsComment := make(map[string]string, len(method.Params)) + for _, comment := range method.Comments { + comment = strings.TrimSpace(comment) + if strings.HasPrefix(comment, "@") { + matches := paramCommentRegexp.FindAllStringSubmatch(comment, -1) + if len(matches) == 1 && len(matches[0]) == 3 { + paramsComment[matches[0][1]] = matches[0][2] + } + continue } - continue + g.W("%s\n\n", strings.Replace(comment, method.Name, "", len(method.Name))) } - g.W("%s\n\n", strings.Replace(comment, method.Name, "", len(method.Name))) - } - g.W("\n\n") + g.W("\n\n") - g.W("**Throws**:\n\n") + g.W("**Throws**:\n\n") - for _, e := range method.Errors { - g.W("%sException\n\n", e.Named.Obj().Name()) - } + for _, e := range method.Errors { + g.W("%sException\n\n", e.Named.Obj().Name()) + } - g.W("\n\n") + g.W("\n\n") - if len(method.Params) > 0 { - g.W("| Param | Type | Description |\n|------|------|------|\n") - for _, param := range method.Params { - comment := paramsComment[param.Name()] - g.W("|%s|%s|%s|\n", param.Name(), g.getJSType(param.Type()), comment) + if len(method.Params) > 0 { + g.W("| Param | Type | Description |\n|------|------|------|\n") + for _, param := range method.Params { + comment := paramsComment[param.Name()] + g.W("|%s|%s|%s|\n", param.Name(), g.getJSType(param.Type()), comment) + } } } } @@ -251,19 +269,19 @@ func (g *jsonrpcMarkdownDoc) Process(ctx context.Context) error { return nil } -func (g *jsonrpcMarkdownDoc) PkgName() string { +func (g *jsonrpcDoc) PkgName() string { return "" } -func (g *jsonrpcMarkdownDoc) OutputDir() string { +func (g *jsonrpcDoc) OutputDir() string { return g.outputDir } -func (g *jsonrpcMarkdownDoc) Filename() string { +func (g *jsonrpcDoc) Filename() string { return "jsonrpc_doc_gen.md" } -func (g *jsonrpcMarkdownDoc) getJSType(tpl stdtypes.Type) string { +func (g *jsonrpcDoc) getJSType(tpl stdtypes.Type) string { switch v := tpl.(type) { default: return "" @@ -316,20 +334,16 @@ func (g *jsonrpcMarkdownDoc) getJSType(tpl stdtypes.Type) string { } } -func NewJsonrpcMarkdownDoc( - serviceID string, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, +func NewJsonrpcDoc( + options jsonrpcDocOptionsGateway, commentMap *typeutil.Map, enums *typeutil.Map, workDir string, ) generator.Generator { - return &jsonrpcMarkdownDoc{ - serviceID: serviceID, - serviceMethods: serviceMethods, - transport: transport, - commentMap: commentMap, - enums: enums, - workDir: workDir, + return &jsonrpcDoc{ + options: options, + commentMap: commentMap, + enums: enums, + workDir: workDir, } } diff --git a/internal/interface/generator/jsonrpc_go_client.go b/internal/interface/generator/jsonrpc_go_client.go index aa94e82e..956fba5f 100644 --- a/internal/interface/generator/jsonrpc_go_client.go +++ b/internal/interface/generator/jsonrpc_go_client.go @@ -6,20 +6,23 @@ import ( stdtypes "go/types" "strconv" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type jsonRPCGoClientOptionsGateway interface { + Prefix() string + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption + UseFast() bool +} + type jsonRPCGoClient struct { writer.GoLangWriter - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod - transport model.TransportOption - i *importer.Importer + options jsonRPCGoClientOptionsGateway + i *importer.Importer } func (g *jsonRPCGoClient) Prepare(ctx context.Context) error { @@ -27,142 +30,181 @@ func (g *jsonRPCGoClient) Prepare(ctx context.Context) error { } func (g *jsonRPCGoClient) Process(ctx context.Context) error { - clientType := "client" + g.serviceID - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - - g.W("func NewClient%s%s(tgt string", g.transport.Prefix, g.serviceID) - - g.W(" ,opts ...%sClientOption", g.serviceID) - - g.W(") (%s, error) {\n", typeStr) - - g.W("c := &%s{}\n", clientType) - - g.W("for _, o := range opts {\n") - g.W("o(c)\n") - g.W("}\n") - - var ( - jsonrpcPkg string - contextPkg string - ffJSONPkg string - jsonPkg string - fmtPkg string - urlPkg string - netPkg string - stringsPkg string - ) + if g.options.Interfaces().Len() > 1 { + g.W("type AppClient struct {\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + g.W("%sClient %s\n", iface.Name(), typeStr) + } + g.W("}\n\n") + + g.W("func NewClient%s(tgt string", g.options.Prefix()) + g.W(" ,opts ...ClientOption") + g.W(") (*AppClient, error) {\n") + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%sClient, err := NewClient%s%s(tgt)\n", iface.LoweName(), g.options.Prefix(), iface.NameExport()) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + } - if len(g.serviceMethods) > 0 { - if g.transport.FastHTTP { - jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") - } else { - jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + g.W("return &AppClient{\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]sClient: %[2]sClient,\n", iface.Name(), iface.LoweName()) } - urlPkg = g.i.Import("url", "net/url") - contextPkg = g.i.Import("context", "context") - ffJSONPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - jsonPkg = g.i.Import("json", "encoding/json") - fmtPkg = g.i.Import("fmt", "fmt") - netPkg = g.i.Import("net", "net") - stringsPkg = g.i.Import("strings", "strings") + g.W("}, nil\n") + g.W("}\n\n") } - if len(g.serviceMethods) > 0 { - g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) - g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - g.W("tgt = host + \":\" + port\n") - g.W("}\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + var ( + jsonrpcPkg string + contextPkg string + ffJSONPkg string + jsonPkg string + fmtPkg string + urlPkg string + netPkg string + stringsPkg string + ) - g.W("u, err := %s.Parse(tgt)\n", urlPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - g.W("if u.Scheme == \"\" {\n") - g.W("u.Scheme = \"https\"") - g.W("}\n") - } + iface := g.options.Interfaces().At(i) - for _, m := range g.serviceMethods { - mopt := g.transport.MethodOptions[m.Name] + clientType := "client" + iface.NameExport() + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("c.%[1]sClientOption = append(\nc.%[1]sClientOption,\n", m.LcName) + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) + g.W(" ,options ...ClientOption") + g.W(") (%s, error) {\n", typeStr) + g.W("opts := &clientOpts{}\n") + g.W("c := &%s{}\n", clientType) + g.W("for _, o := range options {\n") + g.W("o(opts)\n") + g.W("}\n") - g.W("%s.ClientRequestEncoder(", jsonrpcPkg) - g.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) + if len(iface.Methods()) > 0 { + if g.options.UseFast() { + jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + urlPkg = g.i.Import("url", "net/url") + contextPkg = g.i.Import("context", "context") + ffJSONPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + jsonPkg = g.i.Import("json", "encoding/json") + fmtPkg = g.i.Import("fmt", "fmt") + netPkg = g.i.Import("net", "net") + stringsPkg = g.i.Import("strings", "strings") + } - if len(m.Params) > 0 { - g.W("req, ok := obj.(%sRequest%s)\n", m.LcName, g.serviceID) - g.W("if !ok {\n") - g.W("return nil, %s.Errorf(\"couldn'tpl assert request as %sRequest%s, got %%T\", obj)\n", fmtPkg, m.LcName, g.serviceID) + if len(iface.Methods()) > 0 { + g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + g.W("tgt = host + \":\" + port\n") g.W("}\n") - g.W("b, err := %s.Marshal(req)\n", ffJSONPkg) - g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn'tpl marshal request %%T: %%s\", obj, err)\n", fmtPkg) + + g.W("u, err := %s.Parse(tgt)\n", urlPkg) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + g.W("if u.Scheme == \"\" {\n") + g.W("u.Scheme = \"https\"") g.W("}\n") - g.W("return b, nil\n") - } else { - g.W("return nil, nil\n") } - g.W("}),\n") - g.W("%s.ClientResponseDecoder(", jsonrpcPkg) - g.W("func(_ %s.Context, response %s.Response) (interface{}, error) {\n", contextPkg, jsonrpcPkg) - g.W("if response.Error != nil {\n") - g.W("return nil, ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n") - g.W("}\n") + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) - if len(m.Results) > 0 { - var responseType string - if m.ResultsNamed { - responseType = fmt.Sprintf("%sResponse%s", m.LcName, g.serviceID) - } else { - responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) - } + g.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", m.NameUnExport) - if mopt.WrapResponse.Enable { - g.W("var resp struct {\n Data %s `json:\"%s\"`\n}\n", responseType, mopt.WrapResponse.Name) + g.W("%s.ClientRequestEncoder(", jsonrpcPkg) + g.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) + + if len(m.Params) > 0 { + g.W("req, ok := obj.(%s)\n", m.NameRequest) + g.W("if !ok {\n") + g.W("return nil, %s.Errorf(\"couldn't assert request as %s, got %%T\", obj)\n", fmtPkg, m.NameRequest) + g.W("}\n") + g.W("b, err := %s.Marshal(req)\n", ffJSONPkg) + g.W("if err != nil {\n") + g.W("return nil, %s.Errorf(\"couldn't marshal request %%T: %%s\", obj, err)\n", fmtPkg) + g.W("}\n") + g.W("return b, nil\n") } else { - g.W("var resp %s\n", responseType) + g.W("return nil, nil\n") } + g.W("}),\n") - g.W("err := %s.Unmarshal(response.Result, &resp)\n", ffJSONPkg) - g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sResponse%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) + g.W("%s.ClientResponseDecoder(", jsonrpcPkg) + g.W("func(_ %s.Context, response %s.Response) (interface{}, error) {\n", contextPkg, jsonrpcPkg) + g.W("if response.Error != nil {\n") + g.W("return nil, ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n") g.W("}\n") - if mopt.WrapResponse.Enable { - g.W("return resp.Data, nil\n") + if len(m.Results) > 0 { + var responseType string + if m.ResultsNamed { + responseType = fmt.Sprintf("%s", m.NameResponse) + } else { + responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) + } + + if mopt.WrapResponse.Enable { + g.W("var resp struct {\n Data %s `json:\"%s\"`\n}\n", responseType, mopt.WrapResponse.Name) + } else { + g.W("var resp %s\n", responseType) + } + + g.W("err := %s.Unmarshal(response.Result, &resp)\n", ffJSONPkg) + g.W("if err != nil {\n") + g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameResponse) + g.W("}\n") + + if mopt.WrapResponse.Enable { + g.W("return resp.Data, nil\n") + } else { + g.W("return resp, nil\n") + } } else { - g.W("return resp, nil\n") + g.W("return nil, nil\n") + } + g.W("}),\n") + g.W(")\n") + + methodName := m.LcName + if g.options.Interfaces().Len() > 1 { + prefix := iface.NameUnExport() + if iface.Prefix() != "" { + prefix = iface.Prefix() + } + methodName = prefix + "." + methodName } - } else { - g.W("return nil, nil\n") - } - - g.W("}),\n") - g.W(")\n") + g.W("c.%sEndpoint = %s.NewClient(\n", m.LcName, jsonrpcPkg) + g.W("u,\n") + g.W("%s,\n", strconv.Quote(methodName)) - g.W("c.%sEndpoint = %s.NewClient(\n", m.LcName, jsonrpcPkg) - g.W("u,\n") - g.W("%s,\n", strconv.Quote(m.LcName)) + g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.NameUnExport) - g.W("append(c.genericClientOption, c.%sClientOption...)...,\n", m.LcName) + g.W(").Endpoint()\n") - g.W(").Endpoint()\n") + g.W( + "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[2]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", + m.LcName, + m.NameUnExport, + ) + } - g.W( - "c.%[1]sEndpoint = middlewareChain(append(c.genericEndpointMiddleware, c.%[1]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", - m.LcName, - ) + g.W("return c, nil\n") + g.W("}\n") } - - g.W("return c, nil\n") - g.W("}\n") return nil } @@ -182,16 +224,8 @@ func (g *jsonRPCGoClient) SetImporter(i *importer.Importer) { g.i = i } -func NewJsonRPCGoClient( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, -) generator.Generator { +func NewJsonRPCGoClient(options jsonRPCGoClientOptionsGateway) generator.Generator { return &jsonRPCGoClient{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, - transport: transport, + options: options, } } diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 6cfc1b03..6c699c04 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -5,9 +5,9 @@ import ( stdtypes "go/types" "strconv" - "github.com/gogo/protobuf/sortkeys" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" + + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" @@ -17,13 +17,14 @@ import ( const jsonRPCClientBase = ` export class JSONRPCError extends Error { constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; + super(message); + this.name = name; + this.code = code; + this.data = data; } - } -class JSONRPCClient { +} + +class JSONRPCScheduler { /** * * @param {*} transport @@ -110,12 +111,17 @@ class JSONRPCClient { } ` +type jsonRPCJSClientOptionsGateway interface { + Error(key uint32) *model.HTTPError + ErrorKeys() []uint32 + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption +} + type jsonRPCJSClient struct { writer.BaseWriter - serviceMethods []model.ServiceMethod - transport model.TransportOption - enums *typeutil.Map - errors map[uint32]*model.HTTPError + options jsonRPCJSClientOptionsGateway + enums *typeutil.Map } func (g *jsonRPCJSClient) Prepare(_ context.Context) error { @@ -129,98 +135,118 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { tdc := typevisitor.NewNamedTypeCollector() - for _, m := range g.serviceMethods { - mopt := g.transport.MethodOptions[m.Name] - mw.W("/**\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) - if len(m.Comments) > 0 { - for _, comment := range m.Comments { - mw.W("* %s\n", comment) - } - mw.W("*\n") - } + mw.W("export class JSONRPCClient%s {\n", iface.NameExport()) + mw.W("constructor(transport) {\n") + mw.W("this.scheduler = new JSONRPCScheduler(transport);\n") + mw.W("}\n\n") - for _, p := range m.Params { - buf := new(writer.BaseWriter) - typevisitor.JSTypeVisitor(buf).Visit(p.Type()) - tdc.Visit(p.Type()) - mw.W("* @param {%s} %s\n", buf.String(), p.Name()) - } + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) + mw.W("/**\n") - if len(m.Results) > 0 { - mw.W("* @return {PromiseLike<") - if m.ResultsNamed { - if mopt.WrapResponse.Enable { - mw.W("{%s: ", mopt.WrapResponse.Name) - } else { - mw.W("{") + if len(m.Comments) > 0 { + for _, comment := range m.Comments { + mw.W("* %s\n", comment) } + mw.W("*\n") } - for i, p := range m.Results { - if i > 0 { - mw.W(", ") - } - if m.ResultsNamed { - mw.W("%s: ", p.Name()) - } + for _, p := range m.Params { buf := new(writer.BaseWriter) typevisitor.JSTypeVisitor(buf).Visit(p.Type()) - tdc.Visit(p.Type()) - - mw.W(buf.String()) + mw.W("* @param {%s} %s\n", buf.String(), p.Name()) } - if m.ResultsNamed || mopt.WrapResponse.Enable { - mw.W("}") + + if len(m.Results) > 0 { + mw.W("* @return {PromiseLike<") + if m.ResultsNamed { + if mopt.WrapResponse.Enable { + mw.W("{%s: ", mopt.WrapResponse.Name) + } else { + mw.W("{") + } + } + for i, p := range m.Results { + if i > 0 { + mw.W(", ") + } + if m.ResultsNamed { + mw.W("%s: ", p.Name()) + } + + buf := new(writer.BaseWriter) + typevisitor.JSTypeVisitor(buf).Visit(p.Type()) + + tdc.Visit(p.Type()) + + mw.W(buf.String()) + } + if m.ResultsNamed || mopt.WrapResponse.Enable { + mw.W("}") + } + mw.W(">}\n") } - mw.W(">}\n") - } - mw.W("**/\n") - mw.W("%s(", m.LcName) + mw.W("**/\n") + mw.W("%s(", m.LcName) - for i, p := range m.Params { - if i > 0 { - mw.W(",") + for i, p := range m.Params { + if i > 0 { + mw.W(",") + } + mw.W(p.Name()) + } + var prefix string + if g.options.Interfaces().Len() > 1 { + prefix = iface.LoweName() + "." + } + if iface.Prefix() != "" { + prefix = iface.Prefix() + "." } - mw.W(p.Name()) - } - mw.W(") {\n") - mw.W("return this.__scheduleRequest(\"%s\", {", m.LcName) + mw.W(") {\n") + mw.W("return this.scheduler.__scheduleRequest(\"%s\", {", prefix+m.LcName) - for i, p := range m.Params { - if i > 0 { - mw.W(",") + for i, p := range m.Params { + if i > 0 { + mw.W(",") + } + mw.W("%[1]s:%[1]s", p.Name()) } - mw.W("%[1]s:%[1]s", p.Name()) - } - mw.W("})\n") - mw.W("}\n") + mw.W("})\n") + mw.W("}\n") + } + mw.W("}\n\n") } buf := new(writer.BaseWriter) - for _, t := range tdc.TypeDefs() { typevisitor.JSTypeDefVisitor(buf).Visit(t) } - g.W(buf.String()) - g.W("export default class extends JSONRPCClient {\n") - g.W(mw.String()) - g.W("}\n") - - errorKeys := make([]uint32, 0, len(g.errors)) - for key := range g.errors { - errorKeys = append(errorKeys, key) + if g.options.Interfaces().Len() > 1 { + g.W("class GRPCClient {\n") + g.W("constructor(transport) {\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("this.%[1]s = new JSONRPCClient%[1]s(transport);\n", iface.Name()) + } + g.W("}\n") + g.W("}\n") } - sortkeys.Uint32s(errorKeys) - for _, key := range errorKeys { - e := g.errors[key] + g.W("export default RPCClient\n\n") + + g.W(mw.String()) + + for _, key := range g.options.ErrorKeys() { + e := g.options.Error(key) g.W( "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %d, data);\n}\n}\n", e.Named.Obj().Name(), e.Code, @@ -232,8 +258,8 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("default:\n") g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") - for _, key := range errorKeys { - e := g.errors[key] + for _, key := range g.options.ErrorKeys() { + e := g.options.Error(key) g.W("case %d:\n", e.Code) g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) @@ -258,7 +284,6 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("});\n") } }) - return nil } @@ -279,15 +304,11 @@ func (g *jsonRPCJSClient) Filename() string { } func NewJsonRPCJSClient( - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options jsonRPCJSClientOptionsGateway, enums *typeutil.Map, - errors map[uint32]*model.HTTPError, ) generator.Generator { return &jsonRPCJSClient{ - serviceMethods: serviceMethods, - transport: transport, - enums: enums, - errors: errors, + options: options, + enums: enums, } } diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index e4a4c888..61f8656c 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -5,20 +5,26 @@ import ( stdtypes "go/types" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type jsonRPCServerOptionsGateway interface { + AppID() string + UseFast() bool + JSONRPCEnable() bool + JSONRPCPath() string + MethodOption(m model.ServiceMethod) model.MethodOption + Interfaces() model.Interfaces + Prefix() string +} + type jsonRPCServer struct { writer.GoLangWriter - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod - transport model.TransportOption - i *importer.Importer + options jsonRPCServerOptionsGateway + i *importer.Importer } func (g *jsonRPCServer) Prepare(ctx context.Context) error { @@ -33,9 +39,8 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { ffJSONPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") jsonPkg := g.i.Import("json", "encoding/json") contextPkg := g.i.Import("context", "context") - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - if g.transport.FastHTTP { + if g.options.UseFast() { jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") routerPkg = g.i.Import("routing", "github.com/qiangxue/fasthttp-routing") } else { @@ -43,7 +48,12 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { routerPkg = g.i.Import("mux", "github.com/gorilla/mux") } - g.W("func encodeResponseJSONRPC%s(_ %s.Context, result interface{}) (%s.RawMessage, error) {\n", g.serviceID, contextPkg, jsonPkg) + g.W("func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap {\n") + g.W("mergedECM := make(jsonrpc.EndpointCodecMap, 512)\n") + g.W("for _, ecm := range ecms {\nfor key, codec := range ecm {\nmergedECM[key] = codec\n}\n}\n") + g.W("return mergedECM\n}\n") + + g.W("func encodeResponseJSONRPC(_ %s.Context, result interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) g.W("b, err := %s.Marshal(result)\n", ffJSONPkg) g.W("if err != nil {\n") g.W("return nil, err\n") @@ -53,72 +63,88 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { stringsPkg := g.i.Import("strings", "strings") - g.W("func Make%sEndpointCodecMap(ep EndpointSet, ns ...string) %s.EndpointCodecMap {\n", g.serviceID, jsonrpcPkg) - - g.W("var namespace = %s.Join(ns, \".\")\n", stringsPkg) - g.W("if len(ns) > 0 {\n") - g.W("namespace += \".\"\n") - g.W("}\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) - g.W("ecm := %[1]s.EndpointCodecMap{}\n", jsonrpcPkg) + g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.NameExport()) + g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) + g.W("var namespace string\n") + if g.options.Interfaces().Len() > 1 { + prefix := iface.NameUnExport() + if iface.Prefix() != "" { + prefix = iface.Prefix() + } + g.W("namespace = \"%s.\"\n", prefix) + } + g.W("if len(ns) > 0 {\n") + g.W("namespace = %s.Join(ns, \".\") + \".\"\n", stringsPkg) + g.W("}\n") - //g.w("return %[1]s.EndpointCodecMap{\n", jsonrpcPkg) + g.W("ecm := %[1]s.EndpointCodecMap{}\n", jsonrpcPkg) - for _, m := range g.serviceMethods { - mopt := g.transport.MethodOptions[m.Name] + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) - g.W("if ep.%sEndpoint != nil {\n", m.Name) + g.W("if ep.%sEndpoint != nil {\n", m.Name) - g.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.LcName, jsonrpcPkg) - g.W("Endpoint: ep.%sEndpoint,\n", m.Name) - g.W("Decode: ") + g.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.LcName, jsonrpcPkg) + g.W("Endpoint: ep.%sEndpoint,\n", m.Name) + g.W("Decode: ") - if mopt.ServerRequestFunc.Expr != nil { - writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) - } else { - fmtPkg := g.i.Import("fmt", "fmt") + if mopt.ServerRequestFunc.Expr != nil { + writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) + } else { + fmtPkg := g.i.Import("fmt", "fmt") + + g.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) + + if len(m.Params) > 0 { + g.W("var req %s\n", m.NameRequest) + g.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) + g.W("if err != nil {\n") + g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) + g.W("}\n") + g.W("return req, nil\n") + + } else { + g.W("return nil, nil\n") + } + g.W("}") + } - g.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) + g.W(",\n") - if len(m.Params) > 0 { - g.W("var req %sRequest%s\n", m.LcName, g.serviceID) - g.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) - g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) - g.W("}\n") - g.W("return req, nil\n") + g.W("Encode:") + if mopt.WrapResponse.Enable && len(m.Results) > 0 { + jsonPkg := g.i.Import("json", "encoding/json") + g.W("func (ctx context.Context, response interface{}) (%s.RawMessage, error) {\n", jsonPkg) + g.W("return encodeResponseJSONRPC(ctx, map[string]interface{}{\"%s\": response})\n", mopt.WrapResponse.Name) + g.W("},\n") } else { - g.W("return nil, nil\n") + g.W("encodeResponseJSONRPC,\n") } - g.W("}") + g.W("}\n}\n") } - g.W(",\n") + g.W("return ecm\n") - g.W("Encode:") + g.W("}\n\n") + } - if mopt.WrapResponse.Enable && len(m.Results) > 0 { - jsonPkg := g.i.Import("json", "encoding/json") - g.W("func (ctx context.Context, response interface{}) (%s.RawMessage, error) {\n", jsonPkg) - g.W("return encodeResponseJSONRPC%s(ctx, map[string]interface{}{\"%s\": response})\n", g.serviceID, mopt.WrapResponse.Name) - g.W("},\n") - } else { - g.W("encodeResponseJSONRPC%s,\n", g.serviceID) + g.W("// HTTP %s Transport\n", g.options.Prefix()) + g.W("func MakeHandler%s(", g.options.Prefix()) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + if i > 0 { + g.W(",") } - g.W("}\n}\n") + g.W("svc%s %s", iface.NameExport(), typeStr) } - - g.W("return ecm\n") - - g.W("}\n") - - g.W("// HTTP %s Transport\n", g.transport.Prefix) - g.W("func MakeHandler%s%s(s %s", g.transport.Prefix, g.serviceID, typeStr) - - g.W(", opts ...%sServerOption", g.serviceID) + g.W(", options ...ServerOption") g.W(") (") - if g.transport.FastHTTP { + if g.options.UseFast() { g.W("%s.RequestHandler", g.i.Import("fasthttp", "github.com/valyala/fasthttp")) } else { g.W("%s.Handler", g.i.Import("http", "net/http")) @@ -126,27 +152,53 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W(", error) {\n") - g.W("sopt := &server%sOpts{}\n", g.serviceID) + g.W("opts := &serverOpts{}\n") - g.W("for _, o := range opts {\n o(sopt)\n }\n") + g.W("for _, o := range options {\n o(opts)\n }\n") - g.W("ep := MakeEndpointSet(s)\n") - - for _, m := range g.serviceMethods { - g.W( - "ep.%[1]sEndpoint = middlewareChain(append(sopt.genericEndpointMiddleware, sopt.%[2]sEndpointMiddleware...))(ep.%[1]sEndpoint)\n", - m.Name, m.LcName, - ) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) } - if g.transport.FastHTTP { + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + for _, m := range iface.Methods() { + g.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + m.NameUnExport, m.Name, epSetName, + ) + } + } + if g.options.UseFast() { g.W("r := %s.New()\n", routerPkg) } else { g.W("r := %s.NewRouter()\n", routerPkg) } - g.W("handler := %[1]s.NewServer(Make%sEndpointCodecMap(ep), sopt.genericServerOption...)\n", jsonrpcPkg, g.serviceID) - jsonRPCPath := g.transport.JsonRPC.Path - if g.transport.FastHTTP { + + g.W("handler := %s.NewServer(", jsonrpcPkg) + + if g.options.Interfaces().Len() > 1 { + g.W("MergeEndpointCodecMaps(") + } + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + if i > 0 { + g.W(",") + } + g.W("Make%[1]sEndpointCodecMap(%[2]s)", iface.NameExport(), makeEpSetName(iface, g.options.Interfaces().Len())) + } + + if g.options.Interfaces().Len() > 1 { + g.W(")") + } + + g.W(", opts.genericServerOption...)\n") + + jsonRPCPath := g.options.JSONRPCPath() + if g.options.UseFast() { r := stdstrings.NewReplacer("{", "<", "}", ">") jsonRPCPath = r.Replace(jsonRPCPath) @@ -154,7 +206,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } else { g.W("r.Methods(\"POST\").Path(\"%s\").Handler(handler)\n", jsonRPCPath) } - if g.transport.FastHTTP { + if g.options.UseFast() { g.W("return r.HandleRequest, nil") } else { g.W("return r, nil") @@ -180,15 +232,9 @@ func (g *jsonRPCServer) SetImporter(i *importer.Importer) { } func NewJsonRPCServer( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options jsonRPCServerOptionsGateway, ) generator.Generator { return &jsonRPCServer{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, - transport: transport, + options: options, } } diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index 7a586013..2ee4301c 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -2,26 +2,30 @@ package generator import ( "context" + "fmt" stdtypes "go/types" "strconv" "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/types" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type loggingGeneratorOptionsGateway interface { + AppID() string + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption +} + type logging struct { writer.GoLangWriter - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod - methodOptions map[string]model.MethodHTTPTransportOption - i *importer.Importer + options loggingGeneratorOptionsGateway + i *importer.Importer } func (g *logging) Prepare(ctx context.Context) error { @@ -29,94 +33,151 @@ func (g *logging) Prepare(ctx context.Context) error { } func (g *logging) Process(ctx context.Context) error { - var ( - timePkg string - ) - if len(g.serviceMethods) > 0 { - timePkg = g.i.Import("time", "time") - } - loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - - name := "loggingMiddleware" + g.serviceID - constructName := "NewLoggingMiddleware" + g.serviceID - - g.WriteTypeStruct( - name, - []string{ - "next", typeStr, - "logger", loggerPkg + ".Logger", - }, - ) - - for _, m := range g.serviceMethods { - mopt := g.methodOptions[m.Name] - - logParams := makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Params...) - - if len(m.Results) > 0 { - if m.ResultsNamed { - logParams = append(logParams, makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Results...)...) - } else { - logParams = append(logParams, strconv.Quote("result"), makeLogParam("result", m.Results[0].Type())) - } + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + var ( + timePkg string + ) + if len(iface.Methods()) > 0 { + timePkg = g.i.Import("time", "time") } + loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + + name := iface.NameExport() + "LoggingMiddleware" + constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.NameExport()) + + g.WriteTypeStruct( + name, + []string{ + "next", typeStr, + "logger", loggerPkg + ".Logger", + }, + ) + + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) + + logParams := makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Params...) + + if len(m.Results) > 0 { + if m.ResultsNamed { + logParams = append(logParams, makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Results...)...) + } else { + logParams = append(logParams, strconv.Quote("result"), makeLogParam("result", m.Results[0].Type())) + } + } - var params, results []string + var params, results []string - if m.ParamCtx != nil { - params = append(params, m.ParamCtx.Name(), stdtypes.TypeString(m.ParamCtx.Type(), g.i.QualifyPkg)) - } + if m.ParamCtx != nil { + params = append(params, m.ParamCtx.Name(), stdtypes.TypeString(m.ParamCtx.Type(), g.i.QualifyPkg)) + } - params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) + params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) - if len(m.Results) > 0 { - if m.ResultsNamed { - results = types.NameTypeParams(m.Results, g.i.QualifyPkg, nil) - } else { - results = append(results, "result", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) + if len(m.Results) > 0 { + //if m.ResultsNamed { + results = types.NameType(m.Results, g.i.QualifyPkg, nil) + //} else { + //results = append(results, "", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) + //} } - } - if m.ReturnErr != nil { - errName := m.ReturnErr.Name() - if errName == "" || errName == "_" { - errName = "err" + if m.ReturnErr != nil { + //errName := m.ReturnErr.Name() + //if errName == "" || errName == "_" { + // errName = "err" + //} + results = append(results, "", "error") + logParams = append(logParams, strconv.Quote("err"), "err") } - results = append(results, errName, "error") - - logParams = append(logParams, strconv.Quote(errName), errName) - } - g.WriteFunc(m.Name, "s *"+name, params, results, func() { - if mopt.LoggingEnable { - if len(logParams) > 0 { - g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) - g.W(strings.Join(logParams, ",")) - g.W(")\n") + g.WriteFunc(m.Name, "s *"+name, params, results, func() { + if m.ReturnErr != nil || len(m.Results) > 0 { + g.WriteVarGroup(func() { + for _, result := range m.Results { + name := "result" + if result.Name() != "" { + name = strcase.ToLowerCamel(result.Name()) + } + g.W("%s %s\n", name, stdtypes.TypeString(result.Type(), g.i.QualifyPkg)) + } + if m.ReturnErr != nil { + g.W("err error\n") + } }) } - } - if len(m.Results) > 0 || m.ReturnErr != nil { - g.W("return ") - } - g.W("s.next.%s(", m.Name) - if m.ParamCtx != nil { - g.W("%s,", m.ParamCtx.Name()) - } - for i, p := range m.Params { - if i > 0 { - g.W(",") + if mopt.LoggingEnable { + if len(logParams) > 0 { + g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) + g.W(strings.Join(logParams, ",")) + g.W(")\n") + }) + } + } + + if len(m.Results) > 0 || m.ReturnErr != nil { + for i, result := range m.Results { + name := "result" + if result.Name() != "" { + name = strcase.ToLowerCamel(result.Name()) + } + if i > 0 { + g.W(",") + } + g.W(name) + } + if m.ReturnErr != nil { + if len(m.Results) > 0 { + g.W(",") + } + g.W("err") + } + + g.W(" = ") } - g.W(p.Name()) - } - g.W(")\n") - }) - } - g.W("func %[1]s(s %[2]s, logger %[4]s.Logger) %[2]s {\n return &%[3]s{next: s, logger: logger}\n}\n", constructName, typeStr, name, loggerPkg) + g.W("s.next.%s(", m.Name) + if m.ParamCtx != nil { + g.W("%s,", m.ParamCtx.Name()) + } + for i, p := range m.Params { + if i > 0 { + g.W(",") + } + g.W(p.Name()) + } + g.W(")\n") + + if len(m.Results) > 0 || m.ReturnErr != nil { + g.W("return ") + + for i, result := range m.Results { + name := "result" + if result.Name() != "" { + name = strcase.ToLowerCamel(result.Name()) + } + if i > 0 { + g.W(",") + } + g.W(name) + } + if m.ReturnErr != nil { + if len(m.Results) > 0 { + g.W(",") + } + g.W("%s.Unwrap(err)", g.i.Import("errors", "errors")) + } + } + }) + } + + g.W("func %[1]s(s %[2]s, logger %[4]s.Logger) %[2]s {\n return &%[3]s{next: s, logger: logger}\n}\n", constructName, typeStr, name, loggerPkg) + } return nil } @@ -136,16 +197,8 @@ func (g *logging) SetImporter(i *importer.Importer) { g.i = i } -func NewLogging( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, - methodOptions map[string]model.MethodHTTPTransportOption, -) generator.Generator { +func NewLogging(options loggingGeneratorOptionsGateway) generator.Generator { return &logging{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, - methodOptions: methodOptions, + options: options, } } diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index ffecd297..ea348245 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -5,7 +5,7 @@ import ( "context" "encoding/json" "fmt" - stdtypes "go/types" + "path" "path/filepath" "strconv" stdstrings "strings" @@ -168,17 +168,28 @@ func getOpenapiRestErrorSchema() *openapi.Schema { } } +type openapiDocOptionsGateway interface { + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption + JSONRPCEnable() bool + ErrorKeys() []uint32 + Error(key uint32) *model.HTTPError + OpenapiOutput() string + OpenapiInfo() openapi.Info + OpenapiServers() []openapi.Server + OpenapiMethodTags(name string) []string + OpenapiDefaultMethodTags() []string +} + type openapiDoc struct { bytes.Buffer - serviceMethods []model.ServiceMethod - transport model.TransportOption - workDir string - outputDir string - errors map[uint32]*model.HTTPError + options openapiDocOptionsGateway + workDir string + outputDir string } func (g *openapiDoc) Prepare(ctx context.Context) error { - outputDir, err := filepath.Abs(filepath.Join(g.workDir, g.transport.Openapi.Output)) + outputDir, err := filepath.Abs(filepath.Join(g.workDir, g.options.OpenapiOutput())) if err != nil { return err } @@ -187,11 +198,11 @@ func (g *openapiDoc) Prepare(ctx context.Context) error { } func (g *openapiDoc) Process(ctx context.Context) error { - opt := g.transport.Openapi + swg := openapi.OpenAPI{ OpenAPI: "3.0.0", - Info: opt.Info, - Servers: opt.Servers, + Info: g.options.OpenapiInfo(), + Servers: g.options.OpenapiServers(), Paths: map[string]*openapi.Path{}, Components: openapi.Components{ Schemas: openapi.Schemas{}, @@ -200,15 +211,15 @@ func (g *openapiDoc) Process(ctx context.Context) error { ntc := iftypevisitor.NewNamedTypeCollector() - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { swg.Components.Schemas = getOpenapiJSONRPCErrorSchemas() } else { swg.Components.Schemas["Error"] = getOpenapiRestErrorSchema() } - - for _, ei := range g.errors { + for _, key := range g.options.ErrorKeys() { + ei := g.options.Error(key) var s *openapi.Schema - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { s = &openapi.Schema{ Type: "object", Properties: openapi.Properties{ @@ -247,67 +258,96 @@ func (g *openapiDoc) Process(ctx context.Context) error { swg.Components.Schemas[ei.Named.Obj().Name()] = s } - for _, m := range g.serviceMethods { - mopt := g.transport.MethodOptions[m.Name] + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) - var ( - o *openapi.Operation - pathStr string - tags = opt.DefaultMethod.Tags - ) + var ( + o *openapi.Operation + pathStr string + ) - if openapiMethodOpt, ok := opt.Methods[m.Name]; ok { - tags = append(tags, openapiMethodOpt.Tags...) - } + methodTags := g.options.OpenapiMethodTags(m.Name) + tags := append(g.options.OpenapiDefaultMethodTags(), methodTags...) + + methodName := mopt.MethodName - if g.transport.JsonRPC.Enable { - o = g.makeJSONRPCPath(m, ntc) - pathStr = "/" + strings.LcFirst(m.Name) - mopt.MethodName = "POST" - - for _, ei := range m.Errors { - codeStr := strconv.FormatInt(ei.Code, 10) - o.Responses["x"+codeStr] = openapi.Response{ - Description: ei.Named.Obj().Name(), - Content: openapi.Content{ - "application/json": { - Schema: &openapi.Schema{ - Ref: "#/components/schemas/" + ei.Named.Obj().Name(), + var prefix string + if g.options.JSONRPCEnable() { + prefix = strcase.ToLowerCamel(iface.Name()) + } else { + prefix = strcase.ToKebab(iface.Name()) + } + if iface.Prefix() != "" { + prefix = iface.Prefix() + } + if g.options.JSONRPCEnable() { + o = g.makeJSONRPCPath(m, iface, ntc) + pathStr = "/" + strings.LcFirst(m.Name) + if g.options.Interfaces().Len() > 1 { + pathStr = "/" + prefix + "." + strings.LcFirst(m.Name) + } + methodName = "POST" + for _, ei := range m.Errors { + codeStr := strconv.FormatInt(ei.Code, 10) + o.Responses["x"+codeStr] = openapi.Response{ + Description: ei.Named.Obj().Name(), + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/" + ei.Named.Obj().Name(), + }, }, }, - }, + } + } + } else { + o = g.makeRestPath(m, ntc) + pathStr = mopt.Path + if pathStr == "" { + pathStr = strcase.ToKebab(m.LcName) + } + svcPrefix := "" + if g.options.Interfaces().Len() > 1 { + svcPrefix = path.Join("/", prefix) } + for _, p := range m.Params { + if regexp, ok := mopt.PathVars[p.Name()]; ok { + pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) + } + } + pathStr = path.Join(svcPrefix, "/", pathStr) } - } else { - o = g.makeRestPath(opt, m) - pathStr = mopt.Path - for _, p := range m.Params { - if regexp, ok := mopt.PathVars[p.Name()]; ok { - pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) + + if g.options.Interfaces().Len() > 1 { + ifaceTag := strcase.ToLowerCamel(iface.Name()) + if iface.Prefix() != "" { + ifaceTag = iface.Prefix() } + tags = append(tags, ifaceTag) } - } - o.Tags = tags + o.Tags = tags - if _, ok := swg.Paths[pathStr]; !ok { - swg.Paths[pathStr] = &openapi.Path{} - } + if _, ok := swg.Paths[pathStr]; !ok { + swg.Paths[pathStr] = &openapi.Path{} + } - switch mopt.MethodName { - default: - swg.Paths[pathStr].Get = o - case "POST": - swg.Paths[pathStr].Post = o - case "PUT": - swg.Paths[pathStr].Put = o - case "PATCH": - swg.Paths[pathStr].Patch = o - case "DELETE": - swg.Paths[pathStr].Delete = o + switch methodName { + default: + swg.Paths[pathStr].Get = o + case "POST": + swg.Paths[pathStr].Post = o + case "PUT": + swg.Paths[pathStr].Put = o + case "PATCH": + swg.Paths[pathStr].Patch = o + case "DELETE": + swg.Paths[pathStr].Delete = o + } } } - for _, t := range ntc.TypeDefs() { schema := &openapi.Schema{} iftypevisitor.OpenapiDefVisitor(schema).Visit(t) @@ -330,7 +370,7 @@ func (g *openapiDoc) OutputDir() string { func (g *openapiDoc) Filename() string { typeName := "rest" - if g.transport.JsonRPC.Enable { + if g.options.JSONRPCEnable() { typeName = "jsonrpc" } return fmt.Sprintf("openapi_%s_gen.json", typeName) @@ -340,21 +380,16 @@ func (g *openapiDoc) Imports() []string { return nil } -func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, ntc ustypevisitor.NamedTypeCollector) *openapi.Operation { - mopt := g.transport.MethodOptions[m.Name] - +func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.ServiceInterface, ntc ustypevisitor.NamedTypeCollector) *openapi.Operation { + mopt := g.options.MethodOption(m) responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, } - requestSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, } - - //ntc := typevisitor.NewNamedTypeCollector() - if len(m.Params) > 0 { for _, p := range m.Params { ntc.Visit(p.Type()) @@ -404,6 +439,15 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, ntc ustypevisitor.Na "result": responseSchema, }, } + + var prefix string + if g.options.Interfaces().Len() > 1 { + prefix = strcase.ToLowerCamel(iface.Name()) + "." + } + if iface.Prefix() != "" { + prefix = iface.Prefix() + "." + } + request := &openapi.Schema{ Type: "object", Properties: openapi.Properties{ @@ -417,7 +461,7 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, ntc ustypevisitor.Na }, "method": &openapi.Schema{ Type: "string", - Enum: []string{strcase.ToLowerCamel(m.Name)}, + Enum: []string{prefix + strcase.ToLowerCamel(m.Name)}, }, "params": requestSchema, }, @@ -496,123 +540,8 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, ntc ustypevisitor.Na } } -func (g *openapiDoc) makeSwaggerSchema(tpl stdtypes.Type) (schema *openapi.Schema) { - schema = &openapi.Schema{} - //switch v := tpl.(type) { - //case *stdtypes.Pointer: - // return g.makeSwaggerSchema(v.Elem()) - //case *stdtypes.Interface: - // // TODO: not anyOf works in SwaggerUI, so the object type is used to display the field. - // schema.Type = "object" - // schema.Description = "Can be any value - string, number, boolean, array or object." - // schema.Properties = openapi.Properties{} - // schema.Example = json.RawMessage("null") - // schema.AnyOf = []openapi.Schema{ - // {Type: "string", Example: "abc"}, - // {Type: "integer", Example: 1}, - // {Type: "number", Format: "float", Example: 1.11}, - // {Type: "boolean", Example: true}, - // {Type: "array"}, - // {Type: "object"}, - // } - //case *stdtypes.Map: - // schema.Type = "object" - // schema.Properties = openapi.Properties{ - // "key": g.makeSwaggerSchema(v.Elem()), - // } - //case *stdtypes.Slice: - // if vv, ok := v.Elem().(*stdtypes.Basic); ok && vv.Kind() == stdtypes.Byte { - // schema.Type = "string" - // schema.Format = "byte" - // schema.Example = "U3dhZ2dlciByb2Nrcw==" - // } else { - // schema.Type = "array" - // schema.Items = g.makeSwaggerSchema(v.Elem()) - // } - //case *stdtypes.Basic: - // switch v.Kind() { - // case stdtypes.String: - // schema.Type = "string" - // schema.Format = "string" - // schema.Example = "abc" - // case stdtypes.Bool: - // schema.Type = "boolean" - // schema.Example = true - // case stdtypes.Int, - // stdtypes.Uint, - // stdtypes.Uint8, - // stdtypes.Uint16, - // stdtypes.Int8, - // stdtypes.Int16: - // schema.Type = "integer" - // schema.Example = 1 - // case stdtypes.Uint32, stdtypes.Int32: - // schema.Type = "integer" - // schema.Format = "int32" - // schema.Example = 1 - // case stdtypes.Uint64, stdtypes.Int64: - // schema.Type = "integer" - // schema.Format = "int64" - // schema.Example = 1 - // case stdtypes.Float32, stdtypes.Float64: - // schema.Type = "number" - // schema.Format = "float" - // schema.Example = 1.11 - // } - //case *stdtypes.Struct: - // schema.Type = "object" - // schema.Properties = openapi.Properties{} - // - // var populateSchema func(st *stdtypes.Struct) - // populateSchema = func(st *stdtypes.Struct) { - // for i := 0; i < st.NumFields(); i++ { - // f := st.Field(i) - // if !f.Embedded() { - // name := f.Name() - // if tags, err := structtag.Parse(st.Tag(i)); err == nil { - // if tag, err := tags.Get("json"); err == nil { - // name = tag.Value() - // } - // } - // schema.Properties[name] = g.makeSwaggerSchema(f.Type()) - // } else { - // var st *stdtypes.Struct - // if ptr, ok := f.Type().(*stdtypes.Pointer); ok { - // st = ptr.Elem().Underlying().(*stdtypes.Struct) - // } else { - // st = f.Type().Underlying().(*stdtypes.Struct) - // } - // populateSchema(st) - // } - // } - // } - // populateSchema(v) - //case *stdtypes.Named: - // switch stdtypes.TypeString(v, nil) { - // case "encoding/json.RawMessage": - // schema.Type = "object" - // schema.Properties = openapi.Properties{} - // return - // case "time.Time": - // schema.Type = "string" - // schema.Format = "date-time" - // schema.Example = "1985-04-02T01:30:00.00Z" - // return - // case "github.com/pborman/uuid.UUID", - // "github.com/google/uuid.UUID": - // schema.Type = "string" - // schema.Format = "uuid" - // schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" - // return - // } - // return g.makeSwaggerSchema(v.Obj().Type().Underlying()) - //} - return -} - -func (g *openapiDoc) makeRestPath(opt model.OpenapiHTTPTransportOption, m model.ServiceMethod) *openapi.Operation { - mopt := g.transport.MethodOptions[m.Name] - +func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.NamedTypeCollector) *openapi.Operation { + mopt := g.options.MethodOption(m) responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, @@ -636,15 +565,26 @@ func (g *openapiDoc) makeRestPath(opt model.OpenapiHTTPTransportOption, m model. if types.IsContext(p.Type()) { continue } - requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = g.makeSwaggerSchema(p.Type()) - } + ntc.Visit(p.Type()) + + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(p.Type()) + requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = schema + } if len(m.Results) > 1 { for _, r := range m.Results { - responseSchema.Properties[strcase.ToLowerCamel(r.Name())] = g.makeSwaggerSchema(r.Type()) + ntc.Visit(r.Type()) + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(r.Type()) + responseSchema.Properties[strcase.ToLowerCamel(r.Name())] = schema } } else if len(m.Results) == 1 { - responseSchema = g.makeSwaggerSchema(m.Results[0].Type()) + ntc.Visit(m.Results[0].Type()) + responseSchema = &openapi.Schema{} + iftypevisitor.OpenapiVisitor(responseSchema).Visit(m.Results[0].Type()) + } else { + responseSchema.Example = json.RawMessage("null") } if mopt.WrapResponse.Enable { @@ -688,11 +628,13 @@ func (g *openapiDoc) makeRestPath(opt model.OpenapiHTTPTransportOption, m model. in = "query" } if in != "" { + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(p.Type()) o.Parameters = append(o.Parameters, openapi.Parameter{ In: in, Name: p.Name(), Required: true, - Schema: g.makeSwaggerSchema(p.Type()), + Schema: schema, }) } } @@ -711,15 +653,11 @@ func (g *openapiDoc) makeRestPath(opt model.OpenapiHTTPTransportOption, m model. } func NewOpenapi( - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options openapiDocOptionsGateway, workDir string, - errors map[uint32]*model.HTTPError, ) generator.Generator { return &openapiDoc{ - serviceMethods: serviceMethods, - transport: transport, - workDir: workDir, - errors: errors, + options: options, + workDir: workDir, } } diff --git a/internal/interface/generator/readme.go b/internal/interface/generator/readme.go index 29521e3f..88aa299a 100644 --- a/internal/interface/generator/readme.go +++ b/internal/interface/generator/readme.go @@ -7,12 +7,8 @@ import ( "os" "path/filepath" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/git" - - "github.com/swipe-io/swipe/v2/internal/domain/model" - + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -53,26 +49,31 @@ ToDo. {{end -}} ` +type readmeGeneratorOptionsGateway interface { + AppID() string + AppName() string + JSONRPCDocOutput() string + ReadmeOutput() string + ReadmeTemplatePath() string +} + type readmeGenerator struct { writer.BaseWriter - serviceID string - serviceRawID string + options readmeGeneratorOptionsGateway basePkgPath string outputDir string workDir string - transport model.TransportOption - readme model.ServiceReadme gitTags []git.Tag markdownOutput string tpl *template.Template } func (g *readmeGenerator) Prepare(ctx context.Context) (err error) { - g.outputDir, err = filepath.Abs(filepath.Join(g.workDir, g.readme.OutputDir)) + g.outputDir, err = filepath.Abs(filepath.Join(g.workDir, g.options.ReadmeOutput())) if err != nil { return err } - g.markdownOutput, err = filepath.Abs(filepath.Join(g.workDir, g.transport.MarkdownDoc.OutputDir)) + g.markdownOutput, err = filepath.Abs(filepath.Join(g.workDir, g.options.JSONRPCDocOutput())) if err != nil { return err } @@ -88,7 +89,7 @@ func (g *readmeGenerator) Prepare(ctx context.Context) (err error) { } } } else { - templatePath, err = filepath.Abs(filepath.Join(g.workDir, g.readme.TemplatePath)) + templatePath, err = filepath.Abs(filepath.Join(g.workDir, g.options.ReadmeTemplatePath())) if err != nil { return err } @@ -114,8 +115,8 @@ func (g *readmeGenerator) Prepare(ctx context.Context) (err error) { func (g *readmeGenerator) Process(ctx context.Context) (err error) { return g.tpl.Execute(g, map[string]interface{}{ - "ID": g.serviceRawID, - "ServiceName": g.serviceID, + "ID": g.options.AppID(), + "ServiceName": g.options.AppName(), "RootPkgPath": g.basePkgPath, "GIT": map[string]interface{}{ "Tags": g.gitTags, @@ -136,21 +137,15 @@ func (g *readmeGenerator) Filename() string { } func NewReadme( - serviceID string, - serviceRawID string, + options readmeGeneratorOptionsGateway, basePkgPath string, workDir string, - transport model.TransportOption, - readme model.ServiceReadme, gitTags []git.Tag, ) generator.Generator { return &readmeGenerator{ - serviceID: serviceID, - serviceRawID: serviceRawID, - basePkgPath: basePkgPath, - workDir: workDir, - transport: transport, - readme: readme, - gitTags: gitTags, + options: options, + basePkgPath: basePkgPath, + workDir: workDir, + gitTags: gitTags, } } diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 96656521..7a17382a 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -4,24 +4,31 @@ import ( "context" "fmt" stdtypes "go/types" + "path" "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/strcase" + + "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type restGoClientOptionsGateway interface { + Prefix() string + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption + UseFast() bool +} + type restGoClient struct { writer.GoLangWriter - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod - transport model.TransportOption - i *importer.Importer + options restGoClientOptionsGateway + i *importer.Importer } func (g *restGoClient) Prepare(ctx context.Context) error { @@ -29,276 +36,311 @@ func (g *restGoClient) Prepare(ctx context.Context) error { } func (g *restGoClient) Process(ctx context.Context) error { - - var ( - kitHTTPPkg string - contextPkg string - httpPkg string - jsonPkg string - fmtPkg string - urlPkg string - netPkg string - stringsPkg string - pkgIO string - ) - - if len(g.serviceMethods) > 0 { - if g.transport.FastHTTP { - kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") - } else { - kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + if g.options.Interfaces().Len() > 1 { + g.W("type AppClient struct {\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + g.W("%sClient %s\n", iface.Name(), typeStr) } - if g.transport.FastHTTP { - httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") - } else { - httpPkg = g.i.Import("http", "net/http") + g.W("}\n\n") + + g.W("func NewClient%s(tgt string", g.options.Prefix()) + g.W(" ,opts ...ClientOption") + g.W(") (*AppClient, error) {\n") + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%sClient, err := NewClient%s%s(tgt)\n", iface.LoweName(), g.options.Prefix(), iface.NameExport()) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) } - jsonPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - pkgIO = g.i.Import("io", "io") - fmtPkg = g.i.Import("fmt", "fmt") - contextPkg = g.i.Import("context", "context") - urlPkg = g.i.Import("url", "net/url") - netPkg = g.i.Import("net", "net") - stringsPkg = g.i.Import("strings", "strings") - } - - clientType := "client" + g.serviceID - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - g.W("func NewClient%s%s(tgt string", g.transport.Prefix, g.serviceID) - - g.W(" ,opts ...%[1]sClientOption", g.serviceID) - - g.W(") (%s, error) {\n", typeStr) + g.W("return &AppClient{\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]sClient: %[2]sClient,\n", iface.Name(), iface.LoweName()) + } + g.W("}, nil\n") + g.W("}\n\n") + } - g.W("c := &%s{}\n", clientType) + for i := 0; i < g.options.Interfaces().Len(); i++ { + var ( + kitHTTPPkg string + contextPkg string + httpPkg string + jsonPkg string + fmtPkg string + urlPkg string + netPkg string + stringsPkg string + pkgIO string + ) + iface := g.options.Interfaces().At(i) + clientType := "client" + iface.NameExport() + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("for _, o := range opts {\n") - g.W("o(c)\n") - g.W("}\n") + if len(iface.Methods()) > 0 { + if g.options.UseFast() { + kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + } + if g.options.UseFast() { + httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") + } else { + httpPkg = g.i.Import("http", "net/http") + } + jsonPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + pkgIO = g.i.Import("io", "io") + fmtPkg = g.i.Import("fmt", "fmt") + contextPkg = g.i.Import("context", "context") + urlPkg = g.i.Import("url", "net/url") + netPkg = g.i.Import("net", "net") + stringsPkg = g.i.Import("strings", "strings") + } - if len(g.serviceMethods) > 0 { - g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) - g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - g.W("tgt = host + \":\" + port\n") + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) + g.W(" ,options ...ClientOption") + g.W(") (%s, error) {\n", typeStr) + g.W("opts := &clientOpts{}\n") + g.W("c := &%s{}\n", clientType) + g.W("for _, o := range options {\n") + g.W("o(opts)\n") g.W("}\n") - g.W("u, err := %s.Parse(tgt)\n", urlPkg) + if len(iface.Methods()) > 0 { + g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + g.W("tgt = host + \":\" + port\n") + g.W("}\n") - g.WriteCheckErr(func() { - g.W("return nil, err") - }) + g.W("u, err := %s.Parse(tgt)\n", urlPkg) - g.W("if u.Scheme == \"\" {\n") - g.W("u.Scheme = \"https\"") - g.W("}\n") - } + g.WriteCheckErr(func() { + g.W("return nil, err") + }) - for _, m := range g.serviceMethods { - epName := m.LcName + "Endpoint" + g.W("if u.Scheme == \"\" {\n") + g.W("u.Scheme = \"https\"") + g.W("}\n") + } - mopt := g.transport.MethodOptions[m.Name] + for _, m := range iface.Methods() { + epName := m.LcName + "Endpoint" + mopt := g.options.MethodOption(m) - httpMethod := mopt.MethodName - if httpMethod == "" { - if len(m.Params) > 0 { - httpMethod = "POST" - } else { - httpMethod = "GET" + httpMethod := mopt.MethodName + if httpMethod == "" { + if len(m.Params) > 0 { + httpMethod = "POST" + } else { + httpMethod = "GET" + } } - } - - pathStr := mopt.Path - if pathStr == "" { - pathStr = "/" + m.LcName - } - var ( - pathVars []string - queryVars []string - headerVars []string - ) + pathStr := mopt.Path + if pathStr == "" { + pathStr = path.Join("/", m.LcName) + } - for _, p := range m.Params { - if regexp, ok := mopt.PathVars[p.Name()]; ok { - if regexp != "" { - regexp = ":" + regexp + if g.options.Interfaces().Len() > 1 { + svcPrefix := strcase.ToKebab(iface.NameUnExport()) + if iface.Prefix() != "" { + svcPrefix = iface.Prefix() } - pathStr = stdstrings.Replace(pathStr, "{"+p.Name()+regexp+"}", "%s", -1) - pathVars = append(pathVars, g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) - } else if qName, ok := mopt.QueryVars[p.Name()]; ok { - queryVars = append(queryVars, strconv.Quote(qName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) - } else if hName, ok := mopt.HeaderVars[p.Name()]; ok { - headerVars = append(headerVars, strconv.Quote(hName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + pathStr = path.Join("/", svcPrefix, "/", pathStr) } - } - g.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) - if mopt.Expr != nil { - writer.WriteAST(g, g.i, mopt.Expr) - } else { - g.W(strconv.Quote(httpMethod)) - } - g.W(",\n") - g.W("u,\n") - - if mopt.ClientRequestFunc.Expr != nil { - writer.WriteAST(g, g.i, mopt.ClientRequestFunc.Expr) - } else { - g.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) - - if len(m.Params) > 0 { - g.W("req, ok := request.(%sRequest%s)\n", m.LcName, g.serviceID) - g.W("if !ok {\n") - g.W("return %s.Errorf(\"couldn'tpl assert request as %sRequest%s, got %%T\", request)\n", fmtPkg, m.LcName, g.serviceID) - g.W("}\n") + var ( + pathVars []string + queryVars []string + headerVars []string + ) + + for _, p := range m.Params { + if regexp, ok := mopt.PathVars[p.Name()]; ok { + if regexp != "" { + regexp = ":" + regexp + } + pathStr = stdstrings.Replace(pathStr, "{"+p.Name()+regexp+"}", "%s", -1) + pathVars = append(pathVars, g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + } else if qName, ok := mopt.QueryVars[p.Name()]; ok { + queryVars = append(queryVars, strconv.Quote(qName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + } else if hName, ok := mopt.HeaderVars[p.Name()]; ok { + headerVars = append(headerVars, strconv.Quote(hName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + } } - if g.transport.FastHTTP { - g.W("r.Header.SetMethod(") - } else { - g.W("r.Method = ") - } + g.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) if mopt.Expr != nil { writer.WriteAST(g, g.i, mopt.Expr) } else { g.W(strconv.Quote(httpMethod)) } - if g.transport.FastHTTP { - g.W(")") - } - g.W("\n") + g.W(",\n") + g.W("u,\n") - if g.transport.FastHTTP { - g.W("r.SetRequestURI(") + if mopt.ClientRequestFunc.Expr != nil { + writer.WriteAST(g, g.i, mopt.ClientRequestFunc.Expr) } else { - g.W("r.URL.Path += ") - } - g.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVars, ",")) + g.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) - if g.transport.FastHTTP { - g.W(")") - } - g.W("\n") + if len(m.Params) > 0 { + g.W("req, ok := request.(%s)\n", m.NameRequest) + g.W("if !ok {\n") + g.W("return %s.Errorf(\"couldn't assert request as %s, got %%T\", request)\n", fmtPkg, m.NameRequest) + g.W("}\n") + } - if len(queryVars) > 0 { - if g.transport.FastHTTP { - g.W("q := r.URI().QueryArgs()\n") + if g.options.UseFast() { + g.W("r.Header.SetMethod(") } else { - g.W("q := r.URL.Query()\n") + g.W("r.Method = ") } - - for i := 0; i < len(queryVars); i += 2 { - g.W("q.Add(%s, %s)\n", queryVars[i], queryVars[i+1]) + if mopt.Expr != nil { + writer.WriteAST(g, g.i, mopt.Expr) + } else { + g.W(strconv.Quote(httpMethod)) + } + if g.options.UseFast() { + g.W(")") } + g.W("\n") - if g.transport.FastHTTP { - g.W("r.URI().SetQueryString(q.String())\n") + if g.options.UseFast() { + g.W("r.SetRequestURI(") } else { - g.W("r.URL.RawQuery = q.Encode()\n") + g.W("r.URL.Path += ") } - } - - for i := 0; i < len(headerVars); i += 2 { - g.W("r.Header.Add(%s, %s)\n", headerVars[i], headerVars[i+1]) - } + g.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVars, ",")) - switch stdstrings.ToUpper(httpMethod) { - case "POST", "PUT", "PATCH": - jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - - g.W("data, err := %s.Marshal(req)\n", jsonPkg) - g.W("if err != nil {\n") - g.W("return %s.Errorf(\"couldn'tpl marshal request %%T: %%s\", req, err)\n", fmtPkg) - g.W("}\n") - - if g.transport.FastHTTP { - g.W("r.SetBody(data)\n") - } else { - ioutilPkg := g.i.Import("ioutil", "io/ioutil") - bytesPkg := g.i.Import("bytes", "bytes") + if g.options.UseFast() { + g.W(")") + } + g.W("\n") + + if len(queryVars) > 0 { + if g.options.UseFast() { + g.W("q := r.URI().QueryArgs()\n") + } else { + g.W("q := r.URL.Query()\n") + } + + for i := 0; i < len(queryVars); i += 2 { + g.W("q.Add(%s, %s)\n", queryVars[i], queryVars[i+1]) + } + + if g.options.UseFast() { + g.W("r.URI().SetQueryString(q.String())\n") + } else { + g.W("r.URL.RawQuery = q.Encode()\n") + } + } - g.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + for i := 0; i < len(headerVars); i += 2 { + g.W("r.Header.Add(%s, %s)\n", headerVars[i], headerVars[i+1]) } - } - g.W("return nil\n") - g.W("}") - } - g.W(",\n") - if mopt.ClientResponseFunc.Expr != nil { - writer.WriteAST(g, g.i, mopt.ClientResponseFunc.Expr) - } else { - g.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) + switch stdstrings.ToUpper(httpMethod) { + case "POST", "PUT", "PATCH": + jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - statusCode := "r.StatusCode" - if g.transport.FastHTTP { - statusCode = "r.StatusCode()" - } + g.W("data, err := %s.Marshal(req)\n", jsonPkg) + g.W("if err != nil {\n") + g.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) + g.W("}\n") - g.W("if statusCode := %s; statusCode != %s.StatusOK {\n", statusCode, httpPkg) - g.W("return nil, ErrorDecode(statusCode)\n") - g.W("}\n") + if g.options.UseFast() { + g.W("r.SetBody(data)\n") + } else { + ioutilPkg := g.i.Import("ioutil", "io/ioutil") + bytesPkg := g.i.Import("bytes", "bytes") - if len(m.Results) > 0 { - var responseType string - if m.ResultsNamed { - responseType = fmt.Sprintf("%sResponse%s", m.LcName, g.serviceID) - } else { - responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) + g.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + } } - if mopt.WrapResponse.Enable { - g.W("var resp struct {\nData %s `json:\"%s\"`\n}\n", responseType, mopt.WrapResponse.Name) - } else { - g.W("var resp %s\n", responseType) - } - if g.transport.FastHTTP { - g.W("err := %s.Unmarshal(r.Body(), ", jsonPkg) - } else { - ioutilPkg := g.i.Import("ioutil", "io/ioutil") + g.W("return nil\n") + g.W("}") + } + g.W(",\n") - g.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) - g.WriteCheckErr(func() { - g.W("return nil, err\n") - }) - g.W("err = %s.Unmarshal(b, ", jsonPkg) - } + if mopt.ClientResponseFunc.Expr != nil { + writer.WriteAST(g, g.i, mopt.ClientResponseFunc.Expr) + } else { + g.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) - g.W("&resp)\n") + statusCode := "r.StatusCode" + if g.options.UseFast() { + statusCode = "r.StatusCode()" + } - g.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sResponse%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) + g.W("if statusCode := %s; statusCode != %s.StatusOK {\n", statusCode, httpPkg) + g.W("return nil, ErrorDecode(statusCode)\n") g.W("}\n") - if mopt.WrapResponse.Enable { - g.W("return resp.Data, nil\n") + if len(m.Results) > 0 { + var responseType string + if m.ResultsNamed { + responseType = fmt.Sprintf("%s", m.NameRequest) + } else { + responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) + } + if mopt.WrapResponse.Enable { + g.W("var resp struct {\nData %s `json:\"%s\"`\n}\n", responseType, mopt.WrapResponse.Name) + } else { + g.W("var resp %s\n", responseType) + } + if g.options.UseFast() { + g.W("err := %s.Unmarshal(r.Body(), ", jsonPkg) + } else { + ioutilPkg := g.i.Import("ioutil", "io/ioutil") + + g.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) + g.WriteCheckErr(func() { + g.W("return nil, err\n") + }) + g.W("err = %s.Unmarshal(b, ", jsonPkg) + } + + g.W("&resp)\n") + + g.W("if err != nil && err != %s.EOF {\n", pkgIO) + g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) + g.W("}\n") + + if mopt.WrapResponse.Enable { + g.W("return resp.Data, nil\n") + } else { + g.W("return resp, nil\n") + } } else { - g.W("return resp, nil\n") + g.W("return nil, nil\n") } - } else { - g.W("return nil, nil\n") - } - g.W("}") - } + g.W("}") + } - g.W(",\n") + g.W(",\n") - g.W("append(c.genericClientOption, c.%sClientOption...)...,\n", m.LcName) + g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.NameUnExport) - g.W(").Endpoint()\n") + g.W(").Endpoint()\n") - g.W( - "c.%[1]sEndpoint = middlewareChain(append(c.genericEndpointMiddleware, c.%[1]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", - m.LcName, - ) + g.W( + "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[2]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", + m.LcName, + m.NameUnExport, + ) + } + g.W("return c, nil\n") + g.W("}\n\n") } - - g.W("return c, nil\n") - g.W("}\n") return nil } @@ -319,15 +361,9 @@ func (g *restGoClient) SetImporter(i *importer.Importer) { } func NewRestGoClient( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options restGoClientOptionsGateway, ) generator.Generator { return &restGoClient{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, - transport: transport, + options: options, } } diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 0aea1167..4976af4d 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -4,25 +4,32 @@ import ( "context" "fmt" stdtypes "go/types" + "path" "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) +type restServerOptionsGateway interface { + AppID() string + Prefix() string + UseFast() bool + Interfaces() model.Interfaces + MethodOption(m model.ServiceMethod) model.MethodOption + JSONRPCEnable() bool +} + type restServer struct { writer.GoLangWriter - serviceID string - serviceType stdtypes.Type - serviceMethods []model.ServiceMethod - transport model.TransportOption - i *importer.Importer + options restServerOptionsGateway + i *importer.Importer } func (g *restServer) Prepare(ctx context.Context) error { @@ -38,9 +45,8 @@ func (g *restServer) Process(ctx context.Context) error { kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") contextPkg := g.i.Import("context", "context") - typeStr := stdtypes.TypeString(g.serviceType, g.i.QualifyPkg) - if g.transport.FastHTTP { + if g.options.UseFast() { httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") routerPkg = g.i.Import("routing", "github.com/qiangxue/fasthttp-routing") @@ -50,256 +56,283 @@ func (g *restServer) Process(ctx context.Context) error { httpPkg = g.i.Import("http", "net/http") } - g.W("type errorWrapper struct {\n") - g.W("Error string `json:\"error\"`\n") - g.W("}\n") - - g.W("func encodeResponseHTTP%s(ctx %s.Context, ", g.serviceID, contextPkg) - - if g.transport.FastHTTP { - g.W("w *%s.Response", httpPkg) - } else { - g.W("w %s.ResponseWriter", httpPkg) - } - - g.W(", response interface{}) error {\n") - - if g.transport.FastHTTP { - g.W("h := w.Header\n") - } else { - g.W("h := w.Header()\n") - } - - g.W("h.Set(\"Content-Iface\", \"application/json; charset=utf-8\")\n") - g.W("if e, ok := response.(%s.Failer); ok && e.Failed() != nil {\n", kitEndpointPkg) - g.W("data, err := %s.Marshal(errorWrapper{Error: e.Failed().Error()})\n", jsonPkg) - g.W("if err != nil {\n") - g.W("return err\n") - g.W("}\n") - - if g.transport.FastHTTP { - g.W("w.SetBody(data)\n") - } else { - g.W("w.Write(data)\n") - } - - g.W("return nil\n") - g.W("}\n") + g.writeEncodeResponseFunc(contextPkg, httpPkg, kitEndpointPkg, jsonPkg) - g.W("data, err := %s.Marshal(response)\n", jsonPkg) - g.W("if err != nil {\n") - g.W("return err\n") - g.W("}\n") - - if g.transport.FastHTTP { - g.W("w.SetBody(data)\n") - } else { - g.W("w.Write(data)\n") + g.W("// MakeHandler%[1]s HTTP %[1]s Transport\n", g.options.Prefix()) + g.W("func MakeHandler%s(", g.options.Prefix()) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + if i > 0 { + g.W(",") + } + g.W("svc%s %s", iface.NameExport(), typeStr) } - - g.W("return nil\n") - g.W("}\n\n") - - g.W("// HTTP %s Transport\n", g.transport.Prefix) - g.W("func MakeHandler%s%s(s %s", g.transport.Prefix, g.serviceID, typeStr) - g.W(", opts ...%sServerOption", g.serviceID) + g.W(", options ...ServerOption") g.W(") (") - if g.transport.FastHTTP { + if g.options.UseFast() { g.W("%s.RequestHandler", g.i.Import("fasthttp", "github.com/valyala/fasthttp")) } else { g.W("%s.Handler", g.i.Import("http", "net/http")) } - g.W(", error) {\n") - g.W("sopt := &server%sOpts{}\n", g.serviceID) + g.W("opts := &serverOpts{}\n") + g.W("for _, o := range options {\n o(opts)\n }\n") - g.W("for _, o := range opts {\n o(sopt)\n }\n") - - g.W("ep := MakeEndpointSet(s)\n") - - for _, m := range g.serviceMethods { - g.W("ep.%[1]sEndpoint = middlewareChain(append(sopt.genericEndpointMiddleware, sopt.%[2]sEndpointMiddleware...))(ep.%[1]sEndpoint)\n", m.Name, m.LcName) + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) } - - if g.transport.FastHTTP { + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + for _, m := range iface.Methods() { + g.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + m.NameUnExport, m.Name, epSetName, + ) + } + } + if g.options.UseFast() { g.W("r := %s.New()\n", routerPkg) } else { g.W("r := %s.NewRouter()\n", routerPkg) } - for _, m := range g.serviceMethods { - mopt := g.transport.MethodOptions[m.Name] - if g.transport.FastHTTP { - g.W("r.To(") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) - if mopt.MethodName != "" { - writer.WriteAST(g, g.i, mopt.Expr) - } else { - g.W(strconv.Quote("GET")) + svcPrefix := "" + if g.options.Interfaces().Len() > 1 { + prefix := strcase.ToKebab(iface.Name()) + if iface.Prefix() != "" { + prefix = iface.Prefix() } + svcPrefix = prefix + "/" + } + epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) + if g.options.UseFast() { + g.W("r.To(") + + if mopt.MethodName != "" { + writer.WriteAST(g, g.i, mopt.Expr) + } else { + g.W(strconv.Quote("GET")) + } - g.W(", ") + g.W(", ") - if mopt.Path != "" { - // replace brace indices for fasthttp router - urlPath := stdstrings.ReplaceAll(mopt.Path, "{", "<") - urlPath = stdstrings.ReplaceAll(urlPath, "}", ">") - g.W(strconv.Quote(urlPath)) - } else { - g.W(strconv.Quote("/" + m.LcName)) - } - g.W(", ") - } else { - g.W("r.Methods(") - if mopt.MethodName != "" { - writer.WriteAST(g, g.i, mopt.Expr) + if mopt.Path != "" { + // replace brace indices for fasthttp router + urlPath := stdstrings.ReplaceAll(mopt.Path, "{", "<") + urlPath = stdstrings.ReplaceAll(urlPath, "}", ">") + g.W(strconv.Quote(urlPath)) + } else { + g.W(strconv.Quote("/" + m.LcName)) + } + g.W(", ") } else { - g.W(strconv.Quote("GET")) + g.W("r.Methods(") + if mopt.MethodName != "" { + writer.WriteAST(g, g.i, mopt.Expr) + } else { + g.W(strconv.Quote("GET")) + } + g.W(").") + g.W("Path(") + if mopt.Path != "" { + g.W(strconv.Quote(path.Join(svcPrefix, mopt.Path))) + } else { + g.W(strconv.Quote(path.Join("/", svcPrefix, "/", stdstrings.ToLower(m.Name)))) + } + g.W(").") + g.W("Handler(") } - g.W(").") - g.W("Path(") - if mopt.Path != "" { - g.W(strconv.Quote(mopt.Path)) + g.W( + "%s.NewServer(\n%s.%sEndpoint,\n", + kitHTTPPkg, + epSetName, + m.Name, + ) + if mopt.ServerRequestFunc.Expr != nil { + writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) } else { - g.W(strconv.Quote("/" + stdstrings.ToLower(m.Name))) - } - g.W(").") - - g.W("Handler(") - } + g.W("func(ctx %s.Context, r *%s.Request) (interface{}, error) {\n", contextPkg, httpPkg) - g.W( - "%s.NewServer(\nep.%sEndpoint,\n", - kitHTTPPkg, - m.Name, - ) - - if mopt.ServerRequestFunc.Expr != nil { - writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) - } else { - g.W("func(ctx %s.Context, r *%s.Request) (interface{}, error) {\n", contextPkg, httpPkg) - - if len(m.Params) > 0 { - g.W("var req %sRequest%s\n", m.LcName, g.serviceID) - switch stdstrings.ToUpper(mopt.MethodName) { - case "POST", "PUT", "PATCH": - fmtPkg := g.i.Import("fmt", "fmt") - jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - pkgIO := g.i.Import("io", "io") - - if g.transport.FastHTTP { - g.W("err := %s.Unmarshal(r.Body(), &req)\n", jsonPkg) - } else { - ioutilPkg := g.i.Import("ioutil", "io/ioutil") + if len(m.Params) > 0 { + g.W("var req %s\n", m.NameRequest) + switch stdstrings.ToUpper(mopt.MethodName) { + case "POST", "PUT", "PATCH": + fmtPkg := g.i.Import("fmt", "fmt") + jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + pkgIO := g.i.Import("io", "io") - g.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) - g.WriteCheckErr(func() { - g.W("return nil, %s.Errorf(\"couldn'tpl read body for %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) - }) - g.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) - } + if g.options.UseFast() { + g.W("err := %s.Unmarshal(r.Body(), &req)\n", jsonPkg) + } else { + ioutilPkg := g.i.Import("ioutil", "io/ioutil") - g.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.W("return nil, %s.Errorf(\"couldn'tpl unmarshal body to %sRequest%s: %%s\", err)\n", fmtPkg, m.LcName, g.serviceID) - g.W("}\n") - } - if len(mopt.PathVars) > 0 { - if g.transport.FastHTTP { - fmtPkg := g.i.Import("fmt", "fmt") + g.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) + g.WriteCheckErr(func() { + g.W("return nil, %s.Errorf(\"couldn't read body for %s: %%s\", err)\n", fmtPkg, m.NameRequest) + }) + g.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) + } - g.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kitHTTPPkg, routerPkg) - g.W("if !ok {\n") - g.W("return nil, %s.Errorf(\"couldn'tpl assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kitHTTPPkg, routerPkg) + g.W("if err != nil && err != %s.EOF {\n", pkgIO) + g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) g.W("}\n") - } else { - g.W("vars := %s.Vars(r)\n", routerPkg) - } - } - if len(mopt.QueryVars) > 0 { - if g.transport.FastHTTP { - g.W("q := r.URI().QueryArgs()\n") - } else { - g.W("q := r.URL.Query()\n") } - } - for _, p := range m.Params { - if _, ok := mopt.PathVars[p.Name()]; ok { - var valueID string - if g.transport.FastHTTP { - valueID = "vars.Param(" + strconv.Quote(p.Name()) + ")" + if len(mopt.PathVars) > 0 { + if g.options.UseFast() { + fmtPkg := g.i.Import("fmt", "fmt") + + g.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kitHTTPPkg, routerPkg) + g.W("if !ok {\n") + g.W("return nil, %s.Errorf(\"couldn't assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kitHTTPPkg, routerPkg) + g.W("}\n") } else { - valueID = "vars[" + strconv.Quote(p.Name()) + "]" + g.W("vars := %s.Vars(r)\n", routerPkg) } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") - } else if queryName, ok := mopt.QueryVars[p.Name()]; ok { - var valueID string - if g.transport.FastHTTP { - valueID = "string(q.Peek(" + strconv.Quote(queryName) + "))" + } + if len(mopt.QueryVars) > 0 { + if g.options.UseFast() { + g.W("q := r.URI().QueryArgs()\n") } else { - valueID = "q.Get(" + strconv.Quote(queryName) + ")" + g.W("q := r.URL.Query()\n") } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") - } else if headerName, ok := mopt.HeaderVars[p.Name()]; ok { - var valueID string - if g.transport.FastHTTP { - valueID = "string(r.Header.Peek(" + strconv.Quote(headerName) + "))" - } else { - valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" + } + for _, p := range m.Params { + if _, ok := mopt.PathVars[p.Name()]; ok { + var valueID string + if g.options.UseFast() { + valueID = "vars.Param(" + strconv.Quote(p.Name()) + ")" + } else { + valueID = "vars[" + strconv.Quote(p.Name()) + "]" + } + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") + } else if queryName, ok := mopt.QueryVars[p.Name()]; ok { + var valueID string + if g.options.UseFast() { + valueID = "string(q.Peek(" + strconv.Quote(queryName) + "))" + } else { + valueID = "q.Get(" + strconv.Quote(queryName) + ")" + } + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") + } else if headerName, ok := mopt.HeaderVars[p.Name()]; ok { + var valueID string + if g.options.UseFast() { + valueID = "string(r.Header.Peek(" + strconv.Quote(headerName) + "))" + } else { + valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" + } + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") } + g.W("return req, nil\n") + } else { + g.W("return nil, nil\n") } - g.W("return req, nil\n") - } else { - g.W("return nil, nil\n") + g.W("}") } - g.W("}") - } - g.W(",\n") + g.W(",\n") - if mopt.ServerResponseFunc.Expr != nil { - writer.WriteAST(g, g.i, mopt.ServerResponseFunc.Expr) - } else { - if g.transport.JsonRPC.Enable { - g.W("encodeResponseJSONRPC%s", g.serviceID) + if mopt.ServerResponseFunc.Expr != nil { + writer.WriteAST(g, g.i, mopt.ServerResponseFunc.Expr) } else { - if mopt.WrapResponse.Enable { - var responseWriterType string - if g.transport.FastHTTP { - responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) + if g.options.JSONRPCEnable() { + g.W("encodeResponseJSONRPC") + } else { + if mopt.WrapResponse.Enable { + var responseWriterType string + if g.options.UseFast() { + responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) + } else { + responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) + } + g.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) + g.W("return encodeResponseHTTP(ctx, w, map[string]interface{}{\"%s\": response})\n", mopt.WrapResponse.Name) + g.W("}") } else { - responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) + g.W("encodeResponseHTTP") } - g.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.W("return encodeResponseHTTP%s(ctx, w, map[string]interface{}{\"%s\": response})\n", g.serviceID, mopt.WrapResponse.Name) - g.W("}") - } else { - g.W("encodeResponseHTTP%s", g.serviceID) } } - } - g.W(",\n") + g.W(",\n") - g.W("append(sopt.genericServerOption, sopt.%sServerOption...)...,\n", m.LcName) - g.W(")") + g.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", m.NameUnExport) + g.W(")") - if g.transport.FastHTTP { - g.W(".RouterHandle()") + if g.options.UseFast() { + g.W(".RouterHandle()") + } + g.W(")\n") } - g.W(")\n") } - if g.transport.FastHTTP { + if g.options.UseFast() { g.W("return r.HandleRequest, nil") } else { g.W("return r, nil") } - g.W("}\n\n") - return nil } +func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, kitEndpointPkg, jsonPkg string) { + g.W("type errorWrapper struct {\n") + g.W("Error string `json:\"error\"`\n") + g.W("}\n") + + g.W("func encodeResponseHTTP(ctx %s.Context, ", contextPkg) + + if g.options.UseFast() { + g.W("w *%s.Response", httpPkg) + } else { + g.W("w %s.ResponseWriter", httpPkg) + } + + g.W(", response interface{}) error {\n") + + if g.options.UseFast() { + g.W("h := w.Header\n") + } else { + g.W("h := w.Header()\n") + } + + g.W("h.Set(\"Content-Iface\", \"application/json; charset=utf-8\")\n") + g.W("if e, ok := response.(%s.Failer); ok && e.Failed() != nil {\n", kitEndpointPkg) + g.W("data, err := %s.Marshal(errorWrapper{Error: e.Failed().Error()})\n", jsonPkg) + g.W("if err != nil {\n") + g.W("return err\n") + g.W("}\n") + + if g.options.UseFast() { + g.W("w.SetBody(data)\n") + } else { + g.W("w.Write(data)\n") + } + + g.W("return nil\n") + g.W("}\n") + + g.W("data, err := %s.Marshal(response)\n", jsonPkg) + g.W("if err != nil {\n") + g.W("return err\n") + g.W("}\n") + + if g.options.UseFast() { + g.W("w.SetBody(data)\n") + } else { + g.W("w.Write(data)\n") + } + + g.W("return nil\n") + g.W("}\n\n") +} + func (g *restServer) PkgName() string { return "" } @@ -317,15 +350,9 @@ func (g *restServer) SetImporter(i *importer.Importer) { } func NewRestServer( - serviceID string, - serviceType stdtypes.Type, - serviceMethods []model.ServiceMethod, - transport model.TransportOption, + options restServerOptionsGateway, ) generator.Generator { return &restServer{ - serviceID: serviceID, - serviceType: serviceType, - serviceMethods: serviceMethods, - transport: transport, + options: options, } } diff --git a/internal/interface/generator/utils.go b/internal/interface/generator/utils.go index 3654a66d..5662b8a2 100644 --- a/internal/interface/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -5,6 +5,8 @@ import ( "strconv" "strings" + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/types" ) @@ -85,3 +87,11 @@ func normalizeType(t stdtypes.Type) stdtypes.Type { return v } } + +func makeEpSetName(iface *model.ServiceInterface, ifaceLen int) (epSetName string) { + epSetName = "epSet" + if ifaceLen > 1 { + epSetName = "epSet" + iface.NameExport() + } + return +} diff --git a/internal/interface/processor/config.go b/internal/interface/processor/config.go index 1af2ad07..ff5dba52 100644 --- a/internal/interface/processor/config.go +++ b/internal/interface/processor/config.go @@ -23,7 +23,7 @@ func (p *configProcessor) Generators() []ug.Generator { generator.NewConfig(p.cg.Struct(), p.cg.StructType(), p.cg.StructExpr(), p.cg.FuncName()), } if p.cg.DocEnable() { - generators = append(generators, generator.NewConfigMarkdownDoc(p.cg.Struct(), p.workDir, p.cg.DocOutputDir())) + generators = append(generators, generator.NewConfigDoc(p.cg.Struct(), p.workDir, p.cg.DocOutputDir())) } return generators } diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index 64a13701..15585d3d 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -1,6 +1,8 @@ package processor import ( + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/git" "github.com/swipe-io/swipe/v2/internal/interface/generator" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" @@ -24,69 +26,66 @@ func (p *serviceProcessor) Pkg() *packages.Package { } func (p *serviceProcessor) Generators() []ug.Generator { - generators := []ug.Generator{ - generator.NewEndpoint(p.sg.ID(), p.sg.Type(), p.sg.Methods()), - } - if p.sg.Readme().Enable { + var generators []ug.Generator + generators = append(generators, generator.NewEndpoint(p.sg)) + if p.sg.ReadmeEnable() { tags, _ := p.gi.GetTags() generators = append(generators, generator.NewReadme( - p.sg.ID(), - p.sg.RawID(), + p.sg, p.pkg.PkgPath, p.workDir, - p.sg.Transport(), - p.sg.Readme(), tags, ), ) } - if p.sg.Transport().MarkdownDoc.Enable { - generators = append(generators, generator.NewJsonrpcMarkdownDoc( - p.sg.ID(), - p.sg.Methods(), - p.sg.Transport(), - p.comments, - p.enums, - p.workDir, - )) - } - if p.sg.Transport().Protocol == "http" { - generators = append(generators, generator.NewHttpTransport(p.sg.ID(), p.sg.Methods(), p.sg.Transport(), p.sg.Errors())) + if p.sg.TransportType() == model.HTTPTransport { + generators = append(generators, generator.NewHttpTransport(p.sg)) if p.sg.LoggingEnable() { - generators = append(generators, generator.NewLogging(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport().MethodOptions)) + generators = append(generators, generator.NewLogging(p.sg)) } if p.sg.InstrumentingEnable() { - generators = append(generators, generator.NewInstrumenting( - p.sg.ID(), - p.sg.Type(), - p.sg.Methods(), - p.sg.Transport().MethodOptions, - )) + generators = append(generators, generator.NewInstrumenting(p.sg)) } - if p.sg.Transport().JsonRPC.Enable { - generators = append(generators, generator.NewJsonRPCServer(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) + if p.sg.JSONRPCEnable() { + if p.sg.JSONRPCDocEnable() { + generators = append(generators, generator.NewJsonrpcDoc( + p.sg, + p.comments, + p.enums, + p.workDir, + )) + } + generators = append(generators, generator.NewJsonRPCServer(p.sg)) } else { - generators = append(generators, generator.NewRestServer(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) + generators = append(generators, generator.NewRestServer(p.sg)) } } - if p.sg.Transport().Client.Enable { + if p.sg.ClientEnable() { generators = append(generators, - generator.NewEndpointFactory(p.sg.ID(), p.sg.Methods(), p.sg.Transport()), - generator.NewClientStruct(p.sg.ID(), p.sg.Methods(), p.sg.Transport()), + generator.NewEndpointFactory(p.sg), + generator.NewClientStruct(p.sg), ) - if p.sg.Transport().JsonRPC.Enable { - generators = append( - generators, - generator.NewJsonRPCGoClient(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport()), - generator.NewJsonRPCJSClient(p.sg.Methods(), p.sg.Transport(), p.enums, p.sg.Errors()), - ) - } else { - generators = append(generators, generator.NewRestGoClient(p.sg.ID(), p.sg.Type(), p.sg.Methods(), p.sg.Transport())) + if p.sg.JSONRPCEnable() { + + if p.sg.GoClientEnable() { + generators = append( + generators, + generator.NewJsonRPCGoClient(p.sg), + ) + } + if p.sg.JSClientEnable() { + generators = append( + generators, + generator.NewJsonRPCJSClient(p.sg, p.enums), + ) + } + } else if p.sg.GoClientEnable() { + generators = append(generators, generator.NewRestGoClient(p.sg)) } } - if p.sg.Transport().Openapi.Enable { - generators = append(generators, generator.NewOpenapi(p.sg.Methods(), p.sg.Transport(), p.workDir, p.sg.Errors())) + if p.sg.OpenapiEnable() { + generators = append(generators, generator.NewOpenapi(p.sg, p.workDir)) } return generators } @@ -98,7 +97,6 @@ func NewService( enums *typeutil.Map, workDir string, pkg *packages.Package, - ) processor.Processor { return &serviceProcessor{ sg: sg, diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go index dbb660a5..9ca3b972 100644 --- a/internal/interface/registry/processor.go +++ b/internal/interface/registry/processor.go @@ -22,13 +22,13 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader gt := git.NewGIT() switch o.Option.Name { case "Gateway": - hg, err := ig.NewGatewayOption(o.Pkg, o.Option, r.finder) + hg, err := ig.NewGateway(o.Pkg, o.Option, r.finder) if err != nil { return nil, err } return processor.NewGatewayProcessor(hg, o.Pkg), nil case "Service": - sg, err := ig.NewServiceGateway(o.Option, data.GraphTypes, data.CommentMaps) + sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentMaps) if err != nil { return nil, err } diff --git a/internal/interface/typevisitor/js_def_visitor.go b/internal/interface/typevisitor/js_def_visitor.go index 34a05e32..8f1fc145 100644 --- a/internal/interface/typevisitor/js_def_visitor.go +++ b/internal/interface/typevisitor/js_def_visitor.go @@ -4,7 +4,6 @@ import ( stdtypes "go/types" "github.com/fatih/structtag" - "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -14,47 +13,6 @@ type jsTypeDefVisitor struct { jst typevisitor.TypeVisitor } -func (v *jsTypeDefVisitor) writeStruct(st *stdtypes.Struct, nested int) { - var j int - for i := 0; i < st.NumFields(); i++ { - f := st.Field(i) - if f.Embedded() { - var st *stdtypes.Struct - if ptr, ok := f.Type().(*stdtypes.Pointer); ok { - st = ptr.Elem().Underlying().(*stdtypes.Struct) - } else { - st = f.Type().Underlying().(*stdtypes.Struct) - } - v.writeStruct(st, nested) - v.buf.W("\n") - continue - } - var ( - skip bool - name = f.Name() - ) - if tags, err := structtag.Parse(st.Tag(i)); err == nil { - if jsonTag, err := tags.Get("json"); err == nil { - if jsonTag.Name == "-" { - skip = true - } else { - name = jsonTag.Name - } - } - } - if skip { - continue - } - - v.buf.W("* @property {") - typevisitor.ConvertType(f.Type()).Accept(v, nested+1) - v.buf.W("} ") - v.buf.W("%s\n", name) - - j++ - } -} - func (v *jsTypeDefVisitor) Visit(t stdtypes.Type) { typevisitor.ConvertType(t).Accept(v, 0) } @@ -94,24 +52,72 @@ func (v *jsTypeDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { v.buf.W("string") return } - if nested == 0 { - if st, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + switch tp := t.Obj().Type().Underlying().(type) { + default: + typevisitor.ConvertType(tp.Underlying()).Accept(v, nested) + case *stdtypes.Struct: + if nested == 0 { v.buf.W("/**\n") v.buf.W("* @typedef {Object} %s\n", t.Obj().Name()) - v.writeStruct(st, nested) - v.buf.W("**/\n\n") - } - } else { - if _, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + typevisitor.ConvertType(tp).Accept(v, nested) + v.buf.W("*/\n\n") + } else { v.buf.W(t.Obj().Name()) + } + case *stdtypes.Map, *stdtypes.Slice: + if nested == 0 { + v.buf.W("/**\n") + v.buf.W("* @typedef {") + typevisitor.ConvertType(tp).Accept(v, nested) + v.buf.W("} %s\n", t.Obj().Name()) + v.buf.W("*/\n\n") } else { - typevisitor.ConvertType(t.Obj().Type().Underlying()).Accept(v, nested+1) + v.buf.W(t.Obj().Name()) } } } func (v *jsTypeDefVisitor) VisitStruct(t *stdtypes.Struct, nested int) { - v.writeStruct(t, nested) + var j int + for i := 0; i < t.NumFields(); i++ { + f := t.Field(i) + if f.Embedded() { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + st = f.Type().Underlying().(*stdtypes.Struct) + } + + typevisitor.ConvertType(st).Accept(v, nested) + + v.buf.W("\n") + continue + } + var ( + skip bool + name = f.Name() + ) + if tags, err := structtag.Parse(t.Tag(i)); err == nil { + if jsonTag, err := tags.Get("json"); err == nil { + if jsonTag.Name == "-" { + skip = true + } else { + name = jsonTag.Name + } + } + } + if skip { + continue + } + + v.buf.W("* @property {") + typevisitor.ConvertType(f.Type()).Accept(v, nested+1) + v.buf.W("} ") + v.buf.W("%s\n", name) + + j++ + } } func JSTypeDefVisitor(buf *writer.BaseWriter) typevisitor.TypeVisitor { diff --git a/internal/interface/typevisitor/js_visitor.go b/internal/interface/typevisitor/js_visitor.go index d5235de5..0f37c121 100644 --- a/internal/interface/typevisitor/js_visitor.go +++ b/internal/interface/typevisitor/js_visitor.go @@ -50,11 +50,11 @@ func (v *jsTypeVisitor) VisitMap(t *stdtypes.Map, nested int) { func (v *jsTypeVisitor) VisitNamed(t *stdtypes.Named, nested int) { switch stdtypes.TypeString(t.Obj().Type(), nil) { default: - if _, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { - v.w(t.Obj().Name()) - } else { - typevisitor.ConvertType(t.Obj().Type().Underlying()).Accept(v, nested+1) - } + //if _, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + v.w(t.Obj().Name()) + //} else { + // typevisitor.ConvertType(t.Obj().Type().Underlying()).Accept(v, nested+1) + //} case "encoding/json.RawMessage": v.w("*") return diff --git a/internal/interface/typevisitor/named_collector.go b/internal/interface/typevisitor/named_collector.go index 46a54526..3762fc04 100644 --- a/internal/interface/typevisitor/named_collector.go +++ b/internal/interface/typevisitor/named_collector.go @@ -23,12 +23,15 @@ func (v *namedTypeCollector) VisitPointer(t *stdtypes.Pointer, nested int) { } func (v *namedTypeCollector) VisitArray(t *stdtypes.Array, nested int) { + typevisitor.ConvertType(t.Elem()).Accept(v, nested) } func (v *namedTypeCollector) VisitSlice(t *stdtypes.Slice, nested int) { + typevisitor.ConvertType(t.Elem()).Accept(v, nested) } func (v *namedTypeCollector) VisitMap(t *stdtypes.Map, nested int) { + typevisitor.ConvertType(t.Elem()).Accept(v, nested) } func (v *namedTypeCollector) VisitNamed(t *stdtypes.Named, nested int) { diff --git a/internal/interface/typevisitor/openapi_def_visitor.go b/internal/interface/typevisitor/openapi_def_visitor.go index 0db05307..92d2f1a5 100644 --- a/internal/interface/typevisitor/openapi_def_visitor.go +++ b/internal/interface/typevisitor/openapi_def_visitor.go @@ -14,33 +14,6 @@ type openapiDefVisitor struct { ov typevisitor.TypeVisitor } -func (v *openapiDefVisitor) populateSchema(st *stdtypes.Struct) { - for i := 0; i < st.NumFields(); i++ { - f := st.Field(i) - if !f.Embedded() { - name := f.Name() - if tags, err := structtag.Parse(st.Tag(i)); err == nil { - if tag, err := tags.Get("json"); err == nil { - name = tag.Value() - } - } - if name == "-" { - continue - } - v.schema.Properties[name] = &openapi.Schema{} - OpenapiVisitor(v.schema.Properties[name]).Visit(f.Type()) - } else { - var st *stdtypes.Struct - if ptr, ok := f.Type().(*stdtypes.Pointer); ok { - st = ptr.Elem().Underlying().(*stdtypes.Struct) - } else { - st = f.Type().Underlying().(*stdtypes.Struct) - } - v.populateSchema(st) - } - } -} - func (v *openapiDefVisitor) Visit(t stdtypes.Type) { typevisitor.ConvertType(t).Accept(v, 0) } @@ -54,7 +27,7 @@ func (v *openapiDefVisitor) VisitArray(t *stdtypes.Array, nested int) { } func (v *openapiDefVisitor) VisitSlice(t *stdtypes.Slice, nested int) { - v.VisitSlice(t, nested) + v.ov.VisitSlice(t, nested) } func (v *openapiDefVisitor) VisitMap(t *stdtypes.Map, nested int) { @@ -62,6 +35,7 @@ func (v *openapiDefVisitor) VisitMap(t *stdtypes.Map, nested int) { } func (v *openapiDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { + switch stdtypes.TypeString(t, nil) { case "encoding/json.RawMessage": v.schema.Type = "object" @@ -80,19 +54,47 @@ func (v *openapiDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { return } - if nested == 0 { - if st, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { + switch tp := t.Obj().Type().Underlying().(type) { + default: + typevisitor.ConvertType(tp.Underlying()).Accept(v, nested) + + case *stdtypes.Struct: + if nested == 0 { v.schema.Properties = openapi.Properties{} - v.populateSchema(st) + typevisitor.ConvertType(tp).Accept(v, nested) + } else { + v.schema.Type = "object" + v.schema.Ref = "#/components/schemas/" + t.Obj().Name() + } + case *stdtypes.Map, *stdtypes.Slice: + if nested == 0 { + typevisitor.ConvertType(tp).Accept(v, nested) + } else { + v.schema.Type = "object" + v.schema.Ref = "#/components/schemas/" + t.Obj().Name() } - } else { - v.schema.Type = "object" - v.schema.Ref = "#/components/schemas/" + t.Obj().Name() } } func (v *openapiDefVisitor) VisitStruct(t *stdtypes.Struct, nested int) { - + for i := 0; i < t.NumFields(); i++ { + f := t.Field(i) + if !f.Embedded() { + name := f.Name() + if tags, err := structtag.Parse(t.Tag(i)); err == nil { + if tag, err := tags.Get("json"); err == nil { + name = tag.Value() + } + } + if name == "-" { + continue + } + v.schema.Properties[name] = &openapi.Schema{} + OpenapiVisitor(v.schema.Properties[name]).Visit(f.Type()) + } else { + typevisitor.ConvertType(t).Accept(v, nested+1) + } + } } func (v *openapiDefVisitor) VisitBasic(t *stdtypes.Basic, nested int) { diff --git a/internal/types/types.go b/internal/types/types.go index 87a488aa..732b69c5 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -76,12 +76,10 @@ func Inspect(pkgs []*packages.Package, f func(p *packages.Package, n ast.Node) b } } -func ZeroValue(t types.Type) string { +func ZeroValue(t types.Type, qf types.Qualifier) string { switch u := t.Underlying().(type) { case *types.Array, *types.Struct: - return types.TypeString(t, func(p *types.Package) string { - return p.Name() - }) + "{}" + return types.TypeString(t, qf) + "{}" case *types.Basic: info := u.Info() switch { diff --git a/internal/usecase/finder/finder.go b/internal/usecase/finder/finder.go index f945d832..63319523 100644 --- a/internal/usecase/finder/finder.go +++ b/internal/usecase/finder/finder.go @@ -3,9 +3,10 @@ package finder import ( stdtypes "go/types" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" ) type ServiceFinder interface { - Find(named *stdtypes.Named) (gateway.ServiceGateway, []error) + Find(named *stdtypes.Named) (gateway.ServiceGateway, *model.ServiceInterface, []error) } diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index a961dc2c..399c26f3 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -1,21 +1,41 @@ package gateway import ( - stdtypes "go/types" - "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/openapi" ) type ServiceGateway interface { - ID() string - RawID() string - Transport() model.TransportOption - Errors() map[uint32]*model.HTTPError - Methods() []model.ServiceMethod - Type() stdtypes.Type - TypeName() *stdtypes.Named - Interface() *stdtypes.Interface - Readme() model.ServiceReadme + AppID() string + AppName() string + Interfaces() model.Interfaces + Error(key uint32) *model.HTTPError + ErrorKeys() []uint32 + TransportType() model.Transport + UseFast() bool + MethodOption(m model.ServiceMethod) model.MethodOption + Prefix() string + + ReadmeEnable() bool + ReadmeOutput() string + ReadmeTemplatePath() string + LoggingEnable() bool InstrumentingEnable() bool + + JSONRPCEnable() bool + JSONRPCDocEnable() bool + JSONRPCDocOutput() string + JSONRPCPath() string + + ClientEnable() bool + GoClientEnable() bool + JSClientEnable() bool + + OpenapiEnable() bool + OpenapiOutput() string + OpenapiInfo() openapi.Info + OpenapiServers() []openapi.Server + OpenapiMethodTags(name string) []string + OpenapiDefaultMethodTags() []string } diff --git a/internal/writer/golang_writer.go b/internal/writer/golang_writer.go index 3c2854d1..a0ad22b2 100644 --- a/internal/writer/golang_writer.go +++ b/internal/writer/golang_writer.go @@ -6,6 +6,8 @@ import ( "strconv" stdstrings "strings" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" ) @@ -46,6 +48,12 @@ func (w *GoLangWriter) WriteFunc(name, recv string, params, results []string, bo w.W("}\n\n") } +func (w *GoLangWriter) WriteVarGroup(body func()) { + w.W("var (\n") + body() + w.W("\n)\n") +} + func (w *GoLangWriter) WriteDefer(params []string, calls []string, body func()) { w.W("defer func(") w.W(stdstrings.Join(params, ",")) @@ -67,7 +75,7 @@ func (w *GoLangWriter) WriteSignature(keyvals []string) { if i > 0 { w.W(", ") } - name := "_" + name := "" if keyvals[i] != "" { name = keyvals[i] } @@ -185,7 +193,6 @@ func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) strin if msgErrTemplate == "" { msgErrTemplate = "convert error" } - errMsg := strconv.Quote(msgErrTemplate + ": %w") w.W("if err != nil {\n") if sliceErr == "" { @@ -250,8 +257,8 @@ func (w *GoLangWriter) WriteConvertType( case *stdtypes.Pointer: if t.Elem().String() == "net/url.URL" { urlPkg := importFn("url", "net/url") - tmpId := stdstrings.ToLower(f.Name()) + "URL" - w.W("%s, err := %s.Parse(%s)\n", tmpId, urlPkg, valueId) + tmpID := stdstrings.ToLower(f.Name()) + "URL" + w.W("%s, err := %s.Parse(%s)\n", tmpID, urlPkg, valueId) w.W("if err != nil {\n") if sliceErr == "" { w.W("return nil, err\n") @@ -262,22 +269,31 @@ func (w *GoLangWriter) WriteConvertType( if declareVar { w.W("var ") } - w.W("%s = %s\n", assignId, tmpId) + w.W("%s = %s\n", assignId, tmpID) } case *stdtypes.Named: - if t.Obj().Pkg().Path() == "github.com/satori/go.uuid" { + tmpID := strcase.ToLowerCamel(f.Name()) + "Result" + switch t.Obj().Type().String() { + case "uuid.UUID": uuidPkg := importFn("", t.Obj().Pkg().Path()) - if declareVar { - w.W("var ") - } - w.W("%s, err = %s.FromString(%s)\n", assignId, uuidPkg, valueId) - w.W("if err != nil {\n") - if sliceErr == "" { - w.W("return nil, err\n") - } else { - w.W("%[1]s = append(%[1]s, err)\n", sliceErr) - } - w.W("}\n") + w.W("%s, err := %s.FromString(%s)\n", tmpID, uuidPkg, valueId) + case "time.Duration": + timePkg := importFn("time", "time") + w.W("%s, err := %s.ParseDuration(%s)\n", tmpID, timePkg, valueId) + case "time.Time": + timePkg := importFn("time", "time") + w.W("%[1]s, err := %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", tmpID, timePkg, valueId) + } + w.W("if err != nil {\n") + if sliceErr == "" { + w.W("return nil, err\n") + } else { + w.W("%[1]s = append(%[1]s, err)\n", sliceErr) + } + w.W("}\n") + if declareVar { + w.W("var ") } + w.W("%s = %s\n", assignId, tmpID) } } diff --git a/swipe.go b/swipe.go index 47b6f602..7ff02a79 100644 --- a/swipe.go +++ b/swipe.go @@ -51,18 +51,9 @@ type Option string // A ServiceOption is an option service. type ServiceOption string -// A TransportOption is an option gokit transport. -type TransportOption string - -// A JSONRPCOption is an option JSON RPC. -type JSONRPCOption interface{} - // A MethodOption is an option method. type MethodOption string -// A OpenapiOption is an option for openapi doc. -type OpenapiOption string - // A ConfigEnvOption is an option env config. type ConfigEnvOption string @@ -80,6 +71,8 @@ type GatewayServiceMethodOption string type ReadmeOption string +type InterfaceOption string + // Build the basic option for defining the generation. func Build(Option) { } @@ -104,85 +97,82 @@ func Build(Option) { // flag - name of flag, enable as the console flag. // // desc - description for String function. -func ConfigEnv(optionsStruct interface{}, opts ...ConfigEnvOption) Option { +func ConfigEnv(optionsStruct interface{}) Option { return "implementation not generated, run swipe" } -// ConfigMarkdownDoc enable markdown doc generate. -func ConfigMarkdownDoc(string) ConfigEnvOption { +func ConfigEnvFuncName(name string) Option { return "implementation not generated, run swipe" } -// FuncName sets name of the function to load the configuration, default is "LoadConfig". -func FuncName(string) ConfigEnvOption { +// ConfigEnvDocEnable enable markdown doc generate. +func ConfigEnvDocEnable() Option { + return "implementation not generated, run swipe" +} + +// ConfigEnvDocOutput output path markdown doc generate. +func ConfigEnvDocOutput(output string) Option { return "implementation not generated, run swipe" } // Service a option that defines the generation of transport, metrics, tracing, and logging for gokit. // Given iface is nil pointer interface, for example: // (*pkg.Iface)(nil) -func Service(iface interface{}, opts ...ServiceOption) Option { +func Service(opts ...ServiceOption) Option { + return "implementation not generated, run swipe" +} + +func Interface(iface interface{}, prefix string) ServiceOption { return "implementation not generated, run swipe" } // Name override service name prefix. -func Name(string) ServiceOption { +func ServiceNamePrefix(string) ServiceOption { return "implementation not generated, run swipe" } -// Transport a option that defines the transport generation settings. -// -// Swipe generates a method for creating an transport handler using the -// following template: -// -// MakeHandler -// -// is REST or JSONRPC. -func Transport(protocol string, opts ...TransportOption) ServiceOption { +// ReadmeEnable enable for generate readme markdown for service. +func ReadmeEnable() ServiceOption { return "implementation not generated, run swipe" } -// Readme enable for generate readme markdown for service. -func Readme(outputDir string, opts ...ReadmeOption) ServiceOption { +func ReadmeOutput(string) ServiceOption { return "implementation not generated, run swipe" } -// ReadmeTemplate set markdown template path. -func ReadmeTemplate(path string) ReadmeOption { +func ReadmeTemplatePath(string) ServiceOption { return "implementation not generated, run swipe" } -// FastEnable enable use valyala/fasthttp instead net/http package. -// -// Supported in both REST and JSON RPC. -func FastEnable() TransportOption { +// JSONRPCEnable enabled use JSON RPC instead of REST. +func JSONRPCEnable() ServiceOption { return "implementation not generated, run swipe" } -// MarkdownDoc enable for generate markdown JSON RPC doc for JS client. -func MarkdownDoc(outputDir string) TransportOption { +// JSONRPCPath sets the end point for transport. +func JSONRPCPath(string) ServiceOption { return "implementation not generated, run swipe" } -// MethodOptions option for defining method settings. -// Given signature is interface method, for example: -// pkg.Iface.Create -func MethodOptions(signature interface{}, opts ...MethodOption) TransportOption { +// JSONRPCDocEnable enable for generate markdown JSON RPC doc. +func JSONRPCDocEnable() ServiceOption { return "implementation not generated, run swipe" } -// MethodDefaultOptions option for defining for all methods default settings. -func MethodDefaultOptions(...MethodOption) TransportOption { +// JSONRPCDocOutput change output dir for generate markdown JSON RPC doc. +func JSONRPCDocOutput(output string) ServiceOption { return "implementation not generated, run swipe" } -// JSONRPC enabled use JSON RPC instead of REST. -func JSONRPC(...JSONRPCOption) TransportOption { +// MethodOptions option for defining method settings. +// Given signature is interface method, for example: +// pkg.Iface.Create +func MethodOptions(signature interface{}, opts ...MethodOption) ServiceOption { return "implementation not generated, run swipe" } -// JSONRPCPath sets the end point for transport. -func JSONRPCPath(string) JSONRPCOption { +// MethodDefaultOptions option for defining for all methods default settings. +func MethodDefaultOptions(...MethodOption) ServiceOption { return "implementation not generated, run swipe" } @@ -205,38 +195,38 @@ func InstrumentingDisable() MethodOption { return "implementation not generated, run swipe" } +// RESTMethod sets http method, default is GET. +func RESTMethod(string) MethodOption { + return "implementation not generated, run swipe" +} + // WrapResponse wrap the response from the server to an object, for example if you want to return as: // {data: { you response data }} // need to add option: // ...code here... // WrapResponse("data") // ... code here ... -func WrapResponse(string) MethodOption { - return "implementation not generated, run swipe" -} - -// Method sets http method, default is GET. -func Method(string) MethodOption { +func RESTWrapResponse(string) MethodOption { return "implementation not generated, run swipe" } // Path sets http path, default is lowecase method name with the prefix "/", // for example: the Get method will look like " /get". -func Path(string) MethodOption { +func RESTPath(string) MethodOption { return "implementation not generated, run swipe" } // HeaderVars sets the key/value array to get method values from headers, // where the key is the name of the method parameter, // and the value is the name of the header. -func HeaderVars([]string) MethodOption { +func RESTHeaderVars([]string) MethodOption { return "implementation not generated, run swipe" } // QueryVars sets the key/value array to get method values from query args, // where the key is the name of the method parameter, // and the value is the name of the query args. -func QueryVars([]string) MethodOption { +func RESTQueryVars([]string) MethodOption { return "implementation not generated, run swipe" } @@ -264,48 +254,53 @@ func ClientDecodeResponseFunc(interface{}) MethodOption { return "implementation not generated, run swipe" } -// ClientEnable enable generate client for the selected transport. -func ClientEnable() TransportOption { +// ClientsEnable enable generate Golang, JavaScript client. +func ClientsEnable(langs []string) ServiceOption { + return "implementation not generated, run swipe" +} + +// ServerDisabled enable generate http server. +func HTTPServer() ServiceOption { return "implementation not generated, run swipe" } -// ServerDisabled disable generate http server. -func ServerDisabled() TransportOption { +// HTTPFast enable generate fast http server. +func HTTPFast() ServiceOption { return "implementation not generated, run swipe" } -// Openapi generate openapi documentation. -func Openapi(...OpenapiOption) TransportOption { +// OpenapiEnable enabled generate openapi documentation. +func OpenapiEnable() ServiceOption { return "implementation not generated, run swipe" } // OpenapiTags sets docs tags for method. -func OpenapiTags(methods []interface{}, tags []string) OpenapiOption { +func OpenapiTags(methods []interface{}, tags []string) ServiceOption { return "implementation not generated, run swipe" } // OpenapiOutput sets output directory, path relative to the file, default is "./". -func OpenapiOutput(string) OpenapiOption { +func OpenapiOutput(string) ServiceOption { return "implementation not generated, run swipe" } // OpenapiInfo sets info. -func OpenapiInfo(title, description, version string) OpenapiOption { +func OpenapiInfo(title, description, version string) ServiceOption { return "implementation not generated, run swipe" } // OpenapiContact sets openapi contact. -func OpenapiContact(name, email, url string) OpenapiOption { +func OpenapiContact(name, email, url string) ServiceOption { return "implementation not generated, run swipe" } // OpenapiLicence sets openapi licence. -func OpenapiLicence(name, url string) OpenapiOption { +func OpenapiLicence(name, url string) ServiceOption { return "implementation not generated, run swipe" } // OpenapiServer sets openapi server. -func OpenapiServer(description, url string) OpenapiOption { +func OpenapiServer(description, url string) ServiceOption { return "implementation not generated, run swipe" } From 18be87ae6a0b654ec2dc8df938fa664e1bd6e3e9 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 21 Oct 2020 09:21:06 +0300 Subject: [PATCH 035/293] chore(release): 2.0.0-alpha.6 --- CHANGELOG.md | 32 ++++++++++++++++++++++---------- swipe.go | 2 +- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35656426..c21a1ced 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ ## [Unreleased] + +## [v2.0.0-alpha.6] - 2020-10-21 +### Features +- added multiple service interfaces, added time.Time type for REST query convert generate, added time.Duration for config generate, some not noticeable improvements. +- added output format error message + +### BREAKING CHANGE + +the format of the settings description has been changed, see the file github.com/swipe-io/swipe/swipe.go for details. + + ## [v2.0.0-alpha.5] - 2020-10-06 ### Bug Fixes @@ -219,12 +230,17 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. -- Change enums JSON RPC client generate format. ### Features - Added command for generate CRUD service structure. + +## [v1.24.3] - 2020-07-28 +### Bug Fixes +- Change enums JSON RPC client generate format. + + ## [v1.24.2] - 2020-07-28 ### Bug Fixes @@ -238,11 +254,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.4] - 2020-07-28 ### Bug Fixes - Incorrect generate enum name for markdown docs. - - - -## [v1.24.3] - 2020-07-28 -### Bug Fixes - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -546,7 +557,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...HEAD +[v2.0.0-alpha.6]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 [v2.0.0-alpha.5]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 [v2.0.0-alpha.4]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.3...v2.0.0-alpha.4 [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 @@ -575,11 +587,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 [v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/swipe.go b/swipe.go index 7ff02a79..39300ca4 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.5" +const Version = "v2.0.0-alpha.6" // A Option is an option for a Swipe. type Option string From 1d29cfdde1009ef9eaae80fdfd14dff352f31cc6 Mon Sep 17 00:00:00 2001 From: vitaly Date: Thu, 22 Oct 2020 12:24:29 +0300 Subject: [PATCH 036/293] fix: generate format for REST query string and headers and refactoring WriteConvertType --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 +- fixtures/ServiceRESTSingle/app/README.md | 3 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/service.go | 2 +- fixtures/ServiceRESTSingle/app/swipe.go | 2 + internal/interface/generator/config.go | 2 +- .../interface/generator/rest_go_client.go | 39 +++++---- internal/interface/generator/rest_server.go | 10 +-- internal/writer/golang_writer.go | 80 ++++++++++++------- 13 files changed, 94 insertions(+), 59 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 48af7ed7..7f36b002 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) +[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) +, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.3) , [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.2) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 6e2aea37..dc328b11 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.5. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.6. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 7f230642..4f704835 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) +[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) +, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.3) , [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.2) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 09b582bb..62f82f07 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.5. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.6. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 8cab13f5..f162a639 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) +[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) +, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.3) , [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.2) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index a49738d5..9dddfa43 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) +[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) +, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.3) , [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.2) diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index 7bd28a77..681ccff4 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get":{"post":{"summary":"Get","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get":{"post":{"summary":"Get","parameters":[{"in":"header","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/service.go b/fixtures/ServiceRESTSingle/app/service.go index a90a6231..c60bc3f2 100644 --- a/fixtures/ServiceRESTSingle/app/service.go +++ b/fixtures/ServiceRESTSingle/app/service.go @@ -93,7 +93,7 @@ type AppInterface interface { type InterfaceB interface { // Create new item of item. - Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) + Create(ctx context.Context, newData AliasData, name string, data []byte, date time.Time) (err error) // Get item. Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) // GetAll more comment and more and more comment and more and more comment and more. diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/fixtures/ServiceRESTSingle/app/swipe.go index d336091d..203fa1e1 100644 --- a/fixtures/ServiceRESTSingle/app/swipe.go +++ b/fixtures/ServiceRESTSingle/app/swipe.go @@ -24,12 +24,14 @@ func Swipe() { swipe.MethodOptions(AppInterface.Create, swipe.RESTMethod(http.MethodPost), + swipe.RESTQueryVars([]string{"date", "date"}), swipe.Logging(true), swipe.LoggingParams([]string{}, []string{"newData"}), ), swipe.MethodOptions(AppInterface.Get, swipe.RESTMethod(http.MethodPost), swipe.RESTQueryVars([]string{"cc", "cc"}), + swipe.RESTHeaderVars([]string{"fname", "fname"}), ), swipe.MethodDefaultOptions( swipe.Logging(false), diff --git a/internal/interface/generator/config.go b/internal/interface/generator/config.go index 0689e447..27c9e312 100644 --- a/internal/interface/generator/config.go +++ b/internal/interface/generator/config.go @@ -201,7 +201,7 @@ func (g *config) writeEnv(f *stdtypes.Var, opts fldOpts) { tmpVar := strcase.ToLowerCamel(opts.fieldPath) + "Tmp" g.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, g.i.Import("os", "os"), strconv.Quote(opts.name)) g.W("if ok {\n") - g.WriteConvertType(g.i.Import, "cfg."+opts.fieldPath, tmpVar, f, "errs", false, "convert "+opts.name+" error") + g.WriteConvertType(g.i.Import, "cfg."+opts.fieldPath, tmpVar, f, nil, "errs", false, "convert "+opts.name+" error") g.W("}\n") } diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 7a17382a..e93808d9 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -8,10 +8,10 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -159,8 +159,8 @@ func (g *restGoClient) Process(ctx context.Context) error { var ( pathVars []string - queryVars []string - headerVars []string + queryVars []*stdtypes.Var + headerVars []*stdtypes.Var ) for _, p := range m.Params { @@ -169,11 +169,16 @@ func (g *restGoClient) Process(ctx context.Context) error { regexp = ":" + regexp } pathStr = stdstrings.Replace(pathStr, "{"+p.Name()+regexp+"}", "%s", -1) - pathVars = append(pathVars, g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) - } else if qName, ok := mopt.QueryVars[p.Name()]; ok { - queryVars = append(queryVars, strconv.Quote(qName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) - } else if hName, ok := mopt.HeaderVars[p.Name()]; ok { - headerVars = append(headerVars, strconv.Quote(hName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + + //pathVars = append(pathVars, g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + } else if _, ok := mopt.QueryVars[p.Name()]; ok { + + queryVars = append(queryVars, p) + + //queryVars = append(queryVars, strconv.Quote(qName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) + } else if _, ok := mopt.HeaderVars[p.Name()]; ok { + headerVars = append(headerVars, p) + //headerVars = append(headerVars, strconv.Quote(hName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) } } @@ -231,22 +236,22 @@ func (g *restGoClient) Process(ctx context.Context) error { } else { g.W("q := r.URL.Query()\n") } - - for i := 0; i < len(queryVars); i += 2 { - g.W("q.Add(%s, %s)\n", queryVars[i], queryVars[i+1]) + for _, p := range queryVars { + name := p.Name() + "Str" + g.WriteFormatType(g.i.Import, name, "req."+strings.UcFirst(p.Name()), p) + g.W("q.Add(%s, %s)\n", strconv.Quote(mopt.QueryVars[p.Name()]), name) } - if g.options.UseFast() { g.W("r.URI().SetQueryString(q.String())\n") } else { g.W("r.URL.RawQuery = q.Encode()\n") } } - - for i := 0; i < len(headerVars); i += 2 { - g.W("r.Header.Add(%s, %s)\n", headerVars[i], headerVars[i+1]) + for _, p := range headerVars { + name := p.Name() + "Str" + g.WriteFormatType(g.i.Import, name, "req."+strings.UcFirst(p.Name()), p) + g.W("r.Header.Add(%s, %s)\n", strconv.Quote(mopt.HeaderVars[p.Name()]), name) } - switch stdstrings.ToUpper(httpMethod) { case "POST", "PUT", "PATCH": jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 4976af4d..cb45de23 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -177,13 +177,13 @@ func (g *restServer) Process(ctx context.Context) error { g.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) g.WriteCheckErr(func() { - g.W("return nil, %s.Errorf(\"couldn't read body for %s: %%s\", err)\n", fmtPkg, m.NameRequest) + g.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, m.NameRequest) }) g.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) } g.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) + g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, m.NameRequest) g.W("}\n") } if len(mopt.PathVars) > 0 { @@ -213,7 +213,7 @@ func (g *restServer) Process(ctx context.Context) error { } else { valueID = "vars[" + strconv.Quote(p.Name()) + "]" } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, []string{"nil"}, "", false, "") } else if queryName, ok := mopt.QueryVars[p.Name()]; ok { var valueID string if g.options.UseFast() { @@ -221,7 +221,7 @@ func (g *restServer) Process(ctx context.Context) error { } else { valueID = "q.Get(" + strconv.Quote(queryName) + ")" } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, []string{"nil"}, "", false, "") } else if headerName, ok := mopt.HeaderVars[p.Name()]; ok { var valueID string if g.options.UseFast() { @@ -229,7 +229,7 @@ func (g *restServer) Process(ctx context.Context) error { } else { valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, "", false, "") + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, []string{"nil"}, "", false, "") } } g.W("return req, nil\n") diff --git a/internal/writer/golang_writer.go b/internal/writer/golang_writer.go index a0ad22b2..a6866b8d 100644 --- a/internal/writer/golang_writer.go +++ b/internal/writer/golang_writer.go @@ -131,10 +131,6 @@ func (w *GoLangWriter) WriteFuncCall(id, name string, params []string) { w.W(")\n") } -func (w *GoLangWriter) getConvertFunc(funcName, strconvPkg, tmpId, valueId string) string { - return fmt.Sprintf("%s, err := %s.%s", tmpId, strconvPkg, fmt.Sprintf(funcName, valueId)) -} - func (w *GoLangWriter) getConvertFuncName(kind stdtypes.BasicKind) string { switch kind { case stdtypes.Int, stdtypes.Int8, stdtypes.Int16, stdtypes.Int32, stdtypes.Int64: @@ -165,18 +161,17 @@ func (w *GoLangWriter) getFormatFuncName(kind stdtypes.BasicKind) string { } } -func (w *GoLangWriter) GetFormatType(importFn func(string, string) string, valueId string, f *stdtypes.Var) string { - switch t := f.Type().(type) { - case *stdtypes.Basic: - funcName := w.getFormatFuncName(t.Kind()) - if funcName != "" { - return fmt.Sprintf("%s.%s", importFn("strconv", "strconv"), fmt.Sprintf(funcName, valueId)) - } +func (w *GoLangWriter) writeFormatBasicType(importFn func(string, string) string, assignId, valueId string, t *stdtypes.Basic) { + funcName := w.getFormatFuncName(t.Kind()) + if funcName != "" { + strconvPkg := importFn("strconv", "strconv") + w.W("%s := %s.%s\n", assignId, strconvPkg, fmt.Sprintf(funcName, valueId)) + } else { + w.W("%s := %s\n", assignId, valueId) } - return valueId } -func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) string, name, assignId, valueId string, t *stdtypes.Basic, sliceErr string, declareVar bool, msgErrTemplate string) { +func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) string, name, assignId, valueId string, t *stdtypes.Basic, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { useCheckErr := true fmtPkg := importFn("fmt", "fmt") @@ -184,7 +179,8 @@ func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) strin funcName := w.getConvertFuncName(t.Kind()) if funcName != "" { - w.W("%s\n", w.getConvertFunc(funcName, importFn("strconv", "strconv"), tmpId, valueId)) + strconvPkg := importFn("strconv", "strconv") + w.W("%s, err := %s.%s\n", tmpId, strconvPkg, fmt.Sprintf(funcName, valueId)) } else { useCheckErr = false tmpId = valueId @@ -195,18 +191,20 @@ func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) strin } errMsg := strconv.Quote(msgErrTemplate + ": %w") w.W("if err != nil {\n") - if sliceErr == "" { - w.W("return nil, %s.Errorf(%s, err)\n", fmtPkg, errMsg) + if errSlice != "" { + w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, fmtPkg, errMsg) } else { - w.W("%[1]s = append(%[1]s, %s.Errorf(%s, err))\n", sliceErr, fmtPkg, errMsg) + w.W("return ") + if len(errRet) > 0 { + w.W("%s, ", stdstrings.Join(errRet, ",")) + } + w.W("err") } w.W("}\n") } - if declareVar { w.W("var ") } - w.W("%s = ", assignId) if t.Kind() != stdtypes.String { w.W("%s(%s)", t.String(), tmpId) @@ -216,14 +214,32 @@ func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) strin w.W("\n") } +func (w *GoLangWriter) WriteFormatType(importFn func(string, string) string, assignId, valueId string, f *stdtypes.Var) string { + switch t := f.Type().(type) { + case *stdtypes.Basic: + w.writeFormatBasicType(importFn, assignId, valueId, t) + case *stdtypes.Named: + switch t.Obj().Type().String() { + case "uuid.UUID": + return fmt.Sprintf("%s := %s.String() \n", assignId, valueId) + case "time.Duration": + w.W("%s := %s.String()\n", assignId, valueId) + case "time.Time": + timePkg := importFn("time", "time") + w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", assignId, timePkg, valueId) + } + } + return valueId +} + func (w *GoLangWriter) WriteConvertType( - importFn func(string, string) string, assignId, valueId string, f *stdtypes.Var, sliceErr string, declareVar bool, msgErrTemplate string, + importFn func(string, string) string, assignId, valueId string, f *stdtypes.Var, errRet []string, errSlice string, declareVar bool, msgErrTemplate string, ) { var tmpId string switch t := f.Type().(type) { case *stdtypes.Basic: - w.writeConvertBasicType(importFn, f.Name(), assignId, valueId, t, sliceErr, declareVar, msgErrTemplate) + w.writeConvertBasicType(importFn, f.Name(), assignId, valueId, t, errRet, errSlice, declareVar, msgErrTemplate) case *stdtypes.Slice: stringsPkg := importFn("strings", "strings") switch t := t.Elem().(type) { @@ -250,7 +266,7 @@ func (w *GoLangWriter) WriteConvertType( } w.W("%s = make([]%s, len(%s))\n", assignId, t.String(), tmpId) w.W("for i, s := range %s {\n", tmpId) - w.writeConvertBasicType(importFn, "tmp", assignId+"[i]", "s", t, sliceErr, false, msgErrTemplate) + w.writeConvertBasicType(importFn, "tmp", assignId+"[i]", "s", t, errRet, errSlice, false, msgErrTemplate) w.W("}\n") } } @@ -260,10 +276,14 @@ func (w *GoLangWriter) WriteConvertType( tmpID := stdstrings.ToLower(f.Name()) + "URL" w.W("%s, err := %s.Parse(%s)\n", tmpID, urlPkg, valueId) w.W("if err != nil {\n") - if sliceErr == "" { - w.W("return nil, err\n") + if errSlice != "" { + w.W("%[1]s = append(%[1]s, err)\n", errSlice) } else { - w.W("%[1]s = append(%[1]s, err)\n", sliceErr) + w.W("return ") + if len(errRet) > 0 { + w.W("%s, ", stdstrings.Join(errRet, ",")) + } + w.W("err") } w.W("}\n") if declareVar { @@ -285,10 +305,14 @@ func (w *GoLangWriter) WriteConvertType( w.W("%[1]s, err := %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", tmpID, timePkg, valueId) } w.W("if err != nil {\n") - if sliceErr == "" { - w.W("return nil, err\n") + if errSlice != "" { + w.W("%[1]s = append(%[1]s, err)\n", errSlice) } else { - w.W("%[1]s = append(%[1]s, err)\n", sliceErr) + w.W("return ") + if len(errRet) > 0 { + w.W("%s, ", stdstrings.Join(errRet, ",")) + } + w.W("err") } w.W("}\n") if declareVar { From be85b49f4f6ef3d3c9175caedc8650b530cbf14e Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 23 Oct 2020 17:16:16 +0300 Subject: [PATCH 037/293] refactor: rename param to name --- swipe.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swipe.go b/swipe.go index 39300ca4..e276cdce 100644 --- a/swipe.go +++ b/swipe.go @@ -122,7 +122,7 @@ func Service(opts ...ServiceOption) Option { return "implementation not generated, run swipe" } -func Interface(iface interface{}, prefix string) ServiceOption { +func Interface(iface interface{}, name string) ServiceOption { return "implementation not generated, run swipe" } From f682c69bd775b379ac4d62c5f1c70d1b687a54af Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 23 Oct 2020 17:18:07 +0300 Subject: [PATCH 038/293] fix: change func names generate and REST path values --- .../app/client_jsonrpc_gen.js | 8 +-- .../app/jsonrpc_doc_gen.md | 28 ++++----- .../app/openapi_jsonrpc_gen.json | 2 +- .../app/client_jsonrpc_gen.js | 2 +- .../app/openapi_jsonrpc_gen.json | 2 +- .../app/openapi_rest_gen.json | 2 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/swipe.go | 1 + internal/domain/model/service.go | 8 +-- internal/interface/gateway/service.go | 20 +++---- internal/interface/generator/client_struct.go | 34 ++++++++++- internal/interface/generator/endpoint.go | 2 +- .../interface/generator/endpoint_factory.go | 6 +- internal/interface/generator/instrumenting.go | 2 +- .../interface/generator/jsonrpc_go_client.go | 43 +++----------- .../interface/generator/jsonrpc_js_client.go | 8 +-- .../interface/generator/jsonrpc_server.go | 12 ++-- internal/interface/generator/logging.go | 8 ++- internal/interface/generator/openapi.go | 12 ++-- .../interface/generator/rest_go_client.go | 58 +++++++------------ internal/interface/generator/rest_server.go | 8 +-- 21 files changed, 128 insertions(+), 140 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index dc328b11..f7664fee 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -143,13 +143,13 @@ class JSONRPCScheduler { class GRPCClient { constructor(transport) { - this.InterfaceA = new JSONRPCClientInterfaceA(transport); - this.InterfaceB = new JSONRPCClientInterfaceB(transport); + this.A = new JSONRPCClientA(transport); + this.B = new JSONRPCClientB(transport); } } export default RPCClient; -export class JSONRPCClientInterfaceA { +export class JSONRPCClientA { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } @@ -161,7 +161,7 @@ export class JSONRPCClientInterfaceA { } } -export class JSONRPCClientInterfaceB { +export class JSONRPCClientB { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md index cf27b454..e7e047b9 100755 --- a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -1,8 +1,8 @@ # Swipe JSONRPC Client -interfaceA.TestMethod +a.TestMethod -### interfaceA.TestMethod() ⇒void +### a.TestMethod() ⇒void @@ -12,19 +12,19 @@ -interfaceB.Create +b.Create -interfaceB.Delete +b.Delete -interfaceB.Get +b.Get -interfaceB.GetAll +b.GetAll -interfaceB.TestMethod +b.TestMethod -interfaceB.TestMethod2 +b.TestMethod2 -### interfaceB.Create(newData, name, data) ⇒void +### b.Create(newData, name, data) ⇒void new item of item. @@ -41,7 +41,7 @@ |newData|Data|| |name|string|| |data|Array.<number>|| -### interfaceB.Delete(id) ⇒ +### b.Delete(id) ⇒ @@ -54,7 +54,7 @@ | Param | Type | Description | |------|------|------| |id|number|| -### interfaceB.Get(id, name, fname, price, n, b, cc) ⇒User +### b.Get(id, name, fname, price, n, b, cc) ⇒User item. @@ -75,7 +75,7 @@ |n|number|| |b|number|| |cc|number|| -### interfaceB.GetAll(members) ⇒Array.<User> +### b.GetAll(members) ⇒Array.<User> more comment and more and more comment and more and more comment and more. @@ -92,7 +92,7 @@ New line comment. | Param | Type | Description | |------|------|------| |members|Members|| -### interfaceB.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> +### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> @@ -106,7 +106,7 @@ New line comment. |------|------|------| |data|Object.<string, Object>|| |ss|Object|| -### interfaceB.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void +### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json index f9ea1dc2..649c80f3 100755 --- a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["a"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["b"],"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["b"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["b"],"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["b"],"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["b"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["b"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 62f82f07..d608b093 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -145,7 +145,7 @@ string; export default RPCClient; -export class JSONRPCClient { +export class JSONRPCClientInterfaceB { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json index a386a798..d7d0b882 100755 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 4f55084f..77b8d2ae 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["a"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["b"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["b"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["b"],"summary":"Get","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["b"],"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["b"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["b"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["B"],"summary":"Get","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index 681ccff4..87f831d0 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get":{"post":{"summary":"Get","parameters":[{"in":"header","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/fixtures/ServiceRESTSingle/app/swipe.go index 203fa1e1..88b4e067 100644 --- a/fixtures/ServiceRESTSingle/app/swipe.go +++ b/fixtures/ServiceRESTSingle/app/swipe.go @@ -29,6 +29,7 @@ func Swipe() { swipe.LoggingParams([]string{}, []string{"newData"}), ), swipe.MethodOptions(AppInterface.Get, + swipe.RESTPath("/get/{fname}"), swipe.RESTMethod(http.MethodPost), swipe.RESTQueryVars([]string{"cc", "cc"}), swipe.RESTHeaderVars([]string{"fname", "fname"}), diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index 0f296251..51fe2c82 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -23,7 +23,6 @@ func (i Interfaces) At(index int) *ServiceInterface { } type ServiceInterface struct { - prefix string name string loweName string nameExport string @@ -34,10 +33,6 @@ type ServiceInterface struct { serviceMethods []ServiceMethod } -func (g *ServiceInterface) Prefix() string { - return g.prefix -} - func (g *ServiceInterface) NameExport() string { return g.nameExport } @@ -71,14 +66,13 @@ func (g *ServiceInterface) Interface() *stdtypes.Interface { } func NewServiceInterface( - prefix, name, lowerName, nameExport, nameUnExport string, + name, lowerName, nameExport, nameUnExport string, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod, ) *ServiceInterface { return &ServiceInterface{ - prefix: prefix, name: name, loweName: lowerName, nameExport: nameExport, diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index ff580c4e..530e565c 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -215,7 +215,7 @@ func (g *serviceGateway) loadReadme(o *option.Option) error { func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32]*model.HTTPError, ifaceLen int) (*model.ServiceInterface, error) { ifaceOpt := option.MustOption(o.At("iface")) - prefixOpt := option.MustOption(o.At("prefix")) + nameOpt := option.MustOption(o.At("name")) ifacePtr, ok := ifaceOpt.Value.Type().(*stdtypes.Pointer) if !ok { @@ -231,12 +231,13 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceName := strcase.ToCamel(typeName.Obj().Name()) ifaceLcName := strcase.ToLowerCamel(ifaceName) - nameExport := "" - nameUnExport := "" + nameExport := ifaceName + nameUnExport := ifaceLcName + name := nameOpt.Value.String() - if ifaceLen > 1 { - nameExport = ifaceName - nameUnExport = ifaceLcName + if name != "" { + nameExport = strcase.ToCamel(name) + nameUnExport = strcase.ToLowerCamel(name) } var serviceMethods []model.ServiceMethod @@ -249,8 +250,8 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] lcName := strings.LcFirst(m.Name()) - nameExport := m.Name() - nameUnExport := lcName + nameExport := ifaceName + m.Name() + nameUnExport := ifaceLcName + m.Name() nameRequest := m.Name() + "Request" nameResponse := m.Name() + "Response" @@ -258,8 +259,6 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] if ifaceLen > 1 { nameRequest = ifaceName + m.Name() + "Request" nameResponse = ifaceName + m.Name() + "Response" - nameExport = ifaceName + m.Name() - nameUnExport = ifaceLcName + m.Name() } sm := model.ServiceMethod{ @@ -339,7 +338,6 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] serviceMethods = append(serviceMethods, sm) } return model.NewServiceInterface( - prefixOpt.Value.String(), ifaceName, ifaceLcName, nameExport, diff --git a/internal/interface/generator/client_struct.go b/internal/interface/generator/client_struct.go index e7205c31..631d7b58 100644 --- a/internal/interface/generator/client_struct.go +++ b/internal/interface/generator/client_struct.go @@ -15,6 +15,7 @@ import ( ) type clientStructOptionsGateway interface { + Prefix() string UseFast() bool JSONRPCEnable() bool Interfaces() model.Interfaces @@ -52,9 +53,38 @@ func (g *clientStruct) Process(ctx context.Context) error { } endpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - clientOptionType := fmt.Sprintf("ClientOption") + if g.options.Interfaces().Len() > 1 { + g.W("type AppClient struct {\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + g.W("%sClient %s\n", iface.NameExport(), typeStr) + } + g.W("}\n\n") + + g.W("func NewClient%s(tgt string", g.options.Prefix()) + g.W(" ,opts ...ClientOption") + g.W(") (*AppClient, error) {\n") + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%sClient, err := NewClient%s%s(tgt)\n", iface.LoweName(), g.options.Prefix(), iface.Name()) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + } + + g.W("return &AppClient{\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]sClient: %[2]sClient,\n", iface.NameExport(), iface.LoweName()) + } + g.W("}, nil\n") + g.W("}\n\n") + } + g.W("type %s func(*clientOpts)\n", clientOptionType) g.W("type clientOpts struct {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { @@ -113,7 +143,7 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - clientType := fmt.Sprintf("client%s", iface.NameExport()) + clientType := fmt.Sprintf("client%s", iface.Name()) if len(iface.Methods()) > 0 { contextPkg = g.i.Import("context", "context") diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index 98acd799..ebf35ac6 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -39,7 +39,7 @@ func (g *endpoint) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - epSetName := iface.NameExport() + "EndpointSet" + epSetName := iface.Name() + "EndpointSet" g.W("type %s struct {\n", epSetName) diff --git a/internal/interface/generator/endpoint_factory.go b/internal/interface/generator/endpoint_factory.go index 1924a906..147449f5 100644 --- a/internal/interface/generator/endpoint_factory.go +++ b/internal/interface/generator/endpoint_factory.go @@ -29,7 +29,7 @@ func (g *endpointFactory) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - epFactoryName := iface.NameExport() + "EndpointFactory" + epFactoryName := iface.Name() + "EndpointFactory" g.W("type %s struct{\n", epFactoryName) g.W("Option []ClientOption\n") @@ -52,9 +52,9 @@ func (g *endpointFactory) Process(ctx context.Context) error { }) g.W("return ") if g.options.Interfaces().Len() > 1 { - g.W("make%s%sEndpoint(c.%sClient), nil, nil\n", iface.NameExport(), m.Name, iface.NameExport()) + g.W("make%sEndpoint(c.%sClient), nil, nil\n", m.NameExport, iface.NameExport()) } else { - g.W("make%s%sEndpoint(c), nil, nil\n", iface.NameExport(), m.Name) + g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) } g.W("\n}\n\n") } diff --git a/internal/interface/generator/instrumenting.go b/internal/interface/generator/instrumenting.go index 755f836e..5e6f0c6f 100644 --- a/internal/interface/generator/instrumenting.go +++ b/internal/interface/generator/instrumenting.go @@ -61,7 +61,7 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") - name := iface.NameExport() + "InstrumentingMiddleware" + name := iface.Name() + "InstrumentingMiddleware" constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", iface.NameExport()) g.W("type %s struct {\n", name) diff --git a/internal/interface/generator/jsonrpc_go_client.go b/internal/interface/generator/jsonrpc_go_client.go index 956fba5f..a02b4d90 100644 --- a/internal/interface/generator/jsonrpc_go_client.go +++ b/internal/interface/generator/jsonrpc_go_client.go @@ -30,36 +30,6 @@ func (g *jsonRPCGoClient) Prepare(ctx context.Context) error { } func (g *jsonRPCGoClient) Process(ctx context.Context) error { - if g.options.Interfaces().Len() > 1 { - g.W("type AppClient struct {\n") - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("%sClient %s\n", iface.Name(), typeStr) - } - g.W("}\n\n") - - g.W("func NewClient%s(tgt string", g.options.Prefix()) - g.W(" ,opts ...ClientOption") - g.W(") (*AppClient, error) {\n") - - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - g.W("%sClient, err := NewClient%s%s(tgt)\n", iface.LoweName(), g.options.Prefix(), iface.NameExport()) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - } - - g.W("return &AppClient{\n") - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - g.W("%[1]sClient: %[2]sClient,\n", iface.Name(), iface.LoweName()) - } - g.W("}, nil\n") - g.W("}\n\n") - } - for i := 0; i < g.options.Interfaces().Len(); i++ { var ( jsonrpcPkg string @@ -74,10 +44,15 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) - clientType := "client" + iface.NameExport() + clientType := "client" + iface.Name() typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) + var name string + if g.options.Interfaces().Len() > 1 { + name = iface.Name() + } + + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), name) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") @@ -181,8 +156,8 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { methodName := m.LcName if g.options.Interfaces().Len() > 1 { prefix := iface.NameUnExport() - if iface.Prefix() != "" { - prefix = iface.Prefix() + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() } methodName = prefix + "." + methodName } diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 6c699c04..34462b8f 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -203,9 +203,9 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { var prefix string if g.options.Interfaces().Len() > 1 { prefix = iface.LoweName() + "." - } - if iface.Prefix() != "" { - prefix = iface.Prefix() + "." + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() + "." + } } mw.W(") {\n") @@ -235,7 +235,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("constructor(transport) {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("this.%[1]s = new JSONRPCClient%[1]s(transport);\n", iface.Name()) + g.W("this.%[1]s = new JSONRPCClient%[1]s(transport);\n", iface.NameExport()) } g.W("}\n") g.W("}\n") diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index 61f8656c..df5fdf1e 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -66,13 +66,13 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.NameExport()) + g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.Name()) g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) g.W("var namespace string\n") if g.options.Interfaces().Len() > 1 { prefix := iface.NameUnExport() - if iface.Prefix() != "" { - prefix = iface.Prefix() + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() } g.W("namespace = \"%s.\"\n", prefix) } @@ -140,7 +140,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if i > 0 { g.W(",") } - g.W("svc%s %s", iface.NameExport(), typeStr) + g.W("svc%s %s", iface.Name(), typeStr) } g.W(", options ...ServerOption") g.W(") (") @@ -158,7 +158,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) } for i := 0; i < g.options.Interfaces().Len(); i++ { @@ -188,7 +188,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if i > 0 { g.W(",") } - g.W("Make%[1]sEndpointCodecMap(%[2]s)", iface.NameExport(), makeEpSetName(iface, g.options.Interfaces().Len())) + g.W("Make%[1]sEndpointCodecMap(%[2]s)", iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len())) } if g.options.Interfaces().Len() > 1 { diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index 2ee4301c..658c833d 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -45,8 +45,8 @@ func (g *logging) Process(ctx context.Context) error { loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - name := iface.NameExport() + "LoggingMiddleware" - constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.NameExport()) + name := iface.Name() + "LoggingMiddleware" + constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.Name()) g.WriteTypeStruct( name, @@ -154,6 +154,10 @@ func (g *logging) Process(ctx context.Context) error { g.W(")\n") if len(m.Results) > 0 || m.ReturnErr != nil { + g.W("if _, ok := err.(interface {\n\t\tUnwrap() error\n\t}); !ok {\n") + g.W("err = %s.Errorf(\"unexpected error: %%w\", err)\n", g.i.Import("fmt", "fmt")) + g.W("}\n") + g.W("return ") for i, result := range m.Results { diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index ea348245..5567f4f1 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -279,8 +279,8 @@ func (g *openapiDoc) Process(ctx context.Context) error { } else { prefix = strcase.ToKebab(iface.Name()) } - if iface.Prefix() != "" { - prefix = iface.Prefix() + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() } if g.options.JSONRPCEnable() { o = g.makeJSONRPCPath(m, iface, ntc) @@ -322,8 +322,8 @@ func (g *openapiDoc) Process(ctx context.Context) error { if g.options.Interfaces().Len() > 1 { ifaceTag := strcase.ToLowerCamel(iface.Name()) - if iface.Prefix() != "" { - ifaceTag = iface.Prefix() + if iface.NameExport() != "" { + ifaceTag = iface.NameExport() } tags = append(tags, ifaceTag) } @@ -444,8 +444,8 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service if g.options.Interfaces().Len() > 1 { prefix = strcase.ToLowerCamel(iface.Name()) + "." } - if iface.Prefix() != "" { - prefix = iface.Prefix() + "." + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() + "." } request := &openapi.Schema{ diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index e93808d9..78a363cf 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -36,36 +36,6 @@ func (g *restGoClient) Prepare(ctx context.Context) error { } func (g *restGoClient) Process(ctx context.Context) error { - if g.options.Interfaces().Len() > 1 { - g.W("type AppClient struct {\n") - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("%sClient %s\n", iface.Name(), typeStr) - } - g.W("}\n\n") - - g.W("func NewClient%s(tgt string", g.options.Prefix()) - g.W(" ,opts ...ClientOption") - g.W(") (*AppClient, error) {\n") - - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - g.W("%sClient, err := NewClient%s%s(tgt)\n", iface.LoweName(), g.options.Prefix(), iface.NameExport()) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - } - - g.W("return &AppClient{\n") - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - g.W("%[1]sClient: %[2]sClient,\n", iface.Name(), iface.LoweName()) - } - g.W("}, nil\n") - g.W("}\n\n") - } - for i := 0; i < g.options.Interfaces().Len(); i++ { var ( kitHTTPPkg string @@ -79,7 +49,7 @@ func (g *restGoClient) Process(ctx context.Context) error { pkgIO string ) iface := g.options.Interfaces().At(i) - clientType := "client" + iface.NameExport() + clientType := "client" + iface.Name() typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) if len(iface.Methods()) > 0 { @@ -102,7 +72,12 @@ func (g *restGoClient) Process(ctx context.Context) error { stringsPkg = g.i.Import("strings", "strings") } - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) + var name string + if g.options.Interfaces().Len() > 1 { + name = iface.Name() + } + + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), name) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") @@ -151,14 +126,14 @@ func (g *restGoClient) Process(ctx context.Context) error { if g.options.Interfaces().Len() > 1 { svcPrefix := strcase.ToKebab(iface.NameUnExport()) - if iface.Prefix() != "" { - svcPrefix = iface.Prefix() + if iface.NameUnExport() != "" { + svcPrefix = iface.NameUnExport() } pathStr = path.Join("/", svcPrefix, "/", pathStr) } var ( - pathVars []string + pathVars []*stdtypes.Var queryVars []*stdtypes.Var headerVars []*stdtypes.Var ) @@ -170,6 +145,7 @@ func (g *restGoClient) Process(ctx context.Context) error { } pathStr = stdstrings.Replace(pathStr, "{"+p.Name()+regexp+"}", "%s", -1) + pathVars = append(pathVars, p) //pathVars = append(pathVars, g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) } else if _, ok := mopt.QueryVars[p.Name()]; ok { @@ -218,12 +194,22 @@ func (g *restGoClient) Process(ctx context.Context) error { } g.W("\n") + pathVarNames := make([]string, 0, len(pathVars)) + for _, p := range pathVars { + name := p.Name() + "Str" + pathVarNames = append(pathVarNames, name) + g.WriteFormatType(g.i.Import, name, "req."+strings.UcFirst(p.Name()), p) + } if g.options.UseFast() { g.W("r.SetRequestURI(") } else { g.W("r.URL.Path += ") } - g.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVars, ",")) + if len(pathVars) > 0 { + g.W("%s.Sprintf(%s, %s)\n", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) + } else { + g.W(strconv.Quote(pathStr)) + } if g.options.UseFast() { g.W(")") diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index cb45de23..ad1540b9 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -66,7 +66,7 @@ func (g *restServer) Process(ctx context.Context) error { if i > 0 { g.W(",") } - g.W("svc%s %s", iface.NameExport(), typeStr) + g.W("svc%s %s", iface.Name(), typeStr) } g.W(", options ...ServerOption") g.W(") (") @@ -82,7 +82,7 @@ func (g *restServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) } for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -106,8 +106,8 @@ func (g *restServer) Process(ctx context.Context) error { svcPrefix := "" if g.options.Interfaces().Len() > 1 { prefix := strcase.ToKebab(iface.Name()) - if iface.Prefix() != "" { - prefix = iface.Prefix() + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() } svcPrefix = prefix + "/" } From 68bd5b7b85fdf0d010a94198ac9f3315a6954036 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 23 Oct 2020 17:19:12 +0300 Subject: [PATCH 039/293] chore(release): 2.0.0-alpha.7 --- CHANGELOG.md | 10 +++++++++- swipe.go | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c21a1ced..54e8ca0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ## [Unreleased] + +## [v2.0.0-alpha.7] - 2020-10-23 +### Bug Fixes +- change func names generate and REST path values +- generate format for REST query string and headers and refactoring WriteConvertType + + ## [v2.0.0-alpha.6] - 2020-10-21 ### Features @@ -557,7 +564,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...HEAD +[v2.0.0-alpha.7]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 [v2.0.0-alpha.6]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 [v2.0.0-alpha.5]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 [v2.0.0-alpha.4]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.3...v2.0.0-alpha.4 diff --git a/swipe.go b/swipe.go index e276cdce..c1cea26a 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.6" +const Version = "v2.0.0-alpha.7" // A Option is an option for a Swipe. type Option string From 929e716d783e21836145b35ba934cbc57b1c8e55 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 11:06:56 +0300 Subject: [PATCH 040/293] test: update fixtures. --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 ++- fixtures/ServiceRESTSingle/app/README.md | 3 ++- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 7f36b002..f41fa7e0 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) +[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) +, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.3) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index f7664fee..c2ebfa53 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.6. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.7. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 4f704835..027a9200 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) +[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) +, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.3) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index d608b093..57555ade 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.6. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.7. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index f162a639..f5678988 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) +[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) +, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.3) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 9dddfa43..6f754e78 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) +[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) +, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.4) , [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.3) From b9728812f4c94871224f7b693a2119915562c2ec Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 13:06:28 +0300 Subject: [PATCH 041/293] fix: when generating a "panic" error if the project is empty --- internal/graph/graph.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/graph/graph.go b/internal/graph/graph.go index 1416ea0b..335c4463 100644 --- a/internal/graph/graph.go +++ b/internal/graph/graph.go @@ -42,9 +42,11 @@ func NewGraph() *Graph { func (g *Graph) objID(obj types.Object) ID { var recvTypeHash uint32 = 0 - if sig, ok := obj.Type().(*types.Signature); ok { - if sig.Recv() != nil { - recvTypeHash = g.hasher.Hash(sig.Recv().Type()) + if obj != nil { + if sig, ok := obj.Type().(*types.Signature); ok { + if sig.Recv() != nil { + recvTypeHash = g.hasher.Hash(sig.Recv().Type()) + } } } return ID{ From 2a6ab65bc21d9f0ecfa4a26e60eb6326d534456e Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 13:08:02 +0300 Subject: [PATCH 042/293] chore(release): 2.0.0-alpha.8 --- CHANGELOG.md | 30 +++++++++++++++++------------- swipe.go | 2 +- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54e8ca0c..268f2c5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +## [v2.0.0-alpha.8] - 2020-10-26 +### Bug Fixes +- when generating a "panic" error if the project is empty + + ## [v2.0.0-alpha.7] - 2020-10-23 ### Bug Fixes @@ -236,12 +242,17 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. -- Incorrect generate enum name for markdown docs. ### Features - Added command for generate CRUD service structure. + +## [v1.24.4] - 2020-07-28 +### Bug Fixes +- Incorrect generate enum name for markdown docs. + + ## [v1.24.3] - 2020-07-28 ### Bug Fixes @@ -256,14 +267,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.1] - 2020-07-28 - - -## [v1.24.4] - 2020-07-28 -### Bug Fixes -- Incorrect generate enum name for markdown docs. -- Change enums JSON RPC client generate format. -- Added generate enum constants for JSON RPC client. - ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -564,7 +567,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...HEAD +[v2.0.0-alpha.8]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 [v2.0.0-alpha.7]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 [v2.0.0-alpha.6]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 [v2.0.0-alpha.5]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 @@ -595,11 +599,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 [v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 [v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/swipe.go b/swipe.go index c1cea26a..8fc577b0 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.7" +const Version = "v2.0.0-alpha.8" // A Option is an option for a Swipe. type Option string From 512b2cc035803f6c9820f3a04c7df1d69f868b68 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 13:08:02 +0300 Subject: [PATCH 043/293] chore(release): 2.0.0-alpha.8 --- CHANGELOG.md | 30 +++++++++++-------- .../app/client_jsonrpc_gen.js | 2 +- .../app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54e8ca0c..268f2c5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +## [v2.0.0-alpha.8] - 2020-10-26 +### Bug Fixes +- when generating a "panic" error if the project is empty + + ## [v2.0.0-alpha.7] - 2020-10-23 ### Bug Fixes @@ -236,12 +242,17 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. -- Incorrect generate enum name for markdown docs. ### Features - Added command for generate CRUD service structure. + +## [v1.24.4] - 2020-07-28 +### Bug Fixes +- Incorrect generate enum name for markdown docs. + + ## [v1.24.3] - 2020-07-28 ### Bug Fixes @@ -256,14 +267,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.1] - 2020-07-28 - - -## [v1.24.4] - 2020-07-28 -### Bug Fixes -- Incorrect generate enum name for markdown docs. -- Change enums JSON RPC client generate format. -- Added generate enum constants for JSON RPC client. - ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -564,7 +567,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...HEAD +[v2.0.0-alpha.8]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 [v2.0.0-alpha.7]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 [v2.0.0-alpha.6]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 [v2.0.0-alpha.5]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 @@ -595,11 +599,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 [v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 [v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index c2ebfa53..26a1d0c6 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.7. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.8. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 57555ade..bfc66b41 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.7. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.8. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index c1cea26a..8fc577b0 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.7" +const Version = "v2.0.0-alpha.8" // A Option is an option for a Swipe. type Option string From a0dc107e5e7ffa21fa506f824bd0ca8fe851523d Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 13:26:11 +0300 Subject: [PATCH 044/293] fix: when generating a "panic" error if the project is empty --- internal/astloader/astloader.go | 22 +++++++++++++--------- internal/graph/graph.go | 8 +++----- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/internal/astloader/astloader.go b/internal/astloader/astloader.go index e5fd9f43..589f8cd5 100644 --- a/internal/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -91,7 +91,9 @@ func (l *Loader) Process() (data *Data, errs []error) { for _, spec := range v.Specs { sp := spec.(*ast.TypeSpec) obj := pkg.TypesInfo.ObjectOf(sp.Name) - data.GraphTypes.Add(&graph.Node{Object: obj}) + if obj != nil { + data.GraphTypes.Add(&graph.Node{Object: obj}) + } } case token.CONST: var ( @@ -148,18 +150,20 @@ func (l *Loader) Process() (data *Data, errs []error) { } case *ast.FuncDecl: obj := pkg.TypesInfo.ObjectOf(v.Name) - n := &graph.Node{Object: obj} + if obj != nil { + n := &graph.Node{Object: obj} - data.GraphTypes.Add(n) + data.GraphTypes.Add(n) - values, objects := visitBlockStmt(pkg, v.Body) + values, objects := visitBlockStmt(pkg, v.Body) - n.AddValue(values...) + n.AddValue(values...) - astNodes = append(astNodes, nodeInfo{ - node: n, - objects: objects, - }) + astNodes = append(astNodes, nodeInfo{ + node: n, + objects: objects, + }) + } } } } diff --git a/internal/graph/graph.go b/internal/graph/graph.go index 335c4463..1416ea0b 100644 --- a/internal/graph/graph.go +++ b/internal/graph/graph.go @@ -42,11 +42,9 @@ func NewGraph() *Graph { func (g *Graph) objID(obj types.Object) ID { var recvTypeHash uint32 = 0 - if obj != nil { - if sig, ok := obj.Type().(*types.Signature); ok { - if sig.Recv() != nil { - recvTypeHash = g.hasher.Hash(sig.Recv().Type()) - } + if sig, ok := obj.Type().(*types.Signature); ok { + if sig.Recv() != nil { + recvTypeHash = g.hasher.Hash(sig.Recv().Type()) } } return ID{ From 5d085a95d45aaabbc436f94cf32b8d0f13357a37 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 13:27:22 +0300 Subject: [PATCH 045/293] chore(release): v2.0.0-alpha.9 --- CHANGELOG.md | 9 ++++++++- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 ++- fixtures/ServiceRESTSingle/app/README.md | 3 ++- swipe.go | 2 +- 8 files changed, 19 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 268f2c5a..42c3d5f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +## [v2.0.0-alpha.9] - 2020-10-26 +### Bug Fixes +- when generating a "panic" error if the project is empty + + ## [v2.0.0-alpha.8] - 2020-10-26 ### Bug Fixes @@ -567,7 +573,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.9...HEAD +[v2.0.0-alpha.9]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...v2.0.0-alpha.9 [v2.0.0-alpha.8]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 [v2.0.0-alpha.7]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 [v2.0.0-alpha.6]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index f41fa7e0..d726e376 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) +[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) +, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.4) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 26a1d0c6..3635fb2d 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.8. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.9. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 027a9200..c3d12879 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) +[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) +, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.4) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index bfc66b41..8fff5b32 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.8. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.9. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index f5678988..688430e4 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) +[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) +, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.4) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 6f754e78..751892b2 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) +[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) +, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) , [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.4) diff --git a/swipe.go b/swipe.go index 8fc577b0..32c2b064 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.8" +const Version = "v2.0.0-alpha.9" // A Option is an option for a Swipe. type Option string From 347ca38964f42d8cf7cbbc2eedf879ae4b078698 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 20:36:48 +0300 Subject: [PATCH 046/293] test: added output --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 816c461d..376262d5 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ chglog: check: go vet ./... - go test ./... + go test -v ./... build: check go build -o swipe ./cmd/swipe From 9086eaa61caa9e1b9a08e5701020971c7e06c451 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 20:37:57 +0300 Subject: [PATCH 047/293] fix: failed generation specifying the file https://github.com/swipe-io/swipe/issues/9 --- internal/interface/gateway/service.go | 6 +++++- internal/types/utils.go | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 530e565c..4f50082e 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -350,7 +350,11 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] } func (g *serviceGateway) load(o *option.Option) error { - g.appName = stdstrings.Split(g.pkg.PkgPath, "/")[2] + pkgPath, err := types.DetectPkgPath(g.pkg) + if err != nil { + return err + } + g.appName = stdstrings.Split(pkgPath, "/")[2] if nameOpt, ok := o.At("Name"); ok { if name := nameOpt.Value.String(); name != "" { g.appName = strcase.ToCamel(name) diff --git a/internal/types/utils.go b/internal/types/utils.go index b25aab1d..5cdeac99 100644 --- a/internal/types/utils.go +++ b/internal/types/utils.go @@ -3,8 +3,10 @@ package types import ( "errors" "fmt" + "go/build" "go/types" "path/filepath" + "strings" "golang.org/x/tools/go/packages" ) @@ -33,6 +35,19 @@ func NameType(vars []*types.Var, qf types.Qualifier, filterFn FilterFn) (results }, filterFn) } +func DetectPkgPath(pkg *packages.Package) (string, error) { + basePath, err := DetectBasePath(pkg) + if err != nil { + return "", err + } + srcPath := filepath.Join(build.Default.GOPATH, "src") + "/" + index := strings.Index(basePath, srcPath) + if index != -1 { + return basePath[index+len(srcPath):], nil + } + return "", errors.New("fail detected pkg path") +} + func DetectBasePath(pkg *packages.Package) (string, error) { paths := pkg.GoFiles if len(paths) == 0 { From b47693d57626c38b0decb7a62f858af74c4cd49b Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 20:40:59 +0300 Subject: [PATCH 048/293] fix: invalid help info for `swipe gen -h` https://github.com/swipe-io/swipe/issues/7 --- cmd/swipe/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index a988a625..25099b7a 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -124,7 +124,7 @@ func (*genCmd) Usage() string { } func (cmd *genCmd) SetFlags(f *flag.FlagSet) { - f.BoolVar(&cmd.verbose, "v", false, "-v") + f.BoolVar(&cmd.verbose, "v", false, "show verbose output") } func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { From ad33d522a2bdde82f2d2ab3c047e9eaef477cde7 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 21:54:33 +0300 Subject: [PATCH 049/293] fix: prettier format --- .travis.yml | 2 +- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 6 +++--- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 6 +++--- fixtures/ServiceRESTMulti/app/README.md | 3 ++- fixtures/ServiceRESTSingle/app/README.md | 3 ++- internal/interface/frame/js_frame.go | 2 +- swipe.go | 2 +- 9 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 29d3bed0..03aebdb1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,5 +9,5 @@ node_js: script: - npm install prettier -g - - prettier -v + - prettier - make check diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index d726e376..b7afc430 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) +[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) +, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 3635fb2d..a1ffb1a7 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.9. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.10. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -37,7 +37,7 @@ class JSONRPCScheduler { requests.push(scheduleRequests[key].request); } this.__doRequest(requests) - .then(responses => { + .then((responses) => { for (let i = 0; i < responses.length; i++) { if (responses[i].error) { scheduleRequests[responses[i].id].reject( @@ -48,7 +48,7 @@ class JSONRPCScheduler { scheduleRequests[responses[i].id].resolve(responses[i].result); } }) - .catch(e => { + .catch((e) => { for (let key in requests) { if (!requests.hasOwnProperty(key)) { continue; diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index c3d12879..6b8f9949 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) +[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) +, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 8fff5b32..03ae9dc4 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.9. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.10. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -37,7 +37,7 @@ class JSONRPCScheduler { requests.push(scheduleRequests[key].request); } this.__doRequest(requests) - .then(responses => { + .then((responses) => { for (let i = 0; i < responses.length; i++) { if (responses[i].error) { scheduleRequests[responses[i].id].reject( @@ -48,7 +48,7 @@ class JSONRPCScheduler { scheduleRequests[responses[i].id].resolve(responses[i].result); } }) - .catch(e => { + .catch((e) => { for (let key in requests) { if (!requests.hasOwnProperty(key)) { continue; diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 688430e4..3be7c04c 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) +[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) +, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 751892b2..bfb1d611 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) +[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) +, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) , [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) diff --git a/internal/interface/frame/js_frame.go b/internal/interface/frame/js_frame.go index a6aef91b..f812e80b 100644 --- a/internal/interface/frame/js_frame.go +++ b/internal/interface/frame/js_frame.go @@ -16,7 +16,7 @@ func (f *jsFrame) Frame(data []byte) ([]byte, error) { buf := new(bytes.Buffer) buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") buf.Write(data) - cmd := exec.Command("prettier", "--stdin-filepath", "prettier.js") + cmd := exec.Command("prettier", "--stdin-filepath", "prettier.js", "--trailing-comma", "none", "--no-config") stdin, err := cmd.StdinPipe() if err != nil { return nil, err diff --git a/swipe.go b/swipe.go index 32c2b064..cce5eed3 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.9" +const Version = "v2.0.0-alpha.10" // A Option is an option for a Swipe. type Option string From 077e52ff7c685a620b2bc72090fccd8c1eac3a30 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 21:56:59 +0300 Subject: [PATCH 050/293] chore(release): 2.0.0-alpha.10 --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42c3d5f7..753d863c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## [Unreleased] + +## [v2.0.0-alpha.10] - 2020-10-26 +### Bug Fixes +- prettier format +- invalid help info for `swipe gen -h` +- failed generation specifying the file + + ## [v2.0.0-alpha.9] - 2020-10-26 ### Bug Fixes @@ -573,7 +581,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.9...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.10...HEAD +[v2.0.0-alpha.10]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.9...v2.0.0-alpha.10 [v2.0.0-alpha.9]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...v2.0.0-alpha.9 [v2.0.0-alpha.8]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 [v2.0.0-alpha.7]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 From 20bfa15da42acf55e045612fef278b74b1797902 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:22:31 +0300 Subject: [PATCH 051/293] ci: travis change nodejs to v12.14.1 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 03aebdb1..fbcd6ac9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ go: - tip node_js: - - tip + - v12.14.1 script: - npm install prettier -g From 8ca5341d393bb37c098a902fafffbc5e734f9c43 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:26:30 +0300 Subject: [PATCH 052/293] ci: travis change nodejs to v12.14.1 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fbcd6ac9..c073a1ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ go: - tip node_js: - - v12.14.1 + - 12 script: - npm install prettier -g From aa6e9014520f84a3111edcf622a25e7532d3b3d5 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:31:29 +0300 Subject: [PATCH 053/293] ci: travis change nodejs to 12 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c073a1ea..e73c8ce8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,5 +9,5 @@ node_js: script: - npm install prettier -g - - prettier + - prettier --version - make check From d1825b05920cfc0c7923c9fa49100c7a6d92ff1e Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:33:00 +0300 Subject: [PATCH 054/293] ci: remove prettier version print --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e73c8ce8..590c7fd7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,5 +9,4 @@ node_js: script: - npm install prettier -g - - prettier --version - make check From 0426e1e91970369b0a65fb471fa3f9b36a0547bf Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:36:16 +0300 Subject: [PATCH 055/293] ci: travis change nodejs --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 590c7fd7..f2a69943 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ go: - tip node_js: - - 12 + - node script: - npm install prettier -g From 3b7ea9d2efd8e54e6630aca9464472f237feb2af Mon Sep 17 00:00:00 2001 From: Alexandr Kozlenkov Date: Mon, 26 Oct 2020 22:41:57 +0300 Subject: [PATCH 056/293] fix: fixed filling opts for sub-itnerfaces --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- fixtures/ServiceRESTMulti/app/README.md | 3 ++- fixtures/ServiceRESTSingle/app/README.md | 3 ++- internal/interface/generator/client_struct.go | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index b7afc430..1608d55f 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 6b8f9949..8a6e7064 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 3be7c04c..647282f8 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index bfb1d611..7db628d2 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) diff --git a/internal/interface/generator/client_struct.go b/internal/interface/generator/client_struct.go index 631d7b58..37dbc29e 100644 --- a/internal/interface/generator/client_struct.go +++ b/internal/interface/generator/client_struct.go @@ -70,7 +70,7 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%sClient, err := NewClient%s%s(tgt)\n", iface.LoweName(), g.options.Prefix(), iface.Name()) + g.W("%sClient, err := NewClient%s%s(tgt, opts...)\n", iface.LoweName(), g.options.Prefix(), iface.Name()) g.WriteCheckErr(func() { g.W("return nil, err") }) From d520fadb06ab82f8eddd95ab330c31cde9809dc9 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:44:06 +0300 Subject: [PATCH 057/293] ci: travis change language to generic --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f2a69943..050a126c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -language: go +language: generic go: - 1.13.7 From 803361c43fedc3c75f15dd931bf8c90d86d58043 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 26 Oct 2020 22:48:03 +0300 Subject: [PATCH 058/293] ci: travis fix nodejs version --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 050a126c..d134be8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,11 @@ -language: generic +language: go go: - 1.13.7 - tip -node_js: - - node - script: + - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash + - nvm install node - npm install prettier -g - make check From 3c77c91335c0d1c9175fd318e9d49f4b2063d083 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 27 Oct 2020 09:58:34 +0300 Subject: [PATCH 059/293] fix: generate description for openapi methods --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- fixtures/ServiceRESTMulti/app/README.md | 3 ++- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/README.md | 3 ++- .../app/openapi_rest_gen.json | 2 +- internal/interface/generator/jsonrpc_doc.go | 15 +++------------ internal/interface/generator/openapi.go | 19 +++++++++++++------ internal/interface/generator/utils.go | 18 ++++++++++++++++++ .../interface/typevisitor/openapi_visitor.go | 1 - 10 files changed, 44 insertions(+), 25 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index b7afc430..1608d55f 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 6b8f9949..8a6e7064 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 3be7c04c..647282f8 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 77b8d2ae..e0100440 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["B"],"summary":"Get","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["B"],"summary":"Get","description":" Get item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index bfb1d611..7db628d2 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) +[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) +, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) , [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index 87f831d0..cc7e7817 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" Create new item of item.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" Get item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} diff --git a/internal/interface/generator/jsonrpc_doc.go b/internal/interface/generator/jsonrpc_doc.go index 27e93f7a..4d96aefd 100644 --- a/internal/interface/generator/jsonrpc_doc.go +++ b/internal/interface/generator/jsonrpc_doc.go @@ -146,18 +146,9 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { g.W("\n\n") - paramsComment := make(map[string]string, len(method.Params)) - for _, comment := range method.Comments { - comment = strings.TrimSpace(comment) - if strings.HasPrefix(comment, "@") { - matches := paramCommentRegexp.FindAllStringSubmatch(comment, -1) - if len(matches) == 1 && len(matches[0]) == 3 { - paramsComment[matches[0][1]] = matches[0][2] - } - continue - } - g.W("%s\n\n", strings.Replace(comment, method.Name, "", len(method.Name))) - } + methodComment, paramsComment := parseMethodComments(method.Comments) + + g.W("%s\n\n", strings.Replace(methodComment, method.Name, "", len(method.Name))) g.W("\n\n") diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 5567f4f1..eb0fda9a 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -198,7 +198,6 @@ func (g *openapiDoc) Prepare(ctx context.Context) error { } func (g *openapiDoc) Process(ctx context.Context) error { - swg := openapi.OpenAPI{ OpenAPI: "3.0.0", Info: g.options.OpenapiInfo(), @@ -272,6 +271,8 @@ func (g *openapiDoc) Process(ctx context.Context) error { tags := append(g.options.OpenapiDefaultMethodTags(), methodTags...) methodName := mopt.MethodName + methodComment, paramsComment := parseMethodComments(m.Comments) + methodComment = stdstrings.Replace(methodComment, m.Name, "", len(m.Name)) var prefix string if g.options.JSONRPCEnable() { @@ -283,7 +284,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { prefix = iface.NameUnExport() } if g.options.JSONRPCEnable() { - o = g.makeJSONRPCPath(m, iface, ntc) + o = g.makeJSONRPCPath(m, iface, ntc, paramsComment) pathStr = "/" + strings.LcFirst(m.Name) if g.options.Interfaces().Len() > 1 { pathStr = "/" + prefix + "." + strings.LcFirst(m.Name) @@ -303,7 +304,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { } } } else { - o = g.makeRestPath(m, ntc) + o = g.makeRestPath(m, ntc, paramsComment) pathStr = mopt.Path if pathStr == "" { pathStr = strcase.ToKebab(m.LcName) @@ -328,6 +329,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { tags = append(tags, ifaceTag) } + o.Description = methodComment o.Tags = tags if _, ok := swg.Paths[pathStr]; !ok { @@ -380,7 +382,7 @@ func (g *openapiDoc) Imports() []string { return nil } -func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.ServiceInterface, ntc ustypevisitor.NamedTypeCollector) *openapi.Operation { +func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.ServiceInterface, ntc ustypevisitor.NamedTypeCollector, paramsComment map[string]string) *openapi.Operation { mopt := g.options.MethodOption(m) responseSchema := &openapi.Schema{ Type: "object", @@ -390,12 +392,15 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service Type: "object", Properties: map[string]*openapi.Schema{}, } + if len(m.Params) > 0 { for _, p := range m.Params { ntc.Visit(p.Type()) schema := &openapi.Schema{} iftypevisitor.OpenapiVisitor(schema).Visit(p.Type()) + + schema.Description = paramsComment[p.Name()] requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = schema } } else { @@ -468,7 +473,6 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service } return &openapi.Operation{ - Description: stdstrings.Join(m.Comments, "\n"), RequestBody: &openapi.RequestBody{ Required: true, Content: map[string]openapi.Media{ @@ -540,7 +544,7 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service } } -func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.NamedTypeCollector) *openapi.Operation { +func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.NamedTypeCollector, paramsComment map[string]string) *openapi.Operation { mopt := g.options.MethodOption(m) responseSchema := &openapi.Schema{ Type: "object", @@ -570,6 +574,9 @@ func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.Named schema := &openapi.Schema{} iftypevisitor.OpenapiVisitor(schema).Visit(p.Type()) + + schema.Description = paramsComment[p.Name()] + requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = schema } if len(m.Results) > 1 { diff --git a/internal/interface/generator/utils.go b/internal/interface/generator/utils.go index 5662b8a2..6f090b3c 100644 --- a/internal/interface/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -95,3 +95,21 @@ func makeEpSetName(iface *model.ServiceInterface, ifaceLen int) (epSetName strin } return } + +func parseMethodComments(comments []string) (methodComment string, paramsComment map[string]string) { + paramsComment = make(map[string]string) + for _, comment := range comments { + comment = strings.TrimSpace(comment) + + if strings.HasPrefix(comment, "@") { + + matches := paramCommentRegexp.FindAllStringSubmatch(comment, -1) + if len(matches) == 1 && len(matches[0]) == 3 { + paramsComment[matches[0][1]] = matches[0][2] + } + continue + } + methodComment += comment + } + return +} diff --git a/internal/interface/typevisitor/openapi_visitor.go b/internal/interface/typevisitor/openapi_visitor.go index 47d42b6c..41a635b8 100644 --- a/internal/interface/typevisitor/openapi_visitor.go +++ b/internal/interface/typevisitor/openapi_visitor.go @@ -76,7 +76,6 @@ func (v *openapiVisitor) VisitMap(t *stdtypes.Map, nested int) { func (v *openapiVisitor) VisitNamed(t *stdtypes.Named, nested int) { switch stdtypes.TypeString(t, nil) { default: - v.schema.Type = "object" v.schema.Ref = "#/components/schemas/" + t.Obj().Name() case "encoding/json.RawMessage": v.schema.Type = "object" From 11f4642d39a657e07fd6a04e04cceed2ee95bf75 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 27 Oct 2020 13:33:49 +0300 Subject: [PATCH 060/293] fix: generate logging for one named result param --- internal/interface/generator/logging.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index 658c833d..abc5cf81 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -78,18 +78,14 @@ func (g *logging) Process(ctx context.Context) error { params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) if len(m.Results) > 0 { - //if m.ResultsNamed { - results = types.NameType(m.Results, g.i.QualifyPkg, nil) - //} else { - //results = append(results, "", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) - //} + if m.ResultsNamed { + results = types.NameType(m.Results, g.i.QualifyPkg, nil) + } else { + results = append(results, "", stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg)) + } } if m.ReturnErr != nil { - //errName := m.ReturnErr.Name() - //if errName == "" || errName == "_" { - // errName = "err" - //} results = append(results, "", "error") logParams = append(logParams, strconv.Quote("err"), "err") } @@ -99,7 +95,7 @@ func (g *logging) Process(ctx context.Context) error { g.WriteVarGroup(func() { for _, result := range m.Results { name := "result" - if result.Name() != "" { + if m.ResultsNamed { name = strcase.ToLowerCamel(result.Name()) } g.W("%s %s\n", name, stdtypes.TypeString(result.Type(), g.i.QualifyPkg)) @@ -123,7 +119,7 @@ func (g *logging) Process(ctx context.Context) error { if len(m.Results) > 0 || m.ReturnErr != nil { for i, result := range m.Results { name := "result" - if result.Name() != "" { + if m.ResultsNamed { name = strcase.ToLowerCamel(result.Name()) } if i > 0 { @@ -162,7 +158,7 @@ func (g *logging) Process(ctx context.Context) error { for i, result := range m.Results { name := "result" - if result.Name() != "" { + if m.ResultsNamed { name = strcase.ToLowerCamel(result.Name()) } if i > 0 { From 4b09585e91e3a1bfac8fd1b0bac67a71a0b11649 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 27 Oct 2020 13:37:30 +0300 Subject: [PATCH 061/293] chore(release): 2.0.0-alpha.11 --- CHANGELOG.md | 29 ++++++++++++++----- .../app/client_jsonrpc_gen.js | 2 +- .../app/jsonrpc_doc_gen.md | 12 ++++++-- .../app/openapi_jsonrpc_gen.json | 2 +- .../app/client_jsonrpc_gen.js | 2 +- .../app/jsonrpc_doc_gen.md | 10 +++++-- .../app/openapi_jsonrpc_gen.json | 2 +- .../app/openapi_rest_gen.json | 2 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/service.go | 3 +- fixtures/ServiceRESTSingle/app/swipe.go | 1 + swipe.go | 2 +- 12 files changed, 48 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 753d863c..18655ae9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ ## [Unreleased] + +## [v2.0.0-alpha.11] - 2020-10-27 +### Bug Fixes +- generate logging for one named result param +- generate description for openapi methods +- fixed filling opts for sub-itnerfaces + +### Pull Requests +- Merge pull request [#10](https://github.com/swipe-io/swipe/issues/10) from sah4ez/v2 + + ## [v2.0.0-alpha.10] - 2020-10-26 ### Bug Fixes @@ -256,11 +267,17 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. +- Incorrect generate enum name for markdown docs. +- Change enums JSON RPC client generate format. +- Added generate enum constants for JSON RPC client. ### Features - Added command for generate CRUD service structure. + +## [v1.24.1] - 2020-07-28 + ## [v1.24.4] - 2020-07-28 ### Bug Fixes @@ -278,9 +295,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ### Bug Fixes - Added generate enum constants for JSON RPC client. - - -## [v1.24.1] - 2020-07-28 ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -581,7 +595,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.10...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.11...HEAD +[v2.0.0-alpha.11]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.10...v2.0.0-alpha.11 [v2.0.0-alpha.10]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.9...v2.0.0-alpha.10 [v2.0.0-alpha.9]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...v2.0.0-alpha.9 [v2.0.0-alpha.8]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 @@ -615,11 +630,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 [v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 [v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.2 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index a1ffb1a7..3d66cc4d 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.10. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.11. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md index e7e047b9..58b35972 100755 --- a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -6,6 +6,8 @@ + + **Throws**: ErrUnauthorizedException @@ -45,6 +47,8 @@ + + **Throws**: ErrUnauthorizedException @@ -77,9 +81,7 @@ |cc|number|| ### b.GetAll(members) ⇒Array.<User> - more comment and more and more comment and more and more comment and more. - -New line comment. + more comment and more and more comment and more and more comment and more.New line comment. @@ -96,6 +98,8 @@ New line comment. + + **Throws**: ErrUnauthorizedException @@ -110,6 +114,8 @@ New line comment. + + **Throws**: ErrUnauthorizedException diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json index 649c80f3..77727709 100755 --- a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 03ae9dc4..2e2e0d46 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.10. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.11. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md index 0a850a59..f4dd9633 100755 --- a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -33,6 +33,8 @@ + + **Throws**: ErrUnauthorizedException @@ -65,9 +67,7 @@ |cc|number|| ### GetAll(members) ⇒Array.<User> - more comment and more and more comment and more and more comment and more. - -New line comment. + more comment and more and more comment and more and more comment and more.New line comment. @@ -84,6 +84,8 @@ New line comment. + + **Throws**: ErrUnauthorizedException @@ -98,6 +100,8 @@ New line comment. + + **Throws**: ErrUnauthorizedException diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json index d7d0b882..aebe3397 100755 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" Get item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User","type":"object"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members","type":"object"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index e0100440..5ab1dc5f 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" Create new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["B"],"summary":"Get","description":" Get item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index cc7e7817..20d1d4a8 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" Create new item of item.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data","type":"object"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","description":" GetAll more comment and more and more comment and more and more comment and more.\n New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User","type":"object"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" Get item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User","type":"object"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member","type":"object"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse","type":"object"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data","type":"object"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind","type":"object"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON","type":"object"},"profile":{"$ref":"#/components/schemas/Profile","type":"object"},"recurse":{"$ref":"#/components/schemas/Recurse","type":"object"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User","type":"object"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/service.go b/fixtures/ServiceRESTSingle/app/service.go index c60bc3f2..b43a1d56 100644 --- a/fixtures/ServiceRESTSingle/app/service.go +++ b/fixtures/ServiceRESTSingle/app/service.go @@ -92,7 +92,8 @@ type AppInterface interface { } type InterfaceB interface { - // Create new item of item. + // Create create comment. + // @newData param of new data. Create(ctx context.Context, newData AliasData, name string, data []byte, date time.Time) (err error) // Get item. Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/fixtures/ServiceRESTSingle/app/swipe.go index 88b4e067..b3486cd6 100644 --- a/fixtures/ServiceRESTSingle/app/swipe.go +++ b/fixtures/ServiceRESTSingle/app/swipe.go @@ -33,6 +33,7 @@ func Swipe() { swipe.RESTMethod(http.MethodPost), swipe.RESTQueryVars([]string{"cc", "cc"}), swipe.RESTHeaderVars([]string{"fname", "fname"}), + swipe.Logging(true), ), swipe.MethodDefaultOptions( swipe.Logging(false), diff --git a/swipe.go b/swipe.go index cce5eed3..4dfbdf29 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.10" +const Version = "v2.0.0-alpha.11" // A Option is an option for a Swipe. type Option string From 49279f4b4c51f20d9b3e1cd0ab22944782a949d1 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 27 Oct 2020 17:44:57 +0300 Subject: [PATCH 062/293] fix: openapi embedded structs --- .../typevisitor/openapi_def_visitor.go | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/internal/interface/typevisitor/openapi_def_visitor.go b/internal/interface/typevisitor/openapi_def_visitor.go index 92d2f1a5..c510e11c 100644 --- a/internal/interface/typevisitor/openapi_def_visitor.go +++ b/internal/interface/typevisitor/openapi_def_visitor.go @@ -35,7 +35,6 @@ func (v *openapiDefVisitor) VisitMap(t *stdtypes.Map, nested int) { } func (v *openapiDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { - switch stdtypes.TypeString(t, nil) { case "encoding/json.RawMessage": v.schema.Type = "object" @@ -79,21 +78,32 @@ func (v *openapiDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { func (v *openapiDefVisitor) VisitStruct(t *stdtypes.Struct, nested int) { for i := 0; i < t.NumFields(); i++ { f := t.Field(i) - if !f.Embedded() { - name := f.Name() - if tags, err := structtag.Parse(t.Tag(i)); err == nil { - if tag, err := tags.Get("json"); err == nil { - name = tag.Value() - } + + if f.Embedded() { + var st *stdtypes.Struct + if ptr, ok := f.Type().(*stdtypes.Pointer); ok { + st = ptr.Elem().Underlying().(*stdtypes.Struct) + } else { + st = f.Type().Underlying().(*stdtypes.Struct) } - if name == "-" { - continue + + typevisitor.ConvertType(st).Accept(v, nested) + + continue + } + + name := f.Name() + if tags, err := structtag.Parse(t.Tag(i)); err == nil { + if tag, err := tags.Get("json"); err == nil { + name = tag.Value() } - v.schema.Properties[name] = &openapi.Schema{} - OpenapiVisitor(v.schema.Properties[name]).Visit(f.Type()) - } else { - typevisitor.ConvertType(t).Accept(v, nested+1) } + if name == "-" { + continue + } + v.schema.Properties[name] = &openapi.Schema{} + OpenapiVisitor(v.schema.Properties[name]).Visit(f.Type()) + } } From 62b43bd1813c8bf72c7f1195823e11f41ddc8e07 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 27 Oct 2020 17:46:32 +0300 Subject: [PATCH 063/293] chore(release): 2.0.0-alpha.12 --- CHANGELOG.md | 9 ++++- fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 35 +++++++++++-------- .../app/jsonrpc_doc_gen.md | 1 + .../app/openapi_jsonrpc_gen.json | 2 +- fixtures/ServiceJSONRPCMulti/app/service.go | 22 +++++++----- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 +- fixtures/ServiceRESTSingle/app/README.md | 3 +- swipe.go | 2 +- 11 files changed, 55 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18655ae9..7204ebf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +## [v2.0.0-alpha.12] - 2020-10-27 +### Bug Fixes +- openapi embedded structs + + ## [v2.0.0-alpha.11] - 2020-10-27 ### Bug Fixes @@ -595,7 +601,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.11...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.12...HEAD +[v2.0.0-alpha.12]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.11...v2.0.0-alpha.12 [v2.0.0-alpha.11]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.10...v2.0.0-alpha.11 [v2.0.0-alpha.10]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.9...v2.0.0-alpha.10 [v2.0.0-alpha.9]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.8...v2.0.0-alpha.9 diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 1608d55f..20800616 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) +[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.11) +, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 3d66cc4d..ffd489ee 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.11. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.12. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -101,19 +101,26 @@ class JSONRPCScheduler { */ /** - * @typedef {Object} User - * @property {string} id - * @property {string} name - * @property {string} password - * @property {GeoJSON} point - * @property {string} last_seen - * @property {Data} data - * @property {Array} photo - * @property {User} user - * @property {Profile} profile - * @property {Recurse} recurse - * @property {string} created_at - * @property {string} updated_at +* @typedef {Object} User +* @property {string} title + +* @property {string} id +* @property {string} name +* @property {string} password +* @property {GeoJSON} point +* @property {string} last_seen +* @property {Data} data +* @property {Array} photo +* @property {User} user +* @property {Profile} profile +* @property {Recurse} recurse +* @property {string} created_at +* @property {string} updated_at +*/ + +/** + * @typedef {Object} Info + * @property {string} title */ /** diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md index 58b35972..58574af8 100755 --- a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -152,6 +152,7 @@ | Field | Type | Description | |------|------|------| +|title|string|| |id|string|| |name|string|| |password|string|| diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json index 77727709..2bbd142b 100755 --- a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceJSONRPCMulti/app/service.go b/fixtures/ServiceJSONRPCMulti/app/service.go index b5a789b8..3745e3cf 100644 --- a/fixtures/ServiceJSONRPCMulti/app/service.go +++ b/fixtures/ServiceJSONRPCMulti/app/service.go @@ -69,15 +69,21 @@ type Recurse struct { Recurse []*Recurse `json:"recurse"` } +type Info struct { + Title string `json:"title"` +} + type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` - Point GeoJSON `json:"point"` - LastSeen time.Time `json:"last_seen"` - Data AliasData `json:"data"` - Photo []byte `json:"photo"` - User *User `json:"user"` + *Info + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` + Point GeoJSON `json:"point"` + LastSeen time.Time `json:"last_seen"` + Data AliasData `json:"data"` + Photo []byte `json:"photo"` + User *User `json:"user"` + //Users []*User `json:"users"` Profile *Profile `json:"profile"` Recurse *Recurse `json:"recurse"` CreatedAt *time.Time `json:"created_at"` diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 8a6e7064..0dace178 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) +[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.11) +, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 2e2e0d46..4fb4eb4e 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.11. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.12. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 647282f8..3d7d72b1 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) +[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.11) +, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 7db628d2..582c223e 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) +[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.11) +, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) , [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) diff --git a/swipe.go b/swipe.go index 4dfbdf29..f50673bd 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.11" +const Version = "v2.0.0-alpha.12" // A Option is an option for a Swipe. type Option string From 9aace415782baa3216331be0ad5a085783d1f0fe Mon Sep 17 00:00:00 2001 From: Alexandr Kozlenkov Date: Wed, 28 Oct 2020 11:40:37 +0300 Subject: [PATCH 064/293] fix: fixed check error in logging middleware --- internal/interface/generator/logging.go | 40 +++++++++++++++---------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index abc5cf81..0d4939d1 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -150,28 +150,36 @@ func (g *logging) Process(ctx context.Context) error { g.W(")\n") if len(m.Results) > 0 || m.ReturnErr != nil { + generateNameResult := func(format string, args ...interface{}) { + for i, result := range m.Results { + name := "result" + if m.ResultsNamed { + name = strcase.ToLowerCamel(result.Name()) + } + if i > 0 { + g.W(",") + } + g.W(name) + } + if m.ReturnErr != nil { + if len(m.Results) > 0 { + g.W(",") + } + g.W(format, args...) + } + } + g.W("if err != nil {\n") g.W("if _, ok := err.(interface {\n\t\tUnwrap() error\n\t}); !ok {\n") g.W("err = %s.Errorf(\"unexpected error: %%w\", err)\n", g.i.Import("fmt", "fmt")) g.W("}\n") + g.W("return ") + + generateNameResult("%s.Unwrap(err)", g.i.Import("errors", "errors")) + g.W("}\n") g.W("return ") - for i, result := range m.Results { - name := "result" - if m.ResultsNamed { - name = strcase.ToLowerCamel(result.Name()) - } - if i > 0 { - g.W(",") - } - g.W(name) - } - if m.ReturnErr != nil { - if len(m.Results) > 0 { - g.W(",") - } - g.W("%s.Unwrap(err)", g.i.Import("errors", "errors")) - } + generateNameResult("nil") } }) } From fdaca96f3a13dba2c9730e761a2eac045f19364b Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 15:25:55 +0300 Subject: [PATCH 065/293] feat: added generate .gitattributes file for add ignore git dif --- cmd/swipe/main.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 25099b7a..946b50af 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -1,6 +1,7 @@ package main import ( + "bytes" "context" "flag" "fmt" @@ -35,6 +36,9 @@ var ( colorFail = color.Red.Render ) +var startGitAttrPattern = []byte("\n# /swipe gen\n") +var endGitAttrPattern = []byte("# swipe gen/\n") + func main() { subcommands.Register(subcommands.CommandsCommand(), "") subcommands.Register(subcommands.FlagsCommand(), "") @@ -184,6 +188,8 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } success := true + diffExcludes := make([]string, 0, len(results)) + for _, g := range results { if len(g.Errs) > 0 { logErrors(g.Errs) @@ -194,6 +200,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa if len(g.Content) == 0 { continue } + diffExcludes = append(diffExcludes, strings.Replace(g.OutputPath, wd+"/", "", -1)) err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) if err == nil { if cmd.verbose { @@ -207,6 +214,56 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa if !success { log.Println(colorFail("at least one generate failure")) return subcommands.ExitFailure + } else { + gitAttributesPath := filepath.Join(wd, ".gitattributes") + var ( + f *os.File + err error + ) + if _, err = os.Stat(gitAttributesPath); os.IsNotExist(err) { + f, err = os.Create(gitAttributesPath) + if err != nil { + log.Println(colorFail("create .gitattributes fail: ", err)) + return subcommands.ExitFailure + } + f.Close() + } + data, err := ioutil.ReadFile(gitAttributesPath) + if err != nil { + log.Println(colorFail("read .gitattributes fail: ", err)) + return subcommands.ExitFailure + } + + buf := new(bytes.Buffer) + + start := bytes.Index(data, startGitAttrPattern) + end := bytes.Index(data, endGitAttrPattern) + + if start == -1 && end != -1 { + log.Println(colorFail("corrupted .gitattributes not found start swipe patter")) + return subcommands.ExitFailure + } + + if start != -1 && end == -1 { + log.Println(colorFail("corrupted .gitattributes not found end swipe patter")) + return subcommands.ExitFailure + } + + if start != -1 && end != -1 { + buf.Write(data[:start]) + buf.Write(data[end+len(endGitAttrPattern):]) + } + + buf.Write(startGitAttrPattern) + for _, exclude := range diffExcludes { + buf.WriteString(exclude + " -diff\n") + } + buf.Write(endGitAttrPattern) + + if err := ioutil.WriteFile(gitAttributesPath, buf.Bytes(), 0755); err != nil { + log.Println(colorFail("fail write .gitattributes: ", err)) + return subcommands.ExitFailure + } } return subcommands.ExitSuccess } From 8bbb06cf5044889b84ea77397358609411d924ad Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 15:26:38 +0300 Subject: [PATCH 066/293] fix: generate not correct class name for js jsonrpc client --- internal/interface/generator/jsonrpc_js_client.go | 11 +++++++---- internal/interface/typevisitor/js_def_visitor.go | 4 +--- internal/interface/typevisitor/js_visitor.go | 4 ---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 34462b8f..1937df76 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -138,7 +138,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - mw.W("export class JSONRPCClient%s {\n", iface.NameExport()) + mw.W("class JSONRPCClient%s {\n", iface.NameExport()) mw.W("constructor(transport) {\n") mw.W("this.scheduler = new JSONRPCScheduler(transport);\n") mw.W("}\n\n") @@ -231,7 +231,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W(buf.String()) if g.options.Interfaces().Len() > 1 { - g.W("class GRPCClient {\n") + g.W("class JSONRPCClient {\n") g.W("constructor(transport) {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -239,9 +239,12 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } g.W("}\n") g.W("}\n") - } - g.W("export default RPCClient\n\n") + g.W("export default JSONRPCClient\n\n") + } else if g.options.Interfaces().Len() == 1 { + iface := g.options.Interfaces().At(0) + g.W("export default JSONRPCClient%s\n\n", iface.Name()) + } g.W(mw.String()) diff --git a/internal/interface/typevisitor/js_def_visitor.go b/internal/interface/typevisitor/js_def_visitor.go index 8f1fc145..4e051f2c 100644 --- a/internal/interface/typevisitor/js_def_visitor.go +++ b/internal/interface/typevisitor/js_def_visitor.go @@ -53,8 +53,6 @@ func (v *jsTypeDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { return } switch tp := t.Obj().Type().Underlying().(type) { - default: - typevisitor.ConvertType(tp.Underlying()).Accept(v, nested) case *stdtypes.Struct: if nested == 0 { v.buf.W("/**\n") @@ -64,7 +62,7 @@ func (v *jsTypeDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { } else { v.buf.W(t.Obj().Name()) } - case *stdtypes.Map, *stdtypes.Slice: + case *stdtypes.Map, *stdtypes.Slice, *stdtypes.Basic: if nested == 0 { v.buf.W("/**\n") v.buf.W("* @typedef {") diff --git a/internal/interface/typevisitor/js_visitor.go b/internal/interface/typevisitor/js_visitor.go index 0f37c121..6dacdaaf 100644 --- a/internal/interface/typevisitor/js_visitor.go +++ b/internal/interface/typevisitor/js_visitor.go @@ -50,11 +50,7 @@ func (v *jsTypeVisitor) VisitMap(t *stdtypes.Map, nested int) { func (v *jsTypeVisitor) VisitNamed(t *stdtypes.Named, nested int) { switch stdtypes.TypeString(t.Obj().Type(), nil) { default: - //if _, ok := t.Obj().Type().Underlying().(*stdtypes.Struct); ok { v.w(t.Obj().Name()) - //} else { - // typevisitor.ConvertType(t.Obj().Type().Underlying()).Accept(v, nested+1) - //} case "encoding/json.RawMessage": v.w("*") return From ca1d3ba8ed9c1d729c5e188421ca5c2a319cf383 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 15:33:07 +0300 Subject: [PATCH 067/293] fix: rest server prefix generate without slash --- internal/interface/generator/rest_server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index ad1540b9..558a1681 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -144,10 +144,11 @@ func (g *restServer) Process(ctx context.Context) error { g.W(").") g.W("Path(") if mopt.Path != "" { - g.W(strconv.Quote(path.Join(svcPrefix, mopt.Path))) + g.W(strconv.Quote(path.Join("/", svcPrefix, mopt.Path))) } else { g.W(strconv.Quote(path.Join("/", svcPrefix, "/", stdstrings.ToLower(m.Name)))) } + g.W(").") g.W("Handler(") } From b0ef0eb9475a9c45b1f165642a8c8f08b34f43f6 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 15:36:56 +0300 Subject: [PATCH 068/293] chore(release): 2.0.0-alpha.13 --- CHANGELOG.md | 35 +++++++++++++------ fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 10 +++--- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 13 ++++--- fixtures/ServiceRESTMulti/app/README.md | 3 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTMulti/app/swipe.go | 1 + fixtures/ServiceRESTSingle/app/README.md | 3 +- swipe.go | 2 +- 10 files changed, 49 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7204ebf0..0b2afb8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ ## [Unreleased] + +## [v2.0.0-alpha.13] - 2020-10-28 +### Bug Fixes +- rest server prefix generate without slash +- generate not correct class name for js jsonrpc client +- fixed check error in logging middleware + +### Features +- added generate .gitattributes file for add ignore git dif + +### Pull Requests +- Merge pull request [#12](https://github.com/swipe-io/swipe/issues/12) from sah4ez/v2 + + ## [v2.0.0-alpha.12] - 2020-10-27 ### Bug Fixes @@ -275,12 +289,17 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. -- Added generate enum constants for JSON RPC client. ### Features - Added command for generate CRUD service structure. + +## [v1.24.2] - 2020-07-28 +### Bug Fixes +- Added generate enum constants for JSON RPC client. + + ## [v1.24.1] - 2020-07-28 @@ -294,11 +313,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.3] - 2020-07-28 ### Bug Fixes - Change enums JSON RPC client generate format. - - - -## [v1.24.2] - 2020-07-28 -### Bug Fixes - Added generate enum constants for JSON RPC client. ### Features @@ -601,7 +615,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.12...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.13...HEAD +[v2.0.0-alpha.13]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.12...v2.0.0-alpha.13 [v2.0.0-alpha.12]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.11...v2.0.0-alpha.12 [v2.0.0-alpha.11]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.10...v2.0.0-alpha.11 [v2.0.0-alpha.10]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.9...v2.0.0-alpha.10 @@ -637,11 +652,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 [v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.2 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 20800616..a48c7e5f 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.11) +[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.12) +, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index ffd489ee..1ab693d1 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.12. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.13. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -148,15 +148,15 @@ class JSONRPCScheduler { * @property {string} id */ -class GRPCClient { +class JSONRPCClient { constructor(transport) { this.A = new JSONRPCClientA(transport); this.B = new JSONRPCClientB(transport); } } -export default RPCClient; +export default JSONRPCClient; -export class JSONRPCClientA { +class JSONRPCClientA { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } @@ -168,7 +168,7 @@ export class JSONRPCClientA { } } -export class JSONRPCClientB { +class JSONRPCClientB { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 0dace178..1c30d4ce 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.11) +[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.12) +, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 4fb4eb4e..e25561f5 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.12. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.13. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -112,7 +112,7 @@ class JSONRPCScheduler { * @property {User} user * @property {Profile} profile * @property {Recurse} recurse - * @property {string} kind + * @property {Kind} kind * @property {string} created_at * @property {string} updated_at */ @@ -133,7 +133,10 @@ class JSONRPCScheduler { * @property {Array} recurse */ -string; +/** + * @typedef {string} Kind + */ + /** * @typedef {Array} Members */ @@ -143,9 +146,9 @@ string; * @property {string} id */ -export default RPCClient; +export default JSONRPCClientInterfaceB; -export class JSONRPCClientInterfaceB { +class JSONRPCClientInterfaceB { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 3d7d72b1..315f1eed 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.11) +[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.12) +, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 5ab1dc5f..45386864 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/swipe.go b/fixtures/ServiceRESTMulti/app/swipe.go index f8e33eab..4d70e911 100644 --- a/fixtures/ServiceRESTMulti/app/swipe.go +++ b/fixtures/ServiceRESTMulti/app/swipe.go @@ -29,6 +29,7 @@ func Swipe() { swipe.LoggingParams([]string{}, []string{"newData"}), ), swipe.MethodOptions(InterfaceB.Get, + swipe.RESTPath("/get-test"), swipe.RESTMethod(http.MethodPost), swipe.RESTQueryVars([]string{"cc", "cc"}), ), diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 582c223e..318b2c0a 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.11) +[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.12) +, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) , [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) diff --git a/swipe.go b/swipe.go index f50673bd..8d1ac5aa 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.12" +const Version = "v2.0.0-alpha.13" // A Option is an option for a Swipe. type Option string From 5526fd1e3729352b42b6736841a449b52302d278 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 16:06:46 +0300 Subject: [PATCH 069/293] chore(release): 2.0.0-alpha.14 --- swipe.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swipe.go b/swipe.go index 8d1ac5aa..5448c842 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.13" +const Version = "v2.0.0-alpha.14" // A Option is an option for a Swipe. type Option string From c376672152d5b975bbe941ba28f96af0020eda81 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 16:23:54 +0300 Subject: [PATCH 070/293] fix: order export class for js jsonrpc client --- fixtures/ServiceJSONRPCMulti/app/README.md | 4 +++- .../app/client_jsonrpc_gen.js | 18 +++++++++--------- fixtures/ServiceJSONRPCSingle/app/README.md | 4 +++- .../app/client_jsonrpc_gen.js | 6 +++--- fixtures/ServiceRESTMulti/app/README.md | 4 +++- fixtures/ServiceRESTSingle/app/README.md | 4 +++- .../interface/generator/jsonrpc_js_client.go | 4 ++-- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index a48c7e5f..25cb3090 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,9 @@ ToDo. ## Versions -[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.12) +[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) +, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.13) +, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 1ab693d1..cd4ea317 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.13. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.14. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -148,14 +148,6 @@ class JSONRPCScheduler { * @property {string} id */ -class JSONRPCClient { - constructor(transport) { - this.A = new JSONRPCClientA(transport); - this.B = new JSONRPCClientB(transport); - } -} -export default JSONRPCClient; - class JSONRPCClientA { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); @@ -258,6 +250,14 @@ class JSONRPCClientB { } } +class JSONRPCClient { + constructor(transport) { + this.A = new JSONRPCClientA(transport); + this.B = new JSONRPCClientB(transport); + } +} +export default JSONRPCClient; + export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { super(message, "ErrUnauthorizedError", -32001, data); diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 1c30d4ce..524c1464 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,9 @@ ToDo. ## Versions -[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.12) +[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) +, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.13) +, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index e25561f5..3f144d6b 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.13. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.14. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -146,8 +146,6 @@ class JSONRPCScheduler { * @property {string} id */ -export default JSONRPCClientInterfaceB; - class JSONRPCClientInterfaceB { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); @@ -238,6 +236,8 @@ class JSONRPCClientInterfaceB { } } +export default JSONRPCClientInterfaceB; + export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { super(message, "ErrUnauthorizedError", -32001, data); diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 315f1eed..b9ae309c 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,9 @@ ToDo. ## Versions -[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.12) +[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) +, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.13) +, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 318b2c0a..42ff31b8 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,9 @@ ToDo. ## Versions -[v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.12) +[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) +, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.13) +, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.11) , [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) , [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 1937df76..019fcb2d 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -228,7 +228,9 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for _, t := range tdc.TypeDefs() { typevisitor.JSTypeDefVisitor(buf).Visit(t) } + g.W(buf.String()) + g.W(mw.String()) if g.options.Interfaces().Len() > 1 { g.W("class JSONRPCClient {\n") @@ -246,8 +248,6 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default JSONRPCClient%s\n\n", iface.Name()) } - g.W(mw.String()) - for _, key := range g.options.ErrorKeys() { e := g.options.Error(key) g.W( From a0acaad5b51b29e0faffa6918d2a7db40ee1d2b6 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 28 Oct 2020 16:24:36 +0300 Subject: [PATCH 071/293] chore(release): 2.0.0-alpha.15 --- CHANGELOG.md | 42 ++++++++++++------- fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 +- fixtures/ServiceRESTSingle/app/README.md | 3 +- swipe.go | 2 +- 8 files changed, 37 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b2afb8e..a221086b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## [Unreleased] + +## [v2.0.0-alpha.15] - 2020-10-28 +### Bug Fixes +- order export class for js jsonrpc client + + + +## [v2.0.0-alpha.14] - 2020-10-28 + ## [v2.0.0-alpha.13] - 2020-10-28 ### Bug Fixes @@ -289,29 +298,28 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. +- Added generate enum constants for JSON RPC client. ### Features - Added command for generate CRUD service structure. - -## [v1.24.2] - 2020-07-28 + +## [v1.24.1] - 2020-07-28 + + +## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Added generate enum constants for JSON RPC client. +- Change enums JSON RPC client generate format. - -## [v1.24.1] - 2020-07-28 + +## [v1.24.2] - 2020-07-28 ## [v1.24.4] - 2020-07-28 ### Bug Fixes - Incorrect generate enum name for markdown docs. - - - -## [v1.24.3] - 2020-07-28 -### Bug Fixes - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -615,7 +623,9 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.13...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.15...HEAD +[v2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.14...v2.0.0-alpha.15 +[v2.0.0-alpha.14]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.13...v2.0.0-alpha.14 [v2.0.0-alpha.13]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.12...v2.0.0-alpha.13 [v2.0.0-alpha.12]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.11...v2.0.0-alpha.12 [v2.0.0-alpha.11]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.10...v2.0.0-alpha.11 @@ -652,11 +662,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.1 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 25cb3090..79fea5e7 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) +[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) +, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.11) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index cd4ea317..bbbc928d 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.14. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.15. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 524c1464..2268326f 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) +[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) +, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.11) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 3f144d6b..317a06ef 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.14. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.15. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index b9ae309c..26194de5 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) +[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) +, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.11) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 42ff31b8..111e3cfc 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) +[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) +, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.12) , [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.11) diff --git a/swipe.go b/swipe.go index 5448c842..a3a05573 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.14" +const Version = "v2.0.0-alpha.15" // A Option is an option for a Swipe. type Option string From 26d86f207bd7edabb4ae216bc4b6af4b99748b46 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 28 Oct 2020 20:11:43 +0300 Subject: [PATCH 072/293] Add homebrew-swipe module --- .gitignore | 3 ++- .gitmodules | 3 +++ Makefile | 22 +++++++++++++++++----- homebrew-swipe | 1 + 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 .gitmodules create mode 160000 homebrew-swipe diff --git a/.gitignore b/.gitignore index a6707385..d2e1ef6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea .DS_Store -fixtures/*/app/*_gen.go \ No newline at end of file +fixtures/*/app/*_gen.go +releases \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..10e03236 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "homebrew-swipe"] + path = homebrew-swipe + url = git@github.com:swipe-io/homebrew-swipe.git diff --git a/Makefile b/Makefile index 376262d5..47933ab0 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,15 @@ +VERSION = snapshot +GHRFLAGS = +.PHONY: build release + +default: build + +build: + goxc -d=releases -bc="linux,386 darwin" -pv=$(VERSION) + +release: + ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) + chglog: git-chglog -o CHANGELOG.md @@ -5,8 +17,8 @@ check: go vet ./... go test -v ./... -build: check - go build -o swipe ./cmd/swipe - -install: build - mv ./swipe ${GOPATH}/bin \ No newline at end of file +#build: check + #go build -o swipe ./cmd/swipe +# +#install: build +# mv ./swipe ${GOPATH}/bin \ No newline at end of file diff --git a/homebrew-swipe b/homebrew-swipe new file mode 160000 index 00000000..309a896e --- /dev/null +++ b/homebrew-swipe @@ -0,0 +1 @@ +Subproject commit 309a896ede30ee7c44d126e7d16c90fb3482fce4 From 056e323d472f2c50105b7f0c95b0368cbd6bf2cb Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 28 Oct 2020 16:32:06 +0300 Subject: [PATCH 073/293] refactor: fix check interface --- homebrew-swipe | 2 +- internal/interface/generator/http_transport.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index 309a896e..ccbcb073 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 309a896ede30ee7c44d126e7d16c90fb3482fce4 +Subproject commit ccbcb07339e5161363e5a6399d241346e17f127a diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index b69fd718..c09fa571 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -99,11 +99,11 @@ func (g *httpTransport) Process(ctx context.Context) error { } g.W("}\n") if g.options.JSONRPCEnable() { - g.W("if err, ok := err.(%s.ErrorData); ok {\n", kitHTTPPkg) + g.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") g.W("err.SetErrorData(data)\n") g.W("}\n") - g.W("if err, ok := err.(%s.ErrorMessager); ok {\n", kitHTTPPkg) + g.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") g.W("err.SetErrorMessage(message)\n") g.W("}\n") } From 5da5c88f3cd2f57f37e4bb99ebf78898b8f9bc06 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 31 Oct 2020 01:57:47 +0300 Subject: [PATCH 074/293] fix: generate rest go client, excess newline --- internal/interface/generator/rest_go_client.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 78a363cf..9ca6a9a1 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -31,11 +31,11 @@ type restGoClient struct { i *importer.Importer } -func (g *restGoClient) Prepare(ctx context.Context) error { +func (g *restGoClient) Prepare(_ context.Context) error { return nil } -func (g *restGoClient) Process(ctx context.Context) error { +func (g *restGoClient) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { var ( kitHTTPPkg string @@ -206,7 +206,7 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("r.URL.Path += ") } if len(pathVars) > 0 { - g.W("%s.Sprintf(%s, %s)\n", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) + g.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) } else { g.W(strconv.Quote(pathStr)) } @@ -214,6 +214,7 @@ func (g *restGoClient) Process(ctx context.Context) error { if g.options.UseFast() { g.W(")") } + g.W("\n") if len(queryVars) > 0 { @@ -259,6 +260,7 @@ func (g *restGoClient) Process(ctx context.Context) error { g.W("return nil\n") g.W("}") } + g.W(",\n") if mopt.ClientResponseFunc.Expr != nil { From 56c5459f86bec7cdfe564c66a2fffca0d1293609 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 31 Oct 2020 02:33:17 +0300 Subject: [PATCH 075/293] fix: REST error message is not wrapped in JSON object --- internal/interface/generator/rest_server.go | 96 +++++++++++++++++---- 1 file changed, 77 insertions(+), 19 deletions(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 558a1681..1f6d9bae 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -32,17 +32,16 @@ type restServer struct { i *importer.Importer } -func (g *restServer) Prepare(ctx context.Context) error { +func (g *restServer) Prepare(_ context.Context) error { return nil } -func (g *restServer) Process(ctx context.Context) error { +func (g *restServer) Process(_ context.Context) error { var ( routerPkg string httpPkg string kitHTTPPkg string ) - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") contextPkg := g.i.Import("context", "context") @@ -56,7 +55,8 @@ func (g *restServer) Process(ctx context.Context) error { httpPkg = g.i.Import("http", "net/http") } - g.writeEncodeResponseFunc(contextPkg, httpPkg, kitEndpointPkg, jsonPkg) + g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) + g.writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg) g.W("// MakeHandler%[1]s HTTP %[1]s Transport\n", g.options.Prefix()) g.W("func MakeHandler%s(", g.options.Prefix()) @@ -80,6 +80,8 @@ func (g *restServer) Process(ctx context.Context) error { g.W("opts := &serverOpts{}\n") g.W("for _, o := range options {\n o(opts)\n }\n") + g.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) + for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) @@ -282,7 +284,77 @@ func (g *restServer) Process(ctx context.Context) error { return nil } -func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, kitEndpointPkg, jsonPkg string) { +func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg string) { + //w.Header().Set("Content-Type", "application/json; charset=utf-8") + //if headerer, ok := err.(Headerer); ok { + // for k, values := range headerer.Headers() { + // for _, v := range values { + // w.Header().Add(k, v) + // } + // } + //} + //code := http.StatusInternalServerError + //if sc, ok := err.(StatusCoder); ok { + // code = sc.StatusCode() + //} + //w.WriteHeader(code) + //w.Write(body) + // + + g.W("func defaultErrorEncoder(ctx %s.Context, err error, ", contextPkg) + if g.options.UseFast() { + g.W("w %s.RequestCtx) {\n", httpPkg) + } else { + g.W("w %s.ResponseWriter) {\n", httpPkg) + } + + g.W("data, err := %s.Marshal(errorWrapper{Error: err.Error()})\n", jsonPkg) + g.W("if err != nil {\n") + if g.options.UseFast() { + g.W("w.SetBody([]byte(") + } else { + g.W("w.Write([]byte(") + } + g.W("%s))\n", strconv.Quote("unexpected error")) + g.W("return\n") + g.W("}\n") + + if g.options.UseFast() { + g.W("w.Response.Header") + } else { + g.W("w.Header()") + } + g.W(".Set(\"Content-Type\", \"application/json; charset=utf-8\")\n") + + g.W("if headerer, ok := err.(%s.Headerer); ok {\n", kitHTTPPkg) + + if g.options.UseFast() { + g.W("for k, v := range headerer.Headers() {\n") + g.W("w.Response.Header.Add(k, v)") + g.W("}\n") + } else { + g.W("for k, values := range headerer.Headers() {\n") + g.W("for _, v := range values {\n") + g.W("w.Header().Add(k, v)") + g.W("}\n}\n") + } + g.W("}\n") + g.W("code := %s.StatusInternalServerError\n", httpPkg) + g.W("if sc, ok := err.(%s.StatusCoder); ok {\n", kitHTTPPkg) + g.W("code = sc.StatusCode()\n") + g.W("}\n") + + if g.options.UseFast() { + g.W("w.SetStatusCode(code)\n") + g.W("w.SetBody(data)\n") + } else { + g.W("w.WriteHeader(code)\n") + g.W("w.Write(data)\n") + } + g.W("}\n\n") +} + +func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string) { g.W("type errorWrapper struct {\n") g.W("Error string `json:\"error\"`\n") g.W("}\n") @@ -304,20 +376,6 @@ func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, kitEndpointPkg } g.W("h.Set(\"Content-Iface\", \"application/json; charset=utf-8\")\n") - g.W("if e, ok := response.(%s.Failer); ok && e.Failed() != nil {\n", kitEndpointPkg) - g.W("data, err := %s.Marshal(errorWrapper{Error: e.Failed().Error()})\n", jsonPkg) - g.W("if err != nil {\n") - g.W("return err\n") - g.W("}\n") - - if g.options.UseFast() { - g.W("w.SetBody(data)\n") - } else { - g.W("w.Write(data)\n") - } - - g.W("return nil\n") - g.W("}\n") g.W("data, err := %s.Marshal(response)\n", jsonPkg) g.W("if err != nil {\n") From 6548ea346eb9329bb86a8f4cfd2b205c22adad6f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 31 Oct 2020 02:35:04 +0300 Subject: [PATCH 076/293] fix: incorrect use of unwrap, added interface {LogError () error} instead --- internal/interface/generator/logging.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index 0d4939d1..c17249f6 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -87,7 +87,7 @@ func (g *logging) Process(ctx context.Context) error { if m.ReturnErr != nil { results = append(results, "", "error") - logParams = append(logParams, strconv.Quote("err"), "err") + logParams = append(logParams, strconv.Quote("err"), "errStr") } g.WriteFunc(m.Name, "s *"+name, params, results, func() { @@ -109,11 +109,18 @@ func (g *logging) Process(ctx context.Context) error { if mopt.LoggingEnable { if len(logParams) > 0 { g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + g.W("errStr := err.Error()\n") + if m.ReturnErr != nil { + g.W("if le, ok := err.(interface{LogError() string}); ok {\n") + g.W("errStr = le.LogError()\n") + g.W("}\n") + } g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) g.W(strings.Join(logParams, ",")) g.W(")\n") }) } + } if len(m.Results) > 0 || m.ReturnErr != nil { @@ -168,18 +175,10 @@ func (g *logging) Process(ctx context.Context) error { g.W(format, args...) } } - g.W("if err != nil {\n") - g.W("if _, ok := err.(interface {\n\t\tUnwrap() error\n\t}); !ok {\n") - g.W("err = %s.Errorf(\"unexpected error: %%w\", err)\n", g.i.Import("fmt", "fmt")) - g.W("}\n") - g.W("return ") - - generateNameResult("%s.Unwrap(err)", g.i.Import("errors", "errors")) - g.W("}\n") g.W("return ") - generateNameResult("nil") + generateNameResult("err") } }) } From 80b39dcb8444e9b354443e79730782629a2ab73c Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 1 Nov 2020 17:29:53 +0300 Subject: [PATCH 077/293] refactor: update github.com/l-vitaly/go-kit and github.com/swipe-io/strcase --- go.mod | 5 ++--- go.sum | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9c988084..f19e45f7 100644 --- a/go.mod +++ b/go.mod @@ -12,12 +12,11 @@ require ( github.com/google/uuid v1.0.0 github.com/gookit/color v1.2.5 github.com/gorilla/mux v1.7.3 - github.com/l-vitaly/go-kit v1.12.2 + github.com/l-vitaly/go-kit v1.13.0 github.com/lib/pq v1.8.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/prometheus/client_golang v1.3.0 - github.com/spaolacci/murmur3 v1.1.0 - github.com/swipe-io/strcase v0.1.3 + github.com/swipe-io/strcase v0.1.5 golang.org/x/mod v0.3.0 golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 diff --git a/go.sum b/go.sum index 7dfc9df5..695ccef8 100644 --- a/go.sum +++ b/go.sum @@ -177,6 +177,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/l-vitaly/go-kit v1.12.2 h1:p2YzZdxVVhzA1tjr47SwPQ09YLJXq+MP3I0MvNOL0Nk= github.com/l-vitaly/go-kit v1.12.2/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= +github.com/l-vitaly/go-kit v1.13.0 h1:kAy3A7FZ4EMT9RWFarNVRhxrdrjOeeB37o25mILRkHw= +github.com/l-vitaly/go-kit v1.13.0/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= github.com/l-vitaly/rmqrpc v0.0.0-20170301101204-95b1ce811f78/go.mod h1:RRveuDTon8C8upAP4Cgp0nhA9gQhI2/io4etRR75C6s= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= @@ -309,6 +311,10 @@ github.com/swipe-io/strcase v0.1.2 h1:EK2Rd3bK1NiSBnsogPmaF40iT8M5C4MHRwnJk4DNr/ github.com/swipe-io/strcase v0.1.2/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= github.com/swipe-io/strcase v0.1.3 h1:LawWgDOsOb/McgGZHBMdkn81cPGOHEza8SCq6M1g1Qg= github.com/swipe-io/strcase v0.1.3/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/swipe-io/strcase v0.1.4 h1:BC/kZrmTYyveTTPHe1rt/RaWHPT6mjLUNre+tLVMhik= +github.com/swipe-io/strcase v0.1.4/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= +github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= github.com/swipe-io/swipe v1.26.7 h1:qF7x/GiT2AcqAvhbpBYmpMzG1dol/rvsFJvzfliee8U= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= From 5c4cfb76ffbcc77a2aacd87dca3c0f884de50ba3 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 1 Nov 2020 17:30:27 +0300 Subject: [PATCH 078/293] feat: remove version command --- cmd/swipe/main.go | 50 +++++++++-------------------------------------- 1 file changed, 9 insertions(+), 41 deletions(-) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 946b50af..90d7f272 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -43,7 +43,6 @@ func main() { subcommands.Register(subcommands.CommandsCommand(), "") subcommands.Register(subcommands.FlagsCommand(), "") subcommands.Register(subcommands.HelpCommand(), "") - subcommands.Register(&versionCmd{}, "") subcommands.Register(&genCmd{}, "") subcommands.Register(&genTplCmd{}, "") @@ -55,18 +54,12 @@ func main() { allCmds := map[string]bool{ "commands": true, "gen-tpl": true, - "version": true, "help": true, "flags": true, "gen": true, - "show": true, } log.Printf("%s %s", color.LightBlue.Render("Swipe"), color.Yellow.Render(swipe.Version)) - log.Printf("%s %s", color.Yellow.Render("Thanks for using"), color.LightBlue.Render("swipe")) - log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) - - startCmd := time.Now() var code int if args := flag.Args(); len(args) == 0 || !allCmds[args[0]] { @@ -75,43 +68,9 @@ func main() { } else { code = int(subcommands.Execute(context.Background())) } - if code == 0 { - log.Println(color.LightGreen.Render("Command execution completed successfully")) - } - log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Now().Sub(startCmd).String())) os.Exit(code) } -type versionCmd struct { -} - -// Name returns the name of the command. -func (c *versionCmd) Name() string { - return "version" -} - -// Synopsis returns a short string (less than one line) describing the command. -func (c *versionCmd) Synopsis() string { - return "version" -} - -// Usage returns a long string explaining the command and giving usage -// information. -func (c *versionCmd) Usage() string { - return "version" -} - -// SetFlags adds the flags for this command to the specified set. -func (c *versionCmd) SetFlags(_ *flag.FlagSet) { - -} - -// Execute executes the command and returns an ExitStatus. -func (c *versionCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { - log.Println(swipe.Version) - return subcommands.ExitSuccess -} - type genCmd struct { verbose bool } @@ -132,6 +91,11 @@ func (cmd *genCmd) SetFlags(f *flag.FlagSet) { } func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { + log.Printf("%s %s", color.Yellow.Render("Thanks for using"), color.LightBlue.Render("swipe")) + log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) + + startCmd := time.Now() + wd, err := os.Getwd() if err != nil { log.Println(colorFail("failed to get working directory: "), colorFail(err)) @@ -265,6 +229,10 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa return subcommands.ExitFailure } } + + log.Println(color.LightGreen.Render("Command execution completed successfully")) + log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Now().Sub(startCmd).String())) + return subcommands.ExitSuccess } From 6f20557d57ceed3a529438b6ff03654131d3d5d6 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 1 Nov 2020 17:37:00 +0300 Subject: [PATCH 079/293] fix: generating the name of an environment variable containing a number, working with required, changing settings tags BREAKING CHANGE: settings tags, all settings are now in the env tag, such as required, use_zero (do not check empty value when checking required), desc: , use_flag --- internal/interface/gateway/config.go | 11 +- internal/interface/generator/config_doc.go | 8 +- .../generator/{config.go => config_env.go} | 142 +++++++++++++----- internal/strings/strings.go | 12 -- internal/types/types.go | 14 ++ internal/writer/golang_writer.go | 43 ++++-- internal/writer/utils.go | 21 +++ swipe.go | 8 +- 8 files changed, 181 insertions(+), 78 deletions(-) rename internal/interface/generator/{config.go => config_env.go} (65%) diff --git a/internal/interface/gateway/config.go b/internal/interface/gateway/config.go index b0827def..8fd3bd6c 100644 --- a/internal/interface/gateway/config.go +++ b/internal/interface/gateway/config.go @@ -42,13 +42,16 @@ func (g *configGateway) FuncName() string { } func (g *configGateway) load(o *option.Option) { - g.stExpr = o.Value.Expr() - g.stType = o.Value.Type() - if ptr, ok := o.Value.Type().(*stdtypes.Pointer); ok { + os := option.MustOption(o.At("optionsStruct")) + + g.stExpr = os.Value.Expr() + g.stType = os.Value.Type() + + if ptr, ok := os.Value.Type().(*stdtypes.Pointer); ok { g.st = ptr.Elem().Underlying().(*stdtypes.Struct) } else { - g.st = o.Value.Type().(*stdtypes.Struct) + g.st = os.Value.Type().(*stdtypes.Struct) } if _, ok := o.At("ConfigEnvDocEnable"); ok { g.docEnable = true diff --git a/internal/interface/generator/config_doc.go b/internal/interface/generator/config_doc.go index a89d7298..04c497f5 100644 --- a/internal/interface/generator/config_doc.go +++ b/internal/interface/generator/config_doc.go @@ -37,25 +37,25 @@ func (g *configDoc) Process(ctx context.Context) error { g.W("## Environment variables\n\n") - g.W("| Name | Type | Description | Required |\n|------|------|------|------|\n") + g.W("| Name | Type | Description | Required | Use Zero |\n|------|------|------|------|------|\n") for _, opts := range envs { desc := " " if opts.desc != "" { desc = opts.desc } - g.W("|%s|%s|%s|%s|\n", opts.name, opts.typeStr, desc, opts.required) + g.W("|%s|%s|%s|%s|%s|\n", opts.name, opts.typeStr, desc, opts.required, opts.useZero) } g.W("## Flags\n\n") - g.W("| Name | Type | Description | Required |\n|------|------|------|------|\n") + g.W("| Name | Type | Description | Required | Use Zero |\n|------|------|------|------|------|\n") for _, opts := range flags { desc := " " if opts.desc != "" { desc = opts.desc } - g.W("|%s|%s|%s|%s|\n", opts.name, opts.typeStr, desc, opts.required) + g.W("|%s|%s|%s|%s|%s|\n", opts.name, opts.typeStr, desc, opts.required, opts.useZero) } return nil diff --git a/internal/interface/generator/config.go b/internal/interface/generator/config_env.go similarity index 65% rename from internal/interface/generator/config.go rename to internal/interface/generator/config_env.go index 27c9e312..a3f4f975 100644 --- a/internal/interface/generator/config.go +++ b/internal/interface/generator/config_env.go @@ -6,20 +6,21 @@ import ( "go/ast" stdtypes "go/types" "strconv" + stdstrings "strings" + + "github.com/swipe-io/swipe/v2/internal/types" "github.com/fatih/structtag" "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/strings" - "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) -type Required bool +type Bool bool -func (r Required) String() string { +func (r Bool) String() string { if r { return "yes" } @@ -30,31 +31,46 @@ type fldOpts struct { desc string name string fieldPath string - required Required + required Bool + useZero Bool isFlag bool typeStr string } +func (o fldOpts) tagName() string { + if o.isFlag { + return "flag" + } + return "env" +} + func getFieldOpts(f *stdtypes.Var, tag string) (result fldOpts) { result.typeStr = stdtypes.TypeString(f.Type(), func(p *stdtypes.Package) string { return p.Name() }) - result.name = strcase.ToScreamingSnake(strings.NormalizeCamelCase(f.Name())) + result.name = strcase.ToScreamingSnake(f.Name()) result.fieldPath = f.Name() if tags, err := structtag.Parse(tag); err == nil { - if tag, err := tags.Get("desc"); err == nil { - result.desc = tag.Name - } if tag, err := tags.Get("env"); err == nil { - result.required = Required(tag.HasOption("required")) - if tag.Name != "" { - result.name = tag.Name + for _, option := range tag.Options { + switch option { + case "use_zero": + result.useZero = true + case "required": + result.required = true + case "use_flag": + result.name = strcase.ToKebab(f.Name()) + result.isFlag = true + default: + if stdstrings.HasPrefix(option, "desc:") { + descParts := stdstrings.Split(option, "desc:") + if len(descParts) == 2 { + result.desc = descParts[1] + } + } + } } - } - if tag, err := tags.Get("flag"); err == nil { - result.required = Required(tag.HasOption("required")) if tag.Name != "" { - result.isFlag = true result.name = tag.Name } } @@ -71,13 +87,22 @@ func walkStructRecursive(st *stdtypes.Struct, parent *stdtypes.Var, popts fldOpt fopts.fieldPath = popts.fieldPath + "." + fopts.fieldPath } - switch v := f.Type().Underlying().(type) { + switch v := f.Type().(type) { default: fn(f, parent, fopts) case *stdtypes.Pointer: if st, ok := v.Elem().Underlying().(*stdtypes.Struct); ok { walkStructRecursive(st, f, fopts, fn) } + case *stdtypes.Named: + switch v.String() { + case "time.Time", "time.Duration": + fn(f, parent, fopts) + continue + } + if st, ok := v.Underlying().(*stdtypes.Struct); ok { + walkStructRecursive(st, f, fopts, fn) + } case *stdtypes.Struct: walkStructRecursive(v, f, fopts, fn) } @@ -97,11 +122,11 @@ type config struct { funcName string } -func (g *config) Prepare(ctx context.Context) error { +func (g *config) Prepare(_ context.Context) error { return nil } -func (g *config) Process(ctx context.Context) error { +func (g *config) Process(_ context.Context) error { stTypeStr := stdtypes.TypeString(g.stType, g.i.QualifyPkg) g.W("func %s() (cfg %s, errs []error) {\n", g.funcName, stTypeStr) @@ -110,6 +135,10 @@ func (g *config) Process(ctx context.Context) error { g.W("\n") var foundFlags bool + var requiredFlags []struct { + f *stdtypes.Var + opts fldOpts + } var envs []fldOpts walkStruct(g.st, func(f, parent *stdtypes.Var, opts fldOpts) { @@ -118,39 +147,48 @@ func (g *config) Process(ctx context.Context) error { } envs = append(envs, opts) - switch v := f.Type().Underlying().(type) { + switch v := f.Type().(type) { + case *stdtypes.Named: + g.writeEnv(f, opts) case *stdtypes.Pointer: if v.Elem().String() == "net/url.URL" { g.writeEnv(f, opts) } - case *stdtypes.Basic, *stdtypes.Slice: + case *stdtypes.Basic, *stdtypes.Slice, *stdtypes.Map: if opts.isFlag { g.writeFlag(f, opts) + if opts.required { + requiredFlags = append(requiredFlags, struct { + f *stdtypes.Var + opts fldOpts + }{f: f, opts: opts}) + } } else { g.writeEnv(f, opts) } } + }) - if opts.required { - tagName := "env" - if opts.isFlag { - tagName = "flag" - } - - errorsPkg := g.i.Import("errors", "errors") - - g.W("if %s == %s {\n", "cfg."+opts.fieldPath, types.ZeroValue(f.Type(), g.i.QualifyPkg)) + if foundFlags { + flagPkg := g.i.Import("flag", "flag") - requiredMsg := strconv.Quote(fmt.Sprintf("%s %s required", tagName, opts.name)) + g.W("%s.Parse()\n", flagPkg) - g.W("errs = append(errs, %s.New(%s))\n ", errorsPkg, requiredMsg) + g.W("seen := map[string]struct{}{}\n") + g.W("%[1]s.Visit(func(f *%[1]s.Flag) { seen[f.Name] = struct{}{} })\n", flagPkg) - g.W("}\n") + for _, o := range requiredFlags { + g.W("if _, ok := seen[\"%s\"]; !ok {\n", o.opts.name) + g.writeAppendErr(o.opts) + g.W("}") + if !bool(o.opts.useZero) && bool(o.opts.required) { + g.W(" else {\n") + g.writeCheckZero(o.f, o.opts) + g.W("}\n") + } else { + g.W("\n") + } } - }) - - if foundFlags { - g.W("%s.Parse()\n", g.i.Import("flag", "flag")) } g.W("return\n") @@ -168,7 +206,7 @@ func (g *config) Process(ctx context.Context) error { } g.W("`+%s.Sprintf(\"%%v\", %s)+`", fmtPkg, "cfg."+env.fieldPath) if env.desc != "" { - g.W(" ;%s", env.desc) + g.W(" ; %s", env.desc) } g.Line() } @@ -179,6 +217,12 @@ func (g *config) Process(ctx context.Context) error { return nil } +func (g *config) writeAppendErr(opts fldOpts) { + errorsPkg := g.i.Import("errors", "errors") + requiredMsg := strconv.Quote(fmt.Sprintf("%s %s required", opts.tagName(), opts.name)) + g.W("errs = append(errs, %s.New(%s))\n ", errorsPkg, requiredMsg) +} + func (g *config) writeFlag(f *stdtypes.Var, opts fldOpts) { if t, ok := f.Type().(*stdtypes.Basic); ok { flagPkg := g.i.Import("flag", "flag") @@ -197,12 +241,32 @@ func (g *config) writeFlag(f *stdtypes.Var, opts fldOpts) { } } +func (g *config) writeCheckZero(f *stdtypes.Var, opts fldOpts) { + if !bool(opts.useZero) && bool(opts.required) { + if !types.HasNoEmptyValue(f.Type()) { + g.W("if %s == %s {\n", "cfg."+opts.fieldPath, types.ZeroValue(f.Type(), g.i.QualifyPkg)) + g.writeAppendErr(opts) + g.W("}\n") + } + } +} + func (g *config) writeEnv(f *stdtypes.Var, opts fldOpts) { tmpVar := strcase.ToLowerCamel(opts.fieldPath) + "Tmp" g.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, g.i.Import("os", "os"), strconv.Quote(opts.name)) g.W("if ok {\n") + g.WriteConvertType(g.i.Import, "cfg."+opts.fieldPath, tmpVar, f, nil, "errs", false, "convert "+opts.name+" error") - g.W("}\n") + g.writeCheckZero(f, opts) + + g.W("}") + if opts.required { + g.W(" else {\n") + g.writeAppendErr(opts) + g.W("}\n") + } else { + g.W("\n") + } } func (g *config) PkgName() string { diff --git a/internal/strings/strings.go b/internal/strings/strings.go index a9fd0776..a8e58cd3 100644 --- a/internal/strings/strings.go +++ b/internal/strings/strings.go @@ -9,15 +9,3 @@ func UcFirst(s string) string { func LcFirst(s string) string { return strings.ToLower(s[:1]) + s[1:] } - -func NormalizeCamelCase(s string) string { - n := "" - for i, v := range s { - if i > 0 && (v >= 'A' && v <= 'Z') && (s[i-1] >= 'A' && s[i-1] <= 'Z') { - n += strings.ToLower(string(v)) - continue - } - n += string(v) - } - return n -} diff --git a/internal/types/types.go b/internal/types/types.go index 732b69c5..ce2a381f 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -76,6 +76,20 @@ func Inspect(pkgs []*packages.Package, f func(p *packages.Package, n ast.Node) b } } +func HasNoEmptyValue(t types.Type) bool { + switch u := t.Underlying().(type) { + case *types.Array, *types.Struct: + return true + case *types.Basic: + info := u.Info() + switch { + case info&types.IsBoolean != 0: + return true + } + } + return false +} + func ZeroValue(t types.Type, qf types.Qualifier) string { switch u := t.Underlying().(type) { case *types.Array, *types.Struct: diff --git a/internal/writer/golang_writer.go b/internal/writer/golang_writer.go index a6866b8d..880d1433 100644 --- a/internal/writer/golang_writer.go +++ b/internal/writer/golang_writer.go @@ -240,25 +240,35 @@ func (w *GoLangWriter) WriteConvertType( switch t := f.Type().(type) { case *stdtypes.Basic: w.writeConvertBasicType(importFn, f.Name(), assignId, valueId, t, errRet, errSlice, declareVar, msgErrTemplate) + case *stdtypes.Map: + stringsPkg := importFn("strings", "strings") + if k, ok := t.Key().(*stdtypes.Basic); ok && k.Kind() == stdtypes.String { + if v, ok := t.Elem().(*stdtypes.Basic); ok { + tmpId = "parts" + stdstrings.ToLower(f.Name()) + w.W("%s := %s.Split(%s, \",\")\n", tmpId, stringsPkg, valueId) + w.W("%s = make(%s, len(%s))\n", assignId, t.String(), tmpId) + if isNumeric(v.Kind()) { + w.W("for _, s := range %s {\n", tmpId) + w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) + w.W("if len(kv) == 2 {\n") + w.writeConvertBasicType(importFn, "tmp", assignId+"[kv[0]]", "kv[1]", v, errRet, errSlice, false, msgErrTemplate) + w.W("}\n") + w.W("}\n") + } else { + w.W("for _, s := range %s {\n", tmpId) + w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) + w.W("if len(kv) == 2 {\n") + w.W("%s[kv[0]] = kv[1]\n", assignId) + w.W("}\n") + w.W("}\n") + } + } + } case *stdtypes.Slice: stringsPkg := importFn("strings", "strings") switch t := t.Elem().(type) { case *stdtypes.Basic: - switch t.Kind() { - case stdtypes.String: - w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) - case stdtypes.Uint, - stdtypes.Uint8, - stdtypes.Uint16, - stdtypes.Uint32, - stdtypes.Uint64, - stdtypes.Int, - stdtypes.Int8, - stdtypes.Int16, - stdtypes.Int32, - stdtypes.Int64, - stdtypes.Float32, - stdtypes.Float64: + if isNumeric(t.Kind()) { tmpId = "parts" + stdstrings.ToLower(f.Name()) + strings.UcFirst(t.String()) w.W("%s := %s.Split(%s, \",\")\n", tmpId, stringsPkg, valueId) if declareVar { @@ -268,6 +278,8 @@ func (w *GoLangWriter) WriteConvertType( w.W("for i, s := range %s {\n", tmpId) w.writeConvertBasicType(importFn, "tmp", assignId+"[i]", "s", t, errRet, errSlice, false, msgErrTemplate) w.W("}\n") + } else { + w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) } } case *stdtypes.Pointer: @@ -293,6 +305,7 @@ func (w *GoLangWriter) WriteConvertType( } case *stdtypes.Named: tmpID := strcase.ToLowerCamel(f.Name()) + "Result" + switch t.Obj().Type().String() { case "uuid.UUID": uuidPkg := importFn("", t.Obj().Pkg().Path()) diff --git a/internal/writer/utils.go b/internal/writer/utils.go index 4ec8cd3f..431c7bea 100644 --- a/internal/writer/utils.go +++ b/internal/writer/utils.go @@ -3,6 +3,7 @@ package writer import ( "go/ast" "go/printer" + stdtypes "go/types" "io" "github.com/swipe-io/swipe/v2/internal/importer" @@ -14,3 +15,23 @@ func WriteAST(w io.Writer, i *importer.Importer, node ast.Node) { panic(err) } } + +func isNumeric(kind stdtypes.BasicKind) bool { + switch kind { + default: + return false + case stdtypes.Uint, + stdtypes.Uint8, + stdtypes.Uint16, + stdtypes.Uint32, + stdtypes.Uint64, + stdtypes.Int, + stdtypes.Int8, + stdtypes.Int16, + stdtypes.Int32, + stdtypes.Int64, + stdtypes.Float32, + stdtypes.Float64: + return true + } +} diff --git a/swipe.go b/swipe.go index a3a05573..62222fe2 100644 --- a/swipe.go +++ b/swipe.go @@ -97,21 +97,21 @@ func Build(Option) { // flag - name of flag, enable as the console flag. // // desc - description for String function. -func ConfigEnv(optionsStruct interface{}) Option { +func ConfigEnv(optionsStruct interface{}, opts ...ConfigEnvOption) Option { return "implementation not generated, run swipe" } -func ConfigEnvFuncName(name string) Option { +func ConfigEnvFuncName(name string) ConfigEnvOption { return "implementation not generated, run swipe" } // ConfigEnvDocEnable enable markdown doc generate. -func ConfigEnvDocEnable() Option { +func ConfigEnvDocEnable() ConfigEnvOption { return "implementation not generated, run swipe" } // ConfigEnvDocOutput output path markdown doc generate. -func ConfigEnvDocOutput(output string) Option { +func ConfigEnvDocOutput(output string) ConfigEnvOption { return "implementation not generated, run swipe" } From 33744ba41fe6ee1b104337e2aa9db86d6cbbdcd3 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 1 Nov 2020 17:38:58 +0300 Subject: [PATCH 080/293] refactor: change {LogError () string} to {LogError () error} --- internal/interface/generator/logging.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index c17249f6..ef16c99a 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -87,7 +87,7 @@ func (g *logging) Process(ctx context.Context) error { if m.ReturnErr != nil { results = append(results, "", "error") - logParams = append(logParams, strconv.Quote("err"), "errStr") + logParams = append(logParams, strconv.Quote("err"), "logErr") } g.WriteFunc(m.Name, "s *"+name, params, results, func() { @@ -109,10 +109,10 @@ func (g *logging) Process(ctx context.Context) error { if mopt.LoggingEnable { if len(logParams) > 0 { g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - g.W("errStr := err.Error()\n") + g.W("logErr := err\n") if m.ReturnErr != nil { - g.W("if le, ok := err.(interface{LogError() string}); ok {\n") - g.W("errStr = le.LogError()\n") + g.W("if le, ok := err.(interface{LogError() error}); ok {\n") + g.W("logErr = le.LogError()\n") g.W("}\n") } g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) From 3f6002454d78d38d31512487f00f45dc9d200d92 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 1 Nov 2020 17:39:40 +0300 Subject: [PATCH 081/293] test: update fixtures --- fixtures/ConfigRequiredSuccess/app/config.go | 25 ++++++++++++++++ .../app/config_doc_gen.md | 29 ++++++++++++++++++ fixtures/ConfigRequiredSuccess/app/swipe.go | 15 ++++++++++ .../app/config.go | 24 +++++++++++++++ .../app/config_doc_gen.md | 28 +++++++++++++++++ .../ConfigRequiredUseZeroSuccess/app/swipe.go | 15 ++++++++++ fixtures/ConfigSuccess/app/config.go | 22 ++++++++++++-- fixtures/ConfigSuccess/app/config_doc_gen.md | 30 +++++++++++++++++++ fixtures/ConfigSuccess/app/swipe.go | 4 ++- fixtures/ConfigUseZeroSuccess/app/config.go | 24 +++++++++++++++ .../app/config_doc_gen.md | 28 +++++++++++++++++ fixtures/ConfigUseZeroSuccess/app/swipe.go | 15 ++++++++++ .../app/openapi_rest_gen.json | 2 +- .../app/openapi_rest_gen.json | 2 +- 14 files changed, 258 insertions(+), 5 deletions(-) create mode 100644 fixtures/ConfigRequiredSuccess/app/config.go create mode 100755 fixtures/ConfigRequiredSuccess/app/config_doc_gen.md create mode 100644 fixtures/ConfigRequiredSuccess/app/swipe.go create mode 100644 fixtures/ConfigRequiredUseZeroSuccess/app/config.go create mode 100755 fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md create mode 100644 fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go create mode 100755 fixtures/ConfigSuccess/app/config_doc_gen.md create mode 100644 fixtures/ConfigUseZeroSuccess/app/config.go create mode 100755 fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md create mode 100644 fixtures/ConfigUseZeroSuccess/app/swipe.go diff --git a/fixtures/ConfigRequiredSuccess/app/config.go b/fixtures/ConfigRequiredSuccess/app/config.go new file mode 100644 index 00000000..216f4830 --- /dev/null +++ b/fixtures/ConfigRequiredSuccess/app/config.go @@ -0,0 +1,25 @@ +package app + +import "time" + +type Config struct { + FldDurationReq time.Duration `env:",required,desc:Test duration required description"` + FldTimeReq time.Time `env:",required,desc:Test time required description"` + FldStringReq string `env:",required,desc:Test string required description"` + FldBoolReq bool `env:",required,desc:Test bool required description"` + FldIntReq int `env:",required,desc:Test int required description"` + FldInt8Req int8 `env:",required,desc:Test int8 required description"` + FldInt16Req int16 `env:",required,desc:Test int16 required description"` + FldInt32Req int32 `env:",required,desc:Test int32 required description"` + FldInt64Req int64 `env:",required,desc:Test int64 required description"` + FldUIntReq uint `env:",required,desc:Test uint required description"` + FldUInt8Req uint8 `env:",required,desc:Test uint8 required description"` + FldUInt16Req uint16 `env:",required,desc:Test uint16 required description"` + FldUInt32Req uint32 `env:",required,desc:Test uint32 required description"` + FldUInt64Req uint64 `env:",required,desc:Test uint64 required description"` + FldFloat64Req float64 `env:",required,desc:Test int required description"` + FldFloat32Req float32 `env:",required,desc:Test int required description"` + FldStringsReq []string `env:",required,desc:Test []string required description"` + FldMapReq map[string]string `env:",required,desc:Test map[string]string required description"` + FldMapIntReq map[string]int `env:",required,desc:Test map[string]int required description"` +} diff --git a/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..26ce930b --- /dev/null +++ b/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md @@ -0,0 +1,29 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| +|FLD_TIME_REQ|time.Time|Test time required description|yes|no| +|FLD_STRING_REQ|string|Test string required description|yes|no| +|FLD_BOOL_REQ|bool|Test bool required description|yes|no| +|FLD_INT_REQ|int|Test int required description|yes|no| +|FLD_INT8_REQ|int8|Test int8 required description|yes|no| +|FLD_INT16_REQ|int16|Test int16 required description|yes|no| +|FLD_INT32_REQ|int32|Test int32 required description|yes|no| +|FLD_INT64_REQ|int64|Test int64 required description|yes|no| +|FLD_U_INT_REQ|uint|Test uint required description|yes|no| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| +|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigRequiredSuccess/app/swipe.go b/fixtures/ConfigRequiredSuccess/app/swipe.go new file mode 100644 index 00000000..ada9d9ab --- /dev/null +++ b/fixtures/ConfigRequiredSuccess/app/swipe.go @@ -0,0 +1,15 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.ConfigEnv( + &Config{}, + swipe.ConfigEnvDocEnable(), + swipe.ConfigEnvDocOutput("./"), + ), + ) +} diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/config.go b/fixtures/ConfigRequiredUseZeroSuccess/app/config.go new file mode 100644 index 00000000..40e1d4dc --- /dev/null +++ b/fixtures/ConfigRequiredUseZeroSuccess/app/config.go @@ -0,0 +1,24 @@ +package app + +import "time" + +type Config struct { + FldDurationReq time.Duration `env:",required,use_zero,desc:Test duration required description"` + FldTimeReq time.Time `env:",required,use_zero,desc:Test time required description"` + FldStringReq string `env:",required,use_zero,desc:Test string required description"` + FldBoolReq bool `env:",required,use_zero,desc:Test bool required description"` + FldIntReq int `env:",required,use_zero,desc:Test int required description"` + FldInt8Req int8 `env:",required,use_zero,desc:Test int8 required description"` + FldInt16Req int16 `env:",required,use_zero,desc:Test int16 required description"` + FldInt32Req int32 `env:",required,use_zero,desc:Test int32 required description"` + FldInt64Req int64 `env:",required,use_zero,desc:Test int64 required description"` + FldUIntReq uint `env:",required,use_zero,desc:Test uint required description"` + FldUInt8Req uint8 `env:",required,use_zero,desc:Test uint8 required description"` + FldUInt16Req uint16 `env:",required,use_zero,desc:Test uint16 required description"` + FldUInt32Req uint32 `env:",required,use_zero,desc:Test uint32 required description"` + FldUInt64Req uint64 `env:",required,use_zero,desc:Test uint64 required description"` + FldFloat64Req float64 `env:",required,use_zero,desc:Test int required description"` + FldFloat32Req float32 `env:",required,use_zero,desc:Test int required description"` + FldStringsReq []string `env:",required,use_zero,desc:Test []string required description"` + FldMapReq map[string]string `env:",required,use_zero,desc:Test map[string]string required description"` +} diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..e03115a9 --- /dev/null +++ b/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| +|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| +|FLD_STRING_REQ|string|Test string required description|yes|yes| +|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| +|FLD_INT_REQ|int|Test int required description|yes|yes| +|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| +|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| +|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| +|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| +|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go b/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go new file mode 100644 index 00000000..ada9d9ab --- /dev/null +++ b/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go @@ -0,0 +1,15 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.ConfigEnv( + &Config{}, + swipe.ConfigEnvDocEnable(), + swipe.ConfigEnvDocOutput("./"), + ), + ) +} diff --git a/fixtures/ConfigSuccess/app/config.go b/fixtures/ConfigSuccess/app/config.go index 8e9ef288..6655dd54 100644 --- a/fixtures/ConfigSuccess/app/config.go +++ b/fixtures/ConfigSuccess/app/config.go @@ -3,6 +3,24 @@ package app import "time" type Config struct { - Name string - Dur time.Duration + FldDuration time.Duration `env:",desc:Test duration required description"` + FldTime time.Time `env:",desc:Test time required description"` + FldString string `env:",desc:Test string required description"` + FldBool bool `env:",desc:Test bool required description"` + FldInt int `env:",desc:Test int required description"` + FldInt8 int8 `env:",desc:Test int8 required description"` + FldInt16 int16 `env:",desc:Test int16 required description"` + FldInt32 int32 `env:",desc:Test int32 required description"` + FldInt64 int64 `env:",desc:Test int64 required description"` + FldUInt uint `env:",desc:Test uint required description"` + FldUInt8 uint8 `env:",desc:Test uint8 required description"` + FldUInt16 uint16 `env:",desc:Test uint16 required description"` + FldUInt32 uint32 `env:",desc:Test uint32 required description"` + FldUInt64 uint64 `env:",desc:Test uint64 required description"` + FldFloat64 float64 `env:",desc:Test int required description"` + FldFloat32 float32 `env:",desc:Test int required description"` + FldStrings []string `env:",desc:Test []string required description"` + FldMap map[string]string `env:",desc:Test map[string]string required description"` + ID3Ver string `env:",desc:Test number env name required description"` + TestNumber123 string `env:",desc:Test number env name required description"` } diff --git a/fixtures/ConfigSuccess/app/config_doc_gen.md b/fixtures/ConfigSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..79abf177 --- /dev/null +++ b/fixtures/ConfigSuccess/app/config_doc_gen.md @@ -0,0 +1,30 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION|time.Duration|Test duration required description|no|no| +|FLD_TIME|time.Time|Test time required description|no|no| +|FLD_STRING|string|Test string required description|no|no| +|FLD_BOOL|bool|Test bool required description|no|no| +|FLD_INT|int|Test int required description|no|no| +|FLD_INT8|int8|Test int8 required description|no|no| +|FLD_INT16|int16|Test int16 required description|no|no| +|FLD_INT32|int32|Test int32 required description|no|no| +|FLD_INT64|int64|Test int64 required description|no|no| +|FLD_U_INT|uint|Test uint required description|no|no| +|FLD_U_INT8|uint8|Test uint8 required description|no|no| +|FLD_U_INT16|uint16|Test uint16 required description|no|no| +|FLD_U_INT32|uint32|Test uint32 required description|no|no| +|FLD_U_INT64|uint64|Test uint64 required description|no|no| +|FLD_FLOAT64|float64|Test int required description|no|no| +|FLD_FLOAT32|float32|Test int required description|no|no| +|FLD_STRINGS|[]string|Test []string required description|no|no| +|FLD_MAP|map[string]string|Test map[string]string required description|no|no| +|ID3_VER|string|Test number env name required description|no|no| +|TEST_NUMBER123|string|Test number env name required description|no|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigSuccess/app/swipe.go b/fixtures/ConfigSuccess/app/swipe.go index fbab9d13..ada9d9ab 100644 --- a/fixtures/ConfigSuccess/app/swipe.go +++ b/fixtures/ConfigSuccess/app/swipe.go @@ -7,7 +7,9 @@ import "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( swipe.ConfigEnv( - &Config{Name: "test"}, + &Config{}, + swipe.ConfigEnvDocEnable(), + swipe.ConfigEnvDocOutput("./"), ), ) } diff --git a/fixtures/ConfigUseZeroSuccess/app/config.go b/fixtures/ConfigUseZeroSuccess/app/config.go new file mode 100644 index 00000000..ab634365 --- /dev/null +++ b/fixtures/ConfigUseZeroSuccess/app/config.go @@ -0,0 +1,24 @@ +package app + +import "time" + +type Config struct { + FldDurationReq time.Duration `env:",use_zero,desc:Test duration required description"` + FldTimeReq time.Time `env:",use_zero,desc:Test time required description"` + FldStringReq string `env:",use_zero,desc:Test string required description"` + FldBoolReq bool `env:",use_zero,desc:Test bool required description"` + FldIntReq int `env:",use_zero,desc:Test int required description"` + FldInt8Req int8 `env:",use_zero,desc:Test int8 required description"` + FldInt16Req int16 `env:",use_zero,desc:Test int16 required description"` + FldInt32Req int32 `env:",use_zero,desc:Test int32 required description"` + FldInt64Req int64 `env:",use_zero,desc:Test int64 required description"` + FldUIntReq uint `env:",use_zero,desc:Test uint required description"` + FldUInt8Req uint8 `env:",use_zero,desc:Test uint8 required description"` + FldUInt16Req uint16 `env:",use_zero,desc:Test uint16 required description"` + FldUInt32Req uint32 `env:",use_zero,desc:Test uint32 required description"` + FldUInt64Req uint64 `env:",use_zero,desc:Test uint64 required description"` + FldFloat64Req float64 `env:",use_zero,desc:Test int required description"` + FldFloat32Req float32 `env:",use_zero,desc:Test int required description"` + FldStringsReq []string `env:",use_zero,desc:Test []string required description"` + FldMapReq map[string]string `env:",use_zero,desc:Test map[string]string required description"` +} diff --git a/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..60eb6078 --- /dev/null +++ b/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| +|FLD_TIME_REQ|time.Time|Test time required description|no|yes| +|FLD_STRING_REQ|string|Test string required description|no|yes| +|FLD_BOOL_REQ|bool|Test bool required description|no|yes| +|FLD_INT_REQ|int|Test int required description|no|yes| +|FLD_INT8_REQ|int8|Test int8 required description|no|yes| +|FLD_INT16_REQ|int16|Test int16 required description|no|yes| +|FLD_INT32_REQ|int32|Test int32 required description|no|yes| +|FLD_INT64_REQ|int64|Test int64 required description|no|yes| +|FLD_U_INT_REQ|uint|Test uint required description|no|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigUseZeroSuccess/app/swipe.go b/fixtures/ConfigUseZeroSuccess/app/swipe.go new file mode 100644 index 00000000..ada9d9ab --- /dev/null +++ b/fixtures/ConfigUseZeroSuccess/app/swipe.go @@ -0,0 +1,15 @@ +//+build swipe + +package app + +import "github.com/swipe-io/swipe/v2" + +func Swipe() { + swipe.Build( + swipe.ConfigEnv( + &Config{}, + swipe.ConfigEnvDocEnable(), + swipe.ConfigEnvDocOutput("./"), + ), + ) +} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 45386864..6f2420a1 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method-2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index 20d1d4a8..b1680ca1 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} From 0e498907a692ea9924101268ae403266374c5939 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 1 Nov 2020 17:44:37 +0300 Subject: [PATCH 082/293] fix: generating method errors for REST in openapi documentation --- internal/interface/generator/openapi.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index eb0fda9a..3216e86d 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -157,7 +157,7 @@ func getOpenapiJSONRPCErrorSchemas() openapi.Schemas { } } -func getOpenapiRestErrorSchema() *openapi.Schema { +func getOpenapiRESTErrorSchema() *openapi.Schema { return &openapi.Schema{ Type: "object", Properties: openapi.Properties{ @@ -213,7 +213,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { if g.options.JSONRPCEnable() { swg.Components.Schemas = getOpenapiJSONRPCErrorSchemas() } else { - swg.Components.Schemas["Error"] = getOpenapiRestErrorSchema() + swg.Components.Schemas["Error"] = getOpenapiRESTErrorSchema() } for _, key := range g.options.ErrorKeys() { ei := g.options.Error(key) @@ -319,6 +319,20 @@ func (g *openapiDoc) Process(ctx context.Context) error { } } pathStr = path.Join(svcPrefix, "/", pathStr) + + for _, ei := range m.Errors { + codeStr := strconv.FormatInt(ei.Code, 10) + o.Responses[codeStr] = openapi.Response{ + Description: ei.Named.Obj().Name(), + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/" + ei.Named.Obj().Name(), + }, + }, + }, + } + } } if g.options.Interfaces().Len() > 1 { From 02489221181835958e9c636dabc66984799eea49 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 00:41:43 +0300 Subject: [PATCH 083/293] feat: added fix-comment command --- cmd/swipe/main.go | 54 +++++++++- internal/astloader/astloader.go | 14 --- internal/fixcomment/fix_comment.go | 119 +++++++++++++++++++++++ internal/interface/frame/golang_frame.go | 1 - 4 files changed, 168 insertions(+), 20 deletions(-) create mode 100644 internal/fixcomment/fix_comment.go diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 90d7f272..c5717e4c 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -13,6 +13,8 @@ import ( "strings" "time" + "github.com/swipe-io/swipe/v2/internal/fixcomment" + "github.com/swipe-io/swipe/v2" "github.com/google/subcommands" @@ -45,6 +47,7 @@ func main() { subcommands.Register(subcommands.HelpCommand(), "") subcommands.Register(&genCmd{}, "") subcommands.Register(&genTplCmd{}, "") + subcommands.Register(&fixComment{}, "") flag.Parse() @@ -52,11 +55,12 @@ func main() { log.SetOutput(os.Stderr) allCmds := map[string]bool{ - "commands": true, - "gen-tpl": true, - "help": true, - "flags": true, - "gen": true, + "commands": true, + "gen-tpl": true, + "help": true, + "flags": true, + "gen": true, + "fix-comment": true, } log.Printf("%s %s", color.LightBlue.Render("Swipe"), color.Yellow.Render(swipe.Version)) @@ -299,6 +303,46 @@ func (cmd *genTplCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...inte return subcommands.ExitSuccess } +type fixComment struct { +} + +func (c *fixComment) Name() string { + return "fix-comment" +} + +func (c *fixComment) Synopsis() string { + return "" +} + +func (c *fixComment) Usage() string { + return "" +} + +func (c *fixComment) SetFlags(set *flag.FlagSet) { + +} + +func (c *fixComment) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { + wd, err := os.Getwd() + if err != nil { + log.Println(colorFail("failed to get working directory: "), colorFail(err)) + return subcommands.ExitFailure + } + fixComment := fixcomment.NewFixComment(wd, os.Environ(), packages(f)) + fixes, err := fixComment.Execute() + if err != nil { + log.Println(colorFail("failed to fix comments: "), colorFail(err)) + return subcommands.ExitFailure + } + for _, fix := range fixes { + err := ioutil.WriteFile(fix.Filepath, fix.Content, 0755) + if err == nil { + log.Printf("wrote %s\n", colorSuccess(fix.Filepath)) + } + } + return subcommands.ExitSuccess +} + func packages(f *flag.FlagSet) []string { pkgs := f.Args() if len(pkgs) == 0 { diff --git a/internal/astloader/astloader.go b/internal/astloader/astloader.go index 589f8cd5..7094aaa0 100644 --- a/internal/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -250,32 +250,18 @@ func visitBlockStmt(p *packages.Package, stmt ast.Stmt) (values []stdtypes.TypeA switch v := stmt.(type) { case *ast.SelectStmt: return visitBlockStmts(p, v.Body.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.RangeStmt: return visitBlockStmts(p, v.Body.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.ForStmt: return visitBlockStmts(p, v.Body.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.TypeSwitchStmt: return visitBlockStmts(p, v.Body.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.SwitchStmt: return visitBlockStmts(p, v.Body.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.IfStmt: return visitBlockStmts(p, v.Body.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.BlockStmt: return visitBlockStmts(p, v.List) - //values = append(values, otherValues...) - //objects = append(objects, otherObjects...) case *ast.ReturnStmt: for _, result := range v.Results { switch vv := result.(type) { diff --git a/internal/fixcomment/fix_comment.go b/internal/fixcomment/fix_comment.go new file mode 100644 index 00000000..3d5abaa8 --- /dev/null +++ b/internal/fixcomment/fix_comment.go @@ -0,0 +1,119 @@ +package fixcomment + +import ( + "bytes" + "context" + "go/ast" + "go/printer" + + "github.com/swipe-io/swipe/v2/internal/format" + + "golang.org/x/tools/go/packages" +) + +type FixData struct { + Filepath string + Content []byte +} + +type FixComment struct { + wd string + env, patterns []string +} + +func NewFixComment(wd string, env []string, patterns []string) *FixComment { + return &FixComment{wd: wd, env: env, patterns: patterns} +} + +func (fc *FixComment) Execute() (result []FixData, err error) { + cfg := &packages.Config{ + Context: context.TODO(), + Mode: packages.NeedDeps | packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypes | packages.NeedTypesSizes | packages.NeedImports | packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles, + Dir: fc.wd, + Env: fc.env, + } + escaped := make([]string, len(fc.patterns)) + for i := range fc.patterns { + escaped[i] = "pattern=" + fc.patterns[i] + } + pkgs, err := packages.Load(cfg, escaped...) + if err != nil { + return nil, err + } + + for _, pkg := range pkgs { + for _, syntax := range pkg.Syntax { + + var comments []*ast.CommentGroup + + ast.Inspect(syntax, func(node ast.Node) bool { + switch t := node.(type) { + case *ast.CommentGroup: + comments = append(comments, t) + case *ast.FuncDecl: + if t.Name.IsExported() && t.Doc.Text() == "" { + //fmt.Printf("exported function declaration without documentation found on line %d: %s\n", pkg.Fset.Position(t.Pos()).Line, t.Name.Name) + comment := &ast.Comment{ + Text: "// " + t.Name.Name + " ...", + Slash: t.Pos() - 1, + } + cg := &ast.CommentGroup{ + List: []*ast.Comment{comment}, + } + t.Doc = cg + } + case *ast.GenDecl: + if len(t.Specs) > 1 { + for _, spec := range t.Specs { + tp, ok := spec.(*ast.TypeSpec) + if ok && tp.Name.IsExported() && tp.Doc.Text() == "" { + if tp.Doc.Text() == "" { + //fmt.Printf("exported type declaration without documentation found on line %d: %s\n", pkg.Fset.Position(t.Pos()).Line, tp.Name.Name) + comment := &ast.Comment{ + Text: "// " + tp.Name.Name + " ...", + Slash: tp.Pos() - 1, + } + + cg := &ast.CommentGroup{ + List: []*ast.Comment{comment}, + } + tp.Doc = cg + } + } + } + } else if t.Doc.Text() == "" { + tp, ok := t.Specs[0].(*ast.TypeSpec) + if ok && tp.Name.IsExported() { + //fmt.Printf("exported type declaration without documentation found on line %d: %s\n", pkg.Fset.Position(t.Pos()).Line, tp.Name.Name) + comment := &ast.Comment{ + Text: "// " + tp.Name.Name + " ...", + Slash: t.Pos() - 1, + } + cg := &ast.CommentGroup{ + List: []*ast.Comment{comment}, + } + t.Doc = cg + } + } + } + return true + }) + + syntax.Comments = comments + buf := new(bytes.Buffer) + if err := printer.Fprint(buf, pkg.Fset, syntax); err != nil { + return nil, err + } + content, err := format.Source(buf.Bytes()) + if err != nil { + return nil, err + } + result = append(result, FixData{ + Filepath: pkg.Fset.File(syntax.Pos()).Name(), + Content: content, + }) + + } + } + return +} diff --git a/internal/interface/frame/golang_frame.go b/internal/interface/frame/golang_frame.go index 88299deb..5c0b5852 100644 --- a/internal/interface/frame/golang_frame.go +++ b/internal/interface/frame/golang_frame.go @@ -19,7 +19,6 @@ func (f *golangFrame) Frame(data []byte) ([]byte, error) { var buf bytes.Buffer buf.WriteString("//+build !swipe\n\n") buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") - buf.WriteString("//go:generate swipe\n") buf.WriteString("package ") buf.WriteString(f.pkgName) buf.WriteString("\n\n") From 65d2c8b4cc0bd185861455d89e296501fce54000 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 00:43:01 +0300 Subject: [PATCH 084/293] refactor: fix generate defaultErrorEncoder --- internal/interface/generator/rest_server.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 1f6d9bae..a33ffd17 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -307,9 +307,7 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j } else { g.W("w %s.ResponseWriter) {\n", httpPkg) } - - g.W("data, err := %s.Marshal(errorWrapper{Error: err.Error()})\n", jsonPkg) - g.W("if err != nil {\n") + g.W("if data, err := %s.Marshal(errorWrapper{Error: err.Error()}); err != nil {\n", jsonPkg) if g.options.UseFast() { g.W("w.SetBody([]byte(") } else { From b27edb46f7b2af79e282c45fad65af3edef2ac34 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 00:43:27 +0300 Subject: [PATCH 085/293] style: remove comment code --- internal/interface/generator/rest_server.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index a33ffd17..451b8927 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -285,22 +285,6 @@ func (g *restServer) Process(_ context.Context) error { } func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg string) { - //w.Header().Set("Content-Type", "application/json; charset=utf-8") - //if headerer, ok := err.(Headerer); ok { - // for k, values := range headerer.Headers() { - // for _, v := range values { - // w.Header().Add(k, v) - // } - // } - //} - //code := http.StatusInternalServerError - //if sc, ok := err.(StatusCoder); ok { - // code = sc.StatusCode() - //} - //w.WriteHeader(code) - //w.Write(body) - // - g.W("func defaultErrorEncoder(ctx %s.Context, err error, ", contextPkg) if g.options.UseFast() { g.W("w %s.RequestCtx) {\n", httpPkg) From 48196239b16f612e0a76f27849d10b249a285c15 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 00:46:24 +0300 Subject: [PATCH 086/293] refactor: fix generate defaultErrorEncoder --- internal/interface/generator/rest_server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 451b8927..00bae61b 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -291,7 +291,8 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j } else { g.W("w %s.ResponseWriter) {\n", httpPkg) } - g.W("if data, err := %s.Marshal(errorWrapper{Error: err.Error()}); err != nil {\n", jsonPkg) + g.W("data, merr := %s.Marshal(errorWrapper{Error: err.Error()})\n", jsonPkg) + g.W("if merr != nil {\n") if g.options.UseFast() { g.W("w.SetBody([]byte(") } else { From 37b3014528090322a80708d8c7d1f338d9693249 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 09:12:34 +0300 Subject: [PATCH 087/293] chore(release): 2.0.0-alpha.16 --- CHANGELOG.md | 45 ++++++++++++------- .../app/client_jsonrpc_gen.js | 2 +- .../app/client_jsonrpc_gen.js | 2 +- .../app/openapi_rest_gen.json | 2 +- swipe.go | 2 +- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a221086b..5f8de804 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ ## [Unreleased] + +## [v2.0.0-alpha.16] - 2020-11-02 +### Bug Fixes +- generating method errors for REST in openapi documentation +- generating the name of an environment variable containing a number, working with required, changing settings tags +- incorrect use of unwrap, added interface {LogError () error} instead +- REST error message is not wrapped in JSON object +- generate rest go client, excess newline + +### Features +- added fix-comment command +- remove version command + +### BREAKING CHANGE + +settings tags, all settings are now in the env tag, such as required, use_zero (do not check empty value when checking required), desc: , use_flag + + ## [v2.0.0-alpha.15] - 2020-10-28 ### Bug Fixes @@ -298,23 +316,16 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. -- Added generate enum constants for JSON RPC client. ### Features - Added command for generate CRUD service structure. - -## [v1.24.1] - 2020-07-28 + +## [v1.24.2] - 2020-07-28 ## [v1.24.3] - 2020-07-28 -### Bug Fixes -- Change enums JSON RPC client generate format. - - - -## [v1.24.2] - 2020-07-28 ## [v1.24.4] - 2020-07-28 @@ -323,6 +334,9 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. + + +## [v1.24.1] - 2020-07-28 ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -623,7 +637,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.15...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.16...HEAD +[v2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.15...v2.0.0-alpha.16 [v2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.14...v2.0.0-alpha.15 [v2.0.0-alpha.14]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.13...v2.0.0-alpha.14 [v2.0.0-alpha.13]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.12...v2.0.0-alpha.13 @@ -662,11 +677,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.1 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.3 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index bbbc928d..d250649c 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.15. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.16. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 317a06ef..acfa6c7c 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.15. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.16. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 6f2420a1..7fabe597 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/swipe.go b/swipe.go index 62222fe2..b710bd7c 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.15" +const Version = "v2.0.0-alpha.16" // A Option is an option for a Swipe. type Option string From 78f82061874266b34110487d976e443e49373fbe Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 18:51:38 +0300 Subject: [PATCH 088/293] fix: disable generate convert codes to errors for REST --- .../interface/generator/http_transport.go | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index c09fa571..f93baeb3 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -83,20 +83,22 @@ func (g *httpTransport) Process(ctx context.Context) error { g.WriteFunc("ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { g.W("switch code {\n") g.W("default:\nerr = &httpError{code: code}\n") - - for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key) - g.W("case %d:\n", e.Code) - pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) - if pkgName != "" { - pkgName += "." - } - newPrefix := "" - if e.IsPointer { - newPrefix = "&" + if g.options.JSONRPCEnable() { + for _, key := range g.options.ErrorKeys() { + e := g.options.Error(key) + g.W("case %d:\n", e.Code) + pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) + if pkgName != "" { + pkgName += "." + } + newPrefix := "" + if e.IsPointer { + newPrefix = "&" + } + g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) } - g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) } + g.W("}\n") if g.options.JSONRPCEnable() { g.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") From b17a2c92271092cfd7e5fc880945509d2bdcd3bd Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 18:53:58 +0300 Subject: [PATCH 089/293] feat: added data field in errorWrapper if error implement interface{ ErrorData() interface{} } --- internal/interface/generator/rest_server.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 00bae61b..5965312b 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -291,7 +291,13 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j } else { g.W("w %s.ResponseWriter) {\n", httpPkg) } - g.W("data, merr := %s.Marshal(errorWrapper{Error: err.Error()})\n", jsonPkg) + + g.W("var errData interface{}\n") + g.W("if e, ok := err.(interface{ ErrorData() interface{} }); ok {\n") + g.W("errData = e.ErrorData()\n") + g.W("}\n") + + g.W("data, merr := %s.Marshal(errorWrapper{Error: err.Error(), Data: errData})\n", jsonPkg) g.W("if merr != nil {\n") if g.options.UseFast() { g.W("w.SetBody([]byte(") @@ -340,6 +346,7 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string) { g.W("type errorWrapper struct {\n") g.W("Error string `json:\"error\"`\n") + g.W("Data interface{} `json:\"data, omitempty\"`\n") g.W("}\n") g.W("func encodeResponseHTTP(ctx %s.Context, ", contextPkg) @@ -360,6 +367,15 @@ func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string g.W("h.Set(\"Content-Iface\", \"application/json; charset=utf-8\")\n") + g.W("if response == nil {\n") + if g.options.UseFast() { + g.W("w.SetStatusCode(201)\n") + } else { + g.W("w.WriteHeader(201)\n") + } + g.W("return nil") + g.W("}\n") + g.W("data, err := %s.Marshal(response)\n", jsonPkg) g.W("if err != nil {\n") g.W("return err\n") From 31ba79f1b1c3d9a101b34831155b63824e5914db Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 21:47:37 +0300 Subject: [PATCH 090/293] fix: generate openapi JSON RPC method prefix --- internal/interface/generator/openapi.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 3216e86d..223badf2 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -275,14 +275,18 @@ func (g *openapiDoc) Process(ctx context.Context) error { methodComment = stdstrings.Replace(methodComment, m.Name, "", len(m.Name)) var prefix string - if g.options.JSONRPCEnable() { - prefix = strcase.ToLowerCamel(iface.Name()) - } else { - prefix = strcase.ToKebab(iface.Name()) - } - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() + + if g.options.Interfaces().Len() > 1 { + if g.options.JSONRPCEnable() { + prefix = strcase.ToLowerCamel(iface.Name()) + } else { + prefix = strcase.ToKebab(iface.Name()) + } + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() + } } + if g.options.JSONRPCEnable() { o = g.makeJSONRPCPath(m, iface, ntc, paramsComment) pathStr = "/" + strings.LcFirst(m.Name) @@ -462,9 +466,9 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service var prefix string if g.options.Interfaces().Len() > 1 { prefix = strcase.ToLowerCamel(iface.Name()) + "." - } - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() + "." + if iface.NameUnExport() != "" { + prefix = iface.NameUnExport() + "." + } } request := &openapi.Schema{ From 15fd6c79e207d70f3c19817737e2b7bf9c7c6fc8 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 23:44:42 +0300 Subject: [PATCH 091/293] fix: generate REST client default HTTP method use POST instead GET --- internal/interface/generator/rest_go_client.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 9ca6a9a1..590d2f09 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -112,11 +112,7 @@ func (g *restGoClient) Process(_ context.Context) error { httpMethod := mopt.MethodName if httpMethod == "" { - if len(m.Params) > 0 { - httpMethod = "POST" - } else { - httpMethod = "GET" - } + httpMethod = "GET" } pathStr := mopt.Path From 33d459b044314d4d0afe2d97dd5fc31f21b8fd4e Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 2 Nov 2020 23:49:56 +0300 Subject: [PATCH 092/293] refactor: json tag omitempty typo --- internal/interface/generator/rest_server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 5965312b..b01f4ba4 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -346,7 +346,7 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string) { g.W("type errorWrapper struct {\n") g.W("Error string `json:\"error\"`\n") - g.W("Data interface{} `json:\"data, omitempty\"`\n") + g.W("Data interface{} `json:\"data,omitempty\"`\n") g.W("}\n") g.W("func encodeResponseHTTP(ctx %s.Context, ", contextPkg) From f886eb9548cb27dd2259ac194cbb63f614afe6cf Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 3 Nov 2020 07:57:10 +0300 Subject: [PATCH 093/293] chore(release): 2.0.0-alpha.17 --- CHANGELOG.md | 29 ++++++++++++++----- Makefile | 6 ++++ fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- .../app/openapi_jsonrpc_gen.json | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTMulti/app/swipe.go | 12 ++++++++ fixtures/ServiceRESTSingle/app/README.md | 3 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/swipe.go | 12 ++++++++ homebrew-swipe | 2 +- .../interface/generator/rest_go_client.go | 6 ---- swipe.go | 2 +- 16 files changed, 66 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f8de804..09c99539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ ## [Unreleased] + +## [v2.0.0-alpha.17] - 2020-11-02 +### Bug Fixes +- generate REST client default HTTP method use POST instead GET +- generate openapi JSON RPC method prefix +- disable generate convert codes to errors for REST + +### Features +- added data field in errorWrapper if error implement interface{ ErrorData() interface{} } + + ## [v2.0.0-alpha.16] - 2020-11-02 ### Bug Fixes @@ -315,15 +326,11 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. -- Change enums JSON RPC client generate format. ### Features - Added command for generate CRUD service structure. - -## [v1.24.2] - 2020-07-28 - ## [v1.24.3] - 2020-07-28 @@ -332,6 +339,11 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ### Bug Fixes - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. + + + +## [v1.24.2] - 2020-07-28 +### Bug Fixes - Added generate enum constants for JSON RPC client. @@ -637,7 +649,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.16...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.17...HEAD +[v2.0.0-alpha.17]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.16...v2.0.0-alpha.17 [v2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.15...v2.0.0-alpha.16 [v2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.14...v2.0.0-alpha.15 [v2.0.0-alpha.14]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.13...v2.0.0-alpha.14 @@ -677,10 +690,10 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 [v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.3 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.4 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 diff --git a/Makefile b/Makefile index 47933ab0..d8d16b62 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,15 @@ VERSION = snapshot GHRFLAGS = +# Git current tag +GIT_TAG=$(shell git tag -l --contains HEAD) + .PHONY: build release default: build +fgo-build: + fgo -p releases -b homebrew-swipe build ${GIT_TAG} + build: goxc -d=releases -bc="linux,386 darwin" -pv=$(VERSION) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 79fea5e7..8c3f7f78 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) +[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) +, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.12) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index d250649c..f15fda60 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.16. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.17. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 2268326f..10c90005 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) +[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) +, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.12) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index acfa6c7c..f208a13a 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.16. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.17. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json index aebe3397..459107d3 100755 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["interfaceB.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 26194de5..3f3dd1a6 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) +[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) +, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.12) diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 7fabe597..14c2e9e5 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"get":{"tags":["B"],"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"get":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"get":{"tags":["B"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"get":{"tags":["B"],"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/swipe.go b/fixtures/ServiceRESTMulti/app/swipe.go index 4d70e911..8ee145eb 100644 --- a/fixtures/ServiceRESTMulti/app/swipe.go +++ b/fixtures/ServiceRESTMulti/app/swipe.go @@ -33,6 +33,18 @@ func Swipe() { swipe.RESTMethod(http.MethodPost), swipe.RESTQueryVars([]string{"cc", "cc"}), ), + swipe.MethodOptions(InterfaceB.Delete, + swipe.RESTMethod(http.MethodPost), + ), + swipe.MethodOptions(InterfaceB.GetAll, + swipe.RESTMethod(http.MethodPost), + ), + swipe.MethodOptions(InterfaceB.TestMethod, + swipe.RESTMethod(http.MethodPost), + ), + swipe.MethodOptions(InterfaceB.TestMethod2, + swipe.RESTMethod(http.MethodPost), + ), swipe.MethodDefaultOptions( swipe.Logging(false), swipe.Instrumenting(true), diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 111e3cfc..64640a9a 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) +[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) +, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.13) , [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.12) diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index b1680ca1..406dd47e 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"get":{"summary":"Delete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"get":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"get":{"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"get":{"summary":"TestMethod2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/fixtures/ServiceRESTSingle/app/swipe.go index b3486cd6..ef1c512e 100644 --- a/fixtures/ServiceRESTSingle/app/swipe.go +++ b/fixtures/ServiceRESTSingle/app/swipe.go @@ -35,6 +35,18 @@ func Swipe() { swipe.RESTHeaderVars([]string{"fname", "fname"}), swipe.Logging(true), ), + swipe.MethodOptions(InterfaceB.Delete, + swipe.RESTMethod(http.MethodPost), + ), + swipe.MethodOptions(InterfaceB.GetAll, + swipe.RESTMethod(http.MethodPost), + ), + swipe.MethodOptions(InterfaceB.TestMethod, + swipe.RESTMethod(http.MethodPost), + ), + swipe.MethodOptions(InterfaceB.TestMethod2, + swipe.RESTMethod(http.MethodPost), + ), swipe.MethodDefaultOptions( swipe.Logging(false), swipe.Instrumenting(true), diff --git a/homebrew-swipe b/homebrew-swipe index ccbcb073..bf2a13f5 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit ccbcb07339e5161363e5a6399d241346e17f127a +Subproject commit bf2a13f5a6c9a5f1a2a671c40880e02955076a03 diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 590d2f09..42bf4790 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -140,17 +140,11 @@ func (g *restGoClient) Process(_ context.Context) error { regexp = ":" + regexp } pathStr = stdstrings.Replace(pathStr, "{"+p.Name()+regexp+"}", "%s", -1) - pathVars = append(pathVars, p) - //pathVars = append(pathVars, g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) } else if _, ok := mopt.QueryVars[p.Name()]; ok { - queryVars = append(queryVars, p) - - //queryVars = append(queryVars, strconv.Quote(qName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) } else if _, ok := mopt.HeaderVars[p.Name()]; ok { headerVars = append(headerVars, p) - //headerVars = append(headerVars, strconv.Quote(hName), g.GetFormatType(g.i.Import, "req."+strings.UcFirst(p.Name()), p)) } } diff --git a/swipe.go b/swipe.go index b710bd7c..fda03e75 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.16" +const Version = "v2.0.0-alpha.17" // A Option is an option for a Swipe. type Option string From 70df1472fac5184016c4e75506f012caa4ff1458 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 3 Nov 2020 12:35:35 +0300 Subject: [PATCH 094/293] fix: binding comments to method and structure fields --- homebrew-swipe | 2 +- internal/astloader/astloader.go | 39 ++++++++++------- internal/interface/finder/finder.go | 2 +- internal/interface/gateway/service.go | 9 ++-- internal/interface/generator/jsonrpc_doc.go | 23 +++++----- internal/interface/generator/openapi.go | 48 +++++++++++++-------- internal/interface/generator/rest_server.go | 33 +++++++------- internal/interface/processor/service.go | 28 ++++++------ internal/interface/registry/processor.go | 4 +- 9 files changed, 103 insertions(+), 85 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index bf2a13f5..036ce634 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit bf2a13f5a6c9a5f1a2a671c40880e02955076a03 +Subproject commit 036ce634ea20235d2b1778498109e74c59630eae diff --git a/internal/astloader/astloader.go b/internal/astloader/astloader.go index 7094aaa0..3fe3baec 100644 --- a/internal/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -25,12 +25,13 @@ type nodeInfo struct { } type Data struct { - WorkDir string - RootPkgPath string - CommentMaps *typeutil.Map - Pkgs []*packages.Package - GraphTypes *graph.Graph - Enums *typeutil.Map + WorkDir string + RootPkgPath string + CommentFuncs map[string][]string + CommentFields map[string]map[string]string + Pkgs []*packages.Package + GraphTypes *graph.Graph + Enums *typeutil.Map } type Loader struct { @@ -57,11 +58,12 @@ func (l *Loader) Process() (data *Data, errs []error) { err error ) data = &Data{ - WorkDir: l.wd, - RootPkgPath: strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1], - CommentMaps: new(typeutil.Map), - GraphTypes: graph.NewGraph(), - Enums: new(typeutil.Map), + WorkDir: l.wd, + RootPkgPath: strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1], + CommentFuncs: map[string][]string{}, + CommentFields: map[string]map[string]string{}, + GraphTypes: graph.NewGraph(), + Enums: new(typeutil.Map), } cfg := &packages.Config{ Context: l.ctx, @@ -192,9 +194,9 @@ func (l *Loader) Process() (data *Data, errs []error) { } } types.Inspect(data.Pkgs, func(p *packages.Package, n ast.Node) bool { - if st, ok := n.(*ast.StructType); ok { - t := p.TypesInfo.TypeOf(st) - if t != nil { + if ts, ok := n.(*ast.TypeSpec); ok { + obj := p.TypesInfo.ObjectOf(ts.Name) + if st, ok := ts.Type.(*ast.StructType); ok { comments := map[string]string{} for _, field := range st.Fields.List { if field.Comment != nil { @@ -204,7 +206,9 @@ func (l *Loader) Process() (data *Data, errs []error) { } } } - data.CommentMaps.Set(t, comments) + } + if len(comments) > 0 { + data.CommentFields[obj.String()] = comments } } } else if spec, ok := n.(*ast.Field); ok { @@ -222,7 +226,10 @@ func (l *Loader) Process() (data *Data, errs []error) { } } if len(comments) > 0 { - data.CommentMaps.Set(t, comments) + for _, name := range spec.Names { + obj := p.TypesInfo.ObjectOf(name) + data.CommentFuncs[obj.String()] = comments + } } } } diff --git a/internal/interface/finder/finder.go b/internal/interface/finder/finder.go index 7f3aa5e0..61e689fd 100644 --- a/internal/interface/finder/finder.go +++ b/internal/interface/finder/finder.go @@ -30,7 +30,7 @@ func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, *mo } for _, resultOption := range o.Options { if resultOption.Option.Name == "Service" { - sg, err := ig.NewServiceGateway(resultOption.Pkg, resultOption.Option, o.Data.GraphTypes, o.Data.Enums) + sg, err := ig.NewServiceGateway(resultOption.Pkg, resultOption.Option, o.Data.GraphTypes, o.Data.CommentFuncs) if err != nil { return nil, nil, []error{err} } diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 4f50082e..337728c0 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -28,7 +28,7 @@ type serviceGateway struct { transportType model.Transport useFast bool graphTypes *graph.Graph - commentMap *typeutil.Map + commentFuncs map[string][]string methodOptions map[string]model.MethodOption defaultMethodOptions model.MethodOption clientsEnable []string @@ -246,7 +246,8 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] m := ifaceType.Method(i) sig := m.Type().(*stdtypes.Signature) - comments, _ := g.commentMap.At(m.Type()).([]string) + + comments, _ := g.commentFuncs[m.String()] lcName := strings.LcFirst(m.Name()) @@ -708,12 +709,12 @@ func NewServiceGateway( pkg *packages.Package, o *option.Option, graphTypes *graph.Graph, - commentMap *typeutil.Map, + commentFuncs map[string][]string, ) (gateway.ServiceGateway, error) { g := &serviceGateway{ pkg: pkg, graphTypes: graphTypes, - commentMap: commentMap, + commentFuncs: commentFuncs, methodOptions: map[string]model.MethodOption{}, openapiMethodTags: map[string][]string{}, errors: map[uint32]*model.HTTPError{}, diff --git a/internal/interface/generator/jsonrpc_doc.go b/internal/interface/generator/jsonrpc_doc.go index 4d96aefd..1fe765aa 100644 --- a/internal/interface/generator/jsonrpc_doc.go +++ b/internal/interface/generator/jsonrpc_doc.go @@ -36,11 +36,11 @@ type jsonrpcDocOptionsGateway interface { type jsonrpcDoc struct { writer.BaseWriter - options jsonrpcDocOptionsGateway - commentMap *typeutil.Map - enums *typeutil.Map - workDir string - outputDir string + options jsonrpcDocOptionsGateway + commentFields map[string]map[string]string + enums *typeutil.Map + workDir string + outputDir string } func (g *jsonrpcDoc) Prepare(ctx context.Context) error { @@ -183,7 +183,8 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { for _, named := range nameds { st := named.Obj().Type().Underlying().(*stdtypes.Struct) - comments, ok := g.commentMap.At(st).(map[string]string) + + comments, ok := g.commentFields[named.Obj().String()] if !ok { comments = map[string]string{} } @@ -327,14 +328,14 @@ func (g *jsonrpcDoc) getJSType(tpl stdtypes.Type) string { func NewJsonrpcDoc( options jsonrpcDocOptionsGateway, - commentMap *typeutil.Map, + commentFields map[string]map[string]string, enums *typeutil.Map, workDir string, ) generator.Generator { return &jsonrpcDoc{ - options: options, - commentMap: commentMap, - enums: enums, - workDir: workDir, + options: options, + commentFields: commentFields, + enums: enums, + workDir: workDir, } } diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 223badf2..45b6aaf8 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -608,8 +608,6 @@ func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.Named ntc.Visit(m.Results[0].Type()) responseSchema = &openapi.Schema{} iftypevisitor.OpenapiVisitor(responseSchema).Visit(m.Results[0].Type()) - } else { - responseSchema.Example = json.RawMessage("null") } if mopt.WrapResponse.Enable { @@ -620,29 +618,41 @@ func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.Named } } - o := &openapi.Operation{ - Summary: m.Name, - Responses: map[string]openapi.Response{ - "200": { - Description: "OK", - Content: openapi.Content{ - "application/json": { - Schema: responseSchema, - }, + responses := map[string]openapi.Response{} + + if len(m.Results) == 0 { + responses["201"] = openapi.Response{ + Description: "Created", + Content: openapi.Content{ + "text/plain": {}, + }, + } + } else { + responses["200"] = openapi.Response{ + Description: "OK", + Content: openapi.Content{ + "application/json": { + Schema: responseSchema, }, }, - "500": { - Description: "FAIL", - Content: openapi.Content{ - "application/json": { - Schema: &openapi.Schema{ - Ref: "#/components/schemas/Error", - }, - }, + } + } + + responses["500"] = openapi.Response{ + Description: "Internal Server Error", + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/Error", }, }, }, } + + o := &openapi.Operation{ + Summary: m.Name, + Responses: responses, + } for _, p := range m.Params { var in string if _, ok := mopt.PathVars[p.Name()]; ok { diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index b01f4ba4..6afe35c2 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -357,36 +357,35 @@ func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string g.W("w %s.ResponseWriter", httpPkg) } - g.W(", response interface{}) error {\n") - + g.W(", response interface{}) (err error) {\n") + g.W("contentType := \"application/json; charset=utf-8\"\n") + g.W("statusCode := 200\n") if g.options.UseFast() { g.W("h := w.Header\n") } else { g.W("h := w.Header()\n") } - - g.W("h.Set(\"Content-Iface\", \"application/json; charset=utf-8\")\n") - - g.W("if response == nil {\n") - if g.options.UseFast() { - g.W("w.SetStatusCode(201)\n") - } else { - g.W("w.WriteHeader(201)\n") - } - g.W("return nil") - g.W("}\n") - - g.W("data, err := %s.Marshal(response)\n", jsonPkg) + g.W("var data []byte\n") + g.W("if response != nil {\n") + g.W("data, err = %s.Marshal(response)\n", jsonPkg) g.W("if err != nil {\n") g.W("return err\n") g.W("}\n") - + g.W("} else {\n") + g.W("contentType = \"text/plain; charset=utf-8\"\n") + g.W("statusCode = 201\n") + g.W("}\n") + g.W("h.Set(\"Content-Type\", contentType)\n") + if g.options.UseFast() { + g.W("w.SetStatusCode(statusCode)\n") + } else { + g.W("w.WriteHeader(statusCode)\n") + } if g.options.UseFast() { g.W("w.SetBody(data)\n") } else { g.W("w.Write(data)\n") } - g.W("return nil\n") g.W("}\n\n") } diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index 15585d3d..edc42161 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -13,12 +13,12 @@ import ( ) type serviceProcessor struct { - sg gateway.ServiceGateway - gi *git.GIT - workDir string - comments *typeutil.Map - enums *typeutil.Map - pkg *packages.Package + sg gateway.ServiceGateway + gi *git.GIT + workDir string + commentFields map[string]map[string]string + enums *typeutil.Map + pkg *packages.Package } func (p *serviceProcessor) Pkg() *packages.Package { @@ -51,7 +51,7 @@ func (p *serviceProcessor) Generators() []ug.Generator { if p.sg.JSONRPCDocEnable() { generators = append(generators, generator.NewJsonrpcDoc( p.sg, - p.comments, + p.commentFields, p.enums, p.workDir, )) @@ -93,17 +93,17 @@ func (p *serviceProcessor) Generators() []ug.Generator { func NewService( sg gateway.ServiceGateway, gi *git.GIT, - comments *typeutil.Map, + commentFields map[string]map[string]string, enums *typeutil.Map, workDir string, pkg *packages.Package, ) processor.Processor { return &serviceProcessor{ - sg: sg, - gi: gi, - comments: comments, - enums: enums, - workDir: workDir, - pkg: pkg, + sg: sg, + gi: gi, + commentFields: commentFields, + enums: enums, + workDir: workDir, + pkg: pkg, } } diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go index 9ca3b972..69d4a3f4 100644 --- a/internal/interface/registry/processor.go +++ b/internal/interface/registry/processor.go @@ -28,14 +28,14 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader } return processor.NewGatewayProcessor(hg, o.Pkg), nil case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentMaps) + sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs) if err != nil { return nil, err } return processor.NewService( sg, gt, - data.CommentMaps, + data.CommentFields, data.Enums, data.WorkDir, o.Pkg, From e77fcc6d001f34bfd144b57326950739e9e2a7bd Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 3 Nov 2020 12:38:46 +0300 Subject: [PATCH 095/293] chore(release): 2.0.0-alpha.18 --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 ++- fixtures/ServiceRESTMulti/app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/README.md | 3 ++- fixtures/ServiceRESTSingle/app/openapi_rest_gen.json | 2 +- swipe.go | 2 +- 9 files changed, 13 insertions(+), 9 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 8c3f7f78..d261e4dd 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) +[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.17) +, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.13) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index f15fda60..6c2f9f31 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.17. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.18. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 10c90005..68539337 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) +[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.17) +, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.13) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index f208a13a..ae20fd5f 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.17. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.18. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 3f3dd1a6..20007ded 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) +[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.17) +, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.13) diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 14c2e9e5..2f1133a1 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 64640a9a..864f9629 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) +[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.17) +, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) , [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.13) diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index 406dd47e..8ab7fa35 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","example":null}}}},"500":{"description":"FAIL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/swipe.go b/swipe.go index fda03e75..08310c4c 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.17" +const Version = "v2.0.0-alpha.18" // A Option is an option for a Swipe. type Option string From f0570f7e28b089e6678db1621c09ff3c5d07d927 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 3 Nov 2020 12:51:31 +0300 Subject: [PATCH 096/293] refactor: update submodule --- homebrew-swipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homebrew-swipe b/homebrew-swipe index 036ce634..aeccb01b 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 036ce634ea20235d2b1778498109e74c59630eae +Subproject commit aeccb01be8a25b5b91c88349041addec0f721f4f From bffd44511a5d61f520f5c4d9086a5b7b439fed44 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 6 Nov 2020 12:42:56 +0300 Subject: [PATCH 097/293] feat: added DefaultErrorEncoder option for set server error encoder --- internal/interface/gateway/service.go | 9 ++++++- internal/interface/generator/rest_server.go | 29 ++++++++++++++------- internal/usecase/gateway/service.go | 2 ++ swipe.go | 5 ++++ 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 337728c0..e6d6be8f 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -51,6 +51,7 @@ type serviceGateway struct { hasher typeutil.Hasher appName string appID string + defaultErrorEncoder option.Value } func (g *serviceGateway) AppID() string { @@ -73,6 +74,10 @@ func (g *serviceGateway) UseFast() bool { return g.useFast } +func (g *serviceGateway) DefaultErrorEncoder() option.Value { + return g.defaultErrorEncoder +} + func (g *serviceGateway) MethodOption(m model.ServiceMethod) model.MethodOption { if sign, ok := m.T.(*stdtypes.Signature); ok && sign.Recv() != nil { ifaceName := stdtypes.TypeString(sign.Recv().Type(), func(p *stdtypes.Package) string { @@ -435,7 +440,9 @@ func (g *serviceGateway) load(o *option.Option) error { g.interfaces = append(g.interfaces, svc) } } - + if o, ok := o.At("DefaultErrorEncoder"); ok { + g.defaultErrorEncoder = o.Value + } if _, ok := o.At("HTTPServer"); ok { g.transportType = model.HTTPTransport } diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 6afe35c2..6c393c27 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -8,6 +8,8 @@ import ( "strconv" stdstrings "strings" + "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" @@ -24,6 +26,7 @@ type restServerOptionsGateway interface { Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption JSONRPCEnable() bool + DefaultErrorEncoder() option.Value } type restServer struct { @@ -55,7 +58,9 @@ func (g *restServer) Process(_ context.Context) error { httpPkg = g.i.Import("http", "net/http") } - g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) + if g.options.DefaultErrorEncoder().Expr() == nil { + g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) + } g.writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg) g.W("// MakeHandler%[1]s HTTP %[1]s Transport\n", g.options.Prefix()) @@ -80,7 +85,13 @@ func (g *restServer) Process(_ context.Context) error { g.W("opts := &serverOpts{}\n") g.W("for _, o := range options {\n o(opts)\n }\n") - g.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) + if g.options.DefaultErrorEncoder().Expr() != nil { + g.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(", kitHTTPPkg) + writer.WriteAST(g, g.i, g.options.DefaultErrorEncoder().Expr()) + g.W("))\n") + } else { + g.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) + } for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -285,6 +296,11 @@ func (g *restServer) Process(_ context.Context) error { } func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg string) { + g.W("type errorWrapper struct {\n") + g.W("Error string `json:\"error\"`\n") + g.W("Data interface{} `json:\"data,omitempty\"`\n") + g.W("}\n") + g.W("func defaultErrorEncoder(ctx %s.Context, err error, ", contextPkg) if g.options.UseFast() { g.W("w %s.RequestCtx) {\n", httpPkg) @@ -302,7 +318,7 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j if g.options.UseFast() { g.W("w.SetBody([]byte(") } else { - g.W("w.Write([]byte(") + g.W("_, _ = w.Write([]byte(") } g.W("%s))\n", strconv.Quote("unexpected error")) g.W("return\n") @@ -338,17 +354,12 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j g.W("w.SetBody(data)\n") } else { g.W("w.WriteHeader(code)\n") - g.W("w.Write(data)\n") + g.W("_, _ = w.Write(data)\n") } g.W("}\n\n") } func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string) { - g.W("type errorWrapper struct {\n") - g.W("Error string `json:\"error\"`\n") - g.W("Data interface{} `json:\"data,omitempty\"`\n") - g.W("}\n") - g.W("func encodeResponseHTTP(ctx %s.Context, ", contextPkg) if g.options.UseFast() { diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index 399c26f3..dd8c1569 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -3,6 +3,7 @@ package gateway import ( "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/openapi" + "github.com/swipe-io/swipe/v2/internal/option" ) type ServiceGateway interface { @@ -15,6 +16,7 @@ type ServiceGateway interface { UseFast() bool MethodOption(m model.ServiceMethod) model.MethodOption Prefix() string + DefaultErrorEncoder() option.Value ReadmeEnable() bool ReadmeOutput() string diff --git a/swipe.go b/swipe.go index 08310c4c..053dcfc5 100644 --- a/swipe.go +++ b/swipe.go @@ -230,6 +230,11 @@ func RESTQueryVars([]string) MethodOption { return "implementation not generated, run swipe" } +// DefaultErrorEncoder is responsible for encoding the server error. +func DefaultErrorEncoder(f interface{}) ServiceOption { + return "implementation not generated, run swipe" +} + // ServerEncodeResponseFunc sets the encoding function of the passed // response object to the response writer. func ServerEncodeResponseFunc(interface{}) MethodOption { From 1792f9e768e5487eebebea7914d325ff97227221 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 6 Nov 2020 12:50:33 +0300 Subject: [PATCH 098/293] chore(release): 2.0.0-alpha.19 --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 ++- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 ++- .../ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 ++- fixtures/ServiceRESTSingle/app/README.md | 3 ++- gen_test.go | 10 +++++++++- swipe.go | 2 +- 8 files changed, 20 insertions(+), 8 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index d261e4dd..3932b467 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.17) +[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.18) +, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 6c2f9f31..51646e64 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.18. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.19. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 68539337..36b8effc 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.17) +[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.18) +, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index ae20fd5f..e3a2e254 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.18. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.19. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 20007ded..76441186 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.17) +[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.18) +, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 864f9629..3ec7b7ec 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.17) +[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.18) +, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) , [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) diff --git a/gen_test.go b/gen_test.go index 4aef9db9..d32471bb 100644 --- a/gen_test.go +++ b/gen_test.go @@ -3,6 +3,7 @@ package swipe import ( "bytes" "flag" + "fmt" "io/ioutil" "os" "path/filepath" @@ -21,6 +22,7 @@ import ( ) var record = flag.Bool("record", false, "write expected result without running tests") +var onlyDiff = flag.Bool("only-diff", false, "show only diff") func newGeneratorExecutor() ue.GenerationExecutor { l := option.NewLoader() @@ -75,7 +77,13 @@ func TestSwipe(t *testing.T) { if !bytes.Equal(expectedContent, result.Content) { actual, expected := string(result.Content), string(expectedContent) diff := cmp.Diff(strings.Split(expected, "\n"), strings.Split(actual, "\n")) - t.Fatalf("swipe output differs from expected file %s.\n*** actual:\n%s\n\n*** expected:\n%s\n\n*** diff:\n%s", result.OutputPath, actual, expected, diff) + buf := new(bytes.Buffer) + buf.WriteString(fmt.Sprintf("swipe output differs from expected file %s.\n", result.OutputPath)) + if !*onlyDiff { + buf.WriteString(fmt.Sprintf("*** actual:\n%s\n\n*** expected:\n%s\n\n", actual, expected)) + } + buf.WriteString(fmt.Sprintf("*** diff:\n%s", diff)) + t.Fatal(buf.String()) } delete(test.expectedOutput, result.OutputPath) } diff --git a/swipe.go b/swipe.go index 053dcfc5..a9d900c1 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.18" +const Version = "v2.0.0-alpha.19" // A Option is an option for a Swipe. type Option string From 30f3453d590e030e3229d1891faf66e83bb65691 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 6 Nov 2020 12:54:51 +0300 Subject: [PATCH 099/293] ci: fix GIT_TAG --- Makefile | 2 +- homebrew-swipe | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d8d16b62..fdee722c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = snapshot GHRFLAGS = # Git current tag -GIT_TAG=$(shell git tag -l --contains HEAD) +GIT_TAG=$(shell git tag -l --contains HEAD | sed -e "s/^v//") .PHONY: build release diff --git a/homebrew-swipe b/homebrew-swipe index aeccb01b..49af236a 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit aeccb01be8a25b5b91c88349041addec0f721f4f +Subproject commit 49af236ad1305b010c702380c1bd19f4cae600f9 From 311cf8f3b50ebd89300f855f11e654975c08432e Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 9 Nov 2020 10:07:51 +0300 Subject: [PATCH 100/293] fix: a REST client was generated with request marshaling to the body without method parameters --- fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- fixtures/ServiceRESTMulti/app/README.md | 3 +- fixtures/ServiceRESTSingle/app/README.md | 3 +- .../app/openapi_rest_gen.json | 2 +- fixtures/ServiceRESTSingle/app/service.go | 1 + fixtures/ServiceRESTSingle/app/swipe.go | 3 ++ .../interface/generator/rest_go_client.go | 32 +++++++++++-------- 8 files changed, 31 insertions(+), 19 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 3932b467..fab1d2a5 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.18) +[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.19) +, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 36b8effc..3fd945a0 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.18) +[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.19) +, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 76441186..cdf9d9a2 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.18) +[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.19) +, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 3ec7b7ec..3c01c43c 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.18) +[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.19) +, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) , [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json index 8ab7fa35..ed06c2ac 100755 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/service.go b/fixtures/ServiceRESTSingle/app/service.go index b43a1d56..b8f4f46e 100644 --- a/fixtures/ServiceRESTSingle/app/service.go +++ b/fixtures/ServiceRESTSingle/app/service.go @@ -103,6 +103,7 @@ type InterfaceB interface { Delete(ctx context.Context, id uint) (a string, b string, err error) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error + Start(ctx context.Context) error } type serviceB struct { diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/fixtures/ServiceRESTSingle/app/swipe.go index ef1c512e..2342d63f 100644 --- a/fixtures/ServiceRESTSingle/app/swipe.go +++ b/fixtures/ServiceRESTSingle/app/swipe.go @@ -47,6 +47,9 @@ func Swipe() { swipe.MethodOptions(InterfaceB.TestMethod2, swipe.RESTMethod(http.MethodPost), ), + swipe.MethodOptions(InterfaceB.Start, + swipe.RESTMethod(http.MethodPost), + ), swipe.MethodDefaultOptions( swipe.Logging(false), swipe.Instrumenting(true), diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 42bf4790..84d95249 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -148,6 +148,8 @@ func (g *restGoClient) Process(_ context.Context) error { } } + remainingParams := len(m.Params) - (len(pathVars) + len(queryVars) + len(headerVars)) + g.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) if mopt.Expr != nil { writer.WriteAST(g, g.i, mopt.Expr) @@ -231,20 +233,22 @@ func (g *restGoClient) Process(_ context.Context) error { } switch stdstrings.ToUpper(httpMethod) { case "POST", "PUT", "PATCH": - jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - - g.W("data, err := %s.Marshal(req)\n", jsonPkg) - g.W("if err != nil {\n") - g.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) - g.W("}\n") - - if g.options.UseFast() { - g.W("r.SetBody(data)\n") - } else { - ioutilPkg := g.i.Import("ioutil", "io/ioutil") - bytesPkg := g.i.Import("bytes", "bytes") - - g.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + if remainingParams > 0 { + jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + + g.W("data, err := %s.Marshal(req)\n", jsonPkg) + g.W("if err != nil {\n") + g.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) + g.W("}\n") + + if g.options.UseFast() { + g.W("r.SetBody(data)\n") + } else { + ioutilPkg := g.i.Import("ioutil", "io/ioutil") + bytesPkg := g.i.Import("bytes", "bytes") + + g.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + } } } g.W("return nil\n") From 58529c60728fb2dec33f6bea3b9282c00a7624e8 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 9 Nov 2020 10:09:44 +0300 Subject: [PATCH 101/293] chore(release): 2.0.0-alpha.21 --- CHANGELOG.md | 44 ++++++++++++++----- Makefile | 8 +--- fixtures/ServiceJSONRPCMulti/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 3 +- .../app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceRESTMulti/app/README.md | 3 +- fixtures/ServiceRESTSingle/app/README.md | 3 +- homebrew-swipe | 2 +- swipe.go | 2 +- 10 files changed, 47 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09c99539..3d0e35ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,29 @@ ## [Unreleased] + +## [v2.0.0-alpha.21] - 2020-11-09 + + +## [v2.0.0-alpha.20] - 2020-11-09 +### Bug Fixes +- a REST client was generated with request marshaling to the body without method parameters + + + +## [v2.0.0-alpha.19] - 2020-11-06 +### Features +- added DefaultErrorEncoder option for set server error encoder + + + +## [v2.0.0-alpha.18] - 2020-11-03 +### Bug Fixes +- binding comments to method and structure fields + + -## [v2.0.0-alpha.17] - 2020-11-02 +## [v2.0.0-alpha.17] - 2020-11-03 ### Bug Fixes - generate REST client default HTTP method use POST instead GET - generate openapi JSON RPC method prefix @@ -326,11 +347,15 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. +- Change enums JSON RPC client generate format. ### Features - Added command for generate CRUD service structure. + +## [v1.24.2] - 2020-07-28 + ## [v1.24.3] - 2020-07-28 @@ -339,11 +364,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ### Bug Fixes - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - - - -## [v1.24.2] - 2020-07-28 -### Bug Fixes - Added generate enum constants for JSON RPC client. @@ -649,7 +669,11 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.17...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.21...HEAD +[v2.0.0-alpha.21]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.20...v2.0.0-alpha.21 +[v2.0.0-alpha.20]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.19...v2.0.0-alpha.20 +[v2.0.0-alpha.19]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.18...v2.0.0-alpha.19 +[v2.0.0-alpha.18]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.17...v2.0.0-alpha.18 [v2.0.0-alpha.17]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.16...v2.0.0-alpha.17 [v2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.15...v2.0.0-alpha.16 [v2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.14...v2.0.0-alpha.15 @@ -690,10 +714,10 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 [v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.3 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.4 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 diff --git a/Makefile b/Makefile index fdee722c..673de93b 100644 --- a/Makefile +++ b/Makefile @@ -21,10 +21,4 @@ chglog: check: go vet ./... - go test -v ./... - -#build: check - #go build -o swipe ./cmd/swipe -# -#install: build -# mv ./swipe ${GOPATH}/bin \ No newline at end of file + go test -v ./... \ No newline at end of file diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index fab1d2a5..9eaa07d8 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.19) +[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.20) +, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.19) , [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 51646e64..8f34e47a 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.19. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.21. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 3fd945a0..dfa3ab03 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.19) +[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.20) +, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.19) , [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index e3a2e254..ada76afe 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.19. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.21. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index cdf9d9a2..081d812e 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.19) +[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.20) +, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.19) , [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 3c01c43c..fd8f6e55 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,7 +29,8 @@ ToDo. ## Versions -[v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.19) +[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.20) +, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.19) , [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.18) , [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.17) , [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) diff --git a/homebrew-swipe b/homebrew-swipe index 49af236a..590ca53e 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 49af236ad1305b010c702380c1bd19f4cae600f9 +Subproject commit 590ca53e9e60a2ca6a2368ac020836cd1381689c diff --git a/swipe.go b/swipe.go index a9d900c1..3c5c22c4 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.19" +const Version = "v2.0.0-alpha.21" // A Option is an option for a Swipe. type Option string From fbb835c36c82f4e0bab8f30743c1bf374f3b2e8b Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 11 Nov 2020 09:41:16 +0300 Subject: [PATCH 102/293] fix: generating fmt imports when not in use --- internal/writer/golang_writer.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/writer/golang_writer.go b/internal/writer/golang_writer.go index 880d1433..562791f7 100644 --- a/internal/writer/golang_writer.go +++ b/internal/writer/golang_writer.go @@ -174,7 +174,6 @@ func (w *GoLangWriter) writeFormatBasicType(importFn func(string, string) string func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) string, name, assignId, valueId string, t *stdtypes.Basic, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { useCheckErr := true - fmtPkg := importFn("fmt", "fmt") tmpId := stdstrings.ToLower(name) + strings.UcFirst(t.String()) funcName := w.getConvertFuncName(t.Kind()) @@ -192,7 +191,7 @@ func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) strin errMsg := strconv.Quote(msgErrTemplate + ": %w") w.W("if err != nil {\n") if errSlice != "" { - w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, fmtPkg, errMsg) + w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, importFn("fmt", "fmt"), errMsg) } else { w.W("return ") if len(errRet) > 0 { From 73e492650f7c0a24bc598dcda3de044f0a18740a Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 19 Nov 2020 13:33:29 +0300 Subject: [PATCH 103/293] fix: logging for UUID type --- homebrew-swipe | 2 +- internal/interface/generator/logging.go | 4 ++- internal/interface/generator/utils.go | 36 +++++++++++++++++++------ 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index 590ca53e..e5de8266 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 590ca53e9e60a2ca6a2368ac020836cd1381689c +Subproject commit e5de8266898719d16b8670667ec0ffca8c07ccdf diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index ef16c99a..f7e65596 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -65,7 +65,9 @@ func (g *logging) Process(ctx context.Context) error { if m.ResultsNamed { logParams = append(logParams, makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Results...)...) } else { - logParams = append(logParams, strconv.Quote("result"), makeLogParam("result", m.Results[0].Type())) + if paramName := makeLogParam("result", m.Results[0].Type()); paramName != nil { + logParams = append(logParams, paramName...) + } } } diff --git a/internal/interface/generator/utils.go b/internal/interface/generator/utils.go index 6f090b3c..9fc2f9b7 100644 --- a/internal/interface/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -6,7 +6,6 @@ import ( "strings" "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/types" ) @@ -34,26 +33,34 @@ func makeLogParams(include, exclude map[string]struct{}, data ...*stdtypes.Var) continue } } - if logParam := makeLogParam(v.Name(), v.Type().Underlying()); logParam != "" { - result = append(result, strconv.Quote(v.Name()), logParam) + if logParam := makeLogParam(v.Name(), v.Type()); len(logParam) > 0 { + result = append(result, logParam...) } } return } -func makeLogParam(name string, t stdtypes.Type) string { +func makeLogParam(name string, t stdtypes.Type) []string { + quoteName := strconv.Quote(name) switch t := t.(type) { default: - return name + return []string{quoteName, name} + case *stdtypes.Struct: + return []string{quoteName, name} + case *stdtypes.Named: + if hasMethodString(t) { + return []string{quoteName, name + ".String()"} + } + return makeLogParam(name, t.Underlying()) case *stdtypes.Basic: if t.Kind() == stdtypes.Byte { - return "len(" + name + ")" + return []string{quoteName, "len(" + name + ")"} } - return name + return []string{quoteName, name} case *stdtypes.Pointer: return makeLogParam(name, t.Elem().Underlying()) case *stdtypes.Slice, *stdtypes.Array, *stdtypes.Map, *stdtypes.Chan: - return "len(" + name + ")" + return []string{quoteName, "len(" + name + ")"} } } @@ -113,3 +120,16 @@ func parseMethodComments(comments []string) (methodComment string, paramsComment } return } + +func hasMethodString(named *stdtypes.Named) bool { + for i := 0; i < named.NumMethods(); i++ { + m := named.Method(i) + if m.Name() == "String" { + sig := m.Type().(*stdtypes.Signature) + if sig.Params().Len() == 0 && sig.Results().Len() == 1 && stdtypes.TypeString(sig.Results().At(0).Type(), nil) == "string" { + return true + } + } + } + return false +} From b8b78c56de8f51a5ac7ae5069946193991bc5a1b Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 07:19:22 +0300 Subject: [PATCH 104/293] test: update fixtures --- fixtures/ServiceJSONRPCMulti/app/README.md | 87 ------------------- fixtures/ServiceJSONRPCSingle/app/README.md | 87 ------------------- .../app/client_jsonrpc_gen.js | 2 +- .../app/jsonrpc_doc_gen.md | 2 +- .../app/openapi_jsonrpc_gen.json | 2 +- fixtures/ServiceJSONRPCSingle/app/service.go | 4 +- fixtures/ServiceJSONRPCSingle/app/swipe.go | 5 ++ fixtures/ServiceRESTMulti/app/README.md | 87 ------------------- fixtures/ServiceRESTSingle/app/README.md | 87 ------------------- 9 files changed, 10 insertions(+), 353 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 9eaa07d8..00038582 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -29,90 +29,3 @@ ToDo. ## Versions -[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.20) -, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.19) -, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.18) -, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.17) -, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.16) -, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.15) -, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.14) -, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.13) -, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.12) -, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.11) -, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.10) -, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.9) -, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.8) -, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.7) -, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.6) -, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.5) -, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.4) -, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.3) -, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.2) -, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v2.0.0-alpha.1) -, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.7) -, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.6) -, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.5) -, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.4) -, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.3) -, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.2) -, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.1) -, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.26.0) -, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.12) -, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.11) -, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.10) -, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.9) -, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.8) -, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.7) -, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.6) -, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.5) -, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.4) -, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.3) -, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.2) -, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.1) -, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.25.0) -, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.7) -, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.6) -, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.5) -, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.4) -, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.3) -, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.2) -, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.1) -, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.24.0) -, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.23.0) -, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.4) -, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.3) -, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.2) -, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.1) -, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.22.0) -, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.21.0) -, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.20.1) -, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.14.0) -, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.4) -, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.3) -, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.2) -, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.1) -, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.13.0) -, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.12.1) -, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.12.0) -, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.11.4) -, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.11.2) -, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.11.0) -, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.10.0) -, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.9.0) -, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.8.0) -, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.7.2) -, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.6.0) -, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.3.0) -, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.2.2) -, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.5) -, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.4) -, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.3) -, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.2) -, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.1) -, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.1.0) -, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.5) -, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.4) -, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.3) -, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.2) -, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.1) -, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app/tree/v1.0.0) diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index dfa3ab03..00038582 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -29,90 +29,3 @@ ToDo. ## Versions -[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.20) -, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.19) -, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.18) -, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.17) -, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.16) -, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.15) -, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.14) -, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.13) -, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.12) -, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.11) -, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.10) -, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.9) -, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.8) -, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.7) -, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.6) -, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.5) -, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.4) -, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.3) -, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.2) -, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v2.0.0-alpha.1) -, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.7) -, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.6) -, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.5) -, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.4) -, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.3) -, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.2) -, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.1) -, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.26.0) -, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.12) -, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.11) -, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.10) -, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.9) -, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.8) -, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.7) -, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.6) -, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.5) -, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.4) -, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.3) -, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.2) -, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.1) -, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.25.0) -, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.7) -, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.6) -, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.5) -, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.4) -, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.3) -, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.2) -, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.1) -, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.24.0) -, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.23.0) -, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.4) -, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.3) -, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.2) -, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.1) -, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.22.0) -, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.21.0) -, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.20.1) -, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.14.0) -, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.4) -, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.3) -, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.2) -, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.1) -, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.13.0) -, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.12.1) -, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.12.0) -, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.11.4) -, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.11.2) -, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.11.0) -, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.10.0) -, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.9.0) -, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.8.0) -, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.7.2) -, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.6.0) -, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.3.0) -, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.2.2) -, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.5) -, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.4) -, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.3) -, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.2) -, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.1) -, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.1.0) -, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.5) -, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.4) -, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.3) -, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.2) -, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.1) -, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app/tree/v1.0.0) diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index ada76afe..94e6c51a 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -175,7 +175,7 @@ class JSONRPCClientInterfaceB { /** * Get item. * - * @param {number} id + * @param {string} id * @param {string} name * @param {string} fname * @param {number} price diff --git a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md index f4dd9633..eeb2277d 100755 --- a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -58,7 +58,7 @@ | Param | Type | Description | |------|------|------| -|id|number|| +|id|string|| |name|string|| |fname|string|| |price|number|| diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json index 459107d3..4e0f0fb2 100755 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/service.go b/fixtures/ServiceJSONRPCSingle/app/service.go index ac27f9f7..18246085 100644 --- a/fixtures/ServiceJSONRPCSingle/app/service.go +++ b/fixtures/ServiceJSONRPCSingle/app/service.go @@ -91,7 +91,7 @@ type InterfaceB interface { // Create new item of item. Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) // Get item. - Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) + Get(ctx context.Context, id uuid.UUID, name, fname string, price float32, n, b, cc int) (data User, err error) // GetAll more comment and more and more comment and more and more comment and more. // New line comment. GetAll(ctx context.Context, members Members) ([]*User, error) @@ -107,7 +107,7 @@ func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, d return &ErrUnauthorized{} } -func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { +func (s *serviceB) Get(ctx context.Context, id uuid.UUID, name, fname string, price float32, n, b, cc int) (data User, err error) { panic("implement me") } diff --git a/fixtures/ServiceJSONRPCSingle/app/swipe.go b/fixtures/ServiceJSONRPCSingle/app/swipe.go index 7e18d8ae..ca4beabe 100644 --- a/fixtures/ServiceJSONRPCSingle/app/swipe.go +++ b/fixtures/ServiceJSONRPCSingle/app/swipe.go @@ -27,6 +27,11 @@ func Swipe() { swipe.LoggingParams([]string{}, []string{"newData"}), ), + swipe.MethodOptions(InterfaceB.Get, + swipe.Logging(true), + swipe.LoggingParams([]string{"id"}, []string{}), + ), + swipe.MethodDefaultOptions( swipe.Logging(false), swipe.Instrumenting(true), diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 081d812e..00038582 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -29,90 +29,3 @@ ToDo. ## Versions -[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.20) -, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.19) -, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.18) -, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.17) -, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.16) -, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.15) -, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.14) -, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.13) -, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.12) -, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.11) -, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.10) -, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.9) -, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.8) -, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.7) -, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.6) -, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.5) -, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.4) -, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.3) -, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.2) -, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v2.0.0-alpha.1) -, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.7) -, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.6) -, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.5) -, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.4) -, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.3) -, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.2) -, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.1) -, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.26.0) -, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.12) -, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.11) -, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.10) -, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.9) -, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.8) -, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.7) -, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.6) -, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.5) -, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.4) -, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.3) -, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.2) -, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.1) -, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.25.0) -, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.7) -, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.6) -, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.5) -, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.4) -, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.3) -, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.2) -, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.1) -, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.24.0) -, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.23.0) -, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.4) -, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.3) -, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.2) -, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.1) -, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.22.0) -, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.21.0) -, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.20.1) -, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.14.0) -, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.4) -, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.3) -, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.2) -, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.1) -, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.13.0) -, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.12.1) -, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.12.0) -, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.11.4) -, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.11.2) -, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.11.0) -, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.10.0) -, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.9.0) -, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.8.0) -, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.7.2) -, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.6.0) -, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.3.0) -, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.2.2) -, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.5) -, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.4) -, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.3) -, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.2) -, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.1) -, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.1.0) -, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.5) -, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.4) -, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.3) -, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.2) -, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.1) -, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app/tree/v1.0.0) diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index fd8f6e55..00038582 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -29,90 +29,3 @@ ToDo. ## Versions -[v2.0.0-alpha.20](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.20) -, [v2.0.0-alpha.19](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.19) -, [v2.0.0-alpha.18](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.18) -, [v2.0.0-alpha.17](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.17) -, [v2.0.0-alpha.16](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.16) -, [v2.0.0-alpha.15](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.15) -, [v2.0.0-alpha.14](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.14) -, [v2.0.0-alpha.13](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.13) -, [v2.0.0-alpha.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.12) -, [v2.0.0-alpha.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.11) -, [v2.0.0-alpha.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.10) -, [v2.0.0-alpha.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.9) -, [v2.0.0-alpha.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.8) -, [v2.0.0-alpha.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.7) -, [v2.0.0-alpha.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.6) -, [v2.0.0-alpha.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.5) -, [v2.0.0-alpha.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.4) -, [v2.0.0-alpha.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.3) -, [v2.0.0-alpha.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.2) -, [v2.0.0-alpha.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v2.0.0-alpha.1) -, [v1.26.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.7) -, [v1.26.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.6) -, [v1.26.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.5) -, [v1.26.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.4) -, [v1.26.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.3) -, [v1.26.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.2) -, [v1.26.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.1) -, [v1.26.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.26.0) -, [v1.25.12](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.12) -, [v1.25.11](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.11) -, [v1.25.10](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.10) -, [v1.25.9](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.9) -, [v1.25.8](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.8) -, [v1.25.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.7) -, [v1.25.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.6) -, [v1.25.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.5) -, [v1.25.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.4) -, [v1.25.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.3) -, [v1.25.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.2) -, [v1.25.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.1) -, [v1.25.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.25.0) -, [v1.24.7](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.7) -, [v1.24.6](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.6) -, [v1.24.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.5) -, [v1.24.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.4) -, [v1.24.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.3) -, [v1.24.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.2) -, [v1.24.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.1) -, [v1.24.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.24.0) -, [v1.23.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.23.0) -, [v1.22.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.4) -, [v1.22.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.3) -, [v1.22.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.2) -, [v1.22.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.1) -, [v1.22.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.22.0) -, [v1.21.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.21.0) -, [v1.20.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.20.1) -, [v1.14.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.14.0) -, [v1.13.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.4) -, [v1.13.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.3) -, [v1.13.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.2) -, [v1.13.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.1) -, [v1.13.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.13.0) -, [v1.12.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.12.1) -, [v1.12.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.12.0) -, [v1.11.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.11.4) -, [v1.11.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.11.2) -, [v1.11.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.11.0) -, [v1.10.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.10.0) -, [v1.9.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.9.0) -, [v1.8.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.8.0) -, [v1.7.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.7.2) -, [v1.6.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.6.0) -, [v1.3.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.3.0) -, [v1.2.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.2.2) -, [v1.1.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.5) -, [v1.1.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.4) -, [v1.1.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.3) -, [v1.1.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.2) -, [v1.1.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.1) -, [v1.1.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.1.0) -, [v1.0.5](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.5) -, [v1.0.4](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.4) -, [v1.0.3](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.3) -, [v1.0.2](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.2) -, [v1.0.1](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.1) -, [v1.0.0](https://github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app/tree/v1.0.0) From 2df1638b1fc400b3b3e2518dc4bd012807672bcb Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 07:30:57 +0300 Subject: [PATCH 105/293] fix: invalid class name for JavaScript JSON RPC client --- internal/interface/generator/jsonrpc_js_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 019fcb2d..a94150a4 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -245,7 +245,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default JSONRPCClient\n\n") } else if g.options.Interfaces().Len() == 1 { iface := g.options.Interfaces().At(0) - g.W("export default JSONRPCClient%s\n\n", iface.Name()) + g.W("export default JSONRPCClient%s\n\n", iface.NameExport()) } for _, key := range g.options.ErrorKeys() { From 0f6d5b3603a274db03f4e6a2c08d788c63aaaea2 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 07:31:13 +0300 Subject: [PATCH 106/293] test: update fixtures --- .../app/jsonrpc_doc_gen.md | 44 +++++++++++++++++++ fixtures/ServiceJSONRPCMulti/app/package.json | 3 ++ .../app/client_jsonrpc_gen.js | 4 +- fixtures/ServiceJSONRPCSingle/app/swipe.go | 2 +- 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 fixtures/ServiceJSONRPCMulti/app/package.json diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md index 58574af8..1645b813 100755 --- a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -1,5 +1,49 @@ # Swipe JSONRPC Client +## Getting Started + +You can install this with: + +```shell script +npm install --save-dev service +``` + +Import the package with the client: + +```javascript +import API from "service" +``` + +Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. + +For example: + +```javascript +class FetchTransport { + constructor(url) { + this.url = url; + } + + doRequest(requests) { + return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) + } +} +``` + +Now for a complete example: + +```javascript +import API from "service" +import Transport from "transport" + +const api = new API(new Transport("http://127.0.0.1")) + +// call method here. +``` + +## API +## Methods + a.TestMethod ### a.TestMethod() ⇒void diff --git a/fixtures/ServiceJSONRPCMulti/app/package.json b/fixtures/ServiceJSONRPCMulti/app/package.json new file mode 100644 index 00000000..b8c99b0c --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/package.json @@ -0,0 +1,3 @@ +{ + "name": "service" +} \ No newline at end of file diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 94e6c51a..d202be33 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -146,7 +146,7 @@ class JSONRPCScheduler { * @property {string} id */ -class JSONRPCClientInterfaceB { +class JSONRPCClientService { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); } @@ -236,7 +236,7 @@ class JSONRPCClientInterfaceB { } } -export default JSONRPCClientInterfaceB; +export default JSONRPCClientService; export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/swipe.go b/fixtures/ServiceJSONRPCSingle/app/swipe.go index ca4beabe..39b5f1e4 100644 --- a/fixtures/ServiceJSONRPCSingle/app/swipe.go +++ b/fixtures/ServiceJSONRPCSingle/app/swipe.go @@ -7,7 +7,7 @@ import "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( swipe.Service( - swipe.Interface((*InterfaceB)(nil), ""), + swipe.Interface((*InterfaceB)(nil), "service"), swipe.HTTPServer(), From 2f58588103db50ced23d86043e890785a0cb38fb Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 07:38:16 +0300 Subject: [PATCH 107/293] chore(release): 2.0.0-beta.1 --- CHANGELOG.md | 37 ++++++++++++++----- Makefile | 4 +- .../app/client_jsonrpc_gen.js | 2 +- .../app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d0e35ab..26297097 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## [Unreleased] + +## [v2.0.0-beta.1] - 2020-11-20 +### Bug Fixes +- invalid class name for JavaScript JSON RPC client +- logging for UUID type +- generating fmt imports when not in use + + ## [v2.0.0-alpha.21] - 2020-11-09 @@ -177,6 +185,12 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [v1.26.7] - 2020-09-09 + + +## [vv2.0.0-alpha.16] - 2020-09-09 + + +## [vv2.0.0-alpha.15] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -347,17 +361,19 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. - Incorrect generate enum name for markdown docs. -- Change enums JSON RPC client generate format. ### Features - Added command for generate CRUD service structure. - -## [v1.24.2] - 2020-07-28 - ## [v1.24.3] - 2020-07-28 +### Bug Fixes +- Change enums JSON RPC client generate format. + + + +## [v1.24.2] - 2020-07-28 ## [v1.24.4] - 2020-07-28 @@ -669,7 +685,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.21...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta.1...HEAD +[v2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.21...v2.0.0-beta.1 [v2.0.0-alpha.21]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.20...v2.0.0-alpha.21 [v2.0.0-alpha.20]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.19...v2.0.0-alpha.20 [v2.0.0-alpha.19]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.18...v2.0.0-alpha.19 @@ -691,7 +708,9 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 -[v1.26.7]: https://github.com/swipe-io/swipe/compare/v1.26.6...v1.26.7 +[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...v1.26.7 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-alpha.16 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.15 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 @@ -714,9 +733,9 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.5 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.3 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 [v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 diff --git a/Makefile b/Makefile index 673de93b..1fe8cee3 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,12 @@ VERSION = snapshot GHRFLAGS = -# Git current tag -GIT_TAG=$(shell git tag -l --contains HEAD | sed -e "s/^v//") .PHONY: build release default: build fgo-build: - fgo -p releases -b homebrew-swipe build ${GIT_TAG} + fgo -p releases -b homebrew-swipe build ${NEXT_TAG} build: goxc -d=releases -bc="linux,386 darwin" -pv=$(VERSION) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 8f34e47a..61f9ff9b 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.21. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta.1. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index d202be33..622a5e68 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.21. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta.1. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index 3c5c22c4..83d0d096 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.21" +const Version = "v2.0.0-beta.1" // A Option is an option for a Swipe. type Option string From 826573f09b03d41eb5cfd171f066f85ab446356b Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 07:48:55 +0300 Subject: [PATCH 108/293] chore(release): 2.0.0-beta1 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- homebrew-swipe | 2 +- swipe.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 61f9ff9b..244edea7 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta.1. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 622a5e68..0fcfdaa3 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta.1. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/homebrew-swipe b/homebrew-swipe index e5de8266..9060f109 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit e5de8266898719d16b8670667ec0ffca8c07ccdf +Subproject commit 9060f109bd42af77ba9328e52339b794380e3e43 diff --git a/swipe.go b/swipe.go index 83d0d096..5d3886ed 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta.1" +const Version = "v2.0.0-beta1" // A Option is an option for a Swipe. type Option string From 22d5e08650025b3ebf87ff509aaf1d71d952ca4d Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 08:34:54 +0300 Subject: [PATCH 109/293] chore(release): 2.0.0-alpha.22 --- .../ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- .../ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- go.sum | 13 ------------- homebrew-swipe | 2 +- swipe.go | 2 +- 5 files changed, 4 insertions(+), 17 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 244edea7..ee9272b5 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.22. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 0fcfdaa3..926f93e0 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. +// Code generated by Swipe v2.0.0-alpha.22. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/go.sum b/go.sum index 695ccef8..6327e01e 100644 --- a/go.sum +++ b/go.sum @@ -151,8 +151,6 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 h1:VHgatEHNcBFEB7inlalqfNqw65aNkM1lGX2yt3NmbS8= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -175,8 +173,6 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/l-vitaly/go-kit v1.12.2 h1:p2YzZdxVVhzA1tjr47SwPQ09YLJXq+MP3I0MvNOL0Nk= -github.com/l-vitaly/go-kit v1.12.2/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= github.com/l-vitaly/go-kit v1.13.0 h1:kAy3A7FZ4EMT9RWFarNVRhxrdrjOeeB37o25mILRkHw= github.com/l-vitaly/go-kit v1.13.0/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= github.com/l-vitaly/rmqrpc v0.0.0-20170301101204-95b1ce811f78/go.mod h1:RRveuDTon8C8upAP4Cgp0nhA9gQhI2/io4etRR75C6s= @@ -288,8 +284,6 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -307,15 +301,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/swipe-io/strcase v0.1.2 h1:EK2Rd3bK1NiSBnsogPmaF40iT8M5C4MHRwnJk4DNr/Q= -github.com/swipe-io/strcase v0.1.2/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= -github.com/swipe-io/strcase v0.1.3 h1:LawWgDOsOb/McgGZHBMdkn81cPGOHEza8SCq6M1g1Qg= -github.com/swipe-io/strcase v0.1.3/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= -github.com/swipe-io/strcase v0.1.4 h1:BC/kZrmTYyveTTPHe1rt/RaWHPT6mjLUNre+tLVMhik= -github.com/swipe-io/strcase v0.1.4/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= -github.com/swipe-io/swipe v1.26.7 h1:qF7x/GiT2AcqAvhbpBYmpMzG1dol/rvsFJvzfliee8U= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= diff --git a/homebrew-swipe b/homebrew-swipe index 9060f109..7c9684f3 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 9060f109bd42af77ba9328e52339b794380e3e43 +Subproject commit 7c9684f3b8ebc1b88fef9890fdc28665239430fc diff --git a/swipe.go b/swipe.go index 5d3886ed..e0cb55d8 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta1" +const Version = "v2.0.0-alpha.22" // A Option is an option for a Swipe. type Option string From 878813ea8b0756668710c641ab97b45fc9940e82 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 08:43:14 +0300 Subject: [PATCH 110/293] chore(release): 2.0.0-alpha.22 --- homebrew-swipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homebrew-swipe b/homebrew-swipe index 7c9684f3..a71de107 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 7c9684f3b8ebc1b88fef9890fdc28665239430fc +Subproject commit a71de10779d709a2a8038226a3ac3755cadce752 From 5c7734bb77c6d6c2ff83f98d5eb2d50f465df1ef Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 08:45:31 +0300 Subject: [PATCH 111/293] chore(release): 2.0.0-alpha.23 --- swipe.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swipe.go b/swipe.go index e0cb55d8..fd33d920 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.22" +const Version = "v2.0.0-alpha.23" // A Option is an option for a Swipe. type Option string From 143890901c43944611db280b4309bf9f6f01dc35 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 08:47:17 +0300 Subject: [PATCH 112/293] chore(release): 2.0.0-beta.2 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index ee9272b5..35e8aa90 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.22. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta.2. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 926f93e0..c506011f 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-alpha.22. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta.2. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index fd33d920..e7ab6009 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-alpha.23" +const Version = "v2.0.0-beta.2" // A Option is an option for a Swipe. type Option string From ccee65e2f81c9043e90586dd67fa5796e54a77e2 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 08:50:11 +0300 Subject: [PATCH 113/293] chore(release): v2.0.0-beta2 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 35e8aa90..0be92c99 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta.2. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index c506011f..8250b281 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta.2. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index e7ab6009..0227d418 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta.2" +const Version = "v2.0.0-beta2" // A Option is an option for a Swipe. type Option string From 0c64661bc8fe937e8d6b546328570c7ffdc32c91 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 08:57:47 +0300 Subject: [PATCH 114/293] chore(release): 2.0.0-beta1 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 0be92c99..244edea7 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 8250b281..0fcfdaa3 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index 0227d418..5d3886ed 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta2" +const Version = "v2.0.0-beta1" // A Option is an option for a Swipe. type Option string From 06c886bb1db011d9b6e2ba3ea7ec971db694c7d0 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 10:34:37 +0300 Subject: [PATCH 115/293] fix: json rcp server generating fmt import when not in use --- homebrew-swipe | 2 +- internal/interface/generator/jsonrpc_server.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index a71de107..747bf100 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit a71de10779d709a2a8038226a3ac3755cadce752 +Subproject commit 747bf100179cc178c38760edca43cc5971046054 diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index df5fdf1e..8845d5db 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -94,11 +94,10 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if mopt.ServerRequestFunc.Expr != nil { writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) } else { - fmtPkg := g.i.Import("fmt", "fmt") - g.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) if len(m.Params) > 0 { + fmtPkg := g.i.Import("fmt", "fmt") g.W("var req %s\n", m.NameRequest) g.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) g.W("if err != nil {\n") From 150c5e9475a9475168572040ff0a8129641321e3 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 10:38:30 +0300 Subject: [PATCH 116/293] chore(release): 2.0.0-beta2 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 244edea7..0be92c99 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 0fcfdaa3..8250b281 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta1. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index 5d3886ed..0227d418 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta1" +const Version = "v2.0.0-beta2" // A Option is an option for a Swipe. type Option string From f27874dfda548773dc3b1af6cb3c30a93b499e91 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 11:33:27 +0300 Subject: [PATCH 117/293] chore(release): 2.0.0-beta3 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- homebrew-swipe | 2 +- swipe.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 0be92c99..c24b9625 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta3. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 8250b281..0c07c728 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta2. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta3. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/homebrew-swipe b/homebrew-swipe index 747bf100..9d7cc5a2 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 747bf100179cc178c38760edca43cc5971046054 +Subproject commit 9d7cc5a26dff93c0a5c0b4e732445a9d448b9fdd diff --git a/swipe.go b/swipe.go index 0227d418..0890687c 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta2" +const Version = "v2.0.0-beta3" // A Option is an option for a Swipe. type Option string From 93ecf0106818486162fc0b1b916faa6f45314377 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 11:48:42 +0300 Subject: [PATCH 118/293] fix: added for REST server generate use body --- internal/interface/generator/rest_server.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index 6c393c27..c72e5124 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -179,11 +179,10 @@ func (g *restServer) Process(_ context.Context) error { if len(m.Params) > 0 { g.W("var req %s\n", m.NameRequest) switch stdstrings.ToUpper(mopt.MethodName) { - case "POST", "PUT", "PATCH": - fmtPkg := g.i.Import("fmt", "fmt") + case "POST", "PUT", "PATCH", "DELETE": jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + fmtPkg := g.i.Import("fmt", "fmt") pkgIO := g.i.Import("io", "io") - if g.options.UseFast() { g.W("err := %s.Unmarshal(r.Body(), &req)\n", jsonPkg) } else { @@ -195,7 +194,6 @@ func (g *restServer) Process(_ context.Context) error { }) g.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) } - g.W("if err != nil && err != %s.EOF {\n", pkgIO) g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, m.NameRequest) g.W("}\n") From 2c3c8c265af4e4a53ca75e7e0df6b4098b6d3fe4 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 11:49:12 +0300 Subject: [PATCH 119/293] chore(release): 2.0.0-beta4 --- fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 2 +- fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 2 +- homebrew-swipe | 2 +- swipe.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index c24b9625..298a74f8 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta3. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta4. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 0c07c728..04fa07b4 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta3. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta4. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/homebrew-swipe b/homebrew-swipe index 9d7cc5a2..e4686861 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 9d7cc5a26dff93c0a5c0b4e732445a9d448b9fdd +Subproject commit e4686861a29f6f280fd4ca69f4bc0c08650b1c42 diff --git a/swipe.go b/swipe.go index 0890687c..e48c45f0 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta3" +const Version = "v2.0.0-beta4" // A Option is an option for a Swipe. type Option string From a1f98a0e8c8494fe7625a0a88b82342cd76e1e8e Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 11:59:06 +0300 Subject: [PATCH 120/293] fix: rest client generating fmt import when not in use --- internal/interface/generator/rest_go_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 84d95249..b1cadcb0 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -232,7 +232,7 @@ func (g *restGoClient) Process(_ context.Context) error { g.W("r.Header.Add(%s, %s)\n", strconv.Quote(mopt.HeaderVars[p.Name()]), name) } switch stdstrings.ToUpper(httpMethod) { - case "POST", "PUT", "PATCH": + case "POST", "PUT", "PATCH", "DELETE": if remainingParams > 0 { jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") From 0bb42264c237460baa513f6b2a3030549e9f9bf1 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 12:06:04 +0300 Subject: [PATCH 121/293] chore(release): 2.0.0-beta5 --- CHANGELOG.md | 76 ++++++++++++++----- .../app/client_jsonrpc_gen.js | 2 +- .../app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 4 files changed, 59 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26297097..665233f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,38 @@ ## [Unreleased] - -## [v2.0.0-beta.1] - 2020-11-20 + +## [v2.0.0-beta5] - 2020-11-20 +### Bug Fixes +- rest client generating fmt import when not in use + + + +## [v2.0.0-beta4] - 2020-11-20 +### Bug Fixes +- added for REST server generate use body + + + +## [v2.0.0-beta3] - 2020-11-20 + + +## [v2.0.0-beta2] - 2020-11-20 +### Bug Fixes +- json rcp server generating fmt import when not in use + + + +## [v2.0.0-beta1] - 2020-11-20 + + +## [2.0.0-alpha.23] - 2020-11-20 + + +## [2.0.0-alpha.22] - 2020-11-20 + + +## [v2.0.0-alpha.22] - 2020-11-20 ### Bug Fixes - invalid class name for JavaScript JSON RPC client - logging for UUID type @@ -186,11 +216,11 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [v1.26.7] - 2020-09-09 - -## [vv2.0.0-alpha.16] - 2020-09-09 - ## [vv2.0.0-alpha.15] - 2020-09-09 + + +## [vv2.0.0-alpha.16] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -360,25 +390,24 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. -- Incorrect generate enum name for markdown docs. ### Features - Added command for generate CRUD service structure. - -## [v1.24.3] - 2020-07-28 + +## [v1.24.4] - 2020-07-28 ### Bug Fixes +- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. ## [v1.24.2] - 2020-07-28 - -## [v1.24.4] - 2020-07-28 + +## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -685,8 +714,15 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta.1...HEAD -[v2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.21...v2.0.0-beta.1 +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta5...HEAD +[v2.0.0-beta5]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta4...v2.0.0-beta5 +[v2.0.0-beta4]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta3...v2.0.0-beta4 +[v2.0.0-beta3]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta2...v2.0.0-beta3 +[v2.0.0-beta2]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta1...v2.0.0-beta2 +[v2.0.0-beta1]: https://github.com/swipe-io/swipe/compare/2.0.0-alpha.23...v2.0.0-beta1 +[2.0.0-alpha.23]: https://github.com/swipe-io/swipe/compare/2.0.0-alpha.22...2.0.0-alpha.23 +[2.0.0-alpha.22]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.22...2.0.0-alpha.22 +[v2.0.0-alpha.22]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.21...v2.0.0-alpha.22 [v2.0.0-alpha.21]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.20...v2.0.0-alpha.21 [v2.0.0-alpha.20]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.19...v2.0.0-alpha.20 [v2.0.0-alpha.19]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.18...v2.0.0-alpha.19 @@ -708,9 +744,9 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 -[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...v1.26.7 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-alpha.16 -[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.15 +[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-alpha.15 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 @@ -733,10 +769,10 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.4 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 298a74f8..2f9d5116 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta4. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta5. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 04fa07b4..ac18b415 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta4. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta5. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index e48c45f0..f5935036 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta4" +const Version = "v2.0.0-beta5" // A Option is an option for a Swipe. type Option string From 105aaaf82ca213e33fb4a0280c40e9f82da5621c Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 20 Nov 2020 20:27:35 +0300 Subject: [PATCH 122/293] ci: disable submodules and update brew --- .travis.yml | 3 +++ homebrew-swipe | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d134be8d..e61a2bb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ language: go +git: + submodules: false + go: - 1.13.7 - tip diff --git a/homebrew-swipe b/homebrew-swipe index e4686861..67f0fda0 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit e4686861a29f6f280fd4ca69f4bc0c08650b1c42 +Subproject commit 67f0fda03f69cf8f2dbbd5d12d88bac25d63684c From 02ffb99d09e3d00fd3fc35df5aab1a554c80ab04 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 25 Nov 2020 11:21:01 +0300 Subject: [PATCH 123/293] fix: do not use body for rest server delete method --- internal/interface/generator/rest_go_client.go | 2 +- internal/interface/generator/rest_server.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index b1cadcb0..84d95249 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -232,7 +232,7 @@ func (g *restGoClient) Process(_ context.Context) error { g.W("r.Header.Add(%s, %s)\n", strconv.Quote(mopt.HeaderVars[p.Name()]), name) } switch stdstrings.ToUpper(httpMethod) { - case "POST", "PUT", "PATCH", "DELETE": + case "POST", "PUT", "PATCH": if remainingParams > 0 { jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index c72e5124..a32d970e 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -179,7 +179,7 @@ func (g *restServer) Process(_ context.Context) error { if len(m.Params) > 0 { g.W("var req %s\n", m.NameRequest) switch stdstrings.ToUpper(mopt.MethodName) { - case "POST", "PUT", "PATCH", "DELETE": + case "POST", "PUT", "PATCH": jsonPkg := g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") fmtPkg := g.i.Import("fmt", "fmt") pkgIO := g.i.Import("io", "io") From f180575959472d1aff9194327c459b66ef39d625 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 27 Nov 2020 13:33:00 +0300 Subject: [PATCH 124/293] fix: crash generate if method not return error --- internal/interface/generator/client_struct.go | 2 ++ internal/interface/generator/endpoint.go | 2 ++ internal/interface/generator/logging.go | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/interface/generator/client_struct.go b/internal/interface/generator/client_struct.go index 37dbc29e..f7635adf 100644 --- a/internal/interface/generator/client_struct.go +++ b/internal/interface/generator/client_struct.go @@ -248,6 +248,8 @@ func (g *clientStruct) Process(ctx context.Context) error { } else { g.W("response") } + } + if len(m.Results) > 0 && m.ReturnErr != nil { g.W(", ") } if m.ReturnErr != nil { diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index ebf35ac6..cc8b7c96 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -137,6 +137,8 @@ func (g *endpoint) writeEndpointMake() { } else { g.W("result") } + } + if len(m.Results) > 0 && m.ReturnErr != nil { g.W(", ") } if m.ReturnErr != nil { diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index f7e65596..139942ef 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -111,8 +111,8 @@ func (g *logging) Process(ctx context.Context) error { if mopt.LoggingEnable { if len(logParams) > 0 { g.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - g.W("logErr := err\n") if m.ReturnErr != nil { + g.W("logErr := err\n") g.W("if le, ok := err.(interface{LogError() error}); ok {\n") g.W("logErr = le.LogError()\n") g.W("}\n") From e8bc9d44f6267dfd35eff9842f97ad858fcd0a43 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 1 Dec 2020 16:32:12 +0300 Subject: [PATCH 125/293] chore(release): 2.0.0-beta6 --- CHANGELOG.md | 38 ++++++++++++------- .../app/client_jsonrpc_gen.js | 2 +- .../app/client_jsonrpc_gen.js | 2 +- swipe.go | 2 +- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 665233f0..1280f6e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ## [Unreleased] + +## [v2.0.0-beta6] - 2020-11-27 +### Bug Fixes +- crash generate if method not return error +- do not use body for rest server delete method + + ## [v2.0.0-beta5] - 2020-11-20 ### Bug Fixes @@ -390,30 +397,34 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. +- Incorrect generate enum name for markdown docs. ### Features - Added command for generate CRUD service structure. - -## [v1.24.4] - 2020-07-28 + +## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. ## [v1.24.2] - 2020-07-28 - - -## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. ## [v1.24.1] - 2020-07-28 + + +## [v1.24.4] - 2020-07-28 +### Bug Fixes +- Incorrect generate enum name for markdown docs. +- Change enums JSON RPC client generate format. +- Added generate enum constants for JSON RPC client. + ### Features - Added readme markdown and JSON RPC client markdown documentation. @@ -714,7 +725,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta5...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta6...HEAD +[v2.0.0-beta6]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta5...v2.0.0-beta6 [v2.0.0-beta5]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta4...v2.0.0-beta5 [v2.0.0-beta4]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta3...v2.0.0-beta4 [v2.0.0-beta3]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta2...v2.0.0-beta3 @@ -769,11 +781,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.4 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.1 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 2f9d5116..1f17de44 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta5. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index ac18b415..4c7ba25c 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta5. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/swipe.go b/swipe.go index f5935036..6d3d7584 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta5" +const Version = "v2.0.0-beta6" // A Option is an option for a Swipe. type Option string From 6226615d9ef9b946eaa188c53f69970bbf5fe47c Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 15 Dec 2020 14:23:37 +0300 Subject: [PATCH 126/293] docs: added brew --- README.md | 7 +++++++ homebrew-swipe | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 54768bba..c7fbce9e 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,13 @@ go get github.com/swipe-io/swipe/cmd/swipe > check that "$GOPATH/bin "is added to your "$PATH". +or use brew: + +```shell +brew tap swipe-io/swipe +brew install swipe +``` + ## Documentation [User guide](https://pkg.go.dev/github.com/swipe-io/swipe/pkg/swipe?tab=doc) \ No newline at end of file diff --git a/homebrew-swipe b/homebrew-swipe index 67f0fda0..8a316db1 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 67f0fda03f69cf8f2dbbd5d12d88bac25d63684c +Subproject commit 8a316db1a15ece3da5383887e2b91b396ff04fe6 From ddba453c3a6d9f4f0128505b248f23c4dbfcf7fa Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 7 Jan 2021 15:36:08 +0300 Subject: [PATCH 127/293] feat: for logging structures added method of interface LogStrings --- fixtures/ServiceRESTSingle/app/service.go | 4 +++ internal/interface/generator/utils.go | 30 +++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/fixtures/ServiceRESTSingle/app/service.go b/fixtures/ServiceRESTSingle/app/service.go index b8f4f46e..17e40e7a 100644 --- a/fixtures/ServiceRESTSingle/app/service.go +++ b/fixtures/ServiceRESTSingle/app/service.go @@ -87,6 +87,10 @@ type User struct { UpdatedAt time.Time `json:"updated_at"` } +func (u User) LogParams() []string { + return nil +} + type AppInterface interface { InterfaceB } diff --git a/internal/interface/generator/utils.go b/internal/interface/generator/utils.go index 9fc2f9b7..bf8cdec1 100644 --- a/internal/interface/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -22,6 +22,10 @@ func structKeyValue(vars []*stdtypes.Var, filterFn types.FilterFn) (results []st } func makeLogParams(include, exclude map[string]struct{}, data ...*stdtypes.Var) (result []string) { + return makeLogParamsRecursive(include, exclude, "", data...) +} + +func makeLogParamsRecursive(include, exclude map[string]struct{}, parentName string, data ...*stdtypes.Var) (result []string) { for _, v := range data { if len(include) > 0 { if _, ok := include[v.Name()]; !ok { @@ -33,7 +37,7 @@ func makeLogParams(include, exclude map[string]struct{}, data ...*stdtypes.Var) continue } } - if logParam := makeLogParam(v.Name(), v.Type()); len(logParam) > 0 { + if logParam := makeLogParam(parentName+v.Name(), v.Type()); len(logParam) > 0 { result = append(result, logParam...) } } @@ -45,20 +49,23 @@ func makeLogParam(name string, t stdtypes.Type) []string { switch t := t.(type) { default: return []string{quoteName, name} - case *stdtypes.Struct: - return []string{quoteName, name} case *stdtypes.Named: if hasMethodString(t) { return []string{quoteName, name + ".String()"} } - return makeLogParam(name, t.Underlying()) + if hasMethodLogParams(t) { + return []string{quoteName, name + ".LogParams()"} + } + return nil + case *stdtypes.Struct: + return nil case *stdtypes.Basic: if t.Kind() == stdtypes.Byte { return []string{quoteName, "len(" + name + ")"} } return []string{quoteName, name} case *stdtypes.Pointer: - return makeLogParam(name, t.Elem().Underlying()) + return makeLogParam(name, t.Elem()) case *stdtypes.Slice, *stdtypes.Array, *stdtypes.Map, *stdtypes.Chan: return []string{quoteName, "len(" + name + ")"} } @@ -133,3 +140,16 @@ func hasMethodString(named *stdtypes.Named) bool { } return false } + +func hasMethodLogParams(named *stdtypes.Named) bool { + for i := 0; i < named.NumMethods(); i++ { + m := named.Method(i) + if m.Name() == "LogParams" { + sig := m.Type().(*stdtypes.Signature) + if sig.Params().Len() == 0 && sig.Results().Len() == 1 && stdtypes.TypeString(sig.Results().At(0).Type(), nil) == "[]string" { + return true + } + } + } + return false +} From 23513ce2d9ebdb9bd3fb07f87876784a82c56f27 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:04:34 +0300 Subject: [PATCH 128/293] refactor: move cleanup to main file --- cmd/swipe/main.go | 28 ++++++++++++++--------- internal/interface/executor/generation.go | 17 ++------------ 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index c5717e4c..60366269 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -13,17 +13,15 @@ import ( "strings" "time" - "github.com/swipe-io/swipe/v2/internal/fixcomment" - - "github.com/swipe-io/swipe/v2" - "github.com/google/subcommands" "github.com/gookit/color" - "github.com/swipe-io/strcase" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2" + "github.com/swipe-io/swipe/v2/internal/astloader" + "github.com/swipe-io/swipe/v2/internal/fixcomment" "github.com/swipe-io/swipe/v2/internal/interface/executor" "github.com/swipe-io/swipe/v2/internal/interface/factory" - "github.com/swipe-io/swipe/v2/internal/interface/finder" "github.com/swipe-io/swipe/v2/internal/interface/frame" "github.com/swipe-io/swipe/v2/internal/interface/registry" "github.com/swipe-io/swipe/v2/internal/option" @@ -134,16 +132,24 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } } - l := option.NewLoader() - fi := finder.NewServiceFinder(l) - r := registry.NewRegistry(fi) + astLoader := astloader.NewLoader(wd, os.Environ(), packages(f)) + l := option.NewLoader(astLoader) + r := registry.NewRegistry(l) i := factory.NewImporterFactory() ff := frame.NewFrameFactory(swipe.Version) ge := executor.NewGenerationExecutor(r, i, ff, l) - ge.Cleanup(wd) // clear all before generated files. + // clear all before generated files. + _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { + if !info.IsDir() { + if strings.Contains(info.Name(), "_gen") { + _ = os.Remove(path) + } + } + return nil + }) - results, errs := ge.Execute(wd, os.Environ(), packages(f)) + results, errs := ge.Execute() if len(errs) > 0 { for _, err := range errs { diff --git a/internal/interface/executor/generation.go b/internal/interface/executor/generation.go index c14fcea0..9ecb5ef7 100644 --- a/internal/interface/executor/generation.go +++ b/internal/interface/executor/generation.go @@ -2,9 +2,7 @@ package executor import ( "context" - "os" "path/filepath" - "strings" "sync" "github.com/swipe-io/swipe/v2/internal/types" @@ -121,19 +119,8 @@ func (e *generationExecutor) processGenerate(pkg *packages.Package, generators [ return outCh } -func (e *generationExecutor) Cleanup(wd string) { - _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { - if !info.IsDir() { - if strings.Contains(info.Name(), "_gen") { - _ = os.Remove(path) - } - } - return nil - }) -} - -func (e *generationExecutor) Execute(wd string, env []string, patterns []string) (results []executor.GenerateResult, errs []error) { - opr, errs := e.l.Load(wd, env, patterns) +func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs []error) { + opr, errs := e.l.Load() if len(errs) > 0 { return nil, errs } From 279e4f3822336783da30104a3e3752faafc67176 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:06:39 +0300 Subject: [PATCH 129/293] style: reformat --- internal/astloader/astloader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/astloader/astloader.go b/internal/astloader/astloader.go index 3fe3baec..80ddf453 100644 --- a/internal/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -12,9 +12,9 @@ import ( stdstrings "strings" "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/graph" "github.com/swipe-io/swipe/v2/internal/types" + "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/typeutil" ) From e083c0f51c3773fa660a64c4b79a52b962dfd06f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:10:09 +0300 Subject: [PATCH 130/293] refactor: remove gateway --- internal/interface/finder/finder.go | 91 ++++++++++---------- internal/interface/gateway/http_gateway.go | 99 ---------------------- internal/interface/processor/gateway.go | 30 ------- 3 files changed, 43 insertions(+), 177 deletions(-) delete mode 100644 internal/interface/gateway/http_gateway.go delete mode 100644 internal/interface/processor/gateway.go diff --git a/internal/interface/finder/finder.go b/internal/interface/finder/finder.go index 61e689fd..42712b01 100644 --- a/internal/interface/finder/finder.go +++ b/internal/interface/finder/finder.go @@ -1,50 +1,45 @@ package finder -import ( - "go/build" - stdtypes "go/types" - "path/filepath" - stdstrings "strings" - - "github.com/swipe-io/swipe/v2/internal/domain/model" - - ig "github.com/swipe-io/swipe/v2/internal/interface/gateway" - - "github.com/swipe-io/swipe/v2/internal/option" - - "github.com/swipe-io/swipe/v2/internal/usecase/finder" - "github.com/swipe-io/swipe/v2/internal/usecase/gateway" -) - -type serviceFinder struct { - loader *option.Loader -} - -func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, *model.ServiceInterface, []error) { - pkgPathParts := stdstrings.Split(named.Obj().Pkg().Path(), "/") - servicePath := filepath.Join(build.Default.GOPATH, "src", stdstrings.Join(pkgPathParts[:3], "/")) - - o, errs := s.loader.Load(servicePath, nil, []string{"./..."}) - if len(errs) > 0 { - return nil, nil, errs - } - for _, resultOption := range o.Options { - if resultOption.Option.Name == "Service" { - sg, err := ig.NewServiceGateway(resultOption.Pkg, resultOption.Option, o.Data.GraphTypes, o.Data.CommentFuncs) - if err != nil { - return nil, nil, []error{err} - } - for i := 0; i < sg.Interfaces().Len(); i++ { - iface := sg.Interfaces().At(i) - if iface.TypeName().Obj().String() == named.Obj().String() && sg.JSONRPCEnable() { - return sg, iface, nil - } - } - } - } - return nil, nil, nil -} - -func NewServiceFinder(loader *option.Loader) finder.ServiceFinder { - return &serviceFinder{loader: loader} -} +//import ( +// stdtypes "go/types" +// +// "github.com/swipe-io/swipe/v2/internal/domain/model" +// +// "github.com/swipe-io/swipe/v2/internal/option" +// +// "github.com/swipe-io/swipe/v2/internal/usecase/finder" +// "github.com/swipe-io/swipe/v2/internal/usecase/gateway" +//) +// +//type serviceFinder struct { +// loader *option.Loader +//} +// +//func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, *model.ServiceInterface, []error) { +// //pkgPathParts := stdstrings.Split(named.Obj().Pkg().Path(), "/") +// //servicePath := filepath.Join(build.Default.GOPATH, "src", stdstrings.Join(pkgPathParts[:3], "/")) +// // +// //o, errs := s.loader.Load(servicePath, nil, []string{"./..."}) +// //if len(errs) > 0 { +// // return nil, nil, errs +// //} +// //for _, resultOption := range o.Options { +// // if resultOption.Option.Name == "Service" { +// // sg, err := ig.NewServiceGateway(resultOption.Pkg, resultOption.Option, o.Data.GraphTypes, o.Data.CommentFuncs) +// // if err != nil { +// // return nil, nil, []error{err} +// // } +// // for i := 0; i < sg.Interfaces().Len(); i++ { +// // iface := sg.Interfaces().At(i) +// // if iface.TypeName().Obj().String() == named.Obj().String() { +// // return sg, iface, nil +// // } +// // } +// // } +// //} +// return nil, nil, nil +//} +// +//func NewServiceFinder(loader *option.Loader) finder.ServiceFinder { +// return &serviceFinder{loader: loader} +//} diff --git a/internal/interface/gateway/http_gateway.go b/internal/interface/gateway/http_gateway.go deleted file mode 100644 index c709f689..00000000 --- a/internal/interface/gateway/http_gateway.go +++ /dev/null @@ -1,99 +0,0 @@ -package gateway - -import ( - "fmt" - "go/ast" - stdtypes "go/types" - - "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/errors" - "github.com/swipe-io/swipe/v2/internal/option" - "github.com/swipe-io/swipe/v2/internal/usecase/finder" - "github.com/swipe-io/swipe/v2/internal/usecase/gateway" - - "golang.org/x/tools/go/packages" -) - -type httpGatewayGateway struct { - pkg *packages.Package - services []model.GatewayServiceOption - finder finder.ServiceFinder -} - -func (g *httpGatewayGateway) Services() []model.GatewayServiceOption { - return g.services -} - -func (g *httpGatewayGateway) parseMethodOption(iface *stdtypes.Interface, o *option.Option) (model.GatewayMethodOption, error) { - methodOption := model.GatewayMethodOption{} - signOpt := option.MustOption(o.At("signature")) - fnSel, ok := signOpt.Value.Expr().(*ast.SelectorExpr) - if !ok { - return model.GatewayMethodOption{}, errors.NotePosition(signOpt.Position, fmt.Errorf("the signature must be selector")) - } - methodOption.Name = fnSel.Sel.Name - ifaceSel := g.pkg.TypesInfo.TypeOf(fnSel.X).Underlying() - if !stdtypes.Identical(iface, ifaceSel) { - return model.GatewayMethodOption{}, errors.NotePosition( - signOpt.Position, - fmt.Errorf( - "the method signature does not match the interface, now %s should be %s", - ifaceSel, - iface, - ), - ) - } - if opt, ok := o.At("GatewayBalancer"); ok { - v := opt.Value.String() - if v != "random" && v != "roundrobin" { - return model.GatewayMethodOption{}, errors.NotePosition(opt.Position, fmt.Errorf("there can only be values: random, roundrobin")) - } - } - return methodOption, nil -} - -func (g *httpGatewayGateway) load(o *option.Option) error { - serviceOpts, _ := o.Slice("GatewayService") - - for _, serviceOpt := range serviceOpts { - ifaceOpt := option.MustOption(serviceOpt.At("iface")) - ifacePtr, ok := ifaceOpt.Value.Type().(*stdtypes.Pointer) - if !ok { - return errors.NotePosition(o.Position, - fmt.Errorf("the Iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) - } - - typeName := ifacePtr.Elem().(*stdtypes.Named) - - _, iface, errs := g.finder.Find(typeName) - if len(errs) > 0 { - continue - } - - so := model.GatewayServiceOption{ - Iface: iface, - MethodOptions: map[string]model.GatewayMethodOption{}, - } - if methodOpt, ok := serviceOpt.At("GatewayServiceMethod"); ok { - mo, err := g.parseMethodOption(iface.Interface(), methodOpt) - if err != nil { - return err - } - so.MethodOptions[mo.Name] = mo - } - g.services = append(g.services, so) - } - return nil -} - -func NewGateway( - pkg *packages.Package, - o *option.Option, - finder finder.ServiceFinder, -) (gateway.HTTPGatewayGateway, error) { - g := &httpGatewayGateway{pkg: pkg, finder: finder} - if err := g.load(o); err != nil { - return nil, err - } - return g, nil -} diff --git a/internal/interface/processor/gateway.go b/internal/interface/processor/gateway.go deleted file mode 100644 index ed49c84b..00000000 --- a/internal/interface/processor/gateway.go +++ /dev/null @@ -1,30 +0,0 @@ -package processor - -import ( - "github.com/swipe-io/swipe/v2/internal/interface/generator" - "github.com/swipe-io/swipe/v2/internal/usecase/finder" - uga "github.com/swipe-io/swipe/v2/internal/usecase/gateway" - ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/usecase/processor" - "golang.org/x/tools/go/packages" -) - -type gatewayProcessor struct { - hg uga.HTTPGatewayGateway - finder finder.ServiceFinder - pkg *packages.Package -} - -func (g *gatewayProcessor) Pkg() *packages.Package { - return g.pkg -} - -func (g *gatewayProcessor) Generators() []ug.Generator { - return []ug.Generator{ - generator.NewGatewayGenerator(g.hg.Services()), - } -} - -func NewGatewayProcessor(hg uga.HTTPGatewayGateway, pkg *packages.Package) processor.Processor { - return &gatewayProcessor{hg: hg, pkg: pkg} -} From 46f9757845bbae0e6551e4cb6e05315d9384961f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:11:32 +0300 Subject: [PATCH 131/293] fix: do not add the time package when generating instrumentation when there are no methods --- internal/interface/generator/instrumenting.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/internal/interface/generator/instrumenting.go b/internal/interface/generator/instrumenting.go index 5e6f0c6f..91be6dfa 100644 --- a/internal/interface/generator/instrumenting.go +++ b/internal/interface/generator/instrumenting.go @@ -50,14 +50,8 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - var ( - timePkg string - ) - if len(iface.Methods()) > 0 { - timePkg = g.i.Import("time", "time") - } - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + timePkg := g.i.Import("time", "time") stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") From 6418de3ae0d067732c0355f271eff6d083c74596 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:12:31 +0300 Subject: [PATCH 132/293] refactor: removes the check for the absence of methods --- .../interface/generator/endpoint_factory.go | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/internal/interface/generator/endpoint_factory.go b/internal/interface/generator/endpoint_factory.go index 147449f5..151db70c 100644 --- a/internal/interface/generator/endpoint_factory.go +++ b/internal/interface/generator/endpoint_factory.go @@ -36,29 +36,28 @@ func (g *endpointFactory) Process(ctx context.Context) error { g.W("Path string\n") g.W("}\n\n") - if len(iface.Methods()) > 0 { - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - ioPkg := g.i.Import("io", "io") - stringsPkg := g.i.Import("strings", "strings") - - for _, m := range iface.Methods() { - g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) - g.W("if f.Path != \"\"{\n") - g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) - g.W("}\n") - g.W("c, err := NewClient%s(instance, f.Option...)\n", g.options.Prefix()) - g.WriteCheckErr(func() { - g.W("return nil, nil, err\n") - }) - g.W("return ") - if g.options.Interfaces().Len() > 1 { - g.W("make%sEndpoint(c.%sClient), nil, nil\n", m.NameExport, iface.NameExport()) - } else { - g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) - } - g.W("\n}\n\n") + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + ioPkg := g.i.Import("io", "io") + stringsPkg := g.i.Import("strings", "strings") + + for _, m := range iface.Methods() { + g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) + g.W("if f.Path != \"\"{\n") + g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) + g.W("}\n") + g.W("c, err := NewClient%s(instance, f.Option...)\n", g.options.Prefix()) + g.WriteCheckErr(func() { + g.W("return nil, nil, err\n") + }) + g.W("return ") + if g.options.Interfaces().Len() > 1 { + g.W("make%sEndpoint(c.%sClient), nil, nil\n", m.NameExport, iface.NameExport()) + } else { + g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) } + g.W("\n}\n\n") } + } return nil } From 2e4745710e12864b4294919ccec2bb4775812c9d Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:13:04 +0300 Subject: [PATCH 133/293] refactor: removes the Cleanup method --- internal/usecase/executor/generation.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/usecase/executor/generation.go b/internal/usecase/executor/generation.go index 7c02a6f4..5959d944 100644 --- a/internal/usecase/executor/generation.go +++ b/internal/usecase/executor/generation.go @@ -8,6 +8,5 @@ type GenerateResult struct { } type GenerationExecutor interface { - Execute(wd string, env []string, patterns []string) (results []GenerateResult, errs []error) - Cleanup(wd string) + Execute() (results []GenerateResult, errs []error) } From 2534ac8b7160fb27adbf833817b70083813efdc9 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:14:19 +0300 Subject: [PATCH 134/293] refactor: removes the Cleanup method --- internal/interface/generator/client_struct.go | 4 +- .../interface/generator/jsonrpc_go_client.go | 64 ++++++++----------- 2 files changed, 29 insertions(+), 39 deletions(-) diff --git a/internal/interface/generator/client_struct.go b/internal/interface/generator/client_struct.go index f7635adf..9132cf6b 100644 --- a/internal/interface/generator/client_struct.go +++ b/internal/interface/generator/client_struct.go @@ -145,9 +145,7 @@ func (g *clientStruct) Process(ctx context.Context) error { clientType := fmt.Sprintf("client%s", iface.Name()) - if len(iface.Methods()) > 0 { - contextPkg = g.i.Import("context", "context") - } + contextPkg = g.i.Import("context", "context") g.W("type %s struct {\n", clientType) for _, m := range iface.Methods() { diff --git a/internal/interface/generator/jsonrpc_go_client.go b/internal/interface/generator/jsonrpc_go_client.go index a02b4d90..9f517b0a 100644 --- a/internal/interface/generator/jsonrpc_go_client.go +++ b/internal/interface/generator/jsonrpc_go_client.go @@ -61,38 +61,34 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("o(opts)\n") g.W("}\n") - if len(iface.Methods()) > 0 { - if g.options.UseFast() { - jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") - } else { - jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") - } - urlPkg = g.i.Import("url", "net/url") - contextPkg = g.i.Import("context", "context") - ffJSONPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - jsonPkg = g.i.Import("json", "encoding/json") - fmtPkg = g.i.Import("fmt", "fmt") - netPkg = g.i.Import("net", "net") - stringsPkg = g.i.Import("strings", "strings") + if g.options.UseFast() { + jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + jsonrpcPkg = g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") } + urlPkg = g.i.Import("url", "net/url") + contextPkg = g.i.Import("context", "context") + ffJSONPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + jsonPkg = g.i.Import("json", "encoding/json") + fmtPkg = g.i.Import("fmt", "fmt") + netPkg = g.i.Import("net", "net") + stringsPkg = g.i.Import("strings", "strings") + + g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + g.W("tgt = host + \":\" + port\n") + g.W("}\n") - if len(iface.Methods()) > 0 { - g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) - g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - g.W("tgt = host + \":\" + port\n") - g.W("}\n") - - g.W("u, err := %s.Parse(tgt)\n", urlPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - g.W("if u.Scheme == \"\" {\n") - g.W("u.Scheme = \"https\"") - g.W("}\n") - } + g.W("u, err := %s.Parse(tgt)\n", urlPkg) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + g.W("if u.Scheme == \"\" {\n") + g.W("u.Scheme = \"https\"") + g.W("}\n") for _, m := range iface.Methods() { mopt := g.options.MethodOption(m) @@ -154,12 +150,8 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W(")\n") methodName := m.LcName - if g.options.Interfaces().Len() > 1 { - prefix := iface.NameUnExport() - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() - } - methodName = prefix + "." + methodName + if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { + methodName = iface.NameUnExport() + "." + iface.NameUnExport() } g.W("c.%sEndpoint = %s.NewClient(\n", m.LcName, jsonrpcPkg) From 2f11e53c639ef601e8127bbeb4a563ea542011f9 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:16:43 +0300 Subject: [PATCH 135/293] feat: added gateway generation setting and some improvements --- fixtures/GatewaySuccess/app/swipe.go | 29 +++- internal/domain/model/service.go | 15 +- internal/interface/gateway/service.go | 62 +++++++- internal/interface/generator/endpoint.go | 137 +++++++++--------- internal/interface/generator/http_gateway.go | 60 ++------ .../interface/generator/http_transport.go | 105 +++++++------- internal/interface/generator/jsonrpc_doc.go | 31 ++-- .../interface/generator/jsonrpc_js_client.go | 21 +-- .../interface/generator/jsonrpc_server.go | 102 ++++++++++--- internal/interface/generator/logging.go | 7 +- internal/interface/generator/openapi.go | 35 ++--- .../interface/generator/rest_go_client.go | 72 ++++----- internal/interface/processor/service.go | 46 +++--- internal/interface/registry/processor.go | 18 +-- internal/option/loader.go | 22 ++- internal/usecase/gateway/service.go | 6 + swipe.go | 25 ++-- 17 files changed, 424 insertions(+), 369 deletions(-) diff --git a/fixtures/GatewaySuccess/app/swipe.go b/fixtures/GatewaySuccess/app/swipe.go index 64eb9c28..473f6f61 100644 --- a/fixtures/GatewaySuccess/app/swipe.go +++ b/fixtures/GatewaySuccess/app/swipe.go @@ -1,4 +1,4 @@ -//+build swipe +//+build swipe ide package app @@ -9,9 +9,30 @@ import ( func Swipe() { swipe.Build( - swipe.Gateway( - swipe.GatewayService((*app.InterfaceA)(nil)), - swipe.GatewayService((*app.InterfaceB)(nil)), + swipe.Service( + swipe.Interface((*app.InterfaceA)(nil), "a"), + swipe.Interface((*app.InterfaceB)(nil), "b"), + + swipe.HTTPServer(), + + swipe.JSONRPCEnable(), + swipe.GatewayEnable(), + + swipe.ClientsEnable([]string{"js"}), + + swipe.OpenapiEnable(), + + swipe.MethodOptions(app.InterfaceB.Create, + swipe.Exclude(false), + ), + + //swipe.MethodOptions(app.InterfaceA.TestMethod, + // swipe.Exclude(false), + //), + + swipe.MethodDefaultOptions( + swipe.Exclude(true), + ), ), ) } diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index 51fe2c82..7e2fe1af 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -31,6 +31,11 @@ type ServiceInterface struct { serviceTypeName *stdtypes.Named serviceIface *stdtypes.Interface serviceMethods []ServiceMethod + isNameChange bool +} + +func (g *ServiceInterface) IsNameChange() bool { + return g.isNameChange } func (g *ServiceInterface) NameExport() string { @@ -65,18 +70,13 @@ func (g *ServiceInterface) Interface() *stdtypes.Interface { return g.serviceIface } -func NewServiceInterface( - name, lowerName, nameExport, nameUnExport string, - serviceType stdtypes.Type, - serviceTypeName *stdtypes.Named, - serviceIface *stdtypes.Interface, - serviceMethods []ServiceMethod, -) *ServiceInterface { +func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNameChange bool, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod) *ServiceInterface { return &ServiceInterface{ name: name, loweName: lowerName, nameExport: nameExport, nameUnExport: nameUnExport, + isNameChange: isNameChange, serviceType: serviceType, serviceTypeName: serviceTypeName, serviceIface: serviceIface, @@ -146,6 +146,7 @@ type MethodOption struct { LoggingIncludeParams map[string]struct{} LoggingExcludeParams map[string]struct{} InstrumentingEnable bool + Exclude bool } type HTTPError struct { diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index e6d6be8f..61878a4e 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -29,6 +29,8 @@ type serviceGateway struct { useFast bool graphTypes *graph.Graph commentFuncs map[string][]string + commentFields map[string]map[string]string + enums *typeutil.Map methodOptions map[string]model.MethodOption defaultMethodOptions model.MethodOption clientsEnable []string @@ -52,6 +54,20 @@ type serviceGateway struct { appName string appID string defaultErrorEncoder option.Value + gatewayEnable bool + loader *option.Loader +} + +func (g *serviceGateway) Enums() *typeutil.Map { + return g.enums +} + +func (g *serviceGateway) CommentFields() map[string]map[string]string { + return g.commentFields +} + +func (g *serviceGateway) GatewayEnable() bool { + return g.gatewayEnable } func (g *serviceGateway) AppID() string { @@ -232,17 +248,23 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] return nil, errors.NotePosition(o.Position, fmt.Errorf("the iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) } - typeName := ifacePtr.Elem().(*stdtypes.Named) - ifaceName := strcase.ToCamel(typeName.Obj().Name()) + + var graphTypes = g.graphTypes + + ifaceNamed := ifacePtr.Elem().(*stdtypes.Named) + + ifaceName := strcase.ToCamel(ifaceNamed.Obj().Name()) ifaceLcName := strcase.ToLowerCamel(ifaceName) nameExport := ifaceName nameUnExport := ifaceLcName name := nameOpt.Value.String() + isNameChange := false if name != "" { nameExport = strcase.ToCamel(name) nameUnExport = strcase.ToLowerCamel(name) + isNameChange = true } var serviceMethods []model.ServiceMethod @@ -280,10 +302,14 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] Comments: comments, } - g.graphTypes.Iterate(func(n *graph.Node) { - g.graphTypes.Traverse(n, func(n *graph.Node) bool { + if g.MethodOption(sm).Exclude { + continue + } + + graphTypes.Iterate(func(n *graph.Node) { + graphTypes.Traverse(n, func(n *graph.Node) bool { if n.Object.Name() == m.Name() && stdtypes.Identical(n.Object.Type(), m.Type()) { - g.graphTypes.Traverse(n, func(n *graph.Node) bool { + graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { key := g.hasher.Hash(named) if _, ok := sm.Errors[key]; ok { @@ -348,8 +374,9 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceLcName, nameExport, nameUnExport, + isNameChange, ifacePtr.Elem(), - typeName, + ifaceNamed, ifaceType, serviceMethods, ), nil @@ -370,6 +397,9 @@ func (g *serviceGateway) load(o *option.Option) error { if err := g.loadJSONRPC(o); err != nil { return err } + if err := g.loadGateway(o); err != nil { + return err + } if err := g.loadOpenapi(o); err != nil { return err } @@ -437,7 +467,9 @@ func (g *serviceGateway) load(o *option.Option) error { if err != nil { return err } - g.interfaces = append(g.interfaces, svc) + if len(svc.Methods()) > 0 { + g.interfaces = append(g.interfaces, svc) + } } } if o, ok := o.At("DefaultErrorEncoder"); ok { @@ -603,7 +635,17 @@ func (g *serviceGateway) loadJSONRPC(o *option.Option) (err error) { return } +func (g *serviceGateway) loadGateway(o *option.Option) error { + if _, ok := o.At("GatewayEnable"); ok { + g.gatewayEnable = true + } + return nil +} + func getMethodOptions(o *option.Option, baseMethodOpts model.MethodOption) (model.MethodOption, error) { + if opt, ok := o.At("Exclude"); ok { + baseMethodOpts.Exclude = opt.Value.Bool() + } if opt, ok := o.At("Logging"); ok { baseMethodOpts.LoggingEnable = opt.Value.Bool() } @@ -714,14 +756,20 @@ func httpBraceIndices(s string) ([]int, error) { func NewServiceGateway( pkg *packages.Package, + loader *option.Loader, o *option.Option, graphTypes *graph.Graph, commentFuncs map[string][]string, + commentFields map[string]map[string]string, + enums *typeutil.Map, ) (gateway.ServiceGateway, error) { g := &serviceGateway{ pkg: pkg, + loader: loader, graphTypes: graphTypes, commentFuncs: commentFuncs, + commentFields: commentFields, + enums: enums, methodOptions: map[string]model.MethodOption{}, openapiMethodTags: map[string][]string{}, errors: map[uint32]*model.HTTPError{}, diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index cc8b7c96..cae0c76c 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -18,6 +18,7 @@ import ( type endpointOptionsGateway interface { Interfaces() model.Interfaces + GatewayEnable() bool } type EndpointOption struct { @@ -34,7 +35,9 @@ func (g *endpoint) Prepare(ctx context.Context) error { } func (g *endpoint) Process(ctx context.Context) error { - g.writeEndpointMake() + if !g.options.GatewayEnable() { + g.writeEndpointMake() + } for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -42,24 +45,22 @@ func (g *endpoint) Process(ctx context.Context) error { epSetName := iface.Name() + "EndpointSet" g.W("type %s struct {\n", epSetName) - - if len(iface.Methods()) > 0 { - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - for _, m := range iface.Methods() { - g.W("%sEndpoint %s.Endpoint\n", m.Name, kitEndpointPkg) - } + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + for _, m := range iface.Methods() { + g.W("%sEndpoint %s.Endpoint\n", m.Name, kitEndpointPkg) } - g.W("}\n") - g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) - g.W("return %s{\n", epSetName) - for _, m := range iface.Methods() { - g.W("%sEndpoint: make%sEndpoint(svc),\n", m.Name, m.NameExport) + if !g.options.GatewayEnable() { + g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) + g.W("return %s{\n", epSetName) + for _, m := range iface.Methods() { + g.W("%sEndpoint: make%sEndpoint(svc),\n", m.Name, m.NameExport) + } + g.W("}\n") + g.W("}\n") } - g.W("}\n") - g.W("}\n") for _, m := range iface.Methods() { if len(m.Params) > 0 { @@ -103,71 +104,69 @@ func (g *endpoint) writeEndpointMake() { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - if len(iface.Methods()) > 0 { - contextPkg := g.i.Import("context", "context") - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + contextPkg := g.i.Import("context", "context") + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - for _, m := range iface.Methods() { - g.W("func make%sEndpoint(s %s) %s.Endpoint {\n", m.NameExport, typeStr, kitEndpointPkg) - g.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) + for _, m := range iface.Methods() { + g.W("func make%sEndpoint(s %s) %s.Endpoint {\n", m.NameExport, typeStr, kitEndpointPkg) + g.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) - var callParams []string - if m.ParamCtx != nil { - callParams = append(callParams, "ctx") - } - callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { - name := p.Name() - name = stdstrings.ToUpper(name[:1]) + name[1:] - return []string{"req." + name} - }, nil)...) + var callParams []string + if m.ParamCtx != nil { + callParams = append(callParams, "ctx") + } + callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { + name := p.Name() + name = stdstrings.ToUpper(name[:1]) + name[1:] + return []string{"req." + name} + }, nil)...) - if len(m.Params) > 0 { - g.W("req := request.(%s)\n", m.NameRequest) - } + if len(m.Params) > 0 { + g.W("req := request.(%s)\n", m.NameRequest) + } - if len(m.Results) > 0 { - if m.ResultsNamed { - for i, p := range m.Results { - if i > 0 { - g.W(", ") - } - g.W(p.Name()) + if len(m.Results) > 0 { + if m.ResultsNamed { + for i, p := range m.Results { + if i > 0 { + g.W(", ") } - } else { - g.W("result") + g.W(p.Name()) } + } else { + g.W("result") } - if len(m.Results) > 0 && m.ReturnErr != nil { - g.W(", ") - } - if m.ReturnErr != nil { - g.W("err") - } - if len(m.Results) > 0 || m.ReturnErr != nil { - g.W(" := ") - } - g.WriteFuncCall("s", m.Name, callParams) - if m.ReturnErr != nil { - g.WriteCheckErr(func() { - g.W("return nil, err\n") - }) - } - g.W("return ") - if len(m.Results) > 0 { - if m.ResultsNamed { - g.W("%s", m.NameResponse) - g.WriteStructAssign(structKeyValue(m.Results, nil)) - } else { - g.W("result") - } + } + if len(m.Results) > 0 && m.ReturnErr != nil { + g.W(", ") + } + if m.ReturnErr != nil { + g.W("err") + } + if len(m.Results) > 0 || m.ReturnErr != nil { + g.W(" := ") + } + g.WriteFuncCall("s", m.Name, callParams) + if m.ReturnErr != nil { + g.WriteCheckErr(func() { + g.W("return nil, err\n") + }) + } + g.W("return ") + if len(m.Results) > 0 { + if m.ResultsNamed { + g.W("%s", m.NameResponse) + g.WriteStructAssign(structKeyValue(m.Results, nil)) } else { - g.W("nil") + g.W("result") } - g.W(" ,nil\n") - g.W("}\n\n") - g.W("}\n\n") + } else { + g.W("nil") } + g.W(" ,nil\n") + g.W("}\n\n") + g.W("}\n\n") } } } diff --git a/internal/interface/generator/http_gateway.go b/internal/interface/generator/http_gateway.go index e39430ec..94971185 100644 --- a/internal/interface/generator/http_gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -5,7 +5,6 @@ import ( "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -13,7 +12,7 @@ import ( type httpGatewayGenerator struct { writer.GoLangWriter i *importer.Importer - services []model.GatewayServiceOption + services model.Interfaces } func (g *httpGatewayGenerator) Prepare(ctx context.Context) error { @@ -26,7 +25,6 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { epPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") httpKitPkg := g.i.Import("endpoint", "github.com/go-kit/kit/transport/http") jsonRPCKitPkg := g.i.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") - logPkg := g.i.Import("endpoint", "github.com/go-kit/kit/log") sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") timePkg := g.i.Import("time", "time") @@ -68,8 +66,8 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("type EndpointSet struct {\n") for _, s := range g.services { - g.W("%s struct {\n", s.Iface.Name()) - for _, method := range s.Iface.Methods() { + g.W("%s struct {\n", s.Name()) + for _, method := range s.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) } g.W("}\n") @@ -77,61 +75,21 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") for _, s := range g.services { - g.W("type %sEndpointFactory interface {\n", s.Iface.Name()) - for _, method := range s.Iface.Methods() { + g.W("type %sEndpointFactory interface {\n", s.Name()) + for _, method := range s.Methods() { g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) } g.W("}\n\n") - g.W("type %sOption struct {\n", s.Iface.Name()) + g.W("type %sOption struct {\n", s.Name()) g.W("Instancer %s.Instancer \n", sdPkg) - g.W("EndpointFactory %sEndpointFactory\n", s.Iface.Name()) + g.W("EndpointFactory %sEndpointFactory\n", s.Name()) - for _, method := range s.Iface.Methods() { + for _, method := range s.Methods() { g.W("%s EndpointOption\n", method.Name) } g.W("}\n\n") } - - g.W("func NewGateway(") - for i, s := range g.services { - if i > 0 { - g.W(",") - } - g.W("%s %sOption", strings.LcFirst(s.Iface.Name()), s.Iface.Name()) - } - g.W(", logger %s.Logger) (ep EndpointSet) {\n", logPkg) - - g.W("{\n") - for _, s := range g.services { - for _, method := range s.Iface.Methods() { - optName := strings.LcFirst(s.Iface.Name()) - g.W("{\n") - - g.W("if %s.%s.Balancer == nil {\n", optName, method.Name) - g.W("%s.%s.Balancer = %s.NewRoundRobin\n", optName, method.Name, lbPkg) - g.W("}\n") - - g.W("if %s.%s.RetryMax == 0 {\n", optName, method.Name) - g.W("%s.%s.RetryMax = DefaultRetryMax\n", optName, method.Name) - g.W("}\n") - - g.W("if %s.%s.RetryTimeout == 0 {\n", optName, method.Name) - g.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, method.Name) - g.W("}\n") - - g.W("endpointer := %[1]s.NewEndpointer(%[2]s.Instancer, %[2]s.EndpointFactory.%[3]sEndpointFactory, logger)\n", sdPkg, optName, method.Name) - g.W( - "ep.%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", - lbPkg, optName, method.Name, s.Iface.Name(), - ) - g.W("ep.%[2]s.%[1]sEndpoint = RetryErrorExtractor()(ep.%[2]s.%[1]sEndpoint)\n", method.Name, s.Iface.Name()) - g.W("}\n") - } - } - g.W("}\n") - g.W("return\n") - g.W("}\n") return nil } @@ -152,7 +110,7 @@ func (g *httpGatewayGenerator) SetImporter(i *importer.Importer) { } func NewGatewayGenerator( - services []model.GatewayServiceOption, + services model.Interfaces, ) generator.Generator { return &httpGatewayGenerator{ services: services, diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index f93baeb3..c57350ad 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -14,6 +14,7 @@ type httpTransportOptionsGateway interface { AppID() string Interfaces() model.Interfaces JSONRPCEnable() bool + GoClientEnable() bool UseFast() bool Error(uint32) *model.HTTPError ErrorKeys() []uint32 @@ -49,68 +50,70 @@ func (g *httpTransport) Process(ctx context.Context) error { endpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - g.W("type httpError struct {\n") - g.W("code int\n") - if g.options.JSONRPCEnable() { - g.W("data interface{}\n") - g.W("message string\n") - } - g.W("}\n") + if g.options.GoClientEnable() { + g.W("type httpError struct {\n") + g.W("code int\n") + if g.options.JSONRPCEnable() { + g.W("data interface{}\n") + g.W("message string\n") + } + g.W("}\n") - if g.options.JSONRPCEnable() { - g.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") - } else { - if g.options.UseFast() { - httpPkg := g.i.Import("fasthttp", "github.com/valyala/fasthttp") - g.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) + if g.options.JSONRPCEnable() { + g.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") } else { - httpPkg := g.i.Import("http", "net/http") - g.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) + if g.options.UseFast() { + httpPkg := g.i.Import("fasthttp", "github.com/valyala/fasthttp") + g.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) + } else { + httpPkg := g.i.Import("http", "net/http") + g.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) + } } - } - g.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") + g.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") - errorDecodeParams := []string{"code", "int"} - if g.options.JSONRPCEnable() { - g.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") - g.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") - g.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") + errorDecodeParams := []string{"code", "int"} + if g.options.JSONRPCEnable() { + g.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") + g.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") + g.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") - errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") - } + errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") + } - g.WriteFunc("ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { - g.W("switch code {\n") - g.W("default:\nerr = &httpError{code: code}\n") - if g.options.JSONRPCEnable() { - for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key) - g.W("case %d:\n", e.Code) - pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) - if pkgName != "" { - pkgName += "." + g.WriteFunc("ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { + g.W("switch code {\n") + g.W("default:\nerr = &httpError{code: code}\n") + if g.options.JSONRPCEnable() { + for _, key := range g.options.ErrorKeys() { + e := g.options.Error(key) + g.W("case %d:\n", e.Code) + pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) + if pkgName != "" { + pkgName += "." + } + newPrefix := "" + if e.IsPointer { + newPrefix = "&" + } + g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) } - newPrefix := "" - if e.IsPointer { - newPrefix = "&" - } - g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) } - } - g.W("}\n") - if g.options.JSONRPCEnable() { - g.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") - g.W("err.SetErrorData(data)\n") - g.W("}\n") - - g.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") - g.W("err.SetErrorMessage(message)\n") g.W("}\n") - } - g.W("return") - }) + if g.options.JSONRPCEnable() { + g.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") + g.W("err.SetErrorData(data)\n") + g.W("}\n") + + g.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") + g.W("err.SetErrorMessage(message)\n") + g.W("}\n") + } + g.W("return") + }) + } g.W("func middlewareChain(middlewares []%[1]s.Middleware) %[1]s.Middleware {\n", endpointPkg) g.W("return func(next %[1]s.Endpoint) %[1]s.Endpoint {\n", endpointPkg) diff --git a/internal/interface/generator/jsonrpc_doc.go b/internal/interface/generator/jsonrpc_doc.go index 1fe765aa..cc58c89f 100644 --- a/internal/interface/generator/jsonrpc_doc.go +++ b/internal/interface/generator/jsonrpc_doc.go @@ -32,15 +32,15 @@ type jsonrpcDocOptionsGateway interface { AppID() string Interfaces() model.Interfaces JSONRPCDocOutput() string + CommentFields() map[string]map[string]string + Enums() *typeutil.Map } type jsonrpcDoc struct { writer.BaseWriter - options jsonrpcDocOptionsGateway - commentFields map[string]map[string]string - enums *typeutil.Map - workDir string - outputDir string + options jsonrpcDocOptionsGateway + workDir string + outputDir string } func (g *jsonrpcDoc) Prepare(ctx context.Context) error { @@ -184,7 +184,7 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { for _, named := range nameds { st := named.Obj().Type().Underlying().(*stdtypes.Struct) - comments, ok := g.commentFields[named.Obj().String()] + comments, ok := g.options.CommentFields()[named.Obj().String()] if !ok { comments = map[string]string{} } @@ -235,10 +235,10 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { } } - if g.enums.Len() > 0 { + if g.options.Enums().Len() > 0 { g.W("## Enums\n") - g.enums.Iterate(func(key stdtypes.Type, value interface{}) { + g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { typeName := "" if b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic); ok { @@ -291,7 +291,7 @@ func (g *jsonrpcDoc) getJSType(tpl stdtypes.Type) string { switch stdtypes.TypeString(v.Obj().Type(), nil) { default: var postfix string - if g.enums.At(v) != nil { + if g.options.Enums().At(v) != nil { postfix = "Enum" } return fmt.Sprintf("%[1]s%[2]s", v.Obj().Name(), postfix) @@ -326,16 +326,9 @@ func (g *jsonrpcDoc) getJSType(tpl stdtypes.Type) string { } } -func NewJsonrpcDoc( - options jsonrpcDocOptionsGateway, - commentFields map[string]map[string]string, - enums *typeutil.Map, - workDir string, -) generator.Generator { +func NewJsonrpcDoc(options jsonrpcDocOptionsGateway, workDir string) generator.Generator { return &jsonrpcDoc{ - options: options, - commentFields: commentFields, - enums: enums, - workDir: workDir, + options: options, + workDir: workDir, } } diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index a94150a4..760f7642 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -6,12 +6,11 @@ import ( "strconv" "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" + "golang.org/x/tools/go/types/typeutil" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" - - "golang.org/x/tools/go/types/typeutil" ) const jsonRPCClientBase = ` @@ -116,12 +115,13 @@ type jsonRPCJSClientOptionsGateway interface { ErrorKeys() []uint32 Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption + CommentFields() map[string]map[string]string + Enums() *typeutil.Map } type jsonRPCJSClient struct { writer.BaseWriter options jsonRPCJSClientOptionsGateway - enums *typeutil.Map } func (g *jsonRPCJSClient) Prepare(_ context.Context) error { @@ -201,11 +201,8 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { mw.W(p.Name()) } var prefix string - if g.options.Interfaces().Len() > 1 { - prefix = iface.LoweName() + "." - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() + "." - } + if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { + prefix = iface.NameUnExport() + "." } mw.W(") {\n") @@ -269,7 +266,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } g.W("}\n}\n") - g.enums.Iterate(func(key stdtypes.Type, value interface{}) { + g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic) if !ok { @@ -306,12 +303,8 @@ func (g *jsonRPCJSClient) Filename() string { return "client_jsonrpc_gen.js" } -func NewJsonRPCJSClient( - options jsonRPCJSClientOptionsGateway, - enums *typeutil.Map, -) generator.Generator { +func NewJsonRPCJSClient(options jsonRPCJSClientOptionsGateway) generator.Generator { return &jsonRPCJSClient{ options: options, - enums: enums, } } diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index 8845d5db..c501a96c 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -5,6 +5,8 @@ import ( stdtypes "go/types" stdstrings "strings" + "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -15,6 +17,7 @@ type jsonRPCServerOptionsGateway interface { AppID() string UseFast() bool JSONRPCEnable() bool + GatewayEnable() bool JSONRPCPath() string MethodOption(m model.ServiceMethod) model.MethodOption Interfaces() model.Interfaces @@ -68,14 +71,13 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.Name()) g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) + g.W("var namespace string\n") - if g.options.Interfaces().Len() > 1 { - prefix := iface.NameUnExport() - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() - } - g.W("namespace = \"%s.\"\n", prefix) + + if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { + g.W("namespace = \"%s.\"\n", iface.NameUnExport()) } + g.W("if len(ns) > 0 {\n") g.W("namespace = %s.Join(ns, \".\") + \".\"\n", stringsPkg) g.W("}\n") @@ -132,6 +134,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } g.W("// HTTP %s Transport\n", g.options.Prefix()) + g.W("func MakeHandler%s(", g.options.Prefix()) for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -139,8 +142,18 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if i > 0 { g.W(",") } - g.W("svc%s %s", iface.Name(), typeStr) + + if g.options.GatewayEnable() { + g.W("%s %sOption", strings.LcFirst(iface.Name()), iface.Name()) + } else { + g.W("svc%s %s", iface.Name(), typeStr) + } + } + + if g.options.GatewayEnable() { + g.W(", logger %s.Logger", g.i.Import("log", "github.com/go-kit/kit/log")) } + g.W(", options ...ServerOption") g.W(") (") if g.options.UseFast() { @@ -152,24 +165,73 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W(", error) {\n") g.W("opts := &serverOpts{}\n") - g.W("for _, o := range options {\n o(opts)\n }\n") - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) - } + if g.options.GatewayEnable() { + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]s := %[2]sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + } - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) - for _, m := range iface.Methods() { - g.W( - "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.NameUnExport, m.Name, epSetName, - ) + sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") + lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + for _, m := range iface.Methods() { + + epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + + optName := strings.LcFirst(iface.Name()) + g.W("{\n") + + g.W("if %s.%s.Balancer == nil {\n", optName, m.Name) + g.W("%s.%s.Balancer = %s.NewRoundRobin\n", optName, m.Name, lbPkg) + g.W("}\n") + + g.W("if %s.%s.RetryMax == 0 {\n", optName, m.Name) + g.W("%s.%s.RetryMax = DefaultRetryMax\n", optName, m.Name) + g.W("}\n") + + g.W("if %s.%s.RetryTimeout == 0 {\n", optName, m.Name) + g.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name) + g.W("}\n") + + g.W("endpointer := %[1]s.NewEndpointer(%[2]s.Instancer, %[2]s.EndpointFactory.%[3]sEndpointFactory, logger)\n", sdPkg, optName, m.Name) + g.W( + "%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", + lbPkg, optName, m.Name, epSetName, + ) + g.W( + "%[2]s.%[1]sEndpoint = RetryErrorExtractor()(%[2]s.%[1]sEndpoint)\n", + m.Name, epSetName, + ) + g.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + m.NameUnExport, m.Name, epSetName, + ) + g.W("}\n") + } + } + } else { + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + } + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + for _, m := range iface.Methods() { + g.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + m.NameUnExport, m.Name, epSetName, + ) + } } } + if g.options.UseFast() { g.W("r := %s.New()\n", routerPkg) } else { diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index 139942ef..df6b0d15 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -36,12 +36,7 @@ func (g *logging) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - var ( - timePkg string - ) - if len(iface.Methods()) > 0 { - timePkg = g.i.Import("time", "time") - } + timePkg := g.i.Import("time", "time") loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 45b6aaf8..cd876946 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -11,7 +11,6 @@ import ( stdstrings "strings" "github.com/pquerna/ffjson/ffjson" - "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" iftypevisitor "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" @@ -276,21 +275,18 @@ func (g *openapiDoc) Process(ctx context.Context) error { var prefix string - if g.options.Interfaces().Len() > 1 { + if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { if g.options.JSONRPCEnable() { - prefix = strcase.ToLowerCamel(iface.Name()) + prefix = iface.NameUnExport() } else { prefix = strcase.ToKebab(iface.Name()) } - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() - } } if g.options.JSONRPCEnable() { - o = g.makeJSONRPCPath(m, iface, ntc, paramsComment) + o = g.makeJSONRPCPath(m, ntc, paramsComment, prefix) pathStr = "/" + strings.LcFirst(m.Name) - if g.options.Interfaces().Len() > 1 { + if prefix != "" { pathStr = "/" + prefix + "." + strings.LcFirst(m.Name) } methodName = "POST" @@ -313,16 +309,16 @@ func (g *openapiDoc) Process(ctx context.Context) error { if pathStr == "" { pathStr = strcase.ToKebab(m.LcName) } - svcPrefix := "" - if g.options.Interfaces().Len() > 1 { - svcPrefix = path.Join("/", prefix) + + if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { + prefix = path.Join("/", prefix) } for _, p := range m.Params { if regexp, ok := mopt.PathVars[p.Name()]; ok { pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) } } - pathStr = path.Join(svcPrefix, "/", pathStr) + pathStr = path.Join(prefix, "/", pathStr) for _, ei := range m.Errors { codeStr := strconv.FormatInt(ei.Code, 10) @@ -400,7 +396,9 @@ func (g *openapiDoc) Imports() []string { return nil } -func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.ServiceInterface, ntc ustypevisitor.NamedTypeCollector, paramsComment map[string]string) *openapi.Operation { +func (g *openapiDoc) makeJSONRPCPath( + m model.ServiceMethod, ntc ustypevisitor.NamedTypeCollector, paramsComment map[string]string, prefix string, +) *openapi.Operation { mopt := g.options.MethodOption(m) responseSchema := &openapi.Schema{ Type: "object", @@ -463,12 +461,9 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service }, } - var prefix string - if g.options.Interfaces().Len() > 1 { - prefix = strcase.ToLowerCamel(iface.Name()) + "." - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() + "." - } + methodName := strcase.ToLowerCamel(m.Name) + if prefix != "" { + methodName = prefix + "." + methodName } request := &openapi.Schema{ @@ -484,7 +479,7 @@ func (g *openapiDoc) makeJSONRPCPath(m model.ServiceMethod, iface *model.Service }, "method": &openapi.Schema{ Type: "string", - Enum: []string{prefix + strcase.ToLowerCamel(m.Name)}, + Enum: []string{methodName}, }, "params": requestSchema, }, diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index 84d95249..bdfb5723 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -52,25 +52,23 @@ func (g *restGoClient) Process(_ context.Context) error { clientType := "client" + iface.Name() typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - if len(iface.Methods()) > 0 { - if g.options.UseFast() { - kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") - } else { - kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") - } - if g.options.UseFast() { - httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") - } else { - httpPkg = g.i.Import("http", "net/http") - } - jsonPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - pkgIO = g.i.Import("io", "io") - fmtPkg = g.i.Import("fmt", "fmt") - contextPkg = g.i.Import("context", "context") - urlPkg = g.i.Import("url", "net/url") - netPkg = g.i.Import("net", "net") - stringsPkg = g.i.Import("strings", "strings") + if g.options.UseFast() { + kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = g.i.Import("http", "github.com/go-kit/kit/transport/http") + } + if g.options.UseFast() { + httpPkg = g.i.Import("fasthttp", "github.com/valyala/fasthttp") + } else { + httpPkg = g.i.Import("http", "net/http") } + jsonPkg = g.i.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + pkgIO = g.i.Import("io", "io") + fmtPkg = g.i.Import("fmt", "fmt") + contextPkg = g.i.Import("context", "context") + urlPkg = g.i.Import("url", "net/url") + netPkg = g.i.Import("net", "net") + stringsPkg = g.i.Import("strings", "strings") var name string if g.options.Interfaces().Len() > 1 { @@ -86,25 +84,23 @@ func (g *restGoClient) Process(_ context.Context) error { g.W("o(opts)\n") g.W("}\n") - if len(iface.Methods()) > 0 { - g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) - g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) - g.W("tgt = host + \":\" + port\n") - g.W("}\n") + g.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) + g.W("tgt = host + \":\" + port\n") + g.W("}\n") - g.W("u, err := %s.Parse(tgt)\n", urlPkg) + g.W("u, err := %s.Parse(tgt)\n", urlPkg) - g.WriteCheckErr(func() { - g.W("return nil, err") - }) + g.WriteCheckErr(func() { + g.W("return nil, err") + }) - g.W("if u.Scheme == \"\" {\n") - g.W("u.Scheme = \"https\"") - g.W("}\n") - } + g.W("if u.Scheme == \"\" {\n") + g.W("u.Scheme = \"https\"") + g.W("}\n") for _, m := range iface.Methods() { epName := m.LcName + "Endpoint" @@ -120,12 +116,8 @@ func (g *restGoClient) Process(_ context.Context) error { pathStr = path.Join("/", m.LcName) } - if g.options.Interfaces().Len() > 1 { - svcPrefix := strcase.ToKebab(iface.NameUnExport()) - if iface.NameUnExport() != "" { - svcPrefix = iface.NameUnExport() - } - pathStr = path.Join("/", svcPrefix, "/", pathStr) + if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { + pathStr = path.Join("/", strcase.ToKebab(iface.NameUnExport()), "/", pathStr) } var ( diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index edc42161..849d358d 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -9,16 +9,13 @@ import ( ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/usecase/processor" "golang.org/x/tools/go/packages" - "golang.org/x/tools/go/types/typeutil" ) type serviceProcessor struct { - sg gateway.ServiceGateway - gi *git.GIT - workDir string - commentFields map[string]map[string]string - enums *typeutil.Map - pkg *packages.Package + sg gateway.ServiceGateway + gi *git.GIT + workDir string + pkg *packages.Package } func (p *serviceProcessor) Pkg() *packages.Package { @@ -28,6 +25,9 @@ func (p *serviceProcessor) Pkg() *packages.Package { func (p *serviceProcessor) Generators() []ug.Generator { var generators []ug.Generator generators = append(generators, generator.NewEndpoint(p.sg)) + if p.sg.GatewayEnable() { + generators = append(generators, generator.NewGatewayGenerator(p.sg.Interfaces())) + } if p.sg.ReadmeEnable() { tags, _ := p.gi.GetTags() generators = append(generators, @@ -49,12 +49,7 @@ func (p *serviceProcessor) Generators() []ug.Generator { } if p.sg.JSONRPCEnable() { if p.sg.JSONRPCDocEnable() { - generators = append(generators, generator.NewJsonrpcDoc( - p.sg, - p.commentFields, - p.enums, - p.workDir, - )) + generators = append(generators, generator.NewJsonrpcDoc(p.sg, p.workDir)) } generators = append(generators, generator.NewJsonRPCServer(p.sg)) } else { @@ -62,12 +57,13 @@ func (p *serviceProcessor) Generators() []ug.Generator { } } if p.sg.ClientEnable() { - generators = append(generators, - generator.NewEndpointFactory(p.sg), - generator.NewClientStruct(p.sg), - ) + if p.sg.GoClientEnable() { + generators = append(generators, + generator.NewEndpointFactory(p.sg), + generator.NewClientStruct(p.sg), + ) + } if p.sg.JSONRPCEnable() { - if p.sg.GoClientEnable() { generators = append( generators, @@ -77,7 +73,7 @@ func (p *serviceProcessor) Generators() []ug.Generator { if p.sg.JSClientEnable() { generators = append( generators, - generator.NewJsonRPCJSClient(p.sg, p.enums), + generator.NewJsonRPCJSClient(p.sg), ) } } else if p.sg.GoClientEnable() { @@ -93,17 +89,13 @@ func (p *serviceProcessor) Generators() []ug.Generator { func NewService( sg gateway.ServiceGateway, gi *git.GIT, - commentFields map[string]map[string]string, - enums *typeutil.Map, workDir string, pkg *packages.Package, ) processor.Processor { return &serviceProcessor{ - sg: sg, - gi: gi, - commentFields: commentFields, - enums: enums, - workDir: workDir, - pkg: pkg, + sg: sg, + gi: gi, + workDir: workDir, + pkg: pkg, } } diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go index 69d4a3f4..752626ba 100644 --- a/internal/interface/registry/processor.go +++ b/internal/interface/registry/processor.go @@ -3,8 +3,6 @@ package registry import ( "errors" - "github.com/swipe-io/swipe/v2/internal/usecase/finder" - "github.com/swipe-io/swipe/v2/internal/astloader" "github.com/swipe-io/swipe/v2/internal/git" ig "github.com/swipe-io/swipe/v2/internal/interface/gateway" @@ -15,28 +13,20 @@ import ( ) type registryProcessor struct { - finder finder.ServiceFinder + l *option.Loader } func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader.Data) (up.Processor, error) { gt := git.NewGIT() switch o.Option.Name { - case "Gateway": - hg, err := ig.NewGateway(o.Pkg, o.Option, r.finder) - if err != nil { - return nil, err - } - return processor.NewGatewayProcessor(hg, o.Pkg), nil case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs) + sg, err := ig.NewServiceGateway(o.Pkg, r.l, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums) if err != nil { return nil, err } return processor.NewService( sg, gt, - data.CommentFields, - data.Enums, data.WorkDir, o.Pkg, ), nil @@ -50,6 +40,6 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader return nil, errors.New("unexpected processor: " + o.Option.Name) } -func NewRegistry(finder finder.ServiceFinder) registry.ProcessorRegistry { - return ®istryProcessor{finder: finder} +func NewRegistry(l *option.Loader) registry.ProcessorRegistry { + return ®istryProcessor{l: l} } diff --git a/internal/option/loader.go b/internal/option/loader.go index 6bad6da7..274e1bc5 100644 --- a/internal/option/loader.go +++ b/internal/option/loader.go @@ -2,7 +2,11 @@ package option import ( "go/ast" + "go/build" stdtypes "go/types" + "os" + "path/filepath" + "strings" "sync" "github.com/swipe-io/swipe/v2/internal/astloader" @@ -21,6 +25,7 @@ type Result struct { } type Loader struct { + astLoader *astloader.Loader } func (l *Loader) declProcess(pkg *packages.Package, decl ast.Decl) (*ResultOption, error) { @@ -75,9 +80,9 @@ func (l *Loader) loadPkgs(pkgs []*packages.Package) (<-chan *ResultOption, <-cha return outCh, errCh } -func (l *Loader) Load(wd string, env []string, patterns []string) (result *Result, errs []error) { +func (l *Loader) Load() (result *Result, errs []error) { result = &Result{} - data, errs := astloader.NewLoader(wd, env, patterns).Process() + data, errs := l.astLoader.Process() if len(errs) > 0 { return nil, errs } @@ -90,7 +95,16 @@ func (l *Loader) Load(wd string, env []string, patterns []string) (result *Resul errs = append(errs, e) } }() + + srcPath := filepath.Join(build.Default.GOPATH, "src") + string(os.PathSeparator) + wd := l.astLoader.WorkDir() + basePkg := strings.Replace(wd, srcPath, "", -1) + for option := range optionsCh { + pkgPath := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") + if pkgPath != basePkg { + continue + } result.Options = append(result.Options, option) } return @@ -123,6 +137,6 @@ func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallE return nil, nil } -func NewLoader() *Loader { - return &Loader{} +func NewLoader(astLoader *astloader.Loader) *Loader { + return &Loader{astLoader: astLoader} } diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index dd8c1569..fb44a672 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -4,6 +4,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/openapi" "github.com/swipe-io/swipe/v2/internal/option" + "golang.org/x/tools/go/types/typeutil" ) type ServiceGateway interface { @@ -40,4 +41,9 @@ type ServiceGateway interface { OpenapiServers() []openapi.Server OpenapiMethodTags(name string) []string OpenapiDefaultMethodTags() []string + + GatewayEnable() bool + + CommentFields() map[string]map[string]string + Enums() *typeutil.Map } diff --git a/swipe.go b/swipe.go index 6d3d7584..35dedb17 100644 --- a/swipe.go +++ b/swipe.go @@ -164,6 +164,11 @@ func JSONRPCDocOutput(output string) ServiceOption { return "implementation not generated, run swipe" } +// GatewayEnable enabled use Gateway service type. +func GatewayEnable() ServiceOption { + return "implementation not generated, run swipe" +} + // MethodOptions option for defining method settings. // Given signature is interface method, for example: // pkg.Iface.Create @@ -181,6 +186,10 @@ func Logging(enable bool) MethodOption { return "implementation not generated, run swipe" } +func Exclude(enable bool) MethodOption { + return "implementation not generated, run swipe" +} + func LoggingParams(includes []string, excludes []string) MethodOption { return "implementation not generated, run swipe" } @@ -308,19 +317,3 @@ func OpenapiLicence(name, url string) ServiceOption { func OpenapiServer(description, url string) ServiceOption { return "implementation not generated, run swipe" } - -func Gateway(services ...GatewayOption) Option { - return "implementation not generated, run swipe" -} - -func GatewayService(iface interface{}, opts ...GatewayServiceOption) GatewayOption { - return "implementation not generated, run swipe" -} - -func GatewayServiceMethod(signature interface{}, opts ...GatewayServiceMethodOption) GatewayServiceOption { - return "implementation not generated, run swipe" -} - -func GatewayBalancer(string) GatewayServiceMethodOption { - return "implementation not generated, run swipe" -} From 0ccd895fb5381c7bfc538326dc3e1046d43422ae Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:20:17 +0300 Subject: [PATCH 136/293] test: fixed --- gen_test.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gen_test.go b/gen_test.go index d32471bb..42fb13ab 100644 --- a/gen_test.go +++ b/gen_test.go @@ -10,11 +10,12 @@ import ( "strings" "testing" + "github.com/swipe-io/swipe/v2/internal/astloader" + "github.com/google/go-cmp/cmp" "github.com/swipe-io/swipe/v2/internal/interface/executor" "github.com/swipe-io/swipe/v2/internal/interface/factory" - "github.com/swipe-io/swipe/v2/internal/interface/finder" "github.com/swipe-io/swipe/v2/internal/interface/frame" "github.com/swipe-io/swipe/v2/internal/interface/registry" "github.com/swipe-io/swipe/v2/internal/option" @@ -24,10 +25,10 @@ import ( var record = flag.Bool("record", false, "write expected result without running tests") var onlyDiff = flag.Bool("only-diff", false, "show only diff") -func newGeneratorExecutor() ue.GenerationExecutor { - l := option.NewLoader() - fi := finder.NewServiceFinder(l) - r := registry.NewRegistry(fi) +func newGeneratorExecutor(wd string) ue.GenerationExecutor { + astl := astloader.NewLoader(wd, os.Environ(), []string{"."}) + l := option.NewLoader(astl) + r := registry.NewRegistry(l) i := factory.NewImporterFactory() ff := frame.NewFrameFactory(Version) return executor.NewGenerationExecutor(r, i, ff, l) @@ -36,8 +37,6 @@ func newGeneratorExecutor() ue.GenerationExecutor { func TestSwipe(t *testing.T) { const testRoot = "fixtures" - ge := newGeneratorExecutor() - testdataEnts, err := ioutil.ReadDir(testRoot) if err != nil { t.Fatal(err) @@ -56,9 +55,11 @@ func TestSwipe(t *testing.T) { tests = append(tests, test) } for _, test := range tests { + ge := newGeneratorExecutor(test.testCasePath) + test := test t.Run(test.name, func(t *testing.T) { - results, errs := ge.Execute(test.testCasePath, os.Environ(), []string{"."}) + results, errs := ge.Execute() if len(errs) > 0 { for _, e := range errs { t.Error(e) From 9cca90a346332d6ec00cee30120543382ba0c012 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:55:51 +0300 Subject: [PATCH 137/293] refactor: fixed check base pkg --- internal/option/loader.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/option/loader.go b/internal/option/loader.go index 274e1bc5..a5c770f1 100644 --- a/internal/option/loader.go +++ b/internal/option/loader.go @@ -101,8 +101,10 @@ func (l *Loader) Load() (result *Result, errs []error) { basePkg := strings.Replace(wd, srcPath, "", -1) for option := range optionsCh { - pkgPath := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") - if pkgPath != basePkg { + optRootPkg := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") + baseRootPkg := strings.Join(strings.Split(basePkg, "/")[:3], "/") + + if optRootPkg != baseRootPkg { continue } result.Options = append(result.Options, option) From 232f5ef5847f2f67a2defd2edf20428381cb81d5 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:56:07 +0300 Subject: [PATCH 138/293] test: added clean generated files --- gen_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gen_test.go b/gen_test.go index 42fb13ab..e218609a 100644 --- a/gen_test.go +++ b/gen_test.go @@ -65,6 +65,17 @@ func TestSwipe(t *testing.T) { t.Error(e) } } + + // clear all before generated files. + _ = filepath.Walk(test.testCasePath, func(path string, info os.FileInfo, err error) error { + if !info.IsDir() { + if strings.Contains(info.Name(), "_gen") { + _ = os.Remove(path) + } + } + return nil + }) + for _, result := range results { if len(result.Errs) > 0 { t.Fatalf("result errors: %v", result.Errs) From 04e268ec1fade1fdb88cbee78beb0b9b3aff2770 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 16 Jan 2021 13:56:45 +0300 Subject: [PATCH 139/293] test: generate new fixtures --- .gitattributes | 57 ++++++ .swipe/README.md.tpl | 35 ++++ config_doc_gen.md | 29 +++ .../GatewaySuccess/app/client_jsonrpc_gen.js | 129 +++++++++++++ .../app/openapi_jsonrpc_gen.json | 1 + .../app/client_jsonrpc_gen.js | 2 +- .../app/client_jsonrpc_gen.js | 16 +- .../app/openapi_jsonrpc_gen.json | 2 +- .../app/openapi_rest_gen.json | 2 +- jsonrpc_doc_gen.md | 173 ++++++++++++++++++ openapi_jsonrpc_gen.json | 1 + openapi_rest_gen.json | 1 + swipe.go | 2 +- 13 files changed, 439 insertions(+), 11 deletions(-) create mode 100644 .gitattributes create mode 100755 .swipe/README.md.tpl create mode 100755 config_doc_gen.md create mode 100755 fixtures/GatewaySuccess/app/client_jsonrpc_gen.js create mode 100755 fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json create mode 100755 jsonrpc_doc_gen.md create mode 100755 openapi_jsonrpc_gen.json create mode 100755 openapi_rest_gen.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..98f29e8a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,57 @@ + +# /swipe gen +config_doc_gen.md -diff +config_doc_gen.md -diff +fixtures/ConfigUseZeroSuccess/app/config_gen.go -diff +fixtures/ConfigRequiredUseZeroSuccess/app/config_gen.go -diff +fixtures/ConfigRequiredSuccess/app/config_gen.go -diff +fixtures/GatewaySuccess/app/endpoint_gen.go -diff +fixtures/GatewaySuccess/app/gateway_gen.go -diff +fixtures/GatewaySuccess/app/http_gen.go -diff +fixtures/GatewaySuccess/app/server_gen.go -diff +openapi_jsonrpc_gen.json -diff +fixtures/ServiceJSONRPCMulti/app/endpoint_gen.go -diff +fixtures/ServiceRESTMulti/app/logging_gen.go -diff +README.md -diff +README.md -diff +README.md -diff +README.md -diff +fixtures/ServiceJSONRPCSingle/app/endpoint_gen.go -diff +fixtures/ServiceRESTSingle/app/endpoint_gen.go -diff +fixtures/ServiceRESTMulti/app/server_gen.go -diff +openapi_rest_gen.json -diff +openapi_rest_gen.json -diff +fixtures/ServiceJSONRPCMulti/app/endpoint_factory_gen.go -diff +fixtures/ServiceRESTMulti/app/endpoint_gen.go -diff +fixtures/GatewaySuccess/app/client_jsonrpc_gen.js -diff +fixtures/ServiceRESTMulti/app/endpoint_factory_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/http_gen.go -diff +jsonrpc_doc_gen.md -diff +jsonrpc_doc_gen.md -diff +fixtures/ServiceRESTSingle/app/logging_gen.go -diff +openapi_jsonrpc_gen.json -diff +fixtures/ServiceRESTSingle/app/server_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/endpoint_factory_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/server_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/http_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/server_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/logging_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/client_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/client_struct_gen.go -diff +fixtures/ServiceRESTMulti/app/instrumenting_gen.go -diff +fixtures/ServiceRESTSingle/app/http_gen.go -diff +openapi_jsonrpc_gen.json -diff +fixtures/ServiceRESTMulti/app/client_gen.go -diff +fixtures/ServiceRESTSingle/app/endpoint_factory_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/instrumenting_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/instrumenting_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/logging_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/client_struct_gen.go -diff +fixtures/ServiceRESTSingle/app/instrumenting_gen.go -diff +fixtures/ServiceRESTMulti/app/http_gen.go -diff +fixtures/ServiceRESTSingle/app/client_struct_gen.go -diff +fixtures/ServiceJSONRPCSingle/app/client_gen.go -diff +fixtures/ServiceRESTSingle/app/client_gen.go -diff +fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js -diff +fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js -diff +# swipe gen/ diff --git a/.swipe/README.md.tpl b/.swipe/README.md.tpl new file mode 100755 index 00000000..b64b4415 --- /dev/null +++ b/.swipe/README.md.tpl @@ -0,0 +1,35 @@ +# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} diff --git a/config_doc_gen.md b/config_doc_gen.md new file mode 100755 index 00000000..26ce930b --- /dev/null +++ b/config_doc_gen.md @@ -0,0 +1,29 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| +|FLD_TIME_REQ|time.Time|Test time required description|yes|no| +|FLD_STRING_REQ|string|Test string required description|yes|no| +|FLD_BOOL_REQ|bool|Test bool required description|yes|no| +|FLD_INT_REQ|int|Test int required description|yes|no| +|FLD_INT8_REQ|int8|Test int8 required description|yes|no| +|FLD_INT16_REQ|int16|Test int16 required description|yes|no| +|FLD_INT32_REQ|int32|Test int32 required description|yes|no| +|FLD_INT64_REQ|int64|Test int64 required description|yes|no| +|FLD_U_INT_REQ|uint|Test uint required description|yes|no| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| +|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js b/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..a9d62fdc --- /dev/null +++ b/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js @@ -0,0 +1,129 @@ +// Code generated by Swipe v2.0.0-beta7. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + if (responses[i].error) { + scheduleRequests[responses[i].id].reject( + convertError(responses[i].error) + ); + continue; + } + scheduleRequests[responses[i].id].resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler.__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }); + } +} + +export default JSONRPCClientB; + +function convertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json b/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..78c5b1c5 --- /dev/null +++ b/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 1f17de44..bd20b72f 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta7. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 4c7ba25c..7638aedc 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -1,4 +1,4 @@ -// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. +// Code generated by Swipe v2.0.0-beta7. DO NOT EDIT. export class JSONRPCError extends Error { constructor(message, name, code, data) { @@ -159,7 +159,7 @@ class JSONRPCClientService { * @param {Array} data **/ create(newData, name, data) { - return this.scheduler.__scheduleRequest("create", { + return this.scheduler.__scheduleRequest("service.create", { newData: newData, name: name, data: data @@ -170,7 +170,7 @@ class JSONRPCClientService { * @return {PromiseLike<{a: string, b: string}>} **/ delete(id) { - return this.scheduler.__scheduleRequest("delete", { id: id }); + return this.scheduler.__scheduleRequest("service.delete", { id: id }); } /** * Get item. @@ -185,7 +185,7 @@ class JSONRPCClientService { * @return {PromiseLike} **/ get(id, name, fname, price, n, b, cc) { - return this.scheduler.__scheduleRequest("get", { + return this.scheduler.__scheduleRequest("service.get", { id: id, name: name, fname: fname, @@ -203,7 +203,9 @@ class JSONRPCClientService { * @return {PromiseLike>} **/ getAll(members) { - return this.scheduler.__scheduleRequest("getAll", { members: members }); + return this.scheduler.__scheduleRequest("service.getAll", { + members: members + }); } /** * @param {Object} data @@ -211,7 +213,7 @@ class JSONRPCClientService { * @return {PromiseLike>>>} **/ testMethod(data, ss) { - return this.scheduler.__scheduleRequest("testMethod", { + return this.scheduler.__scheduleRequest("service.testMethod", { data: data, ss: ss }); @@ -225,7 +227,7 @@ class JSONRPCClientService { * @param {string} permission **/ testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler.__scheduleRequest("testMethod2", { + return this.scheduler.__scheduleRequest("service.testMethod2", { ns: ns, utype: utype, user: user, diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json index 4e0f0fb2..34b78b1f 100755 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json index 2f1133a1..2f864485 100755 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/jsonrpc_doc_gen.md b/jsonrpc_doc_gen.md new file mode 100755 index 00000000..62902661 --- /dev/null +++ b/jsonrpc_doc_gen.md @@ -0,0 +1,173 @@ +# Swipe JSONRPC Client + +a.TestMethod + +### a.TestMethod() ⇒void + + + + + +**Throws**: + +ErrUnauthorizedException + + + +b.Create + +b.Delete + +b.Get + +b.GetAll + +b.TestMethod + +b.TestMethod2 + +### b.Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### b.Delete(id) ⇒ + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### b.Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### b.GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|title|string|| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|created_at|string|| +|updated_at|string|| +## Enums +### TransportEnum string + +| Name | Value | Description | +|------|------|------| +|HTTPTransport|http|| diff --git a/openapi_jsonrpc_gen.json b/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..2bbd142b --- /dev/null +++ b/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/openapi_rest_gen.json b/openapi_rest_gen.json new file mode 100755 index 00000000..2f864485 --- /dev/null +++ b/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/swipe.go b/swipe.go index 35dedb17..e6b95887 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta6" +const Version = "v2.0.0-beta7" // A Option is an option for a Swipe. type Option string From ba64ca9254e10af8653ec4877e880e2b913336d1 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 18 Jan 2021 11:47:27 +0300 Subject: [PATCH 140/293] feat: adds generation, checks for empty value for query param --- internal/interface/generator/rest_server.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index a32d970e..b837fec0 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -233,7 +233,14 @@ func (g *restServer) Process(_ context.Context) error { } else { valueID = "q.Get(" + strconv.Quote(queryName) + ")" } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, []string{"nil"}, "", false, "") + + tmpID := "tmp" + p.Name() + g.W("%s := %s\n", tmpID, valueID) + + g.W("if %s != \"\" {\n", tmpID) + g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), tmpID, p, []string{"nil"}, "", false, "") + g.W("}\n") + } else if headerName, ok := mopt.HeaderVars[p.Name()]; ok { var valueID string if g.options.UseFast() { From 55c4d8ebb1763cd5e2200dd67713bc3e3dcddff8 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 20 Jan 2021 10:36:44 +0300 Subject: [PATCH 141/293] refactor: fixed json rpc client method name --- internal/interface/generator/jsonrpc_go_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/interface/generator/jsonrpc_go_client.go b/internal/interface/generator/jsonrpc_go_client.go index 9f517b0a..8717a27a 100644 --- a/internal/interface/generator/jsonrpc_go_client.go +++ b/internal/interface/generator/jsonrpc_go_client.go @@ -151,7 +151,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { methodName := m.LcName if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { - methodName = iface.NameUnExport() + "." + iface.NameUnExport() + methodName = iface.NameUnExport() + "." + methodName } g.W("c.%sEndpoint = %s.NewClient(\n", m.LcName, jsonrpcPkg) From b5211987c510cfa5d78571a3229f3d7f78a90fd1 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 2 Feb 2021 01:04:41 +0300 Subject: [PATCH 142/293] feat: added logging context option --- cmd/swipe/main.go | 2 +- .../app/config_doc_gen.md | 29 -- .../app/config_doc_gen.md | 28 -- fixtures/ConfigSuccess/app/config_doc_gen.md | 30 -- .../app/config_doc_gen.md | 28 -- .../GatewaySuccess/app/client_jsonrpc_gen.js | 129 -------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/client_jsonrpc_gen.js | 280 ------------------ .../app/jsonrpc_doc_gen.md | 211 ------------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/client_jsonrpc_gen.js | 262 ---------------- .../app/jsonrpc_doc_gen.md | 153 ---------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/openapi_rest_gen.json | 1 - fixtures/ServiceRESTMulti/app/swipe.go | 1 + .../app/openapi_rest_gen.json | 1 - gen_test.go | 2 +- internal/astloader/astloader.go | 19 +- internal/domain/model/service.go | 1 + internal/interface/gateway/service.go | 10 + internal/interface/generator/logging.go | 14 + internal/interface/generator/readme.go | 4 +- internal/interface/generator/utils.go | 2 +- internal/option/loader.go | 12 +- swipe.go | 6 +- 25 files changed, 54 insertions(+), 1174 deletions(-) delete mode 100755 fixtures/ConfigRequiredSuccess/app/config_doc_gen.md delete mode 100755 fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md delete mode 100755 fixtures/ConfigSuccess/app/config_doc_gen.md delete mode 100755 fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md delete mode 100755 fixtures/GatewaySuccess/app/client_jsonrpc_gen.js delete mode 100755 fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json delete mode 100755 fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js delete mode 100755 fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md delete mode 100755 fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json delete mode 100755 fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js delete mode 100755 fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md delete mode 100755 fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json delete mode 100755 fixtures/ServiceRESTMulti/app/openapi_rest_gen.json delete mode 100755 fixtures/ServiceRESTSingle/app/openapi_rest_gen.json diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 60366269..66b02277 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -132,7 +132,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } } - astLoader := astloader.NewLoader(wd, os.Environ(), packages(f)) + astLoader := astloader.NewLoader(wd, os.Environ(), packages(f), mod) l := option.NewLoader(astLoader) r := registry.NewRegistry(l) i := factory.NewImporterFactory() diff --git a/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md deleted file mode 100755 index 26ce930b..00000000 --- a/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,29 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| -|FLD_TIME_REQ|time.Time|Test time required description|yes|no| -|FLD_STRING_REQ|string|Test string required description|yes|no| -|FLD_BOOL_REQ|bool|Test bool required description|yes|no| -|FLD_INT_REQ|int|Test int required description|yes|no| -|FLD_INT8_REQ|int8|Test int8 required description|yes|no| -|FLD_INT16_REQ|int16|Test int16 required description|yes|no| -|FLD_INT32_REQ|int32|Test int32 required description|yes|no| -|FLD_INT64_REQ|int64|Test int64 required description|yes|no| -|FLD_U_INT_REQ|uint|Test uint required description|yes|no| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| -|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index e03115a9..00000000 --- a/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| -|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| -|FLD_STRING_REQ|string|Test string required description|yes|yes| -|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| -|FLD_INT_REQ|int|Test int required description|yes|yes| -|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| -|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| -|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| -|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| -|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/ConfigSuccess/app/config_doc_gen.md b/fixtures/ConfigSuccess/app/config_doc_gen.md deleted file mode 100755 index 79abf177..00000000 --- a/fixtures/ConfigSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,30 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION|time.Duration|Test duration required description|no|no| -|FLD_TIME|time.Time|Test time required description|no|no| -|FLD_STRING|string|Test string required description|no|no| -|FLD_BOOL|bool|Test bool required description|no|no| -|FLD_INT|int|Test int required description|no|no| -|FLD_INT8|int8|Test int8 required description|no|no| -|FLD_INT16|int16|Test int16 required description|no|no| -|FLD_INT32|int32|Test int32 required description|no|no| -|FLD_INT64|int64|Test int64 required description|no|no| -|FLD_U_INT|uint|Test uint required description|no|no| -|FLD_U_INT8|uint8|Test uint8 required description|no|no| -|FLD_U_INT16|uint16|Test uint16 required description|no|no| -|FLD_U_INT32|uint32|Test uint32 required description|no|no| -|FLD_U_INT64|uint64|Test uint64 required description|no|no| -|FLD_FLOAT64|float64|Test int required description|no|no| -|FLD_FLOAT32|float32|Test int required description|no|no| -|FLD_STRINGS|[]string|Test []string required description|no|no| -|FLD_MAP|map[string]string|Test map[string]string required description|no|no| -|ID3_VER|string|Test number env name required description|no|no| -|TEST_NUMBER123|string|Test number env name required description|no|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index 60eb6078..00000000 --- a/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| -|FLD_TIME_REQ|time.Time|Test time required description|no|yes| -|FLD_STRING_REQ|string|Test string required description|no|yes| -|FLD_BOOL_REQ|bool|Test bool required description|no|yes| -|FLD_INT_REQ|int|Test int required description|no|yes| -|FLD_INT8_REQ|int8|Test int8 required description|no|yes| -|FLD_INT16_REQ|int16|Test int16 required description|no|yes| -|FLD_INT32_REQ|int32|Test int32 required description|no|yes| -|FLD_INT64_REQ|int64|Test int64 required description|no|yes| -|FLD_U_INT_REQ|uint|Test uint required description|no|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js b/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js deleted file mode 100755 index a9d62fdc..00000000 --- a/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,129 +0,0 @@ -// Code generated by Swipe v2.0.0-beta7. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - if (responses[i].error) { - scheduleRequests[responses[i].id].reject( - convertError(responses[i].error) - ); - continue; - } - scheduleRequests[responses[i].id].resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler.__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }); - } -} - -export default JSONRPCClientB; - -function convertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json b/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 78c5b1c5..00000000 --- a/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js deleted file mode 100755 index bd20b72f..00000000 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,280 +0,0 @@ -// Code generated by Swipe v2.0.0-beta7. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - if (responses[i].error) { - scheduleRequests[responses[i].id].reject( - convertError(responses[i].error) - ); - continue; - } - scheduleRequests[responses[i].id].resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** -* @typedef {Object} User -* @property {string} title - -* @property {string} id -* @property {string} name -* @property {string} password -* @property {GeoJSON} point -* @property {string} last_seen -* @property {Data} data -* @property {Array} photo -* @property {User} user -* @property {Profile} profile -* @property {Recurse} recurse -* @property {string} created_at -* @property {string} updated_at -*/ - -/** - * @typedef {Object} Info - * @property {string} title - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientA { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - **/ - testMethod() { - return this.scheduler.__scheduleRequest("a.testMethod", {}); - } -} - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler.__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - delete(id) { - return this.scheduler.__scheduleRequest("b.delete", { id: id }); - } - /** - * Get item. - * - * @param {number} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - get(id, name, fname, price, n, b, cc) { - return this.scheduler.__scheduleRequest("b.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - getAll(members) { - return this.scheduler.__scheduleRequest("b.getAll", { members: members }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - testMethod(data, ss) { - return this.scheduler.__scheduleRequest("b.testMethod", { - data: data, - ss: ss - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler.__scheduleRequest("b.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }); - } -} - -class JSONRPCClient { - constructor(transport) { - this.A = new JSONRPCClientA(transport); - this.B = new JSONRPCClientB(transport); - } -} -export default JSONRPCClient; - -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -export class ErrForbiddenError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); - } -} -function convertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - case -32002: - return new ErrForbiddenError(e.message, e.data); - } -} diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md deleted file mode 100755 index 1645b813..00000000 --- a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,211 +0,0 @@ -# Swipe JSONRPC Client - -## Getting Started - -You can install this with: - -```shell script -npm install --save-dev service -``` - -Import the package with the client: - -```javascript -import API from "service" -``` - -Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. - -For example: - -```javascript -class FetchTransport { - constructor(url) { - this.url = url; - } - - doRequest(requests) { - return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) - } -} -``` - -Now for a complete example: - -```javascript -import API from "service" -import Transport from "transport" - -const api = new API(new Transport("http://127.0.0.1")) - -// call method here. -``` - -## API -## Methods - -a.TestMethod - -### a.TestMethod() ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -b.Create - -b.Delete - -b.Get - -b.GetAll - -b.TestMethod - -b.TestMethod2 - -### b.Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### b.Delete(id) ⇒ - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### b.Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### b.GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|title|string|| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|created_at|string|| -|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 2bbd142b..00000000 --- a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js deleted file mode 100755 index 7638aedc..00000000 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,262 +0,0 @@ -// Code generated by Swipe v2.0.0-beta7. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - if (responses[i].error) { - scheduleRequests[responses[i].id].reject( - convertError(responses[i].error) - ); - continue; - } - scheduleRequests[responses[i].id].resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** - * @typedef {Object} User - * @property {string} id - * @property {string} name - * @property {string} password - * @property {GeoJSON} point - * @property {string} last_seen - * @property {Data} data - * @property {Array} photo - * @property {User} user - * @property {Profile} profile - * @property {Recurse} recurse - * @property {Kind} kind - * @property {string} created_at - * @property {string} updated_at - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {string} Kind - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientService { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler.__scheduleRequest("service.create", { - newData: newData, - name: name, - data: data - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - delete(id) { - return this.scheduler.__scheduleRequest("service.delete", { id: id }); - } - /** - * Get item. - * - * @param {string} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - get(id, name, fname, price, n, b, cc) { - return this.scheduler.__scheduleRequest("service.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - getAll(members) { - return this.scheduler.__scheduleRequest("service.getAll", { - members: members - }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - testMethod(data, ss) { - return this.scheduler.__scheduleRequest("service.testMethod", { - data: data, - ss: ss - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler.__scheduleRequest("service.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }); - } -} - -export default JSONRPCClientService; - -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -export class ErrForbiddenError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); - } -} -function convertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - case -32002: - return new ErrForbiddenError(e.message, e.data); - } -} diff --git a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md deleted file mode 100755 index eeb2277d..00000000 --- a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,153 +0,0 @@ -# Swipe JSONRPC Client - -Create - -Delete - -Get - -GetAll - -TestMethod - -TestMethod2 - -### Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### Delete(id) ⇒ - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|kind|Kind|| -|created_at|string|| -|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 34b78b1f..00000000 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json deleted file mode 100755 index 2f864485..00000000 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/swipe.go b/fixtures/ServiceRESTMulti/app/swipe.go index 8ee145eb..52db6afc 100644 --- a/fixtures/ServiceRESTMulti/app/swipe.go +++ b/fixtures/ServiceRESTMulti/app/swipe.go @@ -27,6 +27,7 @@ func Swipe() { swipe.RESTMethod(http.MethodPost), swipe.Logging(true), swipe.LoggingParams([]string{}, []string{"newData"}), + swipe.LoggingContext("123", "123"), ), swipe.MethodOptions(InterfaceB.Get, swipe.RESTPath("/get-test"), diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json deleted file mode 100755 index ed06c2ac..00000000 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/gen_test.go b/gen_test.go index e218609a..012e87eb 100644 --- a/gen_test.go +++ b/gen_test.go @@ -26,7 +26,7 @@ var record = flag.Bool("record", false, "write expected result without running t var onlyDiff = flag.Bool("only-diff", false, "show only diff") func newGeneratorExecutor(wd string) ue.GenerationExecutor { - astl := astloader.NewLoader(wd, os.Environ(), []string{"."}) + astl := astloader.NewLoader(wd, os.Environ(), []string{"."}, nil) l := option.NewLoader(astl) r := registry.NewRegistry(l) i := factory.NewImporterFactory() diff --git a/internal/astloader/astloader.go b/internal/astloader/astloader.go index 80ddf453..a33b3018 100644 --- a/internal/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -11,6 +11,8 @@ import ( "strings" stdstrings "strings" + "golang.org/x/mod/modfile" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/graph" "github.com/swipe-io/swipe/v2/internal/types" @@ -26,7 +28,7 @@ type nodeInfo struct { type Data struct { WorkDir string - RootPkgPath string + PkgPath string CommentFuncs map[string][]string CommentFields map[string]map[string]string Pkgs []*packages.Package @@ -39,6 +41,7 @@ type Loader struct { wd string env []string patterns []string + mod *modfile.File } func (l *Loader) Patterns() []string { @@ -57,9 +60,18 @@ func (l *Loader) Process() (data *Data, errs []error) { var ( err error ) + + var pkgPath string + + if l.mod == nil { + pkgPath = strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1] + } else { + pkgPath = l.mod.Module.Mod.Path + } + data = &Data{ WorkDir: l.wd, - RootPkgPath: strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1], + PkgPath: pkgPath, CommentFuncs: map[string][]string{}, CommentFields: map[string]map[string]string{}, GraphTypes: graph.NewGraph(), @@ -306,10 +318,11 @@ func visitBlockStmt(p *packages.Package, stmt ast.Stmt) (values []stdtypes.TypeA return } -func NewLoader(wd string, env []string, patterns []string) *Loader { +func NewLoader(wd string, env []string, patterns []string, mod *modfile.File) *Loader { return &Loader{ wd: wd, env: env, patterns: patterns, + mod: mod, } } diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index 7e2fe1af..c99fb2f4 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -145,6 +145,7 @@ type MethodOption struct { LoggingEnable bool LoggingIncludeParams map[string]struct{} LoggingExcludeParams map[string]struct{} + LoggingContext map[string]ast.Expr InstrumentingEnable bool Exclude bool } diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 61878a4e..ee0a363d 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -662,6 +662,16 @@ func getMethodOptions(o *option.Option, baseMethodOpts model.MethodOption) (mode baseMethodOpts.LoggingExcludeParams[field] = struct{}{} } } + + baseMethodOpts.LoggingContext = map[string]ast.Expr{} + + if opts, ok := o.Slice("LoggingContext"); ok { + for _, opt := range opts { + key := option.MustOption(opt.At("key")).Value.Expr() + name := option.MustOption(opt.At("name")).Value.String() + baseMethodOpts.LoggingContext[name] = key + } + } if opt, ok := o.At("Instrumenting"); ok { baseMethodOpts.InstrumentingEnable = opt.Value.Bool() } diff --git a/internal/interface/generator/logging.go b/internal/interface/generator/logging.go index df6b0d15..1788a5ae 100644 --- a/internal/interface/generator/logging.go +++ b/internal/interface/generator/logging.go @@ -2,6 +2,7 @@ package generator import ( "context" + "errors" "fmt" stdtypes "go/types" "strconv" @@ -56,6 +57,19 @@ func (g *logging) Process(ctx context.Context) error { logParams := makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Params...) + if len(mopt.LoggingContext) > 0 { + if m.ParamCtx == nil { + return errors.New(m.Name + " using LoggingContext need added context var") + } + for name, key := range mopt.LoggingContext { + var buf writer.GoLangWriter + buf.W("ctx.Value(") + writer.WriteAST(&buf, g.i, key) + buf.W(")") + logParams = append(logParams, strconv.Quote(name), buf.String()) + } + } + if len(m.Results) > 0 { if m.ResultsNamed { logParams = append(logParams, makeLogParams(mopt.LoggingIncludeParams, mopt.LoggingExcludeParams, m.Results...)...) diff --git a/internal/interface/generator/readme.go b/internal/interface/generator/readme.go index 88aa299a..804f6a4f 100644 --- a/internal/interface/generator/readme.go +++ b/internal/interface/generator/readme.go @@ -45,7 +45,7 @@ ToDo. {{range $index, $tag := .GIT.Tags -}} {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) + [{{$tag.Name}}](https://{{$.PkgPath}}/tree/{{$tag.Name}}) {{end -}} ` @@ -117,7 +117,7 @@ func (g *readmeGenerator) Process(ctx context.Context) (err error) { return g.tpl.Execute(g, map[string]interface{}{ "ID": g.options.AppID(), "ServiceName": g.options.AppName(), - "RootPkgPath": g.basePkgPath, + "PkgPath": g.basePkgPath, "GIT": map[string]interface{}{ "Tags": g.gitTags, }, diff --git a/internal/interface/generator/utils.go b/internal/interface/generator/utils.go index bf8cdec1..634f2c9e 100644 --- a/internal/interface/generator/utils.go +++ b/internal/interface/generator/utils.go @@ -51,7 +51,7 @@ func makeLogParam(name string, t stdtypes.Type) []string { return []string{quoteName, name} case *stdtypes.Named: if hasMethodString(t) { - return []string{quoteName, name + ".String()"} + return []string{quoteName, name} } if hasMethodLogParams(t) { return []string{quoteName, name + ".LogParams()"} diff --git a/internal/option/loader.go b/internal/option/loader.go index a5c770f1..275de4f5 100644 --- a/internal/option/loader.go +++ b/internal/option/loader.go @@ -2,10 +2,7 @@ package option import ( "go/ast" - "go/build" stdtypes "go/types" - "os" - "path/filepath" "strings" "sync" @@ -82,6 +79,7 @@ func (l *Loader) loadPkgs(pkgs []*packages.Package) (<-chan *ResultOption, <-cha func (l *Loader) Load() (result *Result, errs []error) { result = &Result{} + data, errs := l.astLoader.Process() if len(errs) > 0 { return nil, errs @@ -96,15 +94,9 @@ func (l *Loader) Load() (result *Result, errs []error) { } }() - srcPath := filepath.Join(build.Default.GOPATH, "src") + string(os.PathSeparator) - wd := l.astLoader.WorkDir() - basePkg := strings.Replace(wd, srcPath, "", -1) - for option := range optionsCh { optRootPkg := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") - baseRootPkg := strings.Join(strings.Split(basePkg, "/")[:3], "/") - - if optRootPkg != baseRootPkg { + if optRootPkg != data.PkgPath { continue } result.Options = append(result.Options, option) diff --git a/swipe.go b/swipe.go index e6b95887..fba42de3 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta7" +const Version = "v2.0.0-beta6" // A Option is an option for a Swipe. type Option string @@ -194,6 +194,10 @@ func LoggingParams(includes []string, excludes []string) MethodOption { return "implementation not generated, run swipe" } +func LoggingContext(key interface{}, name string) MethodOption { + return "implementation not generated, run swipe" +} + // InstrumentingEnable a option enabled/disable instrumenting (collect metrics) middleware. func Instrumenting(enable bool) MethodOption { return "implementation not generated, run swipe" From 424423986317a452ef2bb1d74d830e0c0ab3a650 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 13:58:51 +0300 Subject: [PATCH 143/293] refactor: fixed gateway generate --- internal/domain/model/service.go | 8 +- internal/interface/gateway/service.go | 22 +----- internal/interface/generator/endpoint.go | 8 +- .../interface/generator/endpoint_factory.go | 77 ++++++++++--------- internal/interface/generator/http_gateway.go | 7 ++ .../interface/generator/jsonrpc_server.go | 37 ++++----- internal/interface/processor/service.go | 13 ++-- internal/interface/registry/processor.go | 2 +- internal/usecase/gateway/service.go | 2 - swipe.go | 11 --- 10 files changed, 82 insertions(+), 105 deletions(-) diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index c99fb2f4..34735b42 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -32,6 +32,11 @@ type ServiceInterface struct { serviceIface *stdtypes.Interface serviceMethods []ServiceMethod isNameChange bool + external bool +} + +func (g *ServiceInterface) External() bool { + return g.external } func (g *ServiceInterface) IsNameChange() bool { @@ -70,7 +75,7 @@ func (g *ServiceInterface) Interface() *stdtypes.Interface { return g.serviceIface } -func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNameChange bool, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod) *ServiceInterface { +func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNameChange bool, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod, external bool) *ServiceInterface { return &ServiceInterface{ name: name, loweName: lowerName, @@ -81,6 +86,7 @@ func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNam serviceTypeName: serviceTypeName, serviceIface: serviceIface, serviceMethods: serviceMethods, + external: external, } } diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index ee0a363d..aa1c3147 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -54,8 +54,6 @@ type serviceGateway struct { appName string appID string defaultErrorEncoder option.Value - gatewayEnable bool - loader *option.Loader } func (g *serviceGateway) Enums() *typeutil.Map { @@ -66,10 +64,6 @@ func (g *serviceGateway) CommentFields() map[string]map[string]string { return g.commentFields } -func (g *serviceGateway) GatewayEnable() bool { - return g.gatewayEnable -} - func (g *serviceGateway) AppID() string { return g.appID } @@ -253,6 +247,9 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceNamed := ifacePtr.Elem().(*stdtypes.Named) + basePkgService := stdstrings.Join(stdstrings.Split(ifaceNamed.Obj().Pkg().Path(), "/")[:3], "/") + basePkgInternal := stdstrings.Join(stdstrings.Split(g.pkg.PkgPath, "/")[:3], "/") + ifaceName := strcase.ToCamel(ifaceNamed.Obj().Name()) ifaceLcName := strcase.ToLowerCamel(ifaceName) @@ -379,6 +376,7 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceNamed, ifaceType, serviceMethods, + basePkgService != basePkgInternal, ), nil } @@ -397,9 +395,6 @@ func (g *serviceGateway) load(o *option.Option) error { if err := g.loadJSONRPC(o); err != nil { return err } - if err := g.loadGateway(o); err != nil { - return err - } if err := g.loadOpenapi(o); err != nil { return err } @@ -635,13 +630,6 @@ func (g *serviceGateway) loadJSONRPC(o *option.Option) (err error) { return } -func (g *serviceGateway) loadGateway(o *option.Option) error { - if _, ok := o.At("GatewayEnable"); ok { - g.gatewayEnable = true - } - return nil -} - func getMethodOptions(o *option.Option, baseMethodOpts model.MethodOption) (model.MethodOption, error) { if opt, ok := o.At("Exclude"); ok { baseMethodOpts.Exclude = opt.Value.Bool() @@ -766,7 +754,6 @@ func httpBraceIndices(s string) ([]int, error) { func NewServiceGateway( pkg *packages.Package, - loader *option.Loader, o *option.Option, graphTypes *graph.Graph, commentFuncs map[string][]string, @@ -775,7 +762,6 @@ func NewServiceGateway( ) (gateway.ServiceGateway, error) { g := &serviceGateway{ pkg: pkg, - loader: loader, graphTypes: graphTypes, commentFuncs: commentFuncs, commentFields: commentFields, diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index cae0c76c..848344e9 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -18,7 +18,6 @@ import ( type endpointOptionsGateway interface { Interfaces() model.Interfaces - GatewayEnable() bool } type EndpointOption struct { @@ -35,12 +34,11 @@ func (g *endpoint) Prepare(ctx context.Context) error { } func (g *endpoint) Process(ctx context.Context) error { - if !g.options.GatewayEnable() { - g.writeEndpointMake() - } + g.writeEndpointMake() for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) epSetName := iface.Name() + "EndpointSet" @@ -51,7 +49,7 @@ func (g *endpoint) Process(ctx context.Context) error { } g.W("}\n") - if !g.options.GatewayEnable() { + if !iface.External() { g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) g.W("return %s{\n", epSetName) for _, m := range iface.Methods() { diff --git a/internal/interface/generator/endpoint_factory.go b/internal/interface/generator/endpoint_factory.go index 151db70c..0476f007 100644 --- a/internal/interface/generator/endpoint_factory.go +++ b/internal/interface/generator/endpoint_factory.go @@ -2,6 +2,7 @@ package generator import ( "context" + stdtypes "go/types" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" @@ -9,15 +10,11 @@ import ( "github.com/swipe-io/swipe/v2/internal/writer" ) -type endpointFactoryOptionsGateway interface { - Interfaces() model.Interfaces - Prefix() string -} - type endpointFactory struct { writer.GoLangWriter - options endpointFactoryOptionsGateway - i *importer.Importer + interfaces model.Interfaces + prefix string + i *importer.Importer } func (g *endpointFactory) Prepare(ctx context.Context) error { @@ -25,39 +22,41 @@ func (g *endpointFactory) Prepare(ctx context.Context) error { } func (g *endpointFactory) Process(ctx context.Context) error { + for i := 0; i < g.interfaces.Len(); i++ { + iface := g.interfaces.At(i) + + if iface.External() { + epFactoryName := iface.LoweName() + "EndpointFactory" + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + ioPkg := g.i.Import("io", "io") + stringsPkg := g.i.Import("strings", "strings") + + g.W("type %s struct{\n", epFactoryName) + g.W("factory func(instance string) (%s, error)\n", stdtypes.TypeString(iface.Type(), g.i.QualifyPkg)) + g.W("instance string\n") + g.W("}\n\n") + + for _, m := range iface.Methods() { + g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) + g.W("if f.instance != \"\"{\n") + g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.instance, \"/\")", stringsPkg) + g.W("}\n") + g.W("c, err := f.factory(instance)\n") + g.WriteCheckErr(func() { + g.W("return nil, nil, err\n") + }) + g.W("return ") + g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) + g.W("\n}\n\n") + } - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - - epFactoryName := iface.Name() + "EndpointFactory" - - g.W("type %s struct{\n", epFactoryName) - g.W("Option []ClientOption\n") - g.W("Path string\n") - g.W("}\n\n") - - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - ioPkg := g.i.Import("io", "io") - stringsPkg := g.i.Import("strings", "strings") + g.W("func New%sFactory(instance string,", iface.Name()) + g.W("factory func(instance string) (%s, error)", stdtypes.TypeString(iface.Type(), g.i.QualifyPkg)) + g.W(") %sEndpointFactory {\n", iface.Name()) - for _, m := range iface.Methods() { - g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) - g.W("if f.Path != \"\"{\n") - g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.Path, \"/\")", stringsPkg) + g.W("return &%s{instance: instance, factory: factory}\n", epFactoryName) g.W("}\n") - g.W("c, err := NewClient%s(instance, f.Option...)\n", g.options.Prefix()) - g.WriteCheckErr(func() { - g.W("return nil, nil, err\n") - }) - g.W("return ") - if g.options.Interfaces().Len() > 1 { - g.W("make%sEndpoint(c.%sClient), nil, nil\n", m.NameExport, iface.NameExport()) - } else { - g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) - } - g.W("\n}\n\n") } - } return nil } @@ -79,9 +78,11 @@ func (g *endpointFactory) SetImporter(i *importer.Importer) { } func NewEndpointFactory( - options endpointFactoryOptionsGateway, + interfaces model.Interfaces, + prefix string, ) generator.Generator { return &endpointFactory{ - options: options, + interfaces: interfaces, + prefix: prefix, } } diff --git a/internal/interface/generator/http_gateway.go b/internal/interface/generator/http_gateway.go index 94971185..b17de22a 100644 --- a/internal/interface/generator/http_gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -66,6 +66,9 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("type EndpointSet struct {\n") for _, s := range g.services { + if !s.External() { + continue + } g.W("%s struct {\n", s.Name()) for _, method := range s.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) @@ -75,6 +78,10 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") for _, s := range g.services { + if !s.External() { + continue + } + g.W("type %sEndpointFactory interface {\n", s.Name()) for _, method := range s.Methods() { g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index c501a96c..19fc47c1 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -17,7 +17,6 @@ type jsonRPCServerOptionsGateway interface { AppID() string UseFast() bool JSONRPCEnable() bool - GatewayEnable() bool JSONRPCPath() string MethodOption(m model.ServiceMethod) model.MethodOption Interfaces() model.Interfaces @@ -106,7 +105,6 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) g.W("}\n") g.W("return req, nil\n") - } else { g.W("return nil, nil\n") } @@ -136,6 +134,9 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("// HTTP %s Transport\n", g.options.Prefix()) g.W("func MakeHandler%s(", g.options.Prefix()) + + var hasGateway bool + for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) @@ -143,14 +144,15 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W(",") } - if g.options.GatewayEnable() { + if iface.External() { + hasGateway = true g.W("%s %sOption", strings.LcFirst(iface.Name()), iface.Name()) } else { g.W("svc%s %s", iface.Name(), typeStr) } } - if g.options.GatewayEnable() { + if hasGateway { g.W(", logger %s.Logger", g.i.Import("log", "github.com/go-kit/kit/log")) } @@ -167,23 +169,19 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("opts := &serverOpts{}\n") g.W("for _, o := range options {\n o(opts)\n }\n") - if g.options.GatewayEnable() { - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) - g.W("%[1]s := %[2]sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) - } + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) - sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") - lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") + if iface.External() { + sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") + lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) + g.W("%[1]s := %[2]sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) for _, m := range iface.Methods() { - epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) - optName := strings.LcFirst(iface.Name()) + g.W("{\n") g.W("if %s.%s.Balancer == nil {\n", optName, m.Name) @@ -213,15 +211,8 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { ) g.W("}\n") } - } - } else { - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) + } else { g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) - } - - for i := 0; i < g.options.Interfaces().Len(); i++ { - iface := g.options.Interfaces().At(i) epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) for _, m := range iface.Methods() { g.W( diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index 849d358d..f22526a5 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -2,7 +2,6 @@ package processor import ( "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/git" "github.com/swipe-io/swipe/v2/internal/interface/generator" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" @@ -24,10 +23,13 @@ func (p *serviceProcessor) Pkg() *packages.Package { func (p *serviceProcessor) Generators() []ug.Generator { var generators []ug.Generator - generators = append(generators, generator.NewEndpoint(p.sg)) - if p.sg.GatewayEnable() { - generators = append(generators, generator.NewGatewayGenerator(p.sg.Interfaces())) - } + generators = append( + generators, + generator.NewEndpoint(p.sg), + generator.NewGatewayGenerator(p.sg.Interfaces()), + generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), + ) + if p.sg.ReadmeEnable() { tags, _ := p.gi.GetTags() generators = append(generators, @@ -59,7 +61,6 @@ func (p *serviceProcessor) Generators() []ug.Generator { if p.sg.ClientEnable() { if p.sg.GoClientEnable() { generators = append(generators, - generator.NewEndpointFactory(p.sg), generator.NewClientStruct(p.sg), ) } diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go index 752626ba..adb77da4 100644 --- a/internal/interface/registry/processor.go +++ b/internal/interface/registry/processor.go @@ -20,7 +20,7 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader gt := git.NewGIT() switch o.Option.Name { case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, r.l, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums) + sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums) if err != nil { return nil, err } diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index fb44a672..b0af52ef 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -42,8 +42,6 @@ type ServiceGateway interface { OpenapiMethodTags(name string) []string OpenapiDefaultMethodTags() []string - GatewayEnable() bool - CommentFields() map[string]map[string]string Enums() *typeutil.Map } diff --git a/swipe.go b/swipe.go index fba42de3..d7512522 100644 --- a/swipe.go +++ b/swipe.go @@ -63,12 +63,6 @@ type OpenapiServersOption string // A OpenapiServerOption is an openapi concrete server option. type OpenapiServerOption string -type GatewayOption string - -type GatewayServiceOption string - -type GatewayServiceMethodOption string - type ReadmeOption string type InterfaceOption string @@ -164,11 +158,6 @@ func JSONRPCDocOutput(output string) ServiceOption { return "implementation not generated, run swipe" } -// GatewayEnable enabled use Gateway service type. -func GatewayEnable() ServiceOption { - return "implementation not generated, run swipe" -} - // MethodOptions option for defining method settings. // Given signature is interface method, for example: // pkg.Iface.Create From 6cc67117008c2d86a85d8ea74e6ee7a1ac69986d Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 14:13:53 +0300 Subject: [PATCH 144/293] refactor: disable generate gateway and endpoint factory generator if not exists gateway services --- internal/interface/gateway/service.go | 12 ++++++++++++ internal/interface/processor/service.go | 10 +++++++--- internal/usecase/gateway/service.go | 2 ++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index aa1c3147..1573bbde 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -54,6 +54,11 @@ type serviceGateway struct { appName string appID string defaultErrorEncoder option.Value + foundServiceGateway bool +} + +func (g *serviceGateway) FoundServiceGateway() bool { + return g.foundServiceGateway } func (g *serviceGateway) Enums() *typeutil.Map { @@ -456,17 +461,24 @@ func (g *serviceGateway) load(o *option.Option) error { }) }) + var foundServiceGateway bool if ifaces, ok := o.Slice("Interface"); ok { for _, iface := range ifaces { svc, err := g.loadService(iface, genericErrors, len(ifaces)) if err != nil { return err } + if svc.External() { + foundServiceGateway = true + } if len(svc.Methods()) > 0 { g.interfaces = append(g.interfaces, svc) } } } + + g.foundServiceGateway = foundServiceGateway + if o, ok := o.At("DefaultErrorEncoder"); ok { g.defaultErrorEncoder = o.Value } diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index f22526a5..72eba6c9 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -26,10 +26,14 @@ func (p *serviceProcessor) Generators() []ug.Generator { generators = append( generators, generator.NewEndpoint(p.sg), - generator.NewGatewayGenerator(p.sg.Interfaces()), - generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), ) - + if p.sg.FoundServiceGateway() { + generators = append( + generators, + generator.NewGatewayGenerator(p.sg.Interfaces()), + generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), + ) + } if p.sg.ReadmeEnable() { tags, _ := p.gi.GetTags() generators = append(generators, diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index b0af52ef..aa6096ea 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -44,4 +44,6 @@ type ServiceGateway interface { CommentFields() map[string]map[string]string Enums() *typeutil.Map + + FoundServiceGateway() bool } From 44be2898ebe48627cb67159be58574a3f9916701 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 14:49:57 +0300 Subject: [PATCH 145/293] refactor: fixed test --- fixtures/GatewaySuccess/app/swipe.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fixtures/GatewaySuccess/app/swipe.go b/fixtures/GatewaySuccess/app/swipe.go index 473f6f61..07d5a286 100644 --- a/fixtures/GatewaySuccess/app/swipe.go +++ b/fixtures/GatewaySuccess/app/swipe.go @@ -16,7 +16,6 @@ func Swipe() { swipe.HTTPServer(), swipe.JSONRPCEnable(), - swipe.GatewayEnable(), swipe.ClientsEnable([]string{"js"}), @@ -26,10 +25,6 @@ func Swipe() { swipe.Exclude(false), ), - //swipe.MethodOptions(app.InterfaceA.TestMethod, - // swipe.Exclude(false), - //), - swipe.MethodDefaultOptions( swipe.Exclude(true), ), From a5305562ee6b4944f5e88f2914eb395c552bb0d9 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 14:50:09 +0300 Subject: [PATCH 146/293] refactor: fixed check root pkg --- internal/option/loader.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/option/loader.go b/internal/option/loader.go index 275de4f5..83b0e759 100644 --- a/internal/option/loader.go +++ b/internal/option/loader.go @@ -96,7 +96,8 @@ func (l *Loader) Load() (result *Result, errs []error) { for option := range optionsCh { optRootPkg := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") - if optRootPkg != data.PkgPath { + pkgPath := strings.Join(strings.Split(data.PkgPath, "/")[:3], "/") + if optRootPkg != pkgPath { continue } result.Options = append(result.Options, option) From db7acdb331f4f3230cc3de9d976eb7fc686f0782 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 14:50:29 +0300 Subject: [PATCH 147/293] refactor: added sorting attributes git diff --- cmd/swipe/main.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 66b02277..59372706 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -10,6 +10,7 @@ import ( "log" "os" "path/filepath" + "sort" "strings" "time" @@ -228,6 +229,8 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa buf.Write(data[end+len(endGitAttrPattern):]) } + sort.Strings(diffExcludes) + buf.Write(startGitAttrPattern) for _, exclude := range diffExcludes { buf.WriteString(exclude + " -diff\n") From 2fd9033983e4a4cc32a6a70bb9b8628fac834431 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 15:05:48 +0300 Subject: [PATCH 148/293] refactor: fixed sort errors --- .../app/config_doc_gen.md | 29 ++ .../app/config_doc_gen.md | 28 ++ fixtures/ConfigSuccess/app/config_doc_gen.md | 30 ++ .../app/config_doc_gen.md | 28 ++ .../GatewaySuccess/app/client_jsonrpc_gen.js | 129 ++++++++ .../app/openapi_jsonrpc_gen.json | 1 + .../app/client_jsonrpc_gen.js | 280 ++++++++++++++++++ .../app/jsonrpc_doc_gen.md | 211 +++++++++++++ .../app/openapi_jsonrpc_gen.json | 1 + .../app/client_jsonrpc_gen.js | 262 ++++++++++++++++ .../app/jsonrpc_doc_gen.md | 153 ++++++++++ .../app/openapi_jsonrpc_gen.json | 1 + .../app/openapi_rest_gen.json | 1 + .../app/openapi_rest_gen.json | 1 + internal/domain/model/service.go | 19 ++ internal/interface/gateway/service.go | 21 +- .../interface/generator/http_transport.go | 4 +- .../interface/generator/jsonrpc_js_client.go | 6 +- internal/interface/generator/openapi.go | 4 +- internal/usecase/gateway/service.go | 2 +- 20 files changed, 1195 insertions(+), 16 deletions(-) create mode 100755 fixtures/ConfigRequiredSuccess/app/config_doc_gen.md create mode 100755 fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md create mode 100755 fixtures/ConfigSuccess/app/config_doc_gen.md create mode 100755 fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md create mode 100755 fixtures/GatewaySuccess/app/client_jsonrpc_gen.js create mode 100755 fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json create mode 100755 fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js create mode 100755 fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md create mode 100755 fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json create mode 100755 fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js create mode 100755 fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md create mode 100755 fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json create mode 100755 fixtures/ServiceRESTMulti/app/openapi_rest_gen.json create mode 100755 fixtures/ServiceRESTSingle/app/openapi_rest_gen.json diff --git a/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..26ce930b --- /dev/null +++ b/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md @@ -0,0 +1,29 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| +|FLD_TIME_REQ|time.Time|Test time required description|yes|no| +|FLD_STRING_REQ|string|Test string required description|yes|no| +|FLD_BOOL_REQ|bool|Test bool required description|yes|no| +|FLD_INT_REQ|int|Test int required description|yes|no| +|FLD_INT8_REQ|int8|Test int8 required description|yes|no| +|FLD_INT16_REQ|int16|Test int16 required description|yes|no| +|FLD_INT32_REQ|int32|Test int32 required description|yes|no| +|FLD_INT64_REQ|int64|Test int64 required description|yes|no| +|FLD_U_INT_REQ|uint|Test uint required description|yes|no| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| +|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..e03115a9 --- /dev/null +++ b/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| +|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| +|FLD_STRING_REQ|string|Test string required description|yes|yes| +|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| +|FLD_INT_REQ|int|Test int required description|yes|yes| +|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| +|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| +|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| +|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| +|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigSuccess/app/config_doc_gen.md b/fixtures/ConfigSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..79abf177 --- /dev/null +++ b/fixtures/ConfigSuccess/app/config_doc_gen.md @@ -0,0 +1,30 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION|time.Duration|Test duration required description|no|no| +|FLD_TIME|time.Time|Test time required description|no|no| +|FLD_STRING|string|Test string required description|no|no| +|FLD_BOOL|bool|Test bool required description|no|no| +|FLD_INT|int|Test int required description|no|no| +|FLD_INT8|int8|Test int8 required description|no|no| +|FLD_INT16|int16|Test int16 required description|no|no| +|FLD_INT32|int32|Test int32 required description|no|no| +|FLD_INT64|int64|Test int64 required description|no|no| +|FLD_U_INT|uint|Test uint required description|no|no| +|FLD_U_INT8|uint8|Test uint8 required description|no|no| +|FLD_U_INT16|uint16|Test uint16 required description|no|no| +|FLD_U_INT32|uint32|Test uint32 required description|no|no| +|FLD_U_INT64|uint64|Test uint64 required description|no|no| +|FLD_FLOAT64|float64|Test int required description|no|no| +|FLD_FLOAT32|float32|Test int required description|no|no| +|FLD_STRINGS|[]string|Test []string required description|no|no| +|FLD_MAP|map[string]string|Test map[string]string required description|no|no| +|ID3_VER|string|Test number env name required description|no|no| +|TEST_NUMBER123|string|Test number env name required description|no|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..60eb6078 --- /dev/null +++ b/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| +|FLD_TIME_REQ|time.Time|Test time required description|no|yes| +|FLD_STRING_REQ|string|Test string required description|no|yes| +|FLD_BOOL_REQ|bool|Test bool required description|no|yes| +|FLD_INT_REQ|int|Test int required description|no|yes| +|FLD_INT8_REQ|int8|Test int8 required description|no|yes| +|FLD_INT16_REQ|int16|Test int16 required description|no|yes| +|FLD_INT32_REQ|int32|Test int32 required description|no|yes| +|FLD_INT64_REQ|int64|Test int64 required description|no|yes| +|FLD_U_INT_REQ|uint|Test uint required description|no|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js b/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..f4147977 --- /dev/null +++ b/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js @@ -0,0 +1,129 @@ +// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + if (responses[i].error) { + scheduleRequests[responses[i].id].reject( + convertError(responses[i].error) + ); + continue; + } + scheduleRequests[responses[i].id].resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler.__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }); + } +} + +export default JSONRPCClientB; + +function convertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json b/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..78c5b1c5 --- /dev/null +++ b/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..1f17de44 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -0,0 +1,280 @@ +// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + if (responses[i].error) { + scheduleRequests[responses[i].id].reject( + convertError(responses[i].error) + ); + continue; + } + scheduleRequests[responses[i].id].resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** +* @typedef {Object} User +* @property {string} title + +* @property {string} id +* @property {string} name +* @property {string} password +* @property {GeoJSON} point +* @property {string} last_seen +* @property {Data} data +* @property {Array} photo +* @property {User} user +* @property {Profile} profile +* @property {Recurse} recurse +* @property {string} created_at +* @property {string} updated_at +*/ + +/** + * @typedef {Object} Info + * @property {string} title + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class JSONRPCClientA { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + **/ + testMethod() { + return this.scheduler.__scheduleRequest("a.testMethod", {}); + } +} + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler.__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler.__scheduleRequest("b.delete", { id: id }); + } + /** + * Get item. + * + * @param {number} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler.__scheduleRequest("b.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler.__scheduleRequest("b.getAll", { members: members }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler.__scheduleRequest("b.testMethod", { + data: data, + ss: ss + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler.__scheduleRequest("b.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }); + } +} + +class JSONRPCClient { + constructor(transport) { + this.A = new JSONRPCClientA(transport); + this.B = new JSONRPCClientB(transport); + } +} +export default JSONRPCClient; + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +export class ErrForbiddenError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrForbiddenError", -32002, data); + } +} +function convertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + case -32002: + return new ErrForbiddenError(e.message, e.data); + } +} diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..1645b813 --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -0,0 +1,211 @@ +# Swipe JSONRPC Client + +## Getting Started + +You can install this with: + +```shell script +npm install --save-dev service +``` + +Import the package with the client: + +```javascript +import API from "service" +``` + +Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. + +For example: + +```javascript +class FetchTransport { + constructor(url) { + this.url = url; + } + + doRequest(requests) { + return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) + } +} +``` + +Now for a complete example: + +```javascript +import API from "service" +import Transport from "transport" + +const api = new API(new Transport("http://127.0.0.1")) + +// call method here. +``` + +## API +## Methods + +a.TestMethod + +### a.TestMethod() ⇒void + + + + + +**Throws**: + +ErrUnauthorizedException + + + +b.Create + +b.Delete + +b.Get + +b.GetAll + +b.TestMethod + +b.TestMethod2 + +### b.Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### b.Delete(id) ⇒ + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### b.Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### b.GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|title|string|| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|created_at|string|| +|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..2bbd142b --- /dev/null +++ b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..79ef9e5e --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -0,0 +1,262 @@ +// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + if (responses[i].error) { + scheduleRequests[responses[i].id].reject( + convertError(responses[i].error) + ); + continue; + } + scheduleRequests[responses[i].id].resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** + * @typedef {Object} User + * @property {string} id + * @property {string} name + * @property {string} password + * @property {GeoJSON} point + * @property {string} last_seen + * @property {Data} data + * @property {Array} photo + * @property {User} user + * @property {Profile} profile + * @property {Recurse} recurse + * @property {Kind} kind + * @property {string} created_at + * @property {string} updated_at + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {string} Kind + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class JSONRPCClientService { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler.__scheduleRequest("service.create", { + newData: newData, + name: name, + data: data + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler.__scheduleRequest("service.delete", { id: id }); + } + /** + * Get item. + * + * @param {string} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler.__scheduleRequest("service.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler.__scheduleRequest("service.getAll", { + members: members + }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler.__scheduleRequest("service.testMethod", { + data: data, + ss: ss + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler.__scheduleRequest("service.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }); + } +} + +export default JSONRPCClientService; + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +export class ErrForbiddenError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrForbiddenError", -32002, data); + } +} +function convertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + case -32002: + return new ErrForbiddenError(e.message, e.data); + } +} diff --git a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..eeb2277d --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -0,0 +1,153 @@ +# Swipe JSONRPC Client + +Create + +Delete + +Get + +GetAll + +TestMethod + +TestMethod2 + +### Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### Delete(id) ⇒ + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|kind|Kind|| +|created_at|string|| +|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..34b78b1f --- /dev/null +++ b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json new file mode 100755 index 00000000..2f864485 --- /dev/null +++ b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json new file mode 100755 index 00000000..ed06c2ac --- /dev/null +++ b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index 34735b42..0ad3db05 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -156,6 +156,25 @@ type MethodOption struct { Exclude bool } +type ErrorKey struct { + Key uint32 + Code int64 +} + +type ErrorKeys []ErrorKey + +func (e ErrorKeys) Len() int { + return len(e) +} + +func (e ErrorKeys) Less(i, j int) bool { + return e[i].Code < e[j].Code +} + +func (e ErrorKeys) Swap(i, j int) { + e[i], e[j] = e[j], e[i] +} + type HTTPError struct { Named *stdtypes.Named Code int64 diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 1573bbde..a74e06af 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -5,6 +5,7 @@ import ( "go/ast" "go/constant" stdtypes "go/types" + "sort" stdstrings "strings" "github.com/swipe-io/strcase" @@ -17,8 +18,6 @@ import ( "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" - "github.com/gogo/protobuf/sortkeys" - "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/typeutil" ) @@ -35,6 +34,7 @@ type serviceGateway struct { defaultMethodOptions model.MethodOption clientsEnable []string errors map[uint32]*model.HTTPError + errorKeys model.ErrorKeys prefix string openapiEnable bool openapiOutput string @@ -184,12 +184,8 @@ func (g *serviceGateway) Error(key uint32) *model.HTTPError { return g.errors[key] } -func (g *serviceGateway) ErrorKeys() (errorKeys []uint32) { - for key := range g.errors { - errorKeys = append(errorKeys, key) - } - sortkeys.Uint32s(errorKeys) - return +func (g *serviceGateway) ErrorKeys() model.ErrorKeys { + return g.errorKeys } func (g *serviceGateway) InstrumentingEnable() bool { @@ -491,6 +487,15 @@ func (g *serviceGateway) load(o *option.Option) error { if o, ok := o.At("ClientsEnable"); ok { g.clientsEnable = o.Value.StringSlice() } + + for key := range g.errors { + g.errorKeys = append(g.errorKeys, model.ErrorKey{ + Key: key, + Code: g.errors[key].Code, + }) + } + sort.Sort(g.errorKeys) + return nil } diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index c57350ad..4dcfb0b7 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -17,7 +17,7 @@ type httpTransportOptionsGateway interface { GoClientEnable() bool UseFast() bool Error(uint32) *model.HTTPError - ErrorKeys() []uint32 + ErrorKeys() model.ErrorKeys } type httpTransport struct { @@ -87,7 +87,7 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("default:\nerr = &httpError{code: code}\n") if g.options.JSONRPCEnable() { for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key) + e := g.options.Error(key.Key) g.W("case %d:\n", e.Code) pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) if pkgName != "" { diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 760f7642..65def3fe 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -112,7 +112,7 @@ class JSONRPCScheduler { type jsonRPCJSClientOptionsGateway interface { Error(key uint32) *model.HTTPError - ErrorKeys() []uint32 + ErrorKeys() model.ErrorKeys Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption CommentFields() map[string]map[string]string @@ -246,7 +246,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key) + e := g.options.Error(key.Key) g.W( "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %d, data);\n}\n}\n", e.Named.Obj().Name(), e.Code, @@ -259,7 +259,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key) + e := g.options.Error(key.Key) g.W("case %d:\n", e.Code) g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index cd876946..24534412 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -171,7 +171,7 @@ type openapiDocOptionsGateway interface { Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption JSONRPCEnable() bool - ErrorKeys() []uint32 + ErrorKeys() model.ErrorKeys Error(key uint32) *model.HTTPError OpenapiOutput() string OpenapiInfo() openapi.Info @@ -215,7 +215,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { swg.Components.Schemas["Error"] = getOpenapiRESTErrorSchema() } for _, key := range g.options.ErrorKeys() { - ei := g.options.Error(key) + ei := g.options.Error(key.Key) var s *openapi.Schema if g.options.JSONRPCEnable() { s = &openapi.Schema{ diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index aa6096ea..4d3928a1 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -12,7 +12,7 @@ type ServiceGateway interface { AppName() string Interfaces() model.Interfaces Error(key uint32) *model.HTTPError - ErrorKeys() []uint32 + ErrorKeys() model.ErrorKeys TransportType() model.Transport UseFast() bool MethodOption(m model.ServiceMethod) model.MethodOption From 1ed252cbb948f288ca71d945dec0f4fb7ed7f108 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 15:08:27 +0300 Subject: [PATCH 149/293] refactor: regenerate tests --- .../ServiceJSONRPCMulti/app/client_jsonrpc_gen.js | 12 ++++++------ .../ServiceJSONRPCSingle/app/client_jsonrpc_gen.js | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 1f17de44..19035628 100755 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -258,23 +258,23 @@ class JSONRPCClient { } export default JSONRPCClient; -export class ErrUnauthorizedError extends JSONRPCError { +export class ErrForbiddenError extends JSONRPCError { constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); + super(message, "ErrForbiddenError", -32002, data); } } -export class ErrForbiddenError extends JSONRPCError { +export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); + super(message, "ErrUnauthorizedError", -32001, data); } } function convertError(e) { switch (e.code) { default: return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); case -32002: return new ErrForbiddenError(e.message, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); } } diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 79ef9e5e..ba2c7ff9 100755 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -240,23 +240,23 @@ class JSONRPCClientService { export default JSONRPCClientService; -export class ErrUnauthorizedError extends JSONRPCError { +export class ErrForbiddenError extends JSONRPCError { constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); + super(message, "ErrForbiddenError", -32002, data); } } -export class ErrForbiddenError extends JSONRPCError { +export class ErrUnauthorizedError extends JSONRPCError { constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); + super(message, "ErrUnauthorizedError", -32001, data); } } function convertError(e) { switch (e.code) { default: return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); case -32002: return new ErrForbiddenError(e.message, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); } } From 16dfcbf8502a0ac1648743e8e6675a7837c8f070 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 15:18:50 +0300 Subject: [PATCH 150/293] refactor: fixed sort jsonrpc doc throws --- internal/interface/generator/jsonrpc_doc.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/interface/generator/jsonrpc_doc.go b/internal/interface/generator/jsonrpc_doc.go index cc58c89f..c23c8e55 100644 --- a/internal/interface/generator/jsonrpc_doc.go +++ b/internal/interface/generator/jsonrpc_doc.go @@ -20,6 +20,12 @@ import ( "golang.org/x/tools/go/types/typeutil" ) +type MethodErrors []*model.HTTPError + +func (n MethodErrors) Len() int { return len(n) } +func (n MethodErrors) Swap(i, j int) { n[i], n[j] = n[j], n[i] } +func (n MethodErrors) Less(i, j int) bool { return n[i].Code < n[j].Code } + type NamedSlice []*stdtypes.Named func (n NamedSlice) Len() int { return len(n) } @@ -154,7 +160,15 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { g.W("**Throws**:\n\n") - for _, e := range method.Errors { + var methodErrors MethodErrors + + for _, methodError := range method.Errors { + methodErrors = append(methodErrors, methodError) + } + + sort.Sort(methodErrors) + + for _, e := range methodErrors { g.W("%sException\n\n", e.Named.Obj().Name()) } From 3e10b8da17231339afc42c84149d666184fd82aa Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Feb 2021 19:06:20 +0300 Subject: [PATCH 151/293] chore: v2.0.0-rc1 --- .../app/config_doc_gen.md | 29 -- .../app/config_doc_gen.md | 28 -- fixtures/ConfigSuccess/app/config_doc_gen.md | 30 -- .../app/config_doc_gen.md | 28 -- .../GatewaySuccess/app/client_jsonrpc_gen.js | 129 -------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/client_jsonrpc_gen.js | 280 ------------------ .../app/jsonrpc_doc_gen.md | 211 ------------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/client_jsonrpc_gen.js | 262 ---------------- .../app/jsonrpc_doc_gen.md | 153 ---------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/openapi_rest_gen.json | 1 - .../app/openapi_rest_gen.json | 1 - swipe.go | 2 +- 15 files changed, 1 insertion(+), 1156 deletions(-) delete mode 100755 fixtures/ConfigRequiredSuccess/app/config_doc_gen.md delete mode 100755 fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md delete mode 100755 fixtures/ConfigSuccess/app/config_doc_gen.md delete mode 100755 fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md delete mode 100755 fixtures/GatewaySuccess/app/client_jsonrpc_gen.js delete mode 100755 fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json delete mode 100755 fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js delete mode 100755 fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md delete mode 100755 fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json delete mode 100755 fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js delete mode 100755 fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md delete mode 100755 fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json delete mode 100755 fixtures/ServiceRESTMulti/app/openapi_rest_gen.json delete mode 100755 fixtures/ServiceRESTSingle/app/openapi_rest_gen.json diff --git a/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md deleted file mode 100755 index 26ce930b..00000000 --- a/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,29 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| -|FLD_TIME_REQ|time.Time|Test time required description|yes|no| -|FLD_STRING_REQ|string|Test string required description|yes|no| -|FLD_BOOL_REQ|bool|Test bool required description|yes|no| -|FLD_INT_REQ|int|Test int required description|yes|no| -|FLD_INT8_REQ|int8|Test int8 required description|yes|no| -|FLD_INT16_REQ|int16|Test int16 required description|yes|no| -|FLD_INT32_REQ|int32|Test int32 required description|yes|no| -|FLD_INT64_REQ|int64|Test int64 required description|yes|no| -|FLD_U_INT_REQ|uint|Test uint required description|yes|no| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| -|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index e03115a9..00000000 --- a/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| -|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| -|FLD_STRING_REQ|string|Test string required description|yes|yes| -|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| -|FLD_INT_REQ|int|Test int required description|yes|yes| -|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| -|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| -|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| -|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| -|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/ConfigSuccess/app/config_doc_gen.md b/fixtures/ConfigSuccess/app/config_doc_gen.md deleted file mode 100755 index 79abf177..00000000 --- a/fixtures/ConfigSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,30 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION|time.Duration|Test duration required description|no|no| -|FLD_TIME|time.Time|Test time required description|no|no| -|FLD_STRING|string|Test string required description|no|no| -|FLD_BOOL|bool|Test bool required description|no|no| -|FLD_INT|int|Test int required description|no|no| -|FLD_INT8|int8|Test int8 required description|no|no| -|FLD_INT16|int16|Test int16 required description|no|no| -|FLD_INT32|int32|Test int32 required description|no|no| -|FLD_INT64|int64|Test int64 required description|no|no| -|FLD_U_INT|uint|Test uint required description|no|no| -|FLD_U_INT8|uint8|Test uint8 required description|no|no| -|FLD_U_INT16|uint16|Test uint16 required description|no|no| -|FLD_U_INT32|uint32|Test uint32 required description|no|no| -|FLD_U_INT64|uint64|Test uint64 required description|no|no| -|FLD_FLOAT64|float64|Test int required description|no|no| -|FLD_FLOAT32|float32|Test int required description|no|no| -|FLD_STRINGS|[]string|Test []string required description|no|no| -|FLD_MAP|map[string]string|Test map[string]string required description|no|no| -|ID3_VER|string|Test number env name required description|no|no| -|TEST_NUMBER123|string|Test number env name required description|no|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md b/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index 60eb6078..00000000 --- a/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| -|FLD_TIME_REQ|time.Time|Test time required description|no|yes| -|FLD_STRING_REQ|string|Test string required description|no|yes| -|FLD_BOOL_REQ|bool|Test bool required description|no|yes| -|FLD_INT_REQ|int|Test int required description|no|yes| -|FLD_INT8_REQ|int8|Test int8 required description|no|yes| -|FLD_INT16_REQ|int16|Test int16 required description|no|yes| -|FLD_INT32_REQ|int32|Test int32 required description|no|yes| -|FLD_INT64_REQ|int64|Test int64 required description|no|yes| -|FLD_U_INT_REQ|uint|Test uint required description|no|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js b/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js deleted file mode 100755 index f4147977..00000000 --- a/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,129 +0,0 @@ -// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - if (responses[i].error) { - scheduleRequests[responses[i].id].reject( - convertError(responses[i].error) - ); - continue; - } - scheduleRequests[responses[i].id].resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler.__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }); - } -} - -export default JSONRPCClientB; - -function convertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json b/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 78c5b1c5..00000000 --- a/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js deleted file mode 100755 index 19035628..00000000 --- a/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,280 +0,0 @@ -// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - if (responses[i].error) { - scheduleRequests[responses[i].id].reject( - convertError(responses[i].error) - ); - continue; - } - scheduleRequests[responses[i].id].resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** -* @typedef {Object} User -* @property {string} title - -* @property {string} id -* @property {string} name -* @property {string} password -* @property {GeoJSON} point -* @property {string} last_seen -* @property {Data} data -* @property {Array} photo -* @property {User} user -* @property {Profile} profile -* @property {Recurse} recurse -* @property {string} created_at -* @property {string} updated_at -*/ - -/** - * @typedef {Object} Info - * @property {string} title - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientA { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - **/ - testMethod() { - return this.scheduler.__scheduleRequest("a.testMethod", {}); - } -} - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler.__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - delete(id) { - return this.scheduler.__scheduleRequest("b.delete", { id: id }); - } - /** - * Get item. - * - * @param {number} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - get(id, name, fname, price, n, b, cc) { - return this.scheduler.__scheduleRequest("b.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - getAll(members) { - return this.scheduler.__scheduleRequest("b.getAll", { members: members }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - testMethod(data, ss) { - return this.scheduler.__scheduleRequest("b.testMethod", { - data: data, - ss: ss - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler.__scheduleRequest("b.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }); - } -} - -class JSONRPCClient { - constructor(transport) { - this.A = new JSONRPCClientA(transport); - this.B = new JSONRPCClientB(transport); - } -} -export default JSONRPCClient; - -export class ErrForbiddenError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); - } -} -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -function convertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32002: - return new ErrForbiddenError(e.message, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - } -} diff --git a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md deleted file mode 100755 index 1645b813..00000000 --- a/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,211 +0,0 @@ -# Swipe JSONRPC Client - -## Getting Started - -You can install this with: - -```shell script -npm install --save-dev service -``` - -Import the package with the client: - -```javascript -import API from "service" -``` - -Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. - -For example: - -```javascript -class FetchTransport { - constructor(url) { - this.url = url; - } - - doRequest(requests) { - return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) - } -} -``` - -Now for a complete example: - -```javascript -import API from "service" -import Transport from "transport" - -const api = new API(new Transport("http://127.0.0.1")) - -// call method here. -``` - -## API -## Methods - -a.TestMethod - -### a.TestMethod() ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -b.Create - -b.Delete - -b.Get - -b.GetAll - -b.TestMethod - -b.TestMethod2 - -### b.Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### b.Delete(id) ⇒ - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### b.Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### b.GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|title|string|| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|created_at|string|| -|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 2bbd142b..00000000 --- a/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js deleted file mode 100755 index ba2c7ff9..00000000 --- a/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,262 +0,0 @@ -// Code generated by Swipe v2.0.0-beta6. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - if (responses[i].error) { - scheduleRequests[responses[i].id].reject( - convertError(responses[i].error) - ); - continue; - } - scheduleRequests[responses[i].id].resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** - * @typedef {Object} User - * @property {string} id - * @property {string} name - * @property {string} password - * @property {GeoJSON} point - * @property {string} last_seen - * @property {Data} data - * @property {Array} photo - * @property {User} user - * @property {Profile} profile - * @property {Recurse} recurse - * @property {Kind} kind - * @property {string} created_at - * @property {string} updated_at - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {string} Kind - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientService { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler.__scheduleRequest("service.create", { - newData: newData, - name: name, - data: data - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - delete(id) { - return this.scheduler.__scheduleRequest("service.delete", { id: id }); - } - /** - * Get item. - * - * @param {string} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - get(id, name, fname, price, n, b, cc) { - return this.scheduler.__scheduleRequest("service.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - getAll(members) { - return this.scheduler.__scheduleRequest("service.getAll", { - members: members - }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - testMethod(data, ss) { - return this.scheduler.__scheduleRequest("service.testMethod", { - data: data, - ss: ss - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler.__scheduleRequest("service.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }); - } -} - -export default JSONRPCClientService; - -export class ErrForbiddenError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrForbiddenError", -32002, data); - } -} -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -function convertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32002: - return new ErrForbiddenError(e.message, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - } -} diff --git a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md deleted file mode 100755 index eeb2277d..00000000 --- a/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,153 +0,0 @@ -# Swipe JSONRPC Client - -Create - -Delete - -Get - -GetAll - -TestMethod - -TestMethod2 - -### Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### Delete(id) ⇒ - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|kind|Kind|| -|created_at|string|| -|updated_at|string|| diff --git a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 34b78b1f..00000000 --- a/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json deleted file mode 100755 index 2f864485..00000000 --- a/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json deleted file mode 100755 index ed06c2ac..00000000 --- a/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/swipe.go b/swipe.go index d7512522..467f31cd 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-beta6" +const Version = "v2.0.0-rc1" // A Option is an option for a Swipe. type Option string From d0d89520bd85e1b74452515cb0dacdfd35cb6d18 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 8 Feb 2021 20:10:03 +0300 Subject: [PATCH 152/293] fix: generate client factory --- .../interface/generator/endpoint_factory.go | 60 +++++++++---------- internal/interface/processor/service.go | 2 +- 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/internal/interface/generator/endpoint_factory.go b/internal/interface/generator/endpoint_factory.go index 0476f007..56fa1caa 100644 --- a/internal/interface/generator/endpoint_factory.go +++ b/internal/interface/generator/endpoint_factory.go @@ -2,7 +2,6 @@ package generator import ( "context" - stdtypes "go/types" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" @@ -25,38 +24,37 @@ func (g *endpointFactory) Process(ctx context.Context) error { for i := 0; i < g.interfaces.Len(); i++ { iface := g.interfaces.At(i) - if iface.External() { - epFactoryName := iface.LoweName() + "EndpointFactory" - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - ioPkg := g.i.Import("io", "io") - stringsPkg := g.i.Import("strings", "strings") - - g.W("type %s struct{\n", epFactoryName) - g.W("factory func(instance string) (%s, error)\n", stdtypes.TypeString(iface.Type(), g.i.QualifyPkg)) - g.W("instance string\n") - g.W("}\n\n") - - for _, m := range iface.Methods() { - g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) - g.W("if f.instance != \"\"{\n") - g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.instance, \"/\")", stringsPkg) - g.W("}\n") - g.W("c, err := f.factory(instance)\n") - g.WriteCheckErr(func() { - g.W("return nil, nil, err\n") - }) - g.W("return ") - g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) - g.W("\n}\n\n") - } - - g.W("func New%sFactory(instance string,", iface.Name()) - g.W("factory func(instance string) (%s, error)", stdtypes.TypeString(iface.Type(), g.i.QualifyPkg)) - g.W(") %sEndpointFactory {\n", iface.Name()) - - g.W("return &%s{instance: instance, factory: factory}\n", epFactoryName) + epFactoryName := iface.Name() + "ClientEndpointFactory" + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + ioPkg := g.i.Import("io", "io") + stringsPkg := g.i.Import("strings", "strings") + + g.W("type %s struct{\n", epFactoryName) + g.W("opts []ClientOption\n") + + g.W("instance string\n") + g.W("}\n\n") + + for _, m := range iface.Methods() { + g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) + g.W("if f.instance != \"\"{\n") + g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.instance, \"/\")", stringsPkg) g.W("}\n") + g.W("c, err := NewClient%s(instance, f.opts...)\n", g.prefix) + g.WriteCheckErr(func() { + g.W("return nil, nil, err\n") + }) + g.W("return ") + g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) + g.W("\n}\n\n") } + + g.W("func New%sClientFactory(instance string,", iface.Name()) + g.W("opts ...ClientOption") + g.W(") *%s {\n", epFactoryName) + + g.W("return &%s{instance: instance, opts: opts}\n", epFactoryName) + g.W("}\n") } return nil } diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index 72eba6c9..7ea0f2b6 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -31,7 +31,6 @@ func (p *serviceProcessor) Generators() []ug.Generator { generators = append( generators, generator.NewGatewayGenerator(p.sg.Interfaces()), - generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), ) } if p.sg.ReadmeEnable() { @@ -66,6 +65,7 @@ func (p *serviceProcessor) Generators() []ug.Generator { if p.sg.GoClientEnable() { generators = append(generators, generator.NewClientStruct(p.sg), + generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), ) } if p.sg.JSONRPCEnable() { From d69410f82baad1297a102823a3d392a13005a3d5 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 9 Feb 2021 00:24:03 +0300 Subject: [PATCH 153/293] fix: generate gateway --- internal/domain/model/service.go | 56 +++++---- internal/interface/executor/generation.go | 10 +- internal/interface/finder/finder.go | 45 ------- internal/interface/gateway/service.go | 49 +++++++- internal/interface/generator/endpoint.go | 8 ++ internal/interface/generator/http_gateway.go | 15 +-- .../interface/generator/jsonrpc_server.go | 112 ++++++++++-------- internal/interface/processor/service.go | 7 +- internal/interface/registry/processor.go | 4 +- internal/option/loader.go | 6 +- internal/usecase/gateway/service.go | 1 + internal/usecase/registry/processor.go | 2 +- 12 files changed, 170 insertions(+), 145 deletions(-) delete mode 100644 internal/interface/finder/finder.go diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index 0ad3db05..a9a7dc7c 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -4,6 +4,8 @@ import ( "container/list" "go/ast" stdtypes "go/types" + + "golang.org/x/tools/go/packages" ) type Transport string @@ -23,16 +25,26 @@ func (i Interfaces) At(index int) *ServiceInterface { } type ServiceInterface struct { - name string - loweName string - nameExport string - nameUnExport string - serviceType stdtypes.Type - serviceTypeName *stdtypes.Named - serviceIface *stdtypes.Interface - serviceMethods []ServiceMethod - isNameChange bool - external bool + name string + loweName string + nameExport string + nameUnExport string + serviceType stdtypes.Type + serviceTypeName *stdtypes.Named + serviceIface *stdtypes.Interface + serviceMethods []ServiceMethod + isNameChange bool + external bool + externalSwipePkg *packages.Package + appName string +} + +func (g *ServiceInterface) AppName() string { + return g.appName +} + +func (g *ServiceInterface) ExternalSwipePkg() *packages.Package { + return g.externalSwipePkg } func (g *ServiceInterface) External() bool { @@ -75,18 +87,20 @@ func (g *ServiceInterface) Interface() *stdtypes.Interface { return g.serviceIface } -func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNameChange bool, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod, external bool) *ServiceInterface { +func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNameChange bool, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod, external bool, externalSwipePkg *packages.Package, appName string) *ServiceInterface { return &ServiceInterface{ - name: name, - loweName: lowerName, - nameExport: nameExport, - nameUnExport: nameUnExport, - isNameChange: isNameChange, - serviceType: serviceType, - serviceTypeName: serviceTypeName, - serviceIface: serviceIface, - serviceMethods: serviceMethods, - external: external, + name: name, + loweName: lowerName, + nameExport: nameExport, + nameUnExport: nameUnExport, + isNameChange: isNameChange, + serviceType: serviceType, + serviceTypeName: serviceTypeName, + serviceIface: serviceIface, + serviceMethods: serviceMethods, + external: external, + externalSwipePkg: externalSwipePkg, + appName: appName, } } diff --git a/internal/interface/executor/generation.go b/internal/interface/executor/generation.go index 9ecb5ef7..b0ccd07b 100644 --- a/internal/interface/executor/generation.go +++ b/internal/interface/executor/generation.go @@ -13,8 +13,6 @@ import ( "github.com/swipe-io/swipe/v2/internal/usecase/processor" - "github.com/swipe-io/swipe/v2/internal/astloader" - "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/usecase/executor" @@ -34,16 +32,16 @@ type generationExecutor struct { l *option.Loader } -func (e *generationExecutor) processOptions(options []*option.ResultOption, data *astloader.Data) (<-chan processor.Processor, <-chan error) { +func (e *generationExecutor) process(result *option.Result) (<-chan processor.Processor, <-chan error) { outCh := make(chan processor.Processor) errCh := make(chan error) go func() { var wg sync.WaitGroup - for _, o := range options { + for _, o := range result.Options { wg.Add(1) go func(o *option.ResultOption) { defer wg.Done() - p, err := e.r.NewProcessor(o, data) + p, err := e.r.NewProcessor(o, result.ExternalOptions, result.Data) if err != nil { errCh <- err return @@ -125,7 +123,7 @@ func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs return nil, errs } - processorCh, errCh := e.processOptions(opr.Options, opr.Data) + processorCh, errCh := e.process(opr) go func() { for err := range errCh { errs = append(errs, err) diff --git a/internal/interface/finder/finder.go b/internal/interface/finder/finder.go deleted file mode 100644 index 42712b01..00000000 --- a/internal/interface/finder/finder.go +++ /dev/null @@ -1,45 +0,0 @@ -package finder - -//import ( -// stdtypes "go/types" -// -// "github.com/swipe-io/swipe/v2/internal/domain/model" -// -// "github.com/swipe-io/swipe/v2/internal/option" -// -// "github.com/swipe-io/swipe/v2/internal/usecase/finder" -// "github.com/swipe-io/swipe/v2/internal/usecase/gateway" -//) -// -//type serviceFinder struct { -// loader *option.Loader -//} -// -//func (s *serviceFinder) Find(named *stdtypes.Named) (gateway.ServiceGateway, *model.ServiceInterface, []error) { -// //pkgPathParts := stdstrings.Split(named.Obj().Pkg().Path(), "/") -// //servicePath := filepath.Join(build.Default.GOPATH, "src", stdstrings.Join(pkgPathParts[:3], "/")) -// // -// //o, errs := s.loader.Load(servicePath, nil, []string{"./..."}) -// //if len(errs) > 0 { -// // return nil, nil, errs -// //} -// //for _, resultOption := range o.Options { -// // if resultOption.Option.Name == "Service" { -// // sg, err := ig.NewServiceGateway(resultOption.Pkg, resultOption.Option, o.Data.GraphTypes, o.Data.CommentFuncs) -// // if err != nil { -// // return nil, nil, []error{err} -// // } -// // for i := 0; i < sg.Interfaces().Len(); i++ { -// // iface := sg.Interfaces().At(i) -// // if iface.TypeName().Obj().String() == named.Obj().String() { -// // return sg, iface, nil -// // } -// // } -// // } -// //} -// return nil, nil, nil -//} -// -//func NewServiceFinder(loader *option.Loader) finder.ServiceFinder { -// return &serviceFinder{loader: loader} -//} diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index a74e06af..54f8deae 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -54,7 +54,13 @@ type serviceGateway struct { appName string appID string defaultErrorEncoder option.Value + foundService bool foundServiceGateway bool + externalOptions []*option.ResultOption +} + +func (g *serviceGateway) FoundService() bool { + return g.foundService } func (g *serviceGateway) FoundServiceGateway() bool { @@ -248,6 +254,34 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceNamed := ifacePtr.Elem().(*stdtypes.Named) + var externalSwipePkg *packages.Package + + for _, extOpt := range g.externalOptions { + if ifaces, ok := extOpt.Option.Slice("Interface"); ok { + for _, o := range ifaces { + ifaceExtOpt := option.MustOption(o.At("iface")) + if ifaceExtPtr, ok := ifaceExtOpt.Value.Type().(*stdtypes.Pointer); ok { + ifaceExtType := ifaceExtPtr.Elem().Underlying().(*stdtypes.Interface) + if ifaceExtType.NumEmbeddeds() > 0 { + for i := 0; i < ifaceExtType.NumEmbeddeds(); i++ { + if ifaceExtType.EmbeddedType(i).String() == ifacePtr.Elem().String() { + externalSwipePkg = extOpt.Pkg + } + } + } + if ifaceExtPtr.Elem().String() == ifacePtr.Elem().String() { + externalSwipePkg = extOpt.Pkg + } + } + } + } + } + var appName string + if externalSwipePkg != nil { + id := stdstrings.Split(externalSwipePkg.PkgPath, "/")[:3][2] + appName = strcase.ToCamel(id) + } + basePkgService := stdstrings.Join(stdstrings.Split(ifaceNamed.Obj().Pkg().Path(), "/")[:3], "/") basePkgInternal := stdstrings.Join(stdstrings.Split(g.pkg.PkgPath, "/")[:3], "/") @@ -378,6 +412,8 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceType, serviceMethods, basePkgService != basePkgInternal, + externalSwipePkg, + appName, ), nil } @@ -458,21 +494,26 @@ func (g *serviceGateway) load(o *option.Option) error { }) var foundServiceGateway bool + var serviceCount int if ifaces, ok := o.Slice("Interface"); ok { for _, iface := range ifaces { svc, err := g.loadService(iface, genericErrors, len(ifaces)) if err != nil { return err } - if svc.External() { - foundServiceGateway = true - } + if len(svc.Methods()) > 0 { + if svc.External() { + foundServiceGateway = true + } else { + serviceCount++ + } g.interfaces = append(g.interfaces, svc) } } } + g.foundService = serviceCount > 0 g.foundServiceGateway = foundServiceGateway if o, ok := o.At("DefaultErrorEncoder"); ok { @@ -776,6 +817,7 @@ func NewServiceGateway( commentFuncs map[string][]string, commentFields map[string]map[string]string, enums *typeutil.Map, + externalOptions []*option.ResultOption, ) (gateway.ServiceGateway, error) { g := &serviceGateway{ pkg: pkg, @@ -787,6 +829,7 @@ func NewServiceGateway( openapiMethodTags: map[string][]string{}, errors: map[uint32]*model.HTTPError{}, hasher: typeutil.MakeHasher(), + externalOptions: externalOptions, } if err := g.load(o); err != nil { return nil, err diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index 848344e9..71f3836c 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -39,6 +39,10 @@ func (g *endpoint) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + if iface.External() { + continue + } + typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) epSetName := iface.Name() + "EndpointSet" @@ -102,6 +106,10 @@ func (g *endpoint) writeEndpointMake() { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + if iface.External() { + continue + } + contextPkg := g.i.Import("context", "context") kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) diff --git a/internal/interface/generator/http_gateway.go b/internal/interface/generator/http_gateway.go index b17de22a..48930202 100644 --- a/internal/interface/generator/http_gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -66,10 +66,7 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("type EndpointSet struct {\n") for _, s := range g.services { - if !s.External() { - continue - } - g.W("%s struct {\n", s.Name()) + g.W("%s struct {\n", s.AppName()) for _, method := range s.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) } @@ -78,19 +75,15 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") for _, s := range g.services { - if !s.External() { - continue - } - - g.W("type %sEndpointFactory interface {\n", s.Name()) + g.W("type %sEndpointFactory interface {\n", s.AppName()) for _, method := range s.Methods() { g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) } g.W("}\n\n") - g.W("type %sOption struct {\n", s.Name()) + g.W("type %sOption struct {\n", s.AppName()) g.W("Instancer %s.Instancer \n", sdPkg) - g.W("EndpointFactory %sEndpointFactory\n", s.Name()) + g.W("EndpointFactory %sEndpointFactory\n", s.AppName()) for _, method := range s.Methods() { g.W("%s EndpointOption\n", method.Name) diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index 19fc47c1..fce927fe 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -3,6 +3,7 @@ package generator import ( "context" stdtypes "go/types" + "strconv" stdstrings "strings" "github.com/swipe-io/swipe/v2/internal/strings" @@ -68,67 +69,66 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.Name()) - g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) + if !iface.External() { + g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.Name()) + g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) - g.W("var namespace string\n") + g.W("var namespace string\n") - if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { - g.W("namespace = \"%s.\"\n", iface.NameUnExport()) - } - - g.W("if len(ns) > 0 {\n") - g.W("namespace = %s.Join(ns, \".\") + \".\"\n", stringsPkg) - g.W("}\n") + g.W("if len(ns) > 0 {\n") + g.W("namespace = %s.Join(ns, \".\") + \".\"\n", stringsPkg) + g.W("}\n") - g.W("ecm := %[1]s.EndpointCodecMap{}\n", jsonrpcPkg) + g.W("ecm := %[1]s.EndpointCodecMap{}\n", jsonrpcPkg) - for _, m := range iface.Methods() { - mopt := g.options.MethodOption(m) + for _, m := range iface.Methods() { + mopt := g.options.MethodOption(m) - g.W("if ep.%sEndpoint != nil {\n", m.Name) + g.W("if ep.%sEndpoint != nil {\n", m.Name) - g.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.LcName, jsonrpcPkg) - g.W("Endpoint: ep.%sEndpoint,\n", m.Name) - g.W("Decode: ") + g.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.LcName, jsonrpcPkg) + g.W("Endpoint: ep.%sEndpoint,\n", m.Name) + g.W("Decode: ") - if mopt.ServerRequestFunc.Expr != nil { - writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) - } else { - g.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) - - if len(m.Params) > 0 { - fmtPkg := g.i.Import("fmt", "fmt") - g.W("var req %s\n", m.NameRequest) - g.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) - g.W("if err != nil {\n") - g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) - g.W("}\n") - g.W("return req, nil\n") + if mopt.ServerRequestFunc.Expr != nil { + writer.WriteAST(g, g.i, mopt.ServerRequestFunc.Expr) } else { - g.W("return nil, nil\n") + g.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) + + if len(m.Params) > 0 { + fmtPkg := g.i.Import("fmt", "fmt") + g.W("var req %s\n", m.NameRequest) + g.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) + g.W("if err != nil {\n") + g.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, m.NameRequest) + g.W("}\n") + g.W("return req, nil\n") + } else { + g.W("return nil, nil\n") + } + g.W("}") } - g.W("}") - } - g.W(",\n") + g.W(",\n") - g.W("Encode:") + g.W("Encode:") - if mopt.WrapResponse.Enable && len(m.Results) > 0 { - jsonPkg := g.i.Import("json", "encoding/json") - g.W("func (ctx context.Context, response interface{}) (%s.RawMessage, error) {\n", jsonPkg) - g.W("return encodeResponseJSONRPC(ctx, map[string]interface{}{\"%s\": response})\n", mopt.WrapResponse.Name) - g.W("},\n") - } else { - g.W("encodeResponseJSONRPC,\n") + if mopt.WrapResponse.Enable && len(m.Results) > 0 { + jsonPkg := g.i.Import("json", "encoding/json") + g.W("func (ctx context.Context, response interface{}) (%s.RawMessage, error) {\n", jsonPkg) + g.W("return encodeResponseJSONRPC(ctx, map[string]interface{}{\"%s\": response})\n", mopt.WrapResponse.Name) + g.W("},\n") + } else { + g.W("encodeResponseJSONRPC,\n") + } + g.W("}\n}\n") } - g.W("}\n}\n") - } - g.W("return ecm\n") + g.W("return ecm\n") + + g.W("}\n\n") + } - g.W("}\n\n") } g.W("// HTTP %s Transport\n", g.options.Prefix()) @@ -146,7 +146,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if iface.External() { hasGateway = true - g.W("%s %sOption", strings.LcFirst(iface.Name()), iface.Name()) + g.W("%s %sOption", strings.LcFirst(iface.AppName()), iface.AppName()) } else { g.W("svc%s %s", iface.Name(), typeStr) } @@ -173,14 +173,19 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) if iface.External() { + pkgExtTransport := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") - g.W("%[1]s := %[2]sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + if iface.External() { + g.W("%s := %s.%sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), pkgExtTransport, iface.Name()) + } else { + g.W("%s := %sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + } for _, m := range iface.Methods() { epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) - optName := strings.LcFirst(iface.Name()) + optName := strings.LcFirst(iface.AppName()) g.W("{\n") @@ -237,10 +242,17 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + if i > 0 { g.W(",") } - g.W("Make%[1]sEndpointCodecMap(%[2]s)", iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len())) + + if iface.External() { + pkgExtTransport := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) + g.W("%s.Make%sEndpointCodecMap(%s, %s)", pkgExtTransport, iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len()), strconv.Quote(iface.NameUnExport())) + } else { + g.W("Make%sEndpointCodecMap(%s)", iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len())) + } } if g.options.Interfaces().Len() > 1 { diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index 7ea0f2b6..2639cac4 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -23,10 +23,9 @@ func (p *serviceProcessor) Pkg() *packages.Package { func (p *serviceProcessor) Generators() []ug.Generator { var generators []ug.Generator - generators = append( - generators, - generator.NewEndpoint(p.sg), - ) + if p.sg.FoundService() { + generators = append(generators, generator.NewEndpoint(p.sg)) + } if p.sg.FoundServiceGateway() { generators = append( generators, diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go index adb77da4..3873390e 100644 --- a/internal/interface/registry/processor.go +++ b/internal/interface/registry/processor.go @@ -16,11 +16,11 @@ type registryProcessor struct { l *option.Loader } -func (r *registryProcessor) NewProcessor(o *option.ResultOption, data *astloader.Data) (up.Processor, error) { +func (r *registryProcessor) NewProcessor(o *option.ResultOption, externalOptions []*option.ResultOption, data *astloader.Data) (up.Processor, error) { gt := git.NewGIT() switch o.Option.Name { case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums) + sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, externalOptions) if err != nil { return nil, err } diff --git a/internal/option/loader.go b/internal/option/loader.go index 83b0e759..8f0b1fb2 100644 --- a/internal/option/loader.go +++ b/internal/option/loader.go @@ -17,8 +17,9 @@ type ResultOption struct { } type Result struct { - Data *astloader.Data - Options []*ResultOption + Data *astloader.Data + Options []*ResultOption + ExternalOptions []*ResultOption } type Loader struct { @@ -98,6 +99,7 @@ func (l *Loader) Load() (result *Result, errs []error) { optRootPkg := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") pkgPath := strings.Join(strings.Split(data.PkgPath, "/")[:3], "/") if optRootPkg != pkgPath { + result.ExternalOptions = append(result.ExternalOptions, option) continue } result.Options = append(result.Options, option) diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index 4d3928a1..685d102a 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -45,5 +45,6 @@ type ServiceGateway interface { CommentFields() map[string]map[string]string Enums() *typeutil.Map + FoundService() bool FoundServiceGateway() bool } diff --git a/internal/usecase/registry/processor.go b/internal/usecase/registry/processor.go index fd649f85..b6aff34d 100644 --- a/internal/usecase/registry/processor.go +++ b/internal/usecase/registry/processor.go @@ -7,5 +7,5 @@ import ( ) type ProcessorRegistry interface { - NewProcessor(o *option.ResultOption, data *astloader.Data) (up.Processor, error) + NewProcessor(o *option.ResultOption, externalOptions []*option.ResultOption, data *astloader.Data) (up.Processor, error) } From 1b0e381eca71d7ead9f85f16b5951072a24e69bf Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 9 Feb 2021 17:21:01 +0300 Subject: [PATCH 154/293] refactor: change generation gateway --- internal/interface/gateway/service.go | 13 +++++++++---- internal/interface/generator/endpoint.go | 4 ++-- internal/interface/generator/http_gateway.go | 5 ++++- internal/interface/generator/jsonrpc_server.go | 18 +++++++++++++++++- internal/interface/processor/service.go | 2 +- 5 files changed, 33 insertions(+), 9 deletions(-) diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 54f8deae..3eaec261 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -276,15 +276,20 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] } } } + + basePkgService := stdstrings.Join(stdstrings.Split(ifaceNamed.Obj().Pkg().Path(), "/")[:3], "/") + basePkgInternal := stdstrings.Join(stdstrings.Split(g.pkg.PkgPath, "/")[:3], "/") + external := basePkgService != basePkgInternal + var appName string if externalSwipePkg != nil { id := stdstrings.Split(externalSwipePkg.PkgPath, "/")[:3][2] appName = strcase.ToCamel(id) + } else if external { + return nil, errors.NotePosition(o.Position, + fmt.Errorf("you need to add an external service package for %s", stdtypes.TypeString(o.Value.Type(), nil))) } - basePkgService := stdstrings.Join(stdstrings.Split(ifaceNamed.Obj().Pkg().Path(), "/")[:3], "/") - basePkgInternal := stdstrings.Join(stdstrings.Split(g.pkg.PkgPath, "/")[:3], "/") - ifaceName := strcase.ToCamel(ifaceNamed.Obj().Name()) ifaceLcName := strcase.ToLowerCamel(ifaceName) @@ -411,7 +416,7 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] ifaceNamed, ifaceType, serviceMethods, - basePkgService != basePkgInternal, + external, externalSwipePkg, appName, ), nil diff --git a/internal/interface/generator/endpoint.go b/internal/interface/generator/endpoint.go index 71f3836c..a6783e87 100644 --- a/internal/interface/generator/endpoint.go +++ b/internal/interface/generator/endpoint.go @@ -57,7 +57,7 @@ func (g *endpoint) Process(ctx context.Context) error { g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) g.W("return %s{\n", epSetName) for _, m := range iface.Methods() { - g.W("%sEndpoint: make%sEndpoint(svc),\n", m.Name, m.NameExport) + g.W("%sEndpoint: Make%sEndpoint(svc),\n", m.Name, m.NameExport) } g.W("}\n") @@ -115,7 +115,7 @@ func (g *endpoint) writeEndpointMake() { typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) for _, m := range iface.Methods() { - g.W("func make%sEndpoint(s %s) %s.Endpoint {\n", m.NameExport, typeStr, kitEndpointPkg) + g.W("func Make%sEndpoint(s %s) %s.Endpoint {\n", m.NameExport, typeStr, kitEndpointPkg) g.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) var callParams []string diff --git a/internal/interface/generator/http_gateway.go b/internal/interface/generator/http_gateway.go index 48930202..94adcdca 100644 --- a/internal/interface/generator/http_gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -75,6 +75,8 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") for _, s := range g.services { + transportExtPkg := g.i.Import(s.ExternalSwipePkg().Name, s.ExternalSwipePkg().PkgPath) + g.W("type %sEndpointFactory interface {\n", s.AppName()) for _, method := range s.Methods() { g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) @@ -83,7 +85,8 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("type %sOption struct {\n", s.AppName()) g.W("Instancer %s.Instancer \n", sdPkg) - g.W("EndpointFactory %sEndpointFactory\n", s.AppName()) + g.W("Instance string \n") + g.W("ClientOptions []%s.ClientOption\n", transportExtPkg) for _, method := range s.Methods() { g.W("%s EndpointOption\n", method.Name) diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index fce927fe..18913129 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -186,6 +186,10 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for _, m := range iface.Methods() { epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) optName := strings.LcFirst(iface.AppName()) + epFactoryName := iface.LoweName() + "ClientEndpointFactory" + kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") + transportExtPkg := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) + ioPkg := g.i.Import("io", "io") g.W("{\n") @@ -201,7 +205,19 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name) g.W("}\n") - g.W("endpointer := %[1]s.NewEndpointer(%[2]s.Instancer, %[2]s.EndpointFactory.%[3]sEndpointFactory, logger)\n", sdPkg, optName, m.Name) + g.W("%s := func (instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, kitEndpointPkg, ioPkg) + g.W("if %s.Instance != \"\"{\n", optName) + g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(%[2]s.Instance, \"/\")", stringsPkg, optName) + g.W("}\n") + g.W("c, err := %s.NewClient%s(instance, %s.ClientOptions...)\n", transportExtPkg, g.options.Prefix(), optName) + g.WriteCheckErr(func() { + g.W("return nil, nil, err\n") + }) + g.W("return ") + g.W("%s.Make%sEndpoint(c), nil, nil\n", transportExtPkg, m.NameExport) + g.W("\n}\n\n") + + g.W("endpointer := %s.NewEndpointer(%s.Instancer, %s, logger)\n", sdPkg, optName, epFactoryName) g.W( "%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", lbPkg, optName, m.Name, epSetName, diff --git a/internal/interface/processor/service.go b/internal/interface/processor/service.go index 2639cac4..223527a7 100644 --- a/internal/interface/processor/service.go +++ b/internal/interface/processor/service.go @@ -64,7 +64,7 @@ func (p *serviceProcessor) Generators() []ug.Generator { if p.sg.GoClientEnable() { generators = append(generators, generator.NewClientStruct(p.sg), - generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), + //generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), ) } if p.sg.JSONRPCEnable() { From fe292ebee9a07ea3d211dc177acb8d4e8828221f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 10 Feb 2021 10:44:06 +0300 Subject: [PATCH 155/293] fix: error generation --- internal/domain/model/service.go | 16 ++-- internal/interface/gateway/service.go | 39 +++++----- .../interface/generator/http_transport.go | 63 ++++++++-------- internal/interface/generator/jsonrpc_doc.go | 10 +-- .../interface/generator/jsonrpc_go_client.go | 2 +- .../interface/generator/jsonrpc_js_client.go | 74 +++++++++++++------ internal/interface/generator/openapi.go | 72 +++++++++--------- internal/usecase/gateway/service.go | 3 +- 8 files changed, 152 insertions(+), 127 deletions(-) diff --git a/internal/domain/model/service.go b/internal/domain/model/service.go index a9a7dc7c..73d2e549 100644 --- a/internal/domain/model/service.go +++ b/internal/domain/model/service.go @@ -136,7 +136,7 @@ type ServiceMethod struct { ParamCtx *stdtypes.Var ReturnErr *stdtypes.Var ResultsNamed bool - Errors map[uint32]*HTTPError + Errors HTTPErrors T stdtypes.Type } @@ -170,26 +170,22 @@ type MethodOption struct { Exclude bool } -type ErrorKey struct { - Key uint32 - Code int64 -} - -type ErrorKeys []ErrorKey +type HTTPErrors []*HTTPError -func (e ErrorKeys) Len() int { +func (e HTTPErrors) Len() int { return len(e) } -func (e ErrorKeys) Less(i, j int) bool { +func (e HTTPErrors) Less(i, j int) bool { return e[i].Code < e[j].Code } -func (e ErrorKeys) Swap(i, j int) { +func (e HTTPErrors) Swap(i, j int) { e[i], e[j] = e[j], e[i] } type HTTPError struct { + ID uint32 Named *stdtypes.Named Code int64 IsPointer bool diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index 3eaec261..f8551b51 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -34,7 +34,6 @@ type serviceGateway struct { defaultMethodOptions model.MethodOption clientsEnable []string errors map[uint32]*model.HTTPError - errorKeys model.ErrorKeys prefix string openapiEnable bool openapiOutput string @@ -186,12 +185,8 @@ func (g *serviceGateway) ReadmeTemplatePath() string { return g.readmeTemplatePath } -func (g *serviceGateway) Error(key uint32) *model.HTTPError { - return g.errors[key] -} - -func (g *serviceGateway) ErrorKeys() model.ErrorKeys { - return g.errorKeys +func (g *serviceGateway) Errors() map[uint32]*model.HTTPError { + return g.errors } func (g *serviceGateway) InstrumentingEnable() bool { @@ -309,6 +304,11 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] for i := 0; i < ifaceType.NumMethods(); i++ { m := ifaceType.Method(i) + methodErrors := map[uint32]*model.HTTPError{} + for key, httpError := range genericErrors { + methodErrors[key] = httpError + } + sig := m.Type().(*stdtypes.Signature) comments, _ := g.commentFuncs[m.String()] @@ -335,7 +335,6 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] LcName: lcName, NameRequest: nameRequest, NameResponse: nameResponse, - Errors: genericErrors, Comments: comments, } @@ -349,11 +348,11 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] graphTypes.Traverse(n, func(n *graph.Node) bool { if named, ok := n.Object.Type().(*stdtypes.Named); ok { key := g.hasher.Hash(named) - if _, ok := sm.Errors[key]; ok { + if _, ok := methodErrors[key]; ok { return true } if e, ok := g.errors[key]; ok { - sm.Errors[key] = e + methodErrors[key] = e } } return true @@ -365,11 +364,11 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] } if named, ok := elem.(*stdtypes.Named); ok { key := g.hasher.Hash(named) - if _, ok := sm.Errors[key]; ok { + if _, ok := methodErrors[key]; ok { return true } if e, ok := g.errors[key]; ok { - sm.Errors[key] = e + methodErrors[key] = e } } } @@ -404,6 +403,13 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] for j := 0; j < sig.Results().Len()-resultOffset; j++ { sm.Results = append(sm.Results, sig.Results().At(j)) } + + for _, httpError := range methodErrors { + sm.Errors = append(sm.Errors, httpError) + } + + sort.Sort(sm.Errors) + serviceMethods = append(serviceMethods, sm) } return model.NewServiceInterface( @@ -465,6 +471,7 @@ func (g *serviceGateway) load(o *option.Option) error { return true } if e := g.findError(named, errorMethodName); e != nil { + e.ID = key g.errors[key] = e } } @@ -534,14 +541,6 @@ func (g *serviceGateway) load(o *option.Option) error { g.clientsEnable = o.Value.StringSlice() } - for key := range g.errors { - g.errorKeys = append(g.errorKeys, model.ErrorKey{ - Key: key, - Code: g.errors[key].Code, - }) - } - sort.Sort(g.errorKeys) - return nil } diff --git a/internal/interface/generator/http_transport.go b/internal/interface/generator/http_transport.go index 4dcfb0b7..982fbc6d 100644 --- a/internal/interface/generator/http_transport.go +++ b/internal/interface/generator/http_transport.go @@ -16,8 +16,6 @@ type httpTransportOptionsGateway interface { JSONRPCEnable() bool GoClientEnable() bool UseFast() bool - Error(uint32) *model.HTTPError - ErrorKeys() model.ErrorKeys } type httpTransport struct { @@ -82,37 +80,42 @@ func (g *httpTransport) Process(ctx context.Context) error { errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") } - g.WriteFunc("ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { - g.W("switch code {\n") - g.W("default:\nerr = &httpError{code: code}\n") - if g.options.JSONRPCEnable() { - for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key.Key) - g.W("case %d:\n", e.Code) - pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) - if pkgName != "" { - pkgName += "." + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, method := range iface.Methods() { + g.WriteFunc(method.NameUnExport+"ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { + g.W("switch code {\n") + g.W("default:\nerr = &httpError{code: code}\n") + if g.options.JSONRPCEnable() { + + for _, e := range method.Errors { + g.W("case %d:\n", e.Code) + pkgName := g.i.Import(e.Named.Obj().Pkg().Name(), e.Named.Obj().Pkg().Path()) + if pkgName != "" { + pkgName += "." + } + newPrefix := "" + if e.IsPointer { + newPrefix = "&" + } + g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) + } + } - newPrefix := "" - if e.IsPointer { - newPrefix = "&" + g.W("}\n") + if g.options.JSONRPCEnable() { + g.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") + g.W("err.SetErrorData(data)\n") + g.W("}\n") + + g.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") + g.W("err.SetErrorMessage(message)\n") + g.W("}\n") } - g.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Named.Obj().Name()) - } + g.W("return") + }) } - - g.W("}\n") - if g.options.JSONRPCEnable() { - g.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") - g.W("err.SetErrorData(data)\n") - g.W("}\n") - - g.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") - g.W("err.SetErrorMessage(message)\n") - g.W("}\n") - } - g.W("return") - }) + } } g.W("func middlewareChain(middlewares []%[1]s.Middleware) %[1]s.Middleware {\n", endpointPkg) diff --git a/internal/interface/generator/jsonrpc_doc.go b/internal/interface/generator/jsonrpc_doc.go index c23c8e55..5f432de3 100644 --- a/internal/interface/generator/jsonrpc_doc.go +++ b/internal/interface/generator/jsonrpc_doc.go @@ -160,15 +160,7 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { g.W("**Throws**:\n\n") - var methodErrors MethodErrors - - for _, methodError := range method.Errors { - methodErrors = append(methodErrors, methodError) - } - - sort.Sort(methodErrors) - - for _, e := range methodErrors { + for _, e := range method.Errors { g.W("%sException\n\n", e.Named.Obj().Name()) } diff --git a/internal/interface/generator/jsonrpc_go_client.go b/internal/interface/generator/jsonrpc_go_client.go index 8717a27a..8243707e 100644 --- a/internal/interface/generator/jsonrpc_go_client.go +++ b/internal/interface/generator/jsonrpc_go_client.go @@ -116,7 +116,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("%s.ClientResponseDecoder(", jsonrpcPkg) g.W("func(_ %s.Context, response %s.Response) (interface{}, error) {\n", contextPkg, jsonrpcPkg) g.W("if response.Error != nil {\n") - g.W("return nil, ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n") + g.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", m.NameUnExport) g.W("}\n") if len(m.Results) > 0 { diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 65def3fe..0e5eb15f 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -53,11 +53,12 @@ class JSONRPCScheduler { this.__doRequest(requests) .then((responses) => { for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; if (responses[i].error) { - scheduleRequests[responses[i].id].reject(convertError(responses[i].error)); + schedule.reject(responses[i].error); continue; } - scheduleRequests[responses[i].id].resolve(responses[i].result); + schedule.resolve(responses[i].result); } }) .catch((e) => { @@ -111,12 +112,11 @@ class JSONRPCScheduler { ` type jsonRPCJSClientOptionsGateway interface { - Error(key uint32) *model.HTTPError - ErrorKeys() model.ErrorKeys Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption CommentFields() map[string]map[string]string Enums() *typeutil.Map + Errors() map[uint32]*model.HTTPError } type jsonRPCJSClient struct { @@ -215,7 +215,14 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { mw.W("%[1]s:%[1]s", p.Name()) } - mw.W("})\n") + mw.W("}).catch(e => { return ") + if iface.External() { + mw.W("%s%sConvertError(e)", iface.AppName(), m.Name) + } else { + mw.W("%s%sConvertError(e)", iface.LoweName(), m.Name) + } + mw.W("; })\n") + mw.W("}\n") } mw.W("}\n\n") @@ -245,26 +252,51 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default JSONRPCClient%s\n\n", iface.NameExport()) } - for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key.Key) - g.W( - "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %d, data);\n}\n}\n", - e.Named.Obj().Name(), e.Code, - ) - } + httpErrorsDub := map[uint32]struct{}{} - g.W("function convertError(e) {\n") - g.W("switch(e.code) {\n") - g.W("default:\n") - g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, method := range iface.Methods() { + for _, e := range method.Errors { + if _, ok := httpErrorsDub[e.ID]; ok { + continue + } + httpErrorsDub[e.ID] = struct{}{} - for _, key := range g.options.ErrorKeys() { - e := g.options.Error(key.Key) - g.W("case %d:\n", e.Code) - g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) + g.W("export class ") + if iface.External() { + g.W(iface.AppName()) + } + g.W( + "%[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %[2]d, data);\n}\n}\n", + e.Named.Obj().Name(), e.Code, + ) + } + } + } + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + for _, method := range iface.Methods() { + if iface.External() { + g.W("function %s%sConvertError(e) {\n", iface.AppName(), method.Name) + } else { + g.W("function %s%sConvertError(e) {\n", iface.LoweName(), method.Name) + } + g.W("switch(e.code) {\n") + g.W("default:\n") + g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") + for _, e := range method.Errors { + g.W("case %d:\n", e.Code) + if iface.External() { + g.W("return new %s%sError(e.message, e.data);\n", iface.AppName(), e.Named.Obj().Name()) + } else { + g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) + } + } + g.W("}\n}\n") + } } - g.W("}\n}\n") g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { if named, ok := key.(*stdtypes.Named); ok { diff --git a/internal/interface/generator/openapi.go b/internal/interface/generator/openapi.go index 24534412..54717360 100644 --- a/internal/interface/generator/openapi.go +++ b/internal/interface/generator/openapi.go @@ -171,8 +171,6 @@ type openapiDocOptionsGateway interface { Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption JSONRPCEnable() bool - ErrorKeys() model.ErrorKeys - Error(key uint32) *model.HTTPError OpenapiOutput() string OpenapiInfo() openapi.Info OpenapiServers() []openapi.Server @@ -214,46 +212,52 @@ func (g *openapiDoc) Process(ctx context.Context) error { } else { swg.Components.Schemas["Error"] = getOpenapiRESTErrorSchema() } - for _, key := range g.options.ErrorKeys() { - ei := g.options.Error(key.Key) - var s *openapi.Schema - if g.options.JSONRPCEnable() { - s = &openapi.Schema{ - Type: "object", - Properties: openapi.Properties{ - "jsonrpc": &openapi.Schema{ - Type: "string", - Example: "2.0", - }, - "id": &openapi.Schema{ - Type: "string", - Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", - }, - "error": &openapi.Schema{ + + for i := 0; i < g.options.Interfaces().Len(); i++ { + iface := g.options.Interfaces().At(i) + + for _, method := range iface.Methods() { + for _, e := range method.Errors { + var s *openapi.Schema + if g.options.JSONRPCEnable() { + s = &openapi.Schema{ Type: "object", Properties: openapi.Properties{ - "code": &openapi.Schema{ - Type: "integer", - Example: ei.Code, + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", }, - "message": &openapi.Schema{ + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: e.Code, + }, + "message": &openapi.Schema{ + Type: "string", + }, + }, + }, + }, + } + } else { + s = &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "error": &openapi.Schema{ Type: "string", }, }, - }, - }, - } - } else { - s = &openapi.Schema{ - Type: "object", - Properties: openapi.Properties{ - "error": &openapi.Schema{ - Type: "string", - }, - }, + } + } + swg.Components.Schemas[e.Named.Obj().Name()] = s } } - swg.Components.Schemas[ei.Named.Obj().Name()] = s } for i := 0; i < g.options.Interfaces().Len(); i++ { diff --git a/internal/usecase/gateway/service.go b/internal/usecase/gateway/service.go index 685d102a..eda2dbcf 100644 --- a/internal/usecase/gateway/service.go +++ b/internal/usecase/gateway/service.go @@ -11,13 +11,12 @@ type ServiceGateway interface { AppID() string AppName() string Interfaces() model.Interfaces - Error(key uint32) *model.HTTPError - ErrorKeys() model.ErrorKeys TransportType() model.Transport UseFast() bool MethodOption(m model.ServiceMethod) model.MethodOption Prefix() string DefaultErrorEncoder() option.Value + Errors() map[uint32]*model.HTTPError ReadmeEnable() bool ReadmeOutput() string From 2ca3f0418601872603593d9d9c2850c4ee1f49ec Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Feb 2021 17:54:31 +0300 Subject: [PATCH 156/293] fix: type convert for REST generation --- internal/interface/generator/rest_go_client.go | 2 +- internal/interface/generator/rest_server.go | 1 + internal/writer/golang_writer.go | 14 ++++++++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/interface/generator/rest_go_client.go b/internal/interface/generator/rest_go_client.go index bdfb5723..d015f5c0 100644 --- a/internal/interface/generator/rest_go_client.go +++ b/internal/interface/generator/rest_go_client.go @@ -260,7 +260,7 @@ func (g *restGoClient) Process(_ context.Context) error { } g.W("if statusCode := %s; statusCode != %s.StatusOK {\n", statusCode, httpPkg) - g.W("return nil, ErrorDecode(statusCode)\n") + g.W("return nil, %sErrorDecode(statusCode)\n", m.NameUnExport) g.W("}\n") if len(m.Results) > 0 { diff --git a/internal/interface/generator/rest_server.go b/internal/interface/generator/rest_server.go index b837fec0..56267abc 100644 --- a/internal/interface/generator/rest_server.go +++ b/internal/interface/generator/rest_server.go @@ -217,6 +217,7 @@ func (g *restServer) Process(_ context.Context) error { g.W("q := r.URL.Query()\n") } } + for _, p := range m.Params { if _, ok := mopt.PathVars[p.Name()]; ok { var valueID string diff --git a/internal/writer/golang_writer.go b/internal/writer/golang_writer.go index 562791f7..ff8c37cb 100644 --- a/internal/writer/golang_writer.go +++ b/internal/writer/golang_writer.go @@ -213,14 +213,14 @@ func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) strin w.W("\n") } -func (w *GoLangWriter) WriteFormatType(importFn func(string, string) string, assignId, valueId string, f *stdtypes.Var) string { +func (w *GoLangWriter) WriteFormatType(importFn func(string, string) string, assignId, valueId string, f *stdtypes.Var) { switch t := f.Type().(type) { case *stdtypes.Basic: w.writeFormatBasicType(importFn, assignId, valueId, t) case *stdtypes.Named: switch t.Obj().Type().String() { - case "uuid.UUID": - return fmt.Sprintf("%s := %s.String() \n", assignId, valueId) + case "github.com/google/uuid.UUID", "github.com/satori/uuid.UUID": + w.W("%s := %s.String() \n", assignId, valueId) case "time.Duration": w.W("%s := %s.String()\n", assignId, valueId) case "time.Time": @@ -228,7 +228,6 @@ func (w *GoLangWriter) WriteFormatType(importFn func(string, string) string, ass w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", assignId, timePkg, valueId) } } - return valueId } func (w *GoLangWriter) WriteConvertType( @@ -306,9 +305,12 @@ func (w *GoLangWriter) WriteConvertType( tmpID := strcase.ToLowerCamel(f.Name()) + "Result" switch t.Obj().Type().String() { - case "uuid.UUID": - uuidPkg := importFn("", t.Obj().Pkg().Path()) + case "github.com/satori/uuid.UUID": + uuidPkg := importFn(t.Obj().Pkg().Name(), t.Obj().Pkg().Path()) w.W("%s, err := %s.FromString(%s)\n", tmpID, uuidPkg, valueId) + case "github.com/google/uuid.UUID": + uuidPkg := importFn(t.Obj().Pkg().Name(), t.Obj().Pkg().Path()) + w.W("%s, err := %s.Parse(%s)\n", tmpID, uuidPkg, valueId) case "time.Duration": timePkg := importFn("time", "time") w.W("%s, err := %s.ParseDuration(%s)\n", tmpID, timePkg, valueId) From 1ae276783bd37eefbc784165df92fb4903e1c76f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Feb 2021 12:19:24 +0300 Subject: [PATCH 157/293] fix: error gateway and internal service generate --- internal/interface/generator/http_gateway.go | 7 +++ .../interface/generator/jsonrpc_js_client.go | 54 +++++++++---------- .../interface/generator/jsonrpc_server.go | 8 +-- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/internal/interface/generator/http_gateway.go b/internal/interface/generator/http_gateway.go index 94adcdca..757a4e96 100644 --- a/internal/interface/generator/http_gateway.go +++ b/internal/interface/generator/http_gateway.go @@ -66,6 +66,9 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("type EndpointSet struct {\n") for _, s := range g.services { + if !s.External() { + continue + } g.W("%s struct {\n", s.AppName()) for _, method := range s.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) @@ -75,6 +78,10 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { g.W("}\n\n") for _, s := range g.services { + if !s.External() { + continue + } + transportExtPkg := g.i.Import(s.ExternalSwipePkg().Name, s.ExternalSwipePkg().PkgPath) g.W("type %sEndpointFactory interface {\n", s.AppName()) diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 0e5eb15f..67b55c6a 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -2,8 +2,6 @@ package generator import ( "context" - stdtypes "go/types" - "strconv" "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" "golang.org/x/tools/go/types/typeutil" @@ -252,24 +250,20 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default JSONRPCClient%s\n\n", iface.NameExport()) } - httpErrorsDub := map[uint32]struct{}{} + httpErrorsDub := map[string]struct{}{} for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { for _, e := range method.Errors { - if _, ok := httpErrorsDub[e.ID]; ok { + errorName := iface.AppName() + e.Named.Obj().Name() + if _, ok := httpErrorsDub[errorName]; ok { continue } - httpErrorsDub[e.ID] = struct{}{} - - g.W("export class ") - if iface.External() { - g.W(iface.AppName()) - } + httpErrorsDub[errorName] = struct{}{} g.W( - "%[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %[2]d, data);\n}\n}\n", - e.Named.Obj().Name(), e.Code, + "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %[2]d, data);\n}\n}\n", + errorName, e.Code, ) } } @@ -298,24 +292,24 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } } - g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { - if named, ok := key.(*stdtypes.Named); ok { - b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic) - if !ok { - return - } - g.W("export const %sEnum = Object.freeze({\n", named.Obj().Name()) - - for _, enum := range value.([]model.Enum) { - value := enum.Value - if b.Info() == stdtypes.IsString { - value = strconv.Quote(value) - } - g.W("%s: %s,\n", strconv.Quote(enum.Name), value) - } - g.W("});\n") - } - }) + //g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { + // if named, ok := key.(*stdtypes.Named); ok { + // b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic) + // if !ok { + // return + // } + // g.W("export const %sEnum = Object.freeze({\n", named.Obj().Name()) + // + // for _, enum := range value.([]model.Enum) { + // value := enum.Value + // if b.Info() == stdtypes.IsString { + // value = strconv.Quote(value) + // } + // g.W("%s: %s,\n", strconv.Quote(enum.Name), value) + // } + // g.W("});\n") + // } + //}) return nil } diff --git a/internal/interface/generator/jsonrpc_server.go b/internal/interface/generator/jsonrpc_server.go index 18913129..cebc7a4f 100644 --- a/internal/interface/generator/jsonrpc_server.go +++ b/internal/interface/generator/jsonrpc_server.go @@ -258,16 +258,18 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - if i > 0 { g.W(",") } - if iface.External() { pkgExtTransport := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) g.W("%s.Make%sEndpointCodecMap(%s, %s)", pkgExtTransport, iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len()), strconv.Quote(iface.NameUnExport())) } else { - g.W("Make%sEndpointCodecMap(%s)", iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len())) + g.W("Make%sEndpointCodecMap(%s", iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len())) + if g.options.Interfaces().Len() > 1 { + g.W(",%s", strconv.Quote(iface.NameUnExport())) + } + g.W(")") } } From f596c49793106da1520650c3e8101cf0d5c50d6b Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sat, 20 Feb 2021 14:22:24 +0300 Subject: [PATCH 158/293] fix: throw on generate js client --- internal/interface/generator/jsonrpc_js_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/interface/generator/jsonrpc_js_client.go b/internal/interface/generator/jsonrpc_js_client.go index 67b55c6a..e11d00b0 100644 --- a/internal/interface/generator/jsonrpc_js_client.go +++ b/internal/interface/generator/jsonrpc_js_client.go @@ -213,7 +213,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { mw.W("%[1]s:%[1]s", p.Name()) } - mw.W("}).catch(e => { return ") + mw.W("}).catch(e => { throw ") if iface.External() { mw.W("%s%sConvertError(e)", iface.AppName(), m.Name) } else { From 3dd3e2417dcaa7973115d1c5befdb81d36d71118 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Mar 2021 14:01:25 +0300 Subject: [PATCH 159/293] fix: working with projects outside $ GOPATH --- Makefile | 2 +- cmd/swipe/main.go | 17 +++ config_doc_gen.md | 29 ---- internal/astloader/astloader.go | 7 +- internal/interface/executor/generation.go | 43 ++---- internal/interface/gateway/service.go | 11 +- internal/interface/registry/processor.go | 2 +- internal/option/loader.go | 5 +- internal/types/utils.go | 32 ++-- jsonrpc_doc_gen.md | 173 ---------------------- openapi_jsonrpc_gen.json | 1 - openapi_rest_gen.json | 1 - 12 files changed, 58 insertions(+), 265 deletions(-) delete mode 100755 config_doc_gen.md delete mode 100755 jsonrpc_doc_gen.md delete mode 100755 openapi_jsonrpc_gen.json delete mode 100755 openapi_rest_gen.json diff --git a/Makefile b/Makefile index 1fe8cee3..9947d4f3 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ fgo-build: fgo -p releases -b homebrew-swipe build ${NEXT_TAG} build: - goxc -d=releases -bc="linux,386 darwin" -pv=$(VERSION) + CC=/usr/bin/gcc goxc -d=releases -bc="linux,386 darwin" -pv=$(VERSION) release: ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) diff --git a/cmd/swipe/main.go b/cmd/swipe/main.go index 59372706..0e3da9ee 100644 --- a/cmd/swipe/main.go +++ b/cmd/swipe/main.go @@ -104,21 +104,31 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa log.Println(colorFail("failed to get working directory: "), colorFail(err)) return subcommands.ExitFailure } + + log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), wd) + modBytes, err := ioutil.ReadFile(filepath.Join(wd, "go.mod")) if err != nil { log.Println(colorFail("failed read go.mod file: "), colorFail(err)) return subcommands.ExitFailure } + + log.Printf("%s: %s\n", color.Yellow.Render("Read go.mod"), color.LightGreen.Render("ok")) + mod, err := modfile.Parse("go.mod", modBytes, nil) if err != nil { log.Println(colorFail("failed parse go.mod file: "), colorFail(err)) return subcommands.ExitFailure } + log.Printf("%s: %s\n", color.Yellow.Render("Parse go.mod"), color.LightGreen.Render("ok")) + if mod.Module.Mod.Path != "github.com/swipe-io/swipe/v2" { foundReplace := false for _, replace := range mod.Replace { if replace.Old.Path == "github.com/swipe-io/swipe/v2" { + log.Printf("%s\n", color.Red.Render("You are using replace for github.com/swipe-io/swipe/v2")) + foundReplace = true break } @@ -176,6 +186,13 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa continue } diffExcludes = append(diffExcludes, strings.Replace(g.OutputPath, wd+"/", "", -1)) + + dirPath := filepath.Dir(g.OutputPath) + if err := os.MkdirAll(dirPath, 0755); err != nil { + log.Printf("%s: failed to create dir %s: %v\n", colorSuccess(g.PkgPath), colorAccent(dirPath), colorFail(err)) + return subcommands.ExitFailure + } + err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) if err == nil { if cmd.verbose { diff --git a/config_doc_gen.md b/config_doc_gen.md deleted file mode 100755 index 26ce930b..00000000 --- a/config_doc_gen.md +++ /dev/null @@ -1,29 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| -|FLD_TIME_REQ|time.Time|Test time required description|yes|no| -|FLD_STRING_REQ|string|Test string required description|yes|no| -|FLD_BOOL_REQ|bool|Test bool required description|yes|no| -|FLD_INT_REQ|int|Test int required description|yes|no| -|FLD_INT8_REQ|int8|Test int8 required description|yes|no| -|FLD_INT16_REQ|int16|Test int16 required description|yes|no| -|FLD_INT32_REQ|int32|Test int32 required description|yes|no| -|FLD_INT64_REQ|int64|Test int64 required description|yes|no| -|FLD_U_INT_REQ|uint|Test uint required description|yes|no| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| -|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/internal/astloader/astloader.go b/internal/astloader/astloader.go index a33b3018..5982b8c8 100644 --- a/internal/astloader/astloader.go +++ b/internal/astloader/astloader.go @@ -58,17 +58,14 @@ func (l *Loader) WorkDir() string { func (l *Loader) Process() (data *Data, errs []error) { var ( - err error + pkgPath string + err error ) - - var pkgPath string - if l.mod == nil { pkgPath = strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1] } else { pkgPath = l.mod.Module.Mod.Path } - data = &Data{ WorkDir: l.wd, PkgPath: pkgPath, diff --git a/internal/interface/executor/generation.go b/internal/interface/executor/generation.go index b0ccd07b..07dcb5bd 100644 --- a/internal/interface/executor/generation.go +++ b/internal/interface/executor/generation.go @@ -32,30 +32,6 @@ type generationExecutor struct { l *option.Loader } -func (e *generationExecutor) process(result *option.Result) (<-chan processor.Processor, <-chan error) { - outCh := make(chan processor.Processor) - errCh := make(chan error) - go func() { - var wg sync.WaitGroup - for _, o := range result.Options { - wg.Add(1) - go func(o *option.ResultOption) { - defer wg.Done() - p, err := e.r.NewProcessor(o, result.ExternalOptions, result.Data) - if err != nil { - errCh <- err - return - } - outCh <- p - }(o) - } - wg.Wait() - close(errCh) - close(outCh) - }() - return outCh, errCh -} - func (e *generationExecutor) processGenerate(pkg *packages.Package, generators []generator.Generator) <-chan executor.GenerateResult { outCh := make(chan executor.GenerateResult) @@ -122,16 +98,20 @@ func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs if len(errs) > 0 { return nil, errs } - - processorCh, errCh := e.process(opr) - go func() { - for err := range errCh { + var processors []processor.Processor + for _, o := range opr.Options { + p, err := e.r.NewProcessor(o, opr.ExternalOptions, opr.Data) + if err != nil { errs = append(errs, err) + continue } - }() - + processors = append(processors, p) + } + if len(errs) > 0 { + return nil, errs + } var wg sync.WaitGroup - for p := range processorCh { + for _, p := range processors { wg.Add(1) go func(p processor.Processor) { defer wg.Done() @@ -142,7 +122,6 @@ func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs }(p) } wg.Wait() - return } diff --git a/internal/interface/gateway/service.go b/internal/interface/gateway/service.go index f8551b51..62aeb11d 100644 --- a/internal/interface/gateway/service.go +++ b/internal/interface/gateway/service.go @@ -5,6 +5,7 @@ import ( "go/ast" "go/constant" stdtypes "go/types" + "path/filepath" "sort" stdstrings "strings" @@ -30,6 +31,7 @@ type serviceGateway struct { commentFuncs map[string][]string commentFields map[string]map[string]string enums *typeutil.Map + wd string methodOptions map[string]model.MethodOption defaultMethodOptions model.MethodOption clientsEnable []string @@ -429,11 +431,8 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] } func (g *serviceGateway) load(o *option.Option) error { - pkgPath, err := types.DetectPkgPath(g.pkg) - if err != nil { - return err - } - g.appName = stdstrings.Split(pkgPath, "/")[2] + parts := filepath.SplitList(g.wd) + g.appName = parts[len(parts)-1] if nameOpt, ok := o.At("Name"); ok { if name := nameOpt.Value.String(); name != "" { g.appName = strcase.ToCamel(name) @@ -821,6 +820,7 @@ func NewServiceGateway( commentFuncs map[string][]string, commentFields map[string]map[string]string, enums *typeutil.Map, + wd string, externalOptions []*option.ResultOption, ) (gateway.ServiceGateway, error) { g := &serviceGateway{ @@ -829,6 +829,7 @@ func NewServiceGateway( commentFuncs: commentFuncs, commentFields: commentFields, enums: enums, + wd: wd, methodOptions: map[string]model.MethodOption{}, openapiMethodTags: map[string][]string{}, errors: map[uint32]*model.HTTPError{}, diff --git a/internal/interface/registry/processor.go b/internal/interface/registry/processor.go index 3873390e..4fa36ebd 100644 --- a/internal/interface/registry/processor.go +++ b/internal/interface/registry/processor.go @@ -20,7 +20,7 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, externalOptions gt := git.NewGIT() switch o.Option.Name { case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, externalOptions) + sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, data.WorkDir, externalOptions) if err != nil { return nil, err } diff --git a/internal/option/loader.go b/internal/option/loader.go index 8f0b1fb2..672c9574 100644 --- a/internal/option/loader.go +++ b/internal/option/loader.go @@ -48,7 +48,7 @@ func (l *Loader) declProcess(pkg *packages.Package, decl ast.Decl) (*ResultOptio return nil, nil } -func (l *Loader) loadPkgs(pkgs []*packages.Package) (<-chan *ResultOption, <-chan error) { +func (l *Loader) loadPackages(pkgs []*packages.Package) (<-chan *ResultOption, <-chan error) { outCh := make(chan *ResultOption) errCh := make(chan error) go func() { @@ -87,7 +87,7 @@ func (l *Loader) Load() (result *Result, errs []error) { } result.Data = data - optionsCh, errCh := l.loadPkgs(data.Pkgs) + optionsCh, errCh := l.loadPackages(data.Pkgs) go func() { for e := range errCh { @@ -98,6 +98,7 @@ func (l *Loader) Load() (result *Result, errs []error) { for option := range optionsCh { optRootPkg := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") pkgPath := strings.Join(strings.Split(data.PkgPath, "/")[:3], "/") + if optRootPkg != pkgPath { result.ExternalOptions = append(result.ExternalOptions, option) continue diff --git a/internal/types/utils.go b/internal/types/utils.go index 5cdeac99..43b21327 100644 --- a/internal/types/utils.go +++ b/internal/types/utils.go @@ -3,10 +3,8 @@ package types import ( "errors" "fmt" - "go/build" "go/types" "path/filepath" - "strings" "golang.org/x/tools/go/packages" ) @@ -35,19 +33,23 @@ func NameType(vars []*types.Var, qf types.Qualifier, filterFn FilterFn) (results }, filterFn) } -func DetectPkgPath(pkg *packages.Package) (string, error) { - basePath, err := DetectBasePath(pkg) - if err != nil { - return "", err - } - srcPath := filepath.Join(build.Default.GOPATH, "src") + "/" - index := strings.Index(basePath, srcPath) - if index != -1 { - return basePath[index+len(srcPath):], nil - } - return "", errors.New("fail detected pkg path") -} - +//func DetectAppPath(pkg *packages.Package) (string, error) { +// basePath, err := DetectBasePath(pkg) +// if err != nil { +// return "", err +// } +// +// srcPath := filepath.Join(build.Default.GOPATH, "src") + "/" +// index := strings.Index(basePath, srcPath) +// +// fmt.Println(basePath, srcPath, pkg.PkgPath) +// +// if index != -1 { +// return basePath[index+len(srcPath):], nil +// } +// return "", errors.New("fail detected app path") +//} +// func DetectBasePath(pkg *packages.Package) (string, error) { paths := pkg.GoFiles if len(paths) == 0 { diff --git a/jsonrpc_doc_gen.md b/jsonrpc_doc_gen.md deleted file mode 100755 index 62902661..00000000 --- a/jsonrpc_doc_gen.md +++ /dev/null @@ -1,173 +0,0 @@ -# Swipe JSONRPC Client - -a.TestMethod - -### a.TestMethod() ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -b.Create - -b.Delete - -b.Get - -b.GetAll - -b.TestMethod - -b.TestMethod2 - -### b.Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### b.Delete(id) ⇒ - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### b.Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### b.GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|title|string|| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|created_at|string|| -|updated_at|string|| -## Enums -### TransportEnum string - -| Name | Value | Description | -|------|------|------| -|HTTPTransport|http|| diff --git a/openapi_jsonrpc_gen.json b/openapi_jsonrpc_gen.json deleted file mode 100755 index 2bbd142b..00000000 --- a/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32002},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/openapi_rest_gen.json b/openapi_rest_gen.json deleted file mode 100755 index 2f864485..00000000 --- a/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrForbidden":{"type":"object","properties":{"error":{"type":"string"}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} From 5eb5669574ba3f91c0bad755d64b4d76b037c6bf Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 4 Mar 2021 14:18:24 +0300 Subject: [PATCH 160/293] chore(release): 2.0.0-rc2 --- .chglog/CHANGELOG.tpl.md | 3 -- CHANGELOG.md | 51 +++++++++++++++------ Makefile | 2 +- fixtures/ServiceJSONRPCMulti/app/README.md | 2 +- fixtures/ServiceJSONRPCSingle/app/README.md | 2 +- fixtures/ServiceRESTMulti/app/README.md | 2 +- fixtures/ServiceRESTSingle/app/README.md | 2 +- homebrew-swipe | 2 +- swipe.go | 2 +- 9 files changed, 45 insertions(+), 23 deletions(-) diff --git a/.chglog/CHANGELOG.tpl.md b/.chglog/CHANGELOG.tpl.md index 5683d039..19fa4ccf 100755 --- a/.chglog/CHANGELOG.tpl.md +++ b/.chglog/CHANGELOG.tpl.md @@ -1,7 +1,4 @@ {{ if .Versions -}} - -## [Unreleased] - {{ if .Unreleased.CommitGroups -}} {{ range .Unreleased.CommitGroups -}} ### {{ .Title }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 1280f6e7..08fb22d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,30 @@ - -## [Unreleased] + + +## [v2.0.0-rc2] - 2021-03-04 +### Bug Fixes +- working with projects outside $ GOPATH +- throw on generate js client +- error gateway and internal service generate +- type convert for REST generation +- error generation +- generate gateway +- generate client factory + + + +## [v2.0.0-rc1] - 2021-02-04 +### Bug Fixes +- do not add the time package when generating instrumentation when there are no methods + +### Features +- added logging context option +- adds generation, checks for empty value for query param +- added gateway generation setting and some improvements +- for logging structures added method of interface LogStrings -## [v2.0.0-beta6] - 2020-11-27 +## [v2.0.0-beta6] - 2020-12-01 ### Bug Fixes - crash generate if method not return error - do not use body for rest server delete method @@ -228,6 +249,9 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [vv2.0.0-alpha.16] - 2020-09-09 + + +## [vv2.0.0-beta.1] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -407,17 +431,15 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.3] - 2020-07-28 ### Bug Fixes - Change enums JSON RPC client generate format. - - - -## [v1.24.2] - 2020-07-28 -### Bug Fixes - Added generate enum constants for JSON RPC client. ## [v1.24.1] - 2020-07-28 + +## [v1.24.2] - 2020-07-28 + ## [v1.24.4] - 2020-07-28 ### Bug Fixes @@ -725,7 +747,9 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta6...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc2...HEAD +[v2.0.0-rc2]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc1...v2.0.0-rc2 +[v2.0.0-rc1]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta6...v2.0.0-rc1 [v2.0.0-beta6]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta5...v2.0.0-beta6 [v2.0.0-beta5]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta4...v2.0.0-beta5 [v2.0.0-beta4]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta3...v2.0.0-beta4 @@ -758,7 +782,8 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 [v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 [vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-alpha.15 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.16 +[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-beta.1 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 @@ -782,9 +807,9 @@ if you used the ability to use the code in the generation description file, then [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 [v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.3 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.2 -[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.1 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 +[v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.1 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 [v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 diff --git a/Makefile b/Makefile index 9947d4f3..468bdb05 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ fgo-build: fgo -p releases -b homebrew-swipe build ${NEXT_TAG} build: - CC=/usr/bin/gcc goxc -d=releases -bc="linux,386 darwin" -pv=$(VERSION) + goxc -d=releases -bc="linux,386 darwin,windows" -arch="amd64 arm" -pv=$(VERSION) release: ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/fixtures/ServiceJSONRPCMulti/app/README.md index 00038582..04a21a4b 100755 --- a/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/fixtures/ServiceJSONRPCMulti/app/README.md @@ -1,4 +1,4 @@ -# swipe : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceJSONRPCMulti/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/fixtures/ServiceJSONRPCSingle/app/README.md index 00038582..56626881 100755 --- a/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/fixtures/ServiceJSONRPCSingle/app/README.md @@ -1,4 +1,4 @@ -# swipe : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceJSONRPCSingle/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/fixtures/ServiceRESTMulti/app/README.md b/fixtures/ServiceRESTMulti/app/README.md index 00038582..2799100b 100755 --- a/fixtures/ServiceRESTMulti/app/README.md +++ b/fixtures/ServiceRESTMulti/app/README.md @@ -1,4 +1,4 @@ -# swipe : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceRESTMulti/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/fixtures/ServiceRESTSingle/app/README.md b/fixtures/ServiceRESTSingle/app/README.md index 00038582..cf8de982 100755 --- a/fixtures/ServiceRESTSingle/app/README.md +++ b/fixtures/ServiceRESTSingle/app/README.md @@ -1,4 +1,4 @@ -# swipe : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceRESTSingle/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/homebrew-swipe b/homebrew-swipe index 8a316db1..ad03a627 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 8a316db1a15ece3da5383887e2b91b396ff04fe6 +Subproject commit ad03a62768dc988fe6251d3368012272729f39c3 diff --git a/swipe.go b/swipe.go index 467f31cd..ceff7a6f 100644 --- a/swipe.go +++ b/swipe.go @@ -43,7 +43,7 @@ // } package swipe -const Version = "v2.0.0-rc1" +const Version = "v2.0.0-rc2" // A Option is an option for a Swipe. type Option string From c67e9a352141d89f38f415d562aba271148008d0 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 5 Mar 2021 17:20:10 +0300 Subject: [PATCH 161/293] chore(release): 2.0.0-rc3 --- .gitignore | 2 +- .travis.yml | 14 ----- v2/Makefile | 22 +++++++ {cmd => v2/cmd}/git-tagrestore/main.go | 0 {cmd => v2/cmd}/swipe/main.go | 2 +- .../ConfigRequiredSuccess/app/config.go | 0 .../ConfigRequiredSuccess}/app/swipe.go | 2 +- .../app/config.go | 0 .../app/swipe.go | 2 +- .../fixtures}/ConfigSuccess/app/config.go | 0 .../fixtures/ConfigSuccess}/app/swipe.go | 2 +- .../ConfigUseZeroSuccess/app/config.go | 0 .../ConfigUseZeroSuccess}/app/swipe.go | 2 +- .../fixtures}/GatewaySuccess/app/swipe.go | 3 +- .../app/.swipe/README.md.tpl | 0 .../ServiceJSONRPCMulti/app/README.md | 0 .../ServiceJSONRPCMulti/app/package.json | 0 .../ServiceJSONRPCMulti/app/service.go | 0 .../ServiceJSONRPCMulti/app/swipe.go | 2 +- .../app/.swipe/README.md.tpl | 0 .../ServiceJSONRPCSingle/app/README.md | 0 .../ServiceJSONRPCSingle/app/service.go | 0 .../ServiceJSONRPCSingle/app/swipe.go | 2 +- .../ServiceRESTMulti/app/.swipe/README.md.tpl | 0 .../fixtures}/ServiceRESTMulti/app/README.md | 0 .../fixtures}/ServiceRESTMulti/app/service.go | 0 .../fixtures}/ServiceRESTMulti/app/swipe.go | 2 +- .../app/.swipe/README.md.tpl | 0 .../fixtures}/ServiceRESTSingle/app/README.md | 0 .../ServiceRESTSingle/app/service.go | 0 .../fixtures}/ServiceRESTSingle/app/swipe.go | 2 +- gen_test.go => v2/gen_test.go | 6 +- go.mod => v2/go.mod | 9 ++- v2/go.sum | 60 +++++++++++++++++++ {internal => v2/internal}/astcopy/astcopy.go | 0 .../internal}/astloader/astloader.go | 0 .../internal}/domain/model/config.go | 0 .../internal}/domain/model/enum.go | 0 .../internal}/domain/model/gateway.go | 0 .../internal}/domain/model/service.go | 0 {internal => v2/internal}/errors/errors.go | 0 .../internal}/fixcomment/fix_comment.go | 0 {internal => v2/internal}/format/fomrat.go | 0 {internal => v2/internal}/git/git.go | 0 {internal => v2/internal}/graph/graph.go | 0 .../internal}/importer/importer.go | 0 {internal => v2/internal}/importer/utils.go | 0 .../interface/executor/generation.go | 0 .../internal}/interface/factory/importer.go | 0 .../internal}/interface/frame/bytes_frame.go | 0 .../internal}/interface/frame/factory.go | 0 .../internal}/interface/frame/golang_frame.go | 0 .../internal}/interface/frame/js_frame.go | 0 .../internal}/interface/gateway/config.go | 0 .../internal}/interface/gateway/service.go | 0 .../interface/generator/client_struct.go | 0 .../interface/generator/config_doc.go | 0 .../interface/generator/config_env.go | 0 .../internal}/interface/generator/endpoint.go | 0 .../interface/generator/endpoint_factory.go | 0 .../interface/generator/http_gateway.go | 0 .../interface/generator/http_transport.go | 0 .../interface/generator/instrumenting.go | 0 .../interface/generator/jsonrpc_doc.go | 0 .../interface/generator/jsonrpc_go_client.go | 0 .../interface/generator/jsonrpc_js_client.go | 0 .../interface/generator/jsonrpc_server.go | 0 .../internal}/interface/generator/logging.go | 0 .../internal}/interface/generator/openapi.go | 0 .../internal}/interface/generator/readme.go | 0 .../interface/generator/rest_go_client.go | 0 .../interface/generator/rest_server.go | 0 .../internal}/interface/generator/utils.go | 0 .../internal}/interface/processor/config.go | 0 .../internal}/interface/processor/service.go | 0 .../internal}/interface/registry/processor.go | 0 .../interface/typevisitor/js_def_visitor.go | 0 .../interface/typevisitor/js_visitor.go | 0 .../interface/typevisitor/named_collector.go | 0 .../typevisitor/openapi_def_visitor.go | 0 .../interface/typevisitor/openapi_visitor.go | 0 {internal => v2/internal}/openapi/openapi.go | 0 .../internal}/openapi/openapi_ffjson.go | 1 + {internal => v2/internal}/option/loader.go | 0 {internal => v2/internal}/option/parser.go | 0 {internal => v2/internal}/queue/queue.go | 0 {internal => v2/internal}/stcreator/config.go | 0 {internal => v2/internal}/stcreator/loader.go | 0 .../internal}/stcreator/mongo_loader.go | 0 .../internal}/stcreator/postgres_loader.go | 0 .../internal}/stcreator/project.go | 0 {internal => v2/internal}/strings/strings.go | 0 {internal => v2/internal}/types/types.go | 0 {internal => v2/internal}/types/utils.go | 0 .../internal}/usecase/executor/generation.go | 0 .../internal}/usecase/factory/importer.go | 0 .../internal}/usecase/finder/finder.go | 0 .../internal}/usecase/frame/frame.go | 0 .../internal}/usecase/gateway/config.go | 0 .../internal}/usecase/gateway/http_gateway.go | 0 .../internal}/usecase/gateway/service.go | 0 .../internal}/usecase/generator/generator.go | 0 .../internal}/usecase/processor/processor.go | 0 .../internal}/usecase/registry/processor.go | 0 .../usecase/typevisitor/type_visitor.go | 0 {internal => v2/internal}/value/value.go | 0 .../internal}/writer/base_writer.go | 0 .../internal}/writer/golang_writer.go | 0 {internal => v2/internal}/writer/utils.go | 0 swipe.go => v2/swipe.go | 2 +- 110 files changed, 102 insertions(+), 35 deletions(-) delete mode 100644 .travis.yml create mode 100644 v2/Makefile rename {cmd => v2/cmd}/git-tagrestore/main.go (100%) rename {cmd => v2/cmd}/swipe/main.go (99%) rename {fixtures => v2/fixtures}/ConfigRequiredSuccess/app/config.go (100%) rename {fixtures/ConfigUseZeroSuccess => v2/fixtures/ConfigRequiredSuccess}/app/swipe.go (79%) rename {fixtures => v2/fixtures}/ConfigRequiredUseZeroSuccess/app/config.go (100%) rename {fixtures/ConfigRequiredSuccess => v2/fixtures/ConfigRequiredUseZeroSuccess}/app/swipe.go (79%) rename {fixtures => v2/fixtures}/ConfigSuccess/app/config.go (100%) rename {fixtures/ConfigRequiredUseZeroSuccess => v2/fixtures/ConfigSuccess}/app/swipe.go (79%) rename {fixtures => v2/fixtures}/ConfigUseZeroSuccess/app/config.go (100%) rename {fixtures/ConfigSuccess => v2/fixtures/ConfigUseZeroSuccess}/app/swipe.go (79%) rename {fixtures => v2/fixtures}/GatewaySuccess/app/swipe.go (93%) rename {fixtures => v2/fixtures}/ServiceJSONRPCMulti/app/.swipe/README.md.tpl (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCMulti/app/README.md (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCMulti/app/package.json (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCMulti/app/service.go (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCMulti/app/swipe.go (93%) rename {fixtures => v2/fixtures}/ServiceJSONRPCSingle/app/.swipe/README.md.tpl (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCSingle/app/README.md (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCSingle/app/service.go (100%) rename {fixtures => v2/fixtures}/ServiceJSONRPCSingle/app/swipe.go (94%) rename {fixtures => v2/fixtures}/ServiceRESTMulti/app/.swipe/README.md.tpl (100%) rename {fixtures => v2/fixtures}/ServiceRESTMulti/app/README.md (100%) rename {fixtures => v2/fixtures}/ServiceRESTMulti/app/service.go (100%) rename {fixtures => v2/fixtures}/ServiceRESTMulti/app/swipe.go (96%) rename {fixtures => v2/fixtures}/ServiceRESTSingle/app/.swipe/README.md.tpl (100%) rename {fixtures => v2/fixtures}/ServiceRESTSingle/app/README.md (100%) rename {fixtures => v2/fixtures}/ServiceRESTSingle/app/service.go (100%) rename {fixtures => v2/fixtures}/ServiceRESTSingle/app/swipe.go (97%) rename gen_test.go => v2/gen_test.go (99%) rename go.mod => v2/go.mod (72%) create mode 100644 v2/go.sum rename {internal => v2/internal}/astcopy/astcopy.go (100%) rename {internal => v2/internal}/astloader/astloader.go (100%) rename {internal => v2/internal}/domain/model/config.go (100%) rename {internal => v2/internal}/domain/model/enum.go (100%) rename {internal => v2/internal}/domain/model/gateway.go (100%) rename {internal => v2/internal}/domain/model/service.go (100%) rename {internal => v2/internal}/errors/errors.go (100%) rename {internal => v2/internal}/fixcomment/fix_comment.go (100%) rename {internal => v2/internal}/format/fomrat.go (100%) rename {internal => v2/internal}/git/git.go (100%) rename {internal => v2/internal}/graph/graph.go (100%) rename {internal => v2/internal}/importer/importer.go (100%) rename {internal => v2/internal}/importer/utils.go (100%) rename {internal => v2/internal}/interface/executor/generation.go (100%) rename {internal => v2/internal}/interface/factory/importer.go (100%) rename {internal => v2/internal}/interface/frame/bytes_frame.go (100%) rename {internal => v2/internal}/interface/frame/factory.go (100%) rename {internal => v2/internal}/interface/frame/golang_frame.go (100%) rename {internal => v2/internal}/interface/frame/js_frame.go (100%) rename {internal => v2/internal}/interface/gateway/config.go (100%) rename {internal => v2/internal}/interface/gateway/service.go (100%) rename {internal => v2/internal}/interface/generator/client_struct.go (100%) rename {internal => v2/internal}/interface/generator/config_doc.go (100%) rename {internal => v2/internal}/interface/generator/config_env.go (100%) rename {internal => v2/internal}/interface/generator/endpoint.go (100%) rename {internal => v2/internal}/interface/generator/endpoint_factory.go (100%) rename {internal => v2/internal}/interface/generator/http_gateway.go (100%) rename {internal => v2/internal}/interface/generator/http_transport.go (100%) rename {internal => v2/internal}/interface/generator/instrumenting.go (100%) rename {internal => v2/internal}/interface/generator/jsonrpc_doc.go (100%) rename {internal => v2/internal}/interface/generator/jsonrpc_go_client.go (100%) rename {internal => v2/internal}/interface/generator/jsonrpc_js_client.go (100%) rename {internal => v2/internal}/interface/generator/jsonrpc_server.go (100%) rename {internal => v2/internal}/interface/generator/logging.go (100%) rename {internal => v2/internal}/interface/generator/openapi.go (100%) rename {internal => v2/internal}/interface/generator/readme.go (100%) rename {internal => v2/internal}/interface/generator/rest_go_client.go (100%) rename {internal => v2/internal}/interface/generator/rest_server.go (100%) rename {internal => v2/internal}/interface/generator/utils.go (100%) rename {internal => v2/internal}/interface/processor/config.go (100%) rename {internal => v2/internal}/interface/processor/service.go (100%) rename {internal => v2/internal}/interface/registry/processor.go (100%) rename {internal => v2/internal}/interface/typevisitor/js_def_visitor.go (100%) rename {internal => v2/internal}/interface/typevisitor/js_visitor.go (100%) rename {internal => v2/internal}/interface/typevisitor/named_collector.go (100%) rename {internal => v2/internal}/interface/typevisitor/openapi_def_visitor.go (100%) rename {internal => v2/internal}/interface/typevisitor/openapi_visitor.go (100%) rename {internal => v2/internal}/openapi/openapi.go (100%) rename {internal => v2/internal}/openapi/openapi_ffjson.go (99%) rename {internal => v2/internal}/option/loader.go (100%) rename {internal => v2/internal}/option/parser.go (100%) rename {internal => v2/internal}/queue/queue.go (100%) rename {internal => v2/internal}/stcreator/config.go (100%) rename {internal => v2/internal}/stcreator/loader.go (100%) rename {internal => v2/internal}/stcreator/mongo_loader.go (100%) rename {internal => v2/internal}/stcreator/postgres_loader.go (100%) rename {internal => v2/internal}/stcreator/project.go (100%) rename {internal => v2/internal}/strings/strings.go (100%) rename {internal => v2/internal}/types/types.go (100%) rename {internal => v2/internal}/types/utils.go (100%) rename {internal => v2/internal}/usecase/executor/generation.go (100%) rename {internal => v2/internal}/usecase/factory/importer.go (100%) rename {internal => v2/internal}/usecase/finder/finder.go (100%) rename {internal => v2/internal}/usecase/frame/frame.go (100%) rename {internal => v2/internal}/usecase/gateway/config.go (100%) rename {internal => v2/internal}/usecase/gateway/http_gateway.go (100%) rename {internal => v2/internal}/usecase/gateway/service.go (100%) rename {internal => v2/internal}/usecase/generator/generator.go (100%) rename {internal => v2/internal}/usecase/processor/processor.go (100%) rename {internal => v2/internal}/usecase/registry/processor.go (100%) rename {internal => v2/internal}/usecase/typevisitor/type_visitor.go (100%) rename {internal => v2/internal}/value/value.go (100%) rename {internal => v2/internal}/writer/base_writer.go (100%) rename {internal => v2/internal}/writer/golang_writer.go (100%) rename {internal => v2/internal}/writer/utils.go (100%) rename swipe.go => v2/swipe.go (99%) diff --git a/.gitignore b/.gitignore index d2e1ef6e..50fb19f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .idea .DS_Store -fixtures/*/app/*_gen.go +v2/fixtures/*/app/*_gen.go releases \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e61a2bb8..00000000 --- a/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -git: - submodules: false - -go: - - 1.13.7 - - tip - -script: - - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash - - nvm install node - - npm install prettier -g - - make check diff --git a/v2/Makefile b/v2/Makefile new file mode 100644 index 00000000..468bdb05 --- /dev/null +++ b/v2/Makefile @@ -0,0 +1,22 @@ +VERSION = snapshot +GHRFLAGS = + +.PHONY: build release + +default: build + +fgo-build: + fgo -p releases -b homebrew-swipe build ${NEXT_TAG} + +build: + goxc -d=releases -bc="linux,386 darwin,windows" -arch="amd64 arm" -pv=$(VERSION) + +release: + ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) + +chglog: + git-chglog -o CHANGELOG.md + +check: + go vet ./... + go test -v ./... \ No newline at end of file diff --git a/cmd/git-tagrestore/main.go b/v2/cmd/git-tagrestore/main.go similarity index 100% rename from cmd/git-tagrestore/main.go rename to v2/cmd/git-tagrestore/main.go diff --git a/cmd/swipe/main.go b/v2/cmd/swipe/main.go similarity index 99% rename from cmd/swipe/main.go rename to v2/cmd/swipe/main.go index 0e3da9ee..932cef36 100644 --- a/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -18,7 +18,7 @@ import ( "github.com/gookit/color" "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2" + swipe "github.com/swipe-io/swipe/v2" "github.com/swipe-io/swipe/v2/internal/astloader" "github.com/swipe-io/swipe/v2/internal/fixcomment" "github.com/swipe-io/swipe/v2/internal/interface/executor" diff --git a/fixtures/ConfigRequiredSuccess/app/config.go b/v2/fixtures/ConfigRequiredSuccess/app/config.go similarity index 100% rename from fixtures/ConfigRequiredSuccess/app/config.go rename to v2/fixtures/ConfigRequiredSuccess/app/config.go diff --git a/fixtures/ConfigUseZeroSuccess/app/swipe.go b/v2/fixtures/ConfigRequiredSuccess/app/swipe.go similarity index 79% rename from fixtures/ConfigUseZeroSuccess/app/swipe.go rename to v2/fixtures/ConfigRequiredSuccess/app/swipe.go index ada9d9ab..e915f910 100644 --- a/fixtures/ConfigUseZeroSuccess/app/swipe.go +++ b/v2/fixtures/ConfigRequiredSuccess/app/swipe.go @@ -2,7 +2,7 @@ package app -import "github.com/swipe-io/swipe/v2" +import swipe "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/config.go b/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config.go similarity index 100% rename from fixtures/ConfigRequiredUseZeroSuccess/app/config.go rename to v2/fixtures/ConfigRequiredUseZeroSuccess/app/config.go diff --git a/fixtures/ConfigRequiredSuccess/app/swipe.go b/v2/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go similarity index 79% rename from fixtures/ConfigRequiredSuccess/app/swipe.go rename to v2/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go index ada9d9ab..e915f910 100644 --- a/fixtures/ConfigRequiredSuccess/app/swipe.go +++ b/v2/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go @@ -2,7 +2,7 @@ package app -import "github.com/swipe-io/swipe/v2" +import swipe "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( diff --git a/fixtures/ConfigSuccess/app/config.go b/v2/fixtures/ConfigSuccess/app/config.go similarity index 100% rename from fixtures/ConfigSuccess/app/config.go rename to v2/fixtures/ConfigSuccess/app/config.go diff --git a/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go b/v2/fixtures/ConfigSuccess/app/swipe.go similarity index 79% rename from fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go rename to v2/fixtures/ConfigSuccess/app/swipe.go index ada9d9ab..e915f910 100644 --- a/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go +++ b/v2/fixtures/ConfigSuccess/app/swipe.go @@ -2,7 +2,7 @@ package app -import "github.com/swipe-io/swipe/v2" +import swipe "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( diff --git a/fixtures/ConfigUseZeroSuccess/app/config.go b/v2/fixtures/ConfigUseZeroSuccess/app/config.go similarity index 100% rename from fixtures/ConfigUseZeroSuccess/app/config.go rename to v2/fixtures/ConfigUseZeroSuccess/app/config.go diff --git a/fixtures/ConfigSuccess/app/swipe.go b/v2/fixtures/ConfigUseZeroSuccess/app/swipe.go similarity index 79% rename from fixtures/ConfigSuccess/app/swipe.go rename to v2/fixtures/ConfigUseZeroSuccess/app/swipe.go index ada9d9ab..e915f910 100644 --- a/fixtures/ConfigSuccess/app/swipe.go +++ b/v2/fixtures/ConfigUseZeroSuccess/app/swipe.go @@ -2,7 +2,7 @@ package app -import "github.com/swipe-io/swipe/v2" +import swipe "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( diff --git a/fixtures/GatewaySuccess/app/swipe.go b/v2/fixtures/GatewaySuccess/app/swipe.go similarity index 93% rename from fixtures/GatewaySuccess/app/swipe.go rename to v2/fixtures/GatewaySuccess/app/swipe.go index 07d5a286..ff12cdab 100644 --- a/fixtures/GatewaySuccess/app/swipe.go +++ b/v2/fixtures/GatewaySuccess/app/swipe.go @@ -3,7 +3,8 @@ package app import ( - "github.com/swipe-io/swipe/v2" + swipe "github.com/swipe-io/swipe/v2" + "github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app" ) diff --git a/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl b/v2/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl similarity index 100% rename from fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl rename to v2/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl diff --git a/fixtures/ServiceJSONRPCMulti/app/README.md b/v2/fixtures/ServiceJSONRPCMulti/app/README.md similarity index 100% rename from fixtures/ServiceJSONRPCMulti/app/README.md rename to v2/fixtures/ServiceJSONRPCMulti/app/README.md diff --git a/fixtures/ServiceJSONRPCMulti/app/package.json b/v2/fixtures/ServiceJSONRPCMulti/app/package.json similarity index 100% rename from fixtures/ServiceJSONRPCMulti/app/package.json rename to v2/fixtures/ServiceJSONRPCMulti/app/package.json diff --git a/fixtures/ServiceJSONRPCMulti/app/service.go b/v2/fixtures/ServiceJSONRPCMulti/app/service.go similarity index 100% rename from fixtures/ServiceJSONRPCMulti/app/service.go rename to v2/fixtures/ServiceJSONRPCMulti/app/service.go diff --git a/fixtures/ServiceJSONRPCMulti/app/swipe.go b/v2/fixtures/ServiceJSONRPCMulti/app/swipe.go similarity index 93% rename from fixtures/ServiceJSONRPCMulti/app/swipe.go rename to v2/fixtures/ServiceJSONRPCMulti/app/swipe.go index 0a81dabd..e92919cd 100644 --- a/fixtures/ServiceJSONRPCMulti/app/swipe.go +++ b/v2/fixtures/ServiceJSONRPCMulti/app/swipe.go @@ -2,7 +2,7 @@ package app -import "github.com/swipe-io/swipe/v2" +import swipe "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( diff --git a/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl b/v2/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl similarity index 100% rename from fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl rename to v2/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl diff --git a/fixtures/ServiceJSONRPCSingle/app/README.md b/v2/fixtures/ServiceJSONRPCSingle/app/README.md similarity index 100% rename from fixtures/ServiceJSONRPCSingle/app/README.md rename to v2/fixtures/ServiceJSONRPCSingle/app/README.md diff --git a/fixtures/ServiceJSONRPCSingle/app/service.go b/v2/fixtures/ServiceJSONRPCSingle/app/service.go similarity index 100% rename from fixtures/ServiceJSONRPCSingle/app/service.go rename to v2/fixtures/ServiceJSONRPCSingle/app/service.go diff --git a/fixtures/ServiceJSONRPCSingle/app/swipe.go b/v2/fixtures/ServiceJSONRPCSingle/app/swipe.go similarity index 94% rename from fixtures/ServiceJSONRPCSingle/app/swipe.go rename to v2/fixtures/ServiceJSONRPCSingle/app/swipe.go index 39b5f1e4..c1dde4a3 100644 --- a/fixtures/ServiceJSONRPCSingle/app/swipe.go +++ b/v2/fixtures/ServiceJSONRPCSingle/app/swipe.go @@ -2,7 +2,7 @@ package app -import "github.com/swipe-io/swipe/v2" +import swipe "github.com/swipe-io/swipe/v2" func Swipe() { swipe.Build( diff --git a/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl b/v2/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl similarity index 100% rename from fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl rename to v2/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl diff --git a/fixtures/ServiceRESTMulti/app/README.md b/v2/fixtures/ServiceRESTMulti/app/README.md similarity index 100% rename from fixtures/ServiceRESTMulti/app/README.md rename to v2/fixtures/ServiceRESTMulti/app/README.md diff --git a/fixtures/ServiceRESTMulti/app/service.go b/v2/fixtures/ServiceRESTMulti/app/service.go similarity index 100% rename from fixtures/ServiceRESTMulti/app/service.go rename to v2/fixtures/ServiceRESTMulti/app/service.go diff --git a/fixtures/ServiceRESTMulti/app/swipe.go b/v2/fixtures/ServiceRESTMulti/app/swipe.go similarity index 96% rename from fixtures/ServiceRESTMulti/app/swipe.go rename to v2/fixtures/ServiceRESTMulti/app/swipe.go index 52db6afc..75a03811 100644 --- a/fixtures/ServiceRESTMulti/app/swipe.go +++ b/v2/fixtures/ServiceRESTMulti/app/swipe.go @@ -5,7 +5,7 @@ package app import ( "net/http" - "github.com/swipe-io/swipe/v2" + swipe "github.com/swipe-io/swipe/v2" ) func Swipe() { diff --git a/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl b/v2/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl similarity index 100% rename from fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl rename to v2/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl diff --git a/fixtures/ServiceRESTSingle/app/README.md b/v2/fixtures/ServiceRESTSingle/app/README.md similarity index 100% rename from fixtures/ServiceRESTSingle/app/README.md rename to v2/fixtures/ServiceRESTSingle/app/README.md diff --git a/fixtures/ServiceRESTSingle/app/service.go b/v2/fixtures/ServiceRESTSingle/app/service.go similarity index 100% rename from fixtures/ServiceRESTSingle/app/service.go rename to v2/fixtures/ServiceRESTSingle/app/service.go diff --git a/fixtures/ServiceRESTSingle/app/swipe.go b/v2/fixtures/ServiceRESTSingle/app/swipe.go similarity index 97% rename from fixtures/ServiceRESTSingle/app/swipe.go rename to v2/fixtures/ServiceRESTSingle/app/swipe.go index 2342d63f..66403c50 100644 --- a/fixtures/ServiceRESTSingle/app/swipe.go +++ b/v2/fixtures/ServiceRESTSingle/app/swipe.go @@ -5,7 +5,7 @@ package app import ( "net/http" - "github.com/swipe-io/swipe/v2" + swipe "github.com/swipe-io/swipe/v2" ) func Swipe() { diff --git a/gen_test.go b/v2/gen_test.go similarity index 99% rename from gen_test.go rename to v2/gen_test.go index 012e87eb..5c56eefc 100644 --- a/gen_test.go +++ b/v2/gen_test.go @@ -1,4 +1,4 @@ -package swipe +package v2 import ( "bytes" @@ -10,10 +10,8 @@ import ( "strings" "testing" - "github.com/swipe-io/swipe/v2/internal/astloader" - "github.com/google/go-cmp/cmp" - + "github.com/swipe-io/swipe/v2/internal/astloader" "github.com/swipe-io/swipe/v2/internal/interface/executor" "github.com/swipe-io/swipe/v2/internal/interface/factory" "github.com/swipe-io/swipe/v2/internal/interface/frame" diff --git a/go.mod b/v2/go.mod similarity index 72% rename from go.mod rename to v2/go.mod index f19e45f7..61b5f298 100644 --- a/go.mod +++ b/v2/go.mod @@ -4,20 +4,19 @@ go 1.13 require ( github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee + github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structtag v1.2.0 - github.com/go-kit/kit v0.10.0 - github.com/gogo/protobuf v1.2.1 github.com/google/go-cmp v0.3.1 github.com/google/subcommands v1.2.0 github.com/google/uuid v1.0.0 github.com/gookit/color v1.2.5 - github.com/gorilla/mux v1.7.3 - github.com/l-vitaly/go-kit v1.13.0 + github.com/kr/pretty v0.2.0 // indirect github.com/lib/pq v1.8.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 - github.com/prometheus/client_golang v1.3.0 + github.com/stretchr/testify v1.5.1 // indirect github.com/swipe-io/strcase v0.1.5 golang.org/x/mod v0.3.0 golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 ) diff --git a/v2/go.sum b/v2/go.sum new file mode 100644 index 00000000..1f2fb1f3 --- /dev/null +++ b/v2/go.sum @@ -0,0 +1,60 @@ +github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= +github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= +github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= +github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= +github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a h1:gILuVKC+ZPD6g/tj6zBOdnOH1ZHI0zZ86+KLMogc6/s= +golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/astcopy/astcopy.go b/v2/internal/astcopy/astcopy.go similarity index 100% rename from internal/astcopy/astcopy.go rename to v2/internal/astcopy/astcopy.go diff --git a/internal/astloader/astloader.go b/v2/internal/astloader/astloader.go similarity index 100% rename from internal/astloader/astloader.go rename to v2/internal/astloader/astloader.go diff --git a/internal/domain/model/config.go b/v2/internal/domain/model/config.go similarity index 100% rename from internal/domain/model/config.go rename to v2/internal/domain/model/config.go diff --git a/internal/domain/model/enum.go b/v2/internal/domain/model/enum.go similarity index 100% rename from internal/domain/model/enum.go rename to v2/internal/domain/model/enum.go diff --git a/internal/domain/model/gateway.go b/v2/internal/domain/model/gateway.go similarity index 100% rename from internal/domain/model/gateway.go rename to v2/internal/domain/model/gateway.go diff --git a/internal/domain/model/service.go b/v2/internal/domain/model/service.go similarity index 100% rename from internal/domain/model/service.go rename to v2/internal/domain/model/service.go diff --git a/internal/errors/errors.go b/v2/internal/errors/errors.go similarity index 100% rename from internal/errors/errors.go rename to v2/internal/errors/errors.go diff --git a/internal/fixcomment/fix_comment.go b/v2/internal/fixcomment/fix_comment.go similarity index 100% rename from internal/fixcomment/fix_comment.go rename to v2/internal/fixcomment/fix_comment.go diff --git a/internal/format/fomrat.go b/v2/internal/format/fomrat.go similarity index 100% rename from internal/format/fomrat.go rename to v2/internal/format/fomrat.go diff --git a/internal/git/git.go b/v2/internal/git/git.go similarity index 100% rename from internal/git/git.go rename to v2/internal/git/git.go diff --git a/internal/graph/graph.go b/v2/internal/graph/graph.go similarity index 100% rename from internal/graph/graph.go rename to v2/internal/graph/graph.go diff --git a/internal/importer/importer.go b/v2/internal/importer/importer.go similarity index 100% rename from internal/importer/importer.go rename to v2/internal/importer/importer.go diff --git a/internal/importer/utils.go b/v2/internal/importer/utils.go similarity index 100% rename from internal/importer/utils.go rename to v2/internal/importer/utils.go diff --git a/internal/interface/executor/generation.go b/v2/internal/interface/executor/generation.go similarity index 100% rename from internal/interface/executor/generation.go rename to v2/internal/interface/executor/generation.go diff --git a/internal/interface/factory/importer.go b/v2/internal/interface/factory/importer.go similarity index 100% rename from internal/interface/factory/importer.go rename to v2/internal/interface/factory/importer.go diff --git a/internal/interface/frame/bytes_frame.go b/v2/internal/interface/frame/bytes_frame.go similarity index 100% rename from internal/interface/frame/bytes_frame.go rename to v2/internal/interface/frame/bytes_frame.go diff --git a/internal/interface/frame/factory.go b/v2/internal/interface/frame/factory.go similarity index 100% rename from internal/interface/frame/factory.go rename to v2/internal/interface/frame/factory.go diff --git a/internal/interface/frame/golang_frame.go b/v2/internal/interface/frame/golang_frame.go similarity index 100% rename from internal/interface/frame/golang_frame.go rename to v2/internal/interface/frame/golang_frame.go diff --git a/internal/interface/frame/js_frame.go b/v2/internal/interface/frame/js_frame.go similarity index 100% rename from internal/interface/frame/js_frame.go rename to v2/internal/interface/frame/js_frame.go diff --git a/internal/interface/gateway/config.go b/v2/internal/interface/gateway/config.go similarity index 100% rename from internal/interface/gateway/config.go rename to v2/internal/interface/gateway/config.go diff --git a/internal/interface/gateway/service.go b/v2/internal/interface/gateway/service.go similarity index 100% rename from internal/interface/gateway/service.go rename to v2/internal/interface/gateway/service.go diff --git a/internal/interface/generator/client_struct.go b/v2/internal/interface/generator/client_struct.go similarity index 100% rename from internal/interface/generator/client_struct.go rename to v2/internal/interface/generator/client_struct.go diff --git a/internal/interface/generator/config_doc.go b/v2/internal/interface/generator/config_doc.go similarity index 100% rename from internal/interface/generator/config_doc.go rename to v2/internal/interface/generator/config_doc.go diff --git a/internal/interface/generator/config_env.go b/v2/internal/interface/generator/config_env.go similarity index 100% rename from internal/interface/generator/config_env.go rename to v2/internal/interface/generator/config_env.go diff --git a/internal/interface/generator/endpoint.go b/v2/internal/interface/generator/endpoint.go similarity index 100% rename from internal/interface/generator/endpoint.go rename to v2/internal/interface/generator/endpoint.go diff --git a/internal/interface/generator/endpoint_factory.go b/v2/internal/interface/generator/endpoint_factory.go similarity index 100% rename from internal/interface/generator/endpoint_factory.go rename to v2/internal/interface/generator/endpoint_factory.go diff --git a/internal/interface/generator/http_gateway.go b/v2/internal/interface/generator/http_gateway.go similarity index 100% rename from internal/interface/generator/http_gateway.go rename to v2/internal/interface/generator/http_gateway.go diff --git a/internal/interface/generator/http_transport.go b/v2/internal/interface/generator/http_transport.go similarity index 100% rename from internal/interface/generator/http_transport.go rename to v2/internal/interface/generator/http_transport.go diff --git a/internal/interface/generator/instrumenting.go b/v2/internal/interface/generator/instrumenting.go similarity index 100% rename from internal/interface/generator/instrumenting.go rename to v2/internal/interface/generator/instrumenting.go diff --git a/internal/interface/generator/jsonrpc_doc.go b/v2/internal/interface/generator/jsonrpc_doc.go similarity index 100% rename from internal/interface/generator/jsonrpc_doc.go rename to v2/internal/interface/generator/jsonrpc_doc.go diff --git a/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go similarity index 100% rename from internal/interface/generator/jsonrpc_go_client.go rename to v2/internal/interface/generator/jsonrpc_go_client.go diff --git a/internal/interface/generator/jsonrpc_js_client.go b/v2/internal/interface/generator/jsonrpc_js_client.go similarity index 100% rename from internal/interface/generator/jsonrpc_js_client.go rename to v2/internal/interface/generator/jsonrpc_js_client.go diff --git a/internal/interface/generator/jsonrpc_server.go b/v2/internal/interface/generator/jsonrpc_server.go similarity index 100% rename from internal/interface/generator/jsonrpc_server.go rename to v2/internal/interface/generator/jsonrpc_server.go diff --git a/internal/interface/generator/logging.go b/v2/internal/interface/generator/logging.go similarity index 100% rename from internal/interface/generator/logging.go rename to v2/internal/interface/generator/logging.go diff --git a/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go similarity index 100% rename from internal/interface/generator/openapi.go rename to v2/internal/interface/generator/openapi.go diff --git a/internal/interface/generator/readme.go b/v2/internal/interface/generator/readme.go similarity index 100% rename from internal/interface/generator/readme.go rename to v2/internal/interface/generator/readme.go diff --git a/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go similarity index 100% rename from internal/interface/generator/rest_go_client.go rename to v2/internal/interface/generator/rest_go_client.go diff --git a/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go similarity index 100% rename from internal/interface/generator/rest_server.go rename to v2/internal/interface/generator/rest_server.go diff --git a/internal/interface/generator/utils.go b/v2/internal/interface/generator/utils.go similarity index 100% rename from internal/interface/generator/utils.go rename to v2/internal/interface/generator/utils.go diff --git a/internal/interface/processor/config.go b/v2/internal/interface/processor/config.go similarity index 100% rename from internal/interface/processor/config.go rename to v2/internal/interface/processor/config.go diff --git a/internal/interface/processor/service.go b/v2/internal/interface/processor/service.go similarity index 100% rename from internal/interface/processor/service.go rename to v2/internal/interface/processor/service.go diff --git a/internal/interface/registry/processor.go b/v2/internal/interface/registry/processor.go similarity index 100% rename from internal/interface/registry/processor.go rename to v2/internal/interface/registry/processor.go diff --git a/internal/interface/typevisitor/js_def_visitor.go b/v2/internal/interface/typevisitor/js_def_visitor.go similarity index 100% rename from internal/interface/typevisitor/js_def_visitor.go rename to v2/internal/interface/typevisitor/js_def_visitor.go diff --git a/internal/interface/typevisitor/js_visitor.go b/v2/internal/interface/typevisitor/js_visitor.go similarity index 100% rename from internal/interface/typevisitor/js_visitor.go rename to v2/internal/interface/typevisitor/js_visitor.go diff --git a/internal/interface/typevisitor/named_collector.go b/v2/internal/interface/typevisitor/named_collector.go similarity index 100% rename from internal/interface/typevisitor/named_collector.go rename to v2/internal/interface/typevisitor/named_collector.go diff --git a/internal/interface/typevisitor/openapi_def_visitor.go b/v2/internal/interface/typevisitor/openapi_def_visitor.go similarity index 100% rename from internal/interface/typevisitor/openapi_def_visitor.go rename to v2/internal/interface/typevisitor/openapi_def_visitor.go diff --git a/internal/interface/typevisitor/openapi_visitor.go b/v2/internal/interface/typevisitor/openapi_visitor.go similarity index 100% rename from internal/interface/typevisitor/openapi_visitor.go rename to v2/internal/interface/typevisitor/openapi_visitor.go diff --git a/internal/openapi/openapi.go b/v2/internal/openapi/openapi.go similarity index 100% rename from internal/openapi/openapi.go rename to v2/internal/openapi/openapi.go diff --git a/internal/openapi/openapi_ffjson.go b/v2/internal/openapi/openapi_ffjson.go similarity index 99% rename from internal/openapi/openapi_ffjson.go rename to v2/internal/openapi/openapi_ffjson.go index d73c8a8d..8c99aa2a 100644 --- a/internal/openapi/openapi_ffjson.go +++ b/v2/internal/openapi/openapi_ffjson.go @@ -8,6 +8,7 @@ import ( "encoding/json" "errors" "fmt" + fflib "github.com/pquerna/ffjson/fflib/v1" ) diff --git a/internal/option/loader.go b/v2/internal/option/loader.go similarity index 100% rename from internal/option/loader.go rename to v2/internal/option/loader.go diff --git a/internal/option/parser.go b/v2/internal/option/parser.go similarity index 100% rename from internal/option/parser.go rename to v2/internal/option/parser.go diff --git a/internal/queue/queue.go b/v2/internal/queue/queue.go similarity index 100% rename from internal/queue/queue.go rename to v2/internal/queue/queue.go diff --git a/internal/stcreator/config.go b/v2/internal/stcreator/config.go similarity index 100% rename from internal/stcreator/config.go rename to v2/internal/stcreator/config.go diff --git a/internal/stcreator/loader.go b/v2/internal/stcreator/loader.go similarity index 100% rename from internal/stcreator/loader.go rename to v2/internal/stcreator/loader.go diff --git a/internal/stcreator/mongo_loader.go b/v2/internal/stcreator/mongo_loader.go similarity index 100% rename from internal/stcreator/mongo_loader.go rename to v2/internal/stcreator/mongo_loader.go diff --git a/internal/stcreator/postgres_loader.go b/v2/internal/stcreator/postgres_loader.go similarity index 100% rename from internal/stcreator/postgres_loader.go rename to v2/internal/stcreator/postgres_loader.go diff --git a/internal/stcreator/project.go b/v2/internal/stcreator/project.go similarity index 100% rename from internal/stcreator/project.go rename to v2/internal/stcreator/project.go diff --git a/internal/strings/strings.go b/v2/internal/strings/strings.go similarity index 100% rename from internal/strings/strings.go rename to v2/internal/strings/strings.go diff --git a/internal/types/types.go b/v2/internal/types/types.go similarity index 100% rename from internal/types/types.go rename to v2/internal/types/types.go diff --git a/internal/types/utils.go b/v2/internal/types/utils.go similarity index 100% rename from internal/types/utils.go rename to v2/internal/types/utils.go diff --git a/internal/usecase/executor/generation.go b/v2/internal/usecase/executor/generation.go similarity index 100% rename from internal/usecase/executor/generation.go rename to v2/internal/usecase/executor/generation.go diff --git a/internal/usecase/factory/importer.go b/v2/internal/usecase/factory/importer.go similarity index 100% rename from internal/usecase/factory/importer.go rename to v2/internal/usecase/factory/importer.go diff --git a/internal/usecase/finder/finder.go b/v2/internal/usecase/finder/finder.go similarity index 100% rename from internal/usecase/finder/finder.go rename to v2/internal/usecase/finder/finder.go diff --git a/internal/usecase/frame/frame.go b/v2/internal/usecase/frame/frame.go similarity index 100% rename from internal/usecase/frame/frame.go rename to v2/internal/usecase/frame/frame.go diff --git a/internal/usecase/gateway/config.go b/v2/internal/usecase/gateway/config.go similarity index 100% rename from internal/usecase/gateway/config.go rename to v2/internal/usecase/gateway/config.go diff --git a/internal/usecase/gateway/http_gateway.go b/v2/internal/usecase/gateway/http_gateway.go similarity index 100% rename from internal/usecase/gateway/http_gateway.go rename to v2/internal/usecase/gateway/http_gateway.go diff --git a/internal/usecase/gateway/service.go b/v2/internal/usecase/gateway/service.go similarity index 100% rename from internal/usecase/gateway/service.go rename to v2/internal/usecase/gateway/service.go diff --git a/internal/usecase/generator/generator.go b/v2/internal/usecase/generator/generator.go similarity index 100% rename from internal/usecase/generator/generator.go rename to v2/internal/usecase/generator/generator.go diff --git a/internal/usecase/processor/processor.go b/v2/internal/usecase/processor/processor.go similarity index 100% rename from internal/usecase/processor/processor.go rename to v2/internal/usecase/processor/processor.go diff --git a/internal/usecase/registry/processor.go b/v2/internal/usecase/registry/processor.go similarity index 100% rename from internal/usecase/registry/processor.go rename to v2/internal/usecase/registry/processor.go diff --git a/internal/usecase/typevisitor/type_visitor.go b/v2/internal/usecase/typevisitor/type_visitor.go similarity index 100% rename from internal/usecase/typevisitor/type_visitor.go rename to v2/internal/usecase/typevisitor/type_visitor.go diff --git a/internal/value/value.go b/v2/internal/value/value.go similarity index 100% rename from internal/value/value.go rename to v2/internal/value/value.go diff --git a/internal/writer/base_writer.go b/v2/internal/writer/base_writer.go similarity index 100% rename from internal/writer/base_writer.go rename to v2/internal/writer/base_writer.go diff --git a/internal/writer/golang_writer.go b/v2/internal/writer/golang_writer.go similarity index 100% rename from internal/writer/golang_writer.go rename to v2/internal/writer/golang_writer.go diff --git a/internal/writer/utils.go b/v2/internal/writer/utils.go similarity index 100% rename from internal/writer/utils.go rename to v2/internal/writer/utils.go diff --git a/swipe.go b/v2/swipe.go similarity index 99% rename from swipe.go rename to v2/swipe.go index ceff7a6f..f0f8953c 100644 --- a/swipe.go +++ b/v2/swipe.go @@ -41,7 +41,7 @@ // ), // ) // } -package swipe +package v2 const Version = "v2.0.0-rc2" From 5f9679e6f7e5a11425a80c6719ff242ce9389474 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 5 Mar 2021 21:07:24 +0300 Subject: [PATCH 162/293] chore(release): 2.0.0-rc3 --- homebrew-swipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homebrew-swipe b/homebrew-swipe index ad03a627..a9ab7d9d 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit ad03a62768dc988fe6251d3368012272729f39c3 +Subproject commit a9ab7d9d841ab129b1e646ccc3af3bf6f77f0d0f From ee37ba248ec593170cc84b20278b91a77ae227ca Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 5 Mar 2021 21:12:49 +0300 Subject: [PATCH 163/293] chore(release): 2.0.0-rc3 --- .gitattributes | 57 --- .swipe/README.md.tpl | 35 -- v2/Makefile | 2 +- .../app/config_doc_gen.md | 29 ++ .../app/config_doc_gen.md | 28 ++ .../ConfigSuccess/app/config_doc_gen.md | 30 ++ .../app/config_doc_gen.md | 28 ++ .../GatewaySuccess/app/client_jsonrpc_gen.js | 132 +++++++ .../app/openapi_jsonrpc_gen.json | 1 + v2/fixtures/ServiceJSONRPCMulti/app/README.md | 2 +- .../app/client_jsonrpc_gen.js | 331 ++++++++++++++++++ .../app/jsonrpc_doc_gen.md | 199 +++++++++++ .../app/openapi_jsonrpc_gen.json | 1 + .../ServiceJSONRPCSingle/app/README.md | 2 +- .../app/client_jsonrpc_gen.js | 303 ++++++++++++++++ .../app/jsonrpc_doc_gen.md | 143 ++++++++ .../app/openapi_jsonrpc_gen.json | 1 + v2/fixtures/ServiceRESTMulti/app/README.md | 2 +- .../app/openapi_rest_gen.json | 1 + v2/fixtures/ServiceRESTSingle/app/README.md | 2 +- .../app/openapi_rest_gen.json | 1 + v2/swipe.go | 2 +- 22 files changed, 1234 insertions(+), 98 deletions(-) delete mode 100644 .gitattributes delete mode 100755 .swipe/README.md.tpl create mode 100755 v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md create mode 100755 v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md create mode 100755 v2/fixtures/ConfigSuccess/app/config_doc_gen.md create mode 100755 v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md create mode 100755 v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js create mode 100755 v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json create mode 100755 v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js create mode 100755 v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md create mode 100755 v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json create mode 100755 v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js create mode 100755 v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md create mode 100755 v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json create mode 100755 v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json create mode 100755 v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 98f29e8a..00000000 --- a/.gitattributes +++ /dev/null @@ -1,57 +0,0 @@ - -# /swipe gen -config_doc_gen.md -diff -config_doc_gen.md -diff -fixtures/ConfigUseZeroSuccess/app/config_gen.go -diff -fixtures/ConfigRequiredUseZeroSuccess/app/config_gen.go -diff -fixtures/ConfigRequiredSuccess/app/config_gen.go -diff -fixtures/GatewaySuccess/app/endpoint_gen.go -diff -fixtures/GatewaySuccess/app/gateway_gen.go -diff -fixtures/GatewaySuccess/app/http_gen.go -diff -fixtures/GatewaySuccess/app/server_gen.go -diff -openapi_jsonrpc_gen.json -diff -fixtures/ServiceJSONRPCMulti/app/endpoint_gen.go -diff -fixtures/ServiceRESTMulti/app/logging_gen.go -diff -README.md -diff -README.md -diff -README.md -diff -README.md -diff -fixtures/ServiceJSONRPCSingle/app/endpoint_gen.go -diff -fixtures/ServiceRESTSingle/app/endpoint_gen.go -diff -fixtures/ServiceRESTMulti/app/server_gen.go -diff -openapi_rest_gen.json -diff -openapi_rest_gen.json -diff -fixtures/ServiceJSONRPCMulti/app/endpoint_factory_gen.go -diff -fixtures/ServiceRESTMulti/app/endpoint_gen.go -diff -fixtures/GatewaySuccess/app/client_jsonrpc_gen.js -diff -fixtures/ServiceRESTMulti/app/endpoint_factory_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/http_gen.go -diff -jsonrpc_doc_gen.md -diff -jsonrpc_doc_gen.md -diff -fixtures/ServiceRESTSingle/app/logging_gen.go -diff -openapi_jsonrpc_gen.json -diff -fixtures/ServiceRESTSingle/app/server_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/endpoint_factory_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/server_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/http_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/server_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/logging_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/client_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/client_struct_gen.go -diff -fixtures/ServiceRESTMulti/app/instrumenting_gen.go -diff -fixtures/ServiceRESTSingle/app/http_gen.go -diff -openapi_jsonrpc_gen.json -diff -fixtures/ServiceRESTMulti/app/client_gen.go -diff -fixtures/ServiceRESTSingle/app/endpoint_factory_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/instrumenting_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/instrumenting_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/logging_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/client_struct_gen.go -diff -fixtures/ServiceRESTSingle/app/instrumenting_gen.go -diff -fixtures/ServiceRESTMulti/app/http_gen.go -diff -fixtures/ServiceRESTSingle/app/client_struct_gen.go -diff -fixtures/ServiceJSONRPCSingle/app/client_gen.go -diff -fixtures/ServiceRESTSingle/app/client_gen.go -diff -fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js -diff -fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js -diff -# swipe gen/ diff --git a/.swipe/README.md.tpl b/.swipe/README.md.tpl deleted file mode 100755 index b64b4415..00000000 --- a/.swipe/README.md.tpl +++ /dev/null @@ -1,35 +0,0 @@ -# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) -{{end -}} diff --git a/v2/Makefile b/v2/Makefile index 468bdb05..078b80dc 100644 --- a/v2/Makefile +++ b/v2/Makefile @@ -6,7 +6,7 @@ GHRFLAGS = default: build fgo-build: - fgo -p releases -b homebrew-swipe build ${NEXT_TAG} + fgo -p releases -b ./../homebrew-swipe build ${NEXT_TAG} build: goxc -d=releases -bc="linux,386 darwin,windows" -arch="amd64 arm" -pv=$(VERSION) diff --git a/v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..26ce930b --- /dev/null +++ b/v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md @@ -0,0 +1,29 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| +|FLD_TIME_REQ|time.Time|Test time required description|yes|no| +|FLD_STRING_REQ|string|Test string required description|yes|no| +|FLD_BOOL_REQ|bool|Test bool required description|yes|no| +|FLD_INT_REQ|int|Test int required description|yes|no| +|FLD_INT8_REQ|int8|Test int8 required description|yes|no| +|FLD_INT16_REQ|int16|Test int16 required description|yes|no| +|FLD_INT32_REQ|int32|Test int32 required description|yes|no| +|FLD_INT64_REQ|int64|Test int64 required description|yes|no| +|FLD_U_INT_REQ|uint|Test uint required description|yes|no| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| +|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..e03115a9 --- /dev/null +++ b/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| +|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| +|FLD_STRING_REQ|string|Test string required description|yes|yes| +|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| +|FLD_INT_REQ|int|Test int required description|yes|yes| +|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| +|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| +|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| +|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| +|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixtures/ConfigSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..79abf177 --- /dev/null +++ b/v2/fixtures/ConfigSuccess/app/config_doc_gen.md @@ -0,0 +1,30 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION|time.Duration|Test duration required description|no|no| +|FLD_TIME|time.Time|Test time required description|no|no| +|FLD_STRING|string|Test string required description|no|no| +|FLD_BOOL|bool|Test bool required description|no|no| +|FLD_INT|int|Test int required description|no|no| +|FLD_INT8|int8|Test int8 required description|no|no| +|FLD_INT16|int16|Test int16 required description|no|no| +|FLD_INT32|int32|Test int32 required description|no|no| +|FLD_INT64|int64|Test int64 required description|no|no| +|FLD_U_INT|uint|Test uint required description|no|no| +|FLD_U_INT8|uint8|Test uint8 required description|no|no| +|FLD_U_INT16|uint16|Test uint16 required description|no|no| +|FLD_U_INT32|uint32|Test uint32 required description|no|no| +|FLD_U_INT64|uint64|Test uint64 required description|no|no| +|FLD_FLOAT64|float64|Test int required description|no|no| +|FLD_FLOAT32|float32|Test int required description|no|no| +|FLD_STRINGS|[]string|Test []string required description|no|no| +|FLD_MAP|map[string]string|Test map[string]string required description|no|no| +|ID3_VER|string|Test number env name required description|no|no| +|TEST_NUMBER123|string|Test number env name required description|no|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..60eb6078 --- /dev/null +++ b/v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| +|FLD_TIME_REQ|time.Time|Test time required description|no|yes| +|FLD_STRING_REQ|string|Test string required description|no|yes| +|FLD_BOOL_REQ|bool|Test bool required description|no|yes| +|FLD_INT_REQ|int|Test int required description|no|yes| +|FLD_INT8_REQ|int8|Test int8 required description|no|yes| +|FLD_INT16_REQ|int16|Test int16 required description|no|yes| +|FLD_INT32_REQ|int32|Test int32 required description|no|yes| +|FLD_INT64_REQ|int64|Test int64 required description|no|yes| +|FLD_U_INT_REQ|uint|Test uint required description|no|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js b/v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..39d6aa73 --- /dev/null +++ b/v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js @@ -0,0 +1,132 @@ +// Code generated by Swipe v2.0.0-rc3. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler + .__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }) + .catch((e) => { + throw interfaceBCreateConvertError(e); + }); + } +} + +export default JSONRPCClientB; + +function interfaceBCreateConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json b/v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..78c5b1c5 --- /dev/null +++ b/v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/README.md b/v2/fixtures/ServiceJSONRPCMulti/app/README.md index 04a21a4b..070ecfc4 100755 --- a/v2/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/v2/fixtures/ServiceJSONRPCMulti/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceJSONRPCMulti/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..9f8eeb2c --- /dev/null +++ b/v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -0,0 +1,331 @@ +// Code generated by Swipe v2.0.0-rc3. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** +* @typedef {Object} User +* @property {string} title + +* @property {string} id +* @property {string} name +* @property {string} password +* @property {GeoJSON} point +* @property {string} last_seen +* @property {Data} data +* @property {Array} photo +* @property {User} user +* @property {Profile} profile +* @property {Recurse} recurse +* @property {string} created_at +* @property {string} updated_at +*/ + +/** + * @typedef {Object} Info + * @property {string} title + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class JSONRPCClientA { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + **/ + testMethod() { + return this.scheduler.__scheduleRequest("a.testMethod", {}).catch((e) => { + throw interfaceATestMethodConvertError(e); + }); + } +} + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler + .__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }) + .catch((e) => { + throw interfaceBCreateConvertError(e); + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler + .__scheduleRequest("b.delete", { id: id }) + .catch((e) => { + throw interfaceBDeleteConvertError(e); + }); + } + /** + * Get item. + * + * @param {number} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler + .__scheduleRequest("b.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }) + .catch((e) => { + throw interfaceBGetConvertError(e); + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler + .__scheduleRequest("b.getAll", { members: members }) + .catch((e) => { + throw interfaceBGetAllConvertError(e); + }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler + .__scheduleRequest("b.testMethod", { data: data, ss: ss }) + .catch((e) => { + throw interfaceBTestMethodConvertError(e); + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler + .__scheduleRequest("b.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }) + .catch((e) => { + throw interfaceBTestMethod2ConvertError(e); + }); + } +} + +class JSONRPCClient { + constructor(transport) { + this.A = new JSONRPCClientA(transport); + this.B = new JSONRPCClientB(transport); + } +} +export default JSONRPCClient; + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +function interfaceATestMethodConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBCreateConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + } +} +function interfaceBDeleteConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetAllConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethodConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethod2ConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..997e8ece --- /dev/null +++ b/v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -0,0 +1,199 @@ +# UsersvitalyworkgosrcgithubComswipeIoswipev2fixturesServiceJSONRPCMultiapp JSONRPC Client + +## Getting Started + +You can install this with: + +```shell script +npm install --save-dev service +``` + +Import the package with the client: + +```javascript +import API from "service" +``` + +Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. + +For example: + +```javascript +class FetchTransport { + constructor(url) { + this.url = url; + } + + doRequest(requests) { + return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) + } +} +``` + +Now for a complete example: + +```javascript +import API from "service" +import Transport from "transport" + +const api = new API(new Transport("http://127.0.0.1")) + +// call method here. +``` + +## API +## Methods + +a.TestMethod + +### a.TestMethod() ⇒void + + + + + +**Throws**: + + + +b.Create + +b.Delete + +b.Get + +b.GetAll + +b.TestMethod + +b.TestMethod2 + +### b.Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### b.Delete(id) ⇒ + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### b.Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### b.GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|title|string|| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|created_at|string|| +|updated_at|string|| diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..4dbe39ff --- /dev/null +++ b/v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/README.md b/v2/fixtures/ServiceJSONRPCSingle/app/README.md index 56626881..2f1581eb 100755 --- a/v2/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/v2/fixtures/ServiceJSONRPCSingle/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceJSONRPCSingle/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..1cb0f1a8 --- /dev/null +++ b/v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -0,0 +1,303 @@ +// Code generated by Swipe v2.0.0-rc3. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** + * @typedef {Object} User + * @property {string} id + * @property {string} name + * @property {string} password + * @property {GeoJSON} point + * @property {string} last_seen + * @property {Data} data + * @property {Array} photo + * @property {User} user + * @property {Profile} profile + * @property {Recurse} recurse + * @property {Kind} kind + * @property {string} created_at + * @property {string} updated_at + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {string} Kind + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class JSONRPCClientService { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler + .__scheduleRequest("service.create", { + newData: newData, + name: name, + data: data + }) + .catch((e) => { + throw interfaceBCreateConvertError(e); + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler + .__scheduleRequest("service.delete", { id: id }) + .catch((e) => { + throw interfaceBDeleteConvertError(e); + }); + } + /** + * Get item. + * + * @param {string} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler + .__scheduleRequest("service.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }) + .catch((e) => { + throw interfaceBGetConvertError(e); + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler + .__scheduleRequest("service.getAll", { members: members }) + .catch((e) => { + throw interfaceBGetAllConvertError(e); + }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler + .__scheduleRequest("service.testMethod", { data: data, ss: ss }) + .catch((e) => { + throw interfaceBTestMethodConvertError(e); + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler + .__scheduleRequest("service.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }) + .catch((e) => { + throw interfaceBTestMethod2ConvertError(e); + }); + } +} + +export default JSONRPCClientService; + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +function interfaceBCreateConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + } +} +function interfaceBDeleteConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetAllConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethodConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethod2ConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..808942c2 --- /dev/null +++ b/v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -0,0 +1,143 @@ +# UsersvitalyworkgosrcgithubComswipeIoswipev2fixturesServiceJSONRPCSingleapp JSONRPC Client + +Create + +Delete + +Get + +GetAll + +TestMethod + +TestMethod2 + +### Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### Delete(id) ⇒ + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|kind|Kind|| +|created_at|string|| +|updated_at|string|| diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..3f5cc945 --- /dev/null +++ b/v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixtures/ServiceRESTMulti/app/README.md b/v2/fixtures/ServiceRESTMulti/app/README.md index 2799100b..517da913 100755 --- a/v2/fixtures/ServiceRESTMulti/app/README.md +++ b/v2/fixtures/ServiceRESTMulti/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceRESTMulti/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json new file mode 100755 index 00000000..197f82ef --- /dev/null +++ b/v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixtures/ServiceRESTSingle/app/README.md b/v2/fixtures/ServiceRESTSingle/app/README.md index cf8de982..1825a756 100755 --- a/v2/fixtures/ServiceRESTSingle/app/README.md +++ b/v2/fixtures/ServiceRESTSingle/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/fixtures/ServiceRESTSingle/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json new file mode 100755 index 00000000..6cf27acc --- /dev/null +++ b/v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/swipe.go b/v2/swipe.go index f0f8953c..0ec2a8dd 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -43,7 +43,7 @@ // } package v2 -const Version = "v2.0.0-rc2" +const Version = "v2.0.0-rc3" // A Option is an option for a Swipe. type Option string From 447a275c425b1a8026393bf842a65d09b569ac80 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 5 Mar 2021 21:18:32 +0300 Subject: [PATCH 164/293] chore(release): 2.0.0-rc3 --- .../app/config_doc_gen.md | 29 -- .../app/config_doc_gen.md | 28 -- .../ConfigSuccess/app/config_doc_gen.md | 30 -- .../app/config_doc_gen.md | 28 -- .../GatewaySuccess/app/client_jsonrpc_gen.js | 132 ------ .../app/openapi_jsonrpc_gen.json | 1 - .../app/client_jsonrpc_gen.js | 331 -------------- .../app/jsonrpc_doc_gen.md | 199 -------- .../app/openapi_jsonrpc_gen.json | 1 - .../app/client_jsonrpc_gen.js | 303 ------------ .../app/jsonrpc_doc_gen.md | 143 ------ .../app/openapi_jsonrpc_gen.json | 1 - .../app/openapi_rest_gen.json | 1 - .../app/openapi_rest_gen.json | 1 - v2/go.mod | 10 +- v2/go.sum | 432 +++++++++++++++++- 16 files changed, 435 insertions(+), 1235 deletions(-) delete mode 100755 v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md delete mode 100755 v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md delete mode 100755 v2/fixtures/ConfigSuccess/app/config_doc_gen.md delete mode 100755 v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md delete mode 100755 v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js delete mode 100755 v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json delete mode 100755 v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js delete mode 100755 v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md delete mode 100755 v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json delete mode 100755 v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js delete mode 100755 v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md delete mode 100755 v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json delete mode 100755 v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json delete mode 100755 v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json diff --git a/v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md deleted file mode 100755 index 26ce930b..00000000 --- a/v2/fixtures/ConfigRequiredSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,29 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| -|FLD_TIME_REQ|time.Time|Test time required description|yes|no| -|FLD_STRING_REQ|string|Test string required description|yes|no| -|FLD_BOOL_REQ|bool|Test bool required description|yes|no| -|FLD_INT_REQ|int|Test int required description|yes|no| -|FLD_INT8_REQ|int8|Test int8 required description|yes|no| -|FLD_INT16_REQ|int16|Test int16 required description|yes|no| -|FLD_INT32_REQ|int32|Test int32 required description|yes|no| -|FLD_INT64_REQ|int64|Test int64 required description|yes|no| -|FLD_U_INT_REQ|uint|Test uint required description|yes|no| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| -|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index e03115a9..00000000 --- a/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| -|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| -|FLD_STRING_REQ|string|Test string required description|yes|yes| -|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| -|FLD_INT_REQ|int|Test int required description|yes|yes| -|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| -|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| -|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| -|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| -|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixtures/ConfigSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigSuccess/app/config_doc_gen.md deleted file mode 100755 index 79abf177..00000000 --- a/v2/fixtures/ConfigSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,30 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION|time.Duration|Test duration required description|no|no| -|FLD_TIME|time.Time|Test time required description|no|no| -|FLD_STRING|string|Test string required description|no|no| -|FLD_BOOL|bool|Test bool required description|no|no| -|FLD_INT|int|Test int required description|no|no| -|FLD_INT8|int8|Test int8 required description|no|no| -|FLD_INT16|int16|Test int16 required description|no|no| -|FLD_INT32|int32|Test int32 required description|no|no| -|FLD_INT64|int64|Test int64 required description|no|no| -|FLD_U_INT|uint|Test uint required description|no|no| -|FLD_U_INT8|uint8|Test uint8 required description|no|no| -|FLD_U_INT16|uint16|Test uint16 required description|no|no| -|FLD_U_INT32|uint32|Test uint32 required description|no|no| -|FLD_U_INT64|uint64|Test uint64 required description|no|no| -|FLD_FLOAT64|float64|Test int required description|no|no| -|FLD_FLOAT32|float32|Test int required description|no|no| -|FLD_STRINGS|[]string|Test []string required description|no|no| -|FLD_MAP|map[string]string|Test map[string]string required description|no|no| -|ID3_VER|string|Test number env name required description|no|no| -|TEST_NUMBER123|string|Test number env name required description|no|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md b/v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index 60eb6078..00000000 --- a/v2/fixtures/ConfigUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| -|FLD_TIME_REQ|time.Time|Test time required description|no|yes| -|FLD_STRING_REQ|string|Test string required description|no|yes| -|FLD_BOOL_REQ|bool|Test bool required description|no|yes| -|FLD_INT_REQ|int|Test int required description|no|yes| -|FLD_INT8_REQ|int8|Test int8 required description|no|yes| -|FLD_INT16_REQ|int16|Test int16 required description|no|yes| -|FLD_INT32_REQ|int32|Test int32 required description|no|yes| -|FLD_INT64_REQ|int64|Test int64 required description|no|yes| -|FLD_U_INT_REQ|uint|Test uint required description|no|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js b/v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js deleted file mode 100755 index 39d6aa73..00000000 --- a/v2/fixtures/GatewaySuccess/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by Swipe v2.0.0-rc3. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - const schedule = scheduleRequests[responses[i].id]; - if (responses[i].error) { - schedule.reject(responses[i].error); - continue; - } - schedule.resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler - .__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }) - .catch((e) => { - throw interfaceBCreateConvertError(e); - }); - } -} - -export default JSONRPCClientB; - -function interfaceBCreateConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json b/v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 78c5b1c5..00000000 --- a/v2/fixtures/GatewaySuccess/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js deleted file mode 100755 index 9f8eeb2c..00000000 --- a/v2/fixtures/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,331 +0,0 @@ -// Code generated by Swipe v2.0.0-rc3. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - const schedule = scheduleRequests[responses[i].id]; - if (responses[i].error) { - schedule.reject(responses[i].error); - continue; - } - schedule.resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** -* @typedef {Object} User -* @property {string} title - -* @property {string} id -* @property {string} name -* @property {string} password -* @property {GeoJSON} point -* @property {string} last_seen -* @property {Data} data -* @property {Array} photo -* @property {User} user -* @property {Profile} profile -* @property {Recurse} recurse -* @property {string} created_at -* @property {string} updated_at -*/ - -/** - * @typedef {Object} Info - * @property {string} title - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientA { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - **/ - testMethod() { - return this.scheduler.__scheduleRequest("a.testMethod", {}).catch((e) => { - throw interfaceATestMethodConvertError(e); - }); - } -} - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler - .__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }) - .catch((e) => { - throw interfaceBCreateConvertError(e); - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - delete(id) { - return this.scheduler - .__scheduleRequest("b.delete", { id: id }) - .catch((e) => { - throw interfaceBDeleteConvertError(e); - }); - } - /** - * Get item. - * - * @param {number} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - get(id, name, fname, price, n, b, cc) { - return this.scheduler - .__scheduleRequest("b.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }) - .catch((e) => { - throw interfaceBGetConvertError(e); - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - getAll(members) { - return this.scheduler - .__scheduleRequest("b.getAll", { members: members }) - .catch((e) => { - throw interfaceBGetAllConvertError(e); - }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - testMethod(data, ss) { - return this.scheduler - .__scheduleRequest("b.testMethod", { data: data, ss: ss }) - .catch((e) => { - throw interfaceBTestMethodConvertError(e); - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler - .__scheduleRequest("b.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }) - .catch((e) => { - throw interfaceBTestMethod2ConvertError(e); - }); - } -} - -class JSONRPCClient { - constructor(transport) { - this.A = new JSONRPCClientA(transport); - this.B = new JSONRPCClientB(transport); - } -} -export default JSONRPCClient; - -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -function interfaceATestMethodConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBCreateConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - } -} -function interfaceBDeleteConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetAllConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethodConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethod2ConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md deleted file mode 100755 index 997e8ece..00000000 --- a/v2/fixtures/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,199 +0,0 @@ -# UsersvitalyworkgosrcgithubComswipeIoswipev2fixturesServiceJSONRPCMultiapp JSONRPC Client - -## Getting Started - -You can install this with: - -```shell script -npm install --save-dev service -``` - -Import the package with the client: - -```javascript -import API from "service" -``` - -Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. - -For example: - -```javascript -class FetchTransport { - constructor(url) { - this.url = url; - } - - doRequest(requests) { - return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) - } -} -``` - -Now for a complete example: - -```javascript -import API from "service" -import Transport from "transport" - -const api = new API(new Transport("http://127.0.0.1")) - -// call method here. -``` - -## API -## Methods - -a.TestMethod - -### a.TestMethod() ⇒void - - - - - -**Throws**: - - - -b.Create - -b.Delete - -b.Get - -b.GetAll - -b.TestMethod - -b.TestMethod2 - -### b.Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### b.Delete(id) ⇒ - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### b.Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### b.GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|title|string|| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|created_at|string|| -|updated_at|string|| diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 4dbe39ff..00000000 --- a/v2/fixtures/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js deleted file mode 100755 index 1cb0f1a8..00000000 --- a/v2/fixtures/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,303 +0,0 @@ -// Code generated by Swipe v2.0.0-rc3. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - const schedule = scheduleRequests[responses[i].id]; - if (responses[i].error) { - schedule.reject(responses[i].error); - continue; - } - schedule.resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** - * @typedef {Object} User - * @property {string} id - * @property {string} name - * @property {string} password - * @property {GeoJSON} point - * @property {string} last_seen - * @property {Data} data - * @property {Array} photo - * @property {User} user - * @property {Profile} profile - * @property {Recurse} recurse - * @property {Kind} kind - * @property {string} created_at - * @property {string} updated_at - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {string} Kind - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientService { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - create(newData, name, data) { - return this.scheduler - .__scheduleRequest("service.create", { - newData: newData, - name: name, - data: data - }) - .catch((e) => { - throw interfaceBCreateConvertError(e); - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - delete(id) { - return this.scheduler - .__scheduleRequest("service.delete", { id: id }) - .catch((e) => { - throw interfaceBDeleteConvertError(e); - }); - } - /** - * Get item. - * - * @param {string} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - get(id, name, fname, price, n, b, cc) { - return this.scheduler - .__scheduleRequest("service.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }) - .catch((e) => { - throw interfaceBGetConvertError(e); - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - getAll(members) { - return this.scheduler - .__scheduleRequest("service.getAll", { members: members }) - .catch((e) => { - throw interfaceBGetAllConvertError(e); - }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - testMethod(data, ss) { - return this.scheduler - .__scheduleRequest("service.testMethod", { data: data, ss: ss }) - .catch((e) => { - throw interfaceBTestMethodConvertError(e); - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - testMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler - .__scheduleRequest("service.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }) - .catch((e) => { - throw interfaceBTestMethod2ConvertError(e); - }); - } -} - -export default JSONRPCClientService; - -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -function interfaceBCreateConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - } -} -function interfaceBDeleteConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetAllConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethodConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethod2ConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md deleted file mode 100755 index 808942c2..00000000 --- a/v2/fixtures/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,143 +0,0 @@ -# UsersvitalyworkgosrcgithubComswipeIoswipev2fixturesServiceJSONRPCSingleapp JSONRPC Client - -Create - -Delete - -Get - -GetAll - -TestMethod - -TestMethod2 - -### Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### Delete(id) ⇒ - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|kind|Kind|| -|created_at|string|| -|updated_at|string|| diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 3f5cc945..00000000 --- a/v2/fixtures/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json b/v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json deleted file mode 100755 index 197f82ef..00000000 --- a/v2/fixtures/ServiceRESTMulti/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json b/v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json deleted file mode 100755 index 6cf27acc..00000000 --- a/v2/fixtures/ServiceRESTSingle/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/go.mod b/v2/go.mod index 61b5f298..f530d845 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -4,19 +4,19 @@ go 1.13 require ( github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee - github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structtag v1.2.0 - github.com/google/go-cmp v0.3.1 + github.com/go-kit/kit v0.10.0 + github.com/google/go-cmp v0.4.0 github.com/google/subcommands v1.2.0 github.com/google/uuid v1.0.0 github.com/gookit/color v1.2.5 - github.com/kr/pretty v0.2.0 // indirect + github.com/gorilla/mux v1.8.0 + github.com/l-vitaly/go-kit v1.13.0 github.com/lib/pq v1.8.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 - github.com/stretchr/testify v1.5.1 // indirect + github.com/prometheus/client_golang v1.9.0 github.com/swipe-io/strcase v0.1.5 golang.org/x/mod v0.3.0 golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 ) diff --git a/v2/go.sum b/v2/go.sum index 1f2fb1f3..f3af089f 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -1,60 +1,488 @@ +cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gammazero/nexus v2.1.0+incompatible/go.mod h1:0qqt3FvYuipZoxpd+k7ZrNagbFd9BYGwlOPRloSZMKw= +github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-ozzo/ozzo-routing v2.1.4+incompatible/go.mod h1:hvoxy5M9SJaY0viZvcCsODidtUm5CzRbYKEWuQpr+2A= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/gddo v0.0.0-20200310004957-95ce5a452273/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/graphql-go/graphql v0.7.9/go.mod h1:k6yrAYQaSP59DC5UVxbgxESlmVyojThKdORUqGDGmrI= +github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/l-vitaly/go-kit v1.13.0 h1:kAy3A7FZ4EMT9RWFarNVRhxrdrjOeeB37o25mILRkHw= +github.com/l-vitaly/go-kit v1.13.0/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= +github.com/l-vitaly/rmqrpc v0.0.0-20170301101204-95b1ce811f78/go.mod h1:RRveuDTon8C8upAP4Cgp0nhA9gQhI2/io4etRR75C6s= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= +github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87/go.mod h1:zwr0xP4ZJxwCS/g2d+AUOUwfq/j2NC7a1rK3F0ZbVYM= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.9.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a h1:gILuVKC+ZPD6g/tj6zBOdnOH1ZHI0zZ86+KLMogc6/s= golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From 3aab3ee187a4e4cbd57204d25602fc0760cd9686 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 5 Mar 2021 21:18:36 +0300 Subject: [PATCH 165/293] chore(release): 2.0.0-rc3 --- homebrew-swipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homebrew-swipe b/homebrew-swipe index a9ab7d9d..f179f253 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit a9ab7d9d841ab129b1e646ccc3af3bf6f77f0d0f +Subproject commit f179f25394c31fb9fd0f1b69f65c7f4bbefd6f3c From f50f8badb3f005f8eea8579756641a8b4d14bb02 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 09:41:02 +0300 Subject: [PATCH 166/293] fix: error when generating instrumenting in gateway if there are identical interface names --- .../ConfigRequiredSuccess/app/config.go | 0 .../ConfigRequiredSuccess/app/swipe.go | 0 .../app/config.go | 0 .../ConfigRequiredUseZeroSuccess/app/swipe.go | 0 .../ConfigSuccess/app/config.go | 0 .../ConfigSuccess/app/swipe.go | 0 .../ConfigUseZeroSuccess/app/config.go | 0 .../ConfigUseZeroSuccess/app/swipe.go | 0 .../GatewaySuccess/app/swipe.go | 2 +- .../app/.swipe/README.md.tpl | 0 .../ServiceJSONRPCMulti}/app/README.md | 2 +- .../ServiceJSONRPCMulti/app/package.json | 0 .../ServiceJSONRPCMulti/app/service.go | 0 .../ServiceJSONRPCMulti/app/swipe.go | 0 .../app/.swipe/README.md.tpl | 0 .../ServiceJSONRPCSingle}/app/README.md | 2 +- .../ServiceJSONRPCSingle/app/service.go | 0 .../ServiceJSONRPCSingle/app/swipe.go | 0 .../ServiceRESTMulti/app/.swipe/README.md.tpl | 0 .../ServiceRESTMulti}/app/README.md | 2 +- .../ServiceRESTMulti/app/service.go | 0 .../ServiceRESTMulti/app/swipe.go | 0 .../app/.swipe/README.md.tpl | 0 .../app/README.md | 31 ++++++++++++ .../app/controller/app1/service.go | 25 ++++++++++ .../app/controller/app2/service.go | 25 ++++++++++ .../app/swipe.go | 49 +++++++++++++++++++ .../app/.swipe/README.md.tpl | 35 +++++++++++++ .../ServiceRESTSingle}/app/README.md | 2 +- .../ServiceRESTSingle/app/service.go | 8 +++ .../ServiceRESTSingle/app/swipe.go | 0 .../interface/generator/instrumenting.go | 2 +- 32 files changed, 179 insertions(+), 6 deletions(-) rename v2/{fixtures => fixture}/ConfigRequiredSuccess/app/config.go (100%) rename v2/{fixtures => fixture}/ConfigRequiredSuccess/app/swipe.go (100%) rename v2/{fixtures => fixture}/ConfigRequiredUseZeroSuccess/app/config.go (100%) rename v2/{fixtures => fixture}/ConfigRequiredUseZeroSuccess/app/swipe.go (100%) rename v2/{fixtures => fixture}/ConfigSuccess/app/config.go (100%) rename v2/{fixtures => fixture}/ConfigSuccess/app/swipe.go (100%) rename v2/{fixtures => fixture}/ConfigUseZeroSuccess/app/config.go (100%) rename v2/{fixtures => fixture}/ConfigUseZeroSuccess/app/swipe.go (100%) rename v2/{fixtures => fixture}/GatewaySuccess/app/swipe.go (88%) rename v2/{fixtures => fixture}/ServiceJSONRPCMulti/app/.swipe/README.md.tpl (100%) rename v2/{fixtures/ServiceJSONRPCSingle => fixture/ServiceJSONRPCMulti}/app/README.md (78%) rename v2/{fixtures => fixture}/ServiceJSONRPCMulti/app/package.json (100%) rename v2/{fixtures => fixture}/ServiceJSONRPCMulti/app/service.go (100%) rename v2/{fixtures => fixture}/ServiceJSONRPCMulti/app/swipe.go (100%) rename v2/{fixtures => fixture}/ServiceJSONRPCSingle/app/.swipe/README.md.tpl (100%) rename v2/{fixtures/ServiceJSONRPCMulti => fixture/ServiceJSONRPCSingle}/app/README.md (82%) rename v2/{fixtures => fixture}/ServiceJSONRPCSingle/app/service.go (100%) rename v2/{fixtures => fixture}/ServiceJSONRPCSingle/app/swipe.go (100%) rename v2/{fixtures => fixture}/ServiceRESTMulti/app/.swipe/README.md.tpl (100%) rename v2/{fixtures/ServiceRESTSingle => fixture/ServiceRESTMulti}/app/README.md (79%) rename v2/{fixtures => fixture}/ServiceRESTMulti/app/service.go (100%) rename v2/{fixtures => fixture}/ServiceRESTMulti/app/swipe.go (100%) rename v2/{fixtures/ServiceRESTSingle => fixture/ServiceRESTMultiIdenticalInterface}/app/.swipe/README.md.tpl (100%) create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md create mode 100644 v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go create mode 100644 v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go create mode 100644 v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go create mode 100755 v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl rename v2/{fixtures/ServiceRESTMulti => fixture/ServiceRESTSingle}/app/README.md (82%) rename v2/{fixtures => fixture}/ServiceRESTSingle/app/service.go (94%) rename v2/{fixtures => fixture}/ServiceRESTSingle/app/swipe.go (100%) diff --git a/v2/fixtures/ConfigRequiredSuccess/app/config.go b/v2/fixture/ConfigRequiredSuccess/app/config.go similarity index 100% rename from v2/fixtures/ConfigRequiredSuccess/app/config.go rename to v2/fixture/ConfigRequiredSuccess/app/config.go diff --git a/v2/fixtures/ConfigRequiredSuccess/app/swipe.go b/v2/fixture/ConfigRequiredSuccess/app/swipe.go similarity index 100% rename from v2/fixtures/ConfigRequiredSuccess/app/swipe.go rename to v2/fixture/ConfigRequiredSuccess/app/swipe.go diff --git a/v2/fixtures/ConfigRequiredUseZeroSuccess/app/config.go b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config.go similarity index 100% rename from v2/fixtures/ConfigRequiredUseZeroSuccess/app/config.go rename to v2/fixture/ConfigRequiredUseZeroSuccess/app/config.go diff --git a/v2/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go b/v2/fixture/ConfigRequiredUseZeroSuccess/app/swipe.go similarity index 100% rename from v2/fixtures/ConfigRequiredUseZeroSuccess/app/swipe.go rename to v2/fixture/ConfigRequiredUseZeroSuccess/app/swipe.go diff --git a/v2/fixtures/ConfigSuccess/app/config.go b/v2/fixture/ConfigSuccess/app/config.go similarity index 100% rename from v2/fixtures/ConfigSuccess/app/config.go rename to v2/fixture/ConfigSuccess/app/config.go diff --git a/v2/fixtures/ConfigSuccess/app/swipe.go b/v2/fixture/ConfigSuccess/app/swipe.go similarity index 100% rename from v2/fixtures/ConfigSuccess/app/swipe.go rename to v2/fixture/ConfigSuccess/app/swipe.go diff --git a/v2/fixtures/ConfigUseZeroSuccess/app/config.go b/v2/fixture/ConfigUseZeroSuccess/app/config.go similarity index 100% rename from v2/fixtures/ConfigUseZeroSuccess/app/config.go rename to v2/fixture/ConfigUseZeroSuccess/app/config.go diff --git a/v2/fixtures/ConfigUseZeroSuccess/app/swipe.go b/v2/fixture/ConfigUseZeroSuccess/app/swipe.go similarity index 100% rename from v2/fixtures/ConfigUseZeroSuccess/app/swipe.go rename to v2/fixture/ConfigUseZeroSuccess/app/swipe.go diff --git a/v2/fixtures/GatewaySuccess/app/swipe.go b/v2/fixture/GatewaySuccess/app/swipe.go similarity index 88% rename from v2/fixtures/GatewaySuccess/app/swipe.go rename to v2/fixture/GatewaySuccess/app/swipe.go index ff12cdab..99603ace 100644 --- a/v2/fixtures/GatewaySuccess/app/swipe.go +++ b/v2/fixture/GatewaySuccess/app/swipe.go @@ -5,7 +5,7 @@ package app import ( swipe "github.com/swipe-io/swipe/v2" - "github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app" + "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" ) func Swipe() { diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl b/v2/fixture/ServiceJSONRPCMulti/app/.swipe/README.md.tpl similarity index 100% rename from v2/fixtures/ServiceJSONRPCMulti/app/.swipe/README.md.tpl rename to v2/fixture/ServiceJSONRPCMulti/app/.swipe/README.md.tpl diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/README.md b/v2/fixture/ServiceJSONRPCMulti/app/README.md similarity index 78% rename from v2/fixtures/ServiceJSONRPCSingle/app/README.md rename to v2/fixture/ServiceJSONRPCMulti/app/README.md index 2f1581eb..9e60c463 100755 --- a/v2/fixtures/ServiceJSONRPCSingle/app/README.md +++ b/v2/fixture/ServiceJSONRPCMulti/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCSingle/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/package.json b/v2/fixture/ServiceJSONRPCMulti/app/package.json similarity index 100% rename from v2/fixtures/ServiceJSONRPCMulti/app/package.json rename to v2/fixture/ServiceJSONRPCMulti/app/package.json diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/service.go b/v2/fixture/ServiceJSONRPCMulti/app/service.go similarity index 100% rename from v2/fixtures/ServiceJSONRPCMulti/app/service.go rename to v2/fixture/ServiceJSONRPCMulti/app/service.go diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/swipe.go b/v2/fixture/ServiceJSONRPCMulti/app/swipe.go similarity index 100% rename from v2/fixtures/ServiceJSONRPCMulti/app/swipe.go rename to v2/fixture/ServiceJSONRPCMulti/app/swipe.go diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl b/v2/fixture/ServiceJSONRPCSingle/app/.swipe/README.md.tpl similarity index 100% rename from v2/fixtures/ServiceJSONRPCSingle/app/.swipe/README.md.tpl rename to v2/fixture/ServiceJSONRPCSingle/app/.swipe/README.md.tpl diff --git a/v2/fixtures/ServiceJSONRPCMulti/app/README.md b/v2/fixture/ServiceJSONRPCSingle/app/README.md similarity index 82% rename from v2/fixtures/ServiceJSONRPCMulti/app/README.md rename to v2/fixture/ServiceJSONRPCSingle/app/README.md index 070ecfc4..cc10485f 100755 --- a/v2/fixtures/ServiceJSONRPCMulti/app/README.md +++ b/v2/fixture/ServiceJSONRPCSingle/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceJSONRPCMulti/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCSingle/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/service.go b/v2/fixture/ServiceJSONRPCSingle/app/service.go similarity index 100% rename from v2/fixtures/ServiceJSONRPCSingle/app/service.go rename to v2/fixture/ServiceJSONRPCSingle/app/service.go diff --git a/v2/fixtures/ServiceJSONRPCSingle/app/swipe.go b/v2/fixture/ServiceJSONRPCSingle/app/swipe.go similarity index 100% rename from v2/fixtures/ServiceJSONRPCSingle/app/swipe.go rename to v2/fixture/ServiceJSONRPCSingle/app/swipe.go diff --git a/v2/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl b/v2/fixture/ServiceRESTMulti/app/.swipe/README.md.tpl similarity index 100% rename from v2/fixtures/ServiceRESTMulti/app/.swipe/README.md.tpl rename to v2/fixture/ServiceRESTMulti/app/.swipe/README.md.tpl diff --git a/v2/fixtures/ServiceRESTSingle/app/README.md b/v2/fixture/ServiceRESTMulti/app/README.md similarity index 79% rename from v2/fixtures/ServiceRESTSingle/app/README.md rename to v2/fixture/ServiceRESTMulti/app/README.md index 1825a756..e30908ff 100755 --- a/v2/fixtures/ServiceRESTSingle/app/README.md +++ b/v2/fixture/ServiceRESTMulti/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceRESTSingle/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceRESTMulti/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceRESTMulti/app/service.go b/v2/fixture/ServiceRESTMulti/app/service.go similarity index 100% rename from v2/fixtures/ServiceRESTMulti/app/service.go rename to v2/fixture/ServiceRESTMulti/app/service.go diff --git a/v2/fixtures/ServiceRESTMulti/app/swipe.go b/v2/fixture/ServiceRESTMulti/app/swipe.go similarity index 100% rename from v2/fixtures/ServiceRESTMulti/app/swipe.go rename to v2/fixture/ServiceRESTMulti/app/swipe.go diff --git a/v2/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/.swipe/README.md.tpl similarity index 100% rename from v2/fixtures/ServiceRESTSingle/app/.swipe/README.md.tpl rename to v2/fixture/ServiceRESTMultiIdenticalInterface/app/.swipe/README.md.tpl diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md new file mode 100755 index 00000000..a70e435a --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md @@ -0,0 +1,31 @@ +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app : A short description of the service. +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go new file mode 100644 index 00000000..bee52ffd --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go @@ -0,0 +1,25 @@ +package app1 + +import ( + "context" + + "github.com/google/uuid" +) + +type User struct { + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` +} + +type App interface { + // Create new item of item. + Create(ctx context.Context, name string, data []byte) (err error) +} + +type serviceApp struct { +} + +func (s *serviceApp) Create(ctx context.Context, name string, data []byte) (err error) { + return nil +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go new file mode 100644 index 00000000..f9b8762b --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go @@ -0,0 +1,25 @@ +package app2 + +import ( + "context" + + "github.com/google/uuid" +) + +type User struct { + ID uuid.UUID `json:"id"` + Name string `json:"name"` + Password string `json:"password"` +} + +type App interface { + // Create new item of item. + Create(ctx context.Context, name string, data []byte) (err error) +} + +type serviceApp struct { +} + +func (s *serviceApp) Create(ctx context.Context, name string, data []byte) (err error) { + return nil +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go new file mode 100644 index 00000000..36cc969f --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go @@ -0,0 +1,49 @@ +//+build swipe + +package app + +import ( + "net/http" + + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" + + swipe "github.com/swipe-io/swipe/v2" +) + +func Swipe() { + swipe.Build( + swipe.Service( + swipe.Interface((*app1.App)(nil), "app1"), + swipe.Interface((*app2.App)(nil), "app2"), + + swipe.HTTPServer(), + + swipe.ClientsEnable([]string{"go", "js"}), + + swipe.OpenapiEnable(), + swipe.OpenapiOutput("./"), + + swipe.ReadmeEnable(), + + swipe.MethodOptions(app1.App.Create, + swipe.RESTMethod(http.MethodPost), + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + swipe.LoggingContext("123", "123"), + ), + + swipe.MethodOptions(app2.App.Create, + swipe.RESTMethod(http.MethodPost), + swipe.Logging(true), + swipe.LoggingParams([]string{}, []string{"newData"}), + swipe.LoggingContext("123", "123"), + ), + + swipe.MethodDefaultOptions( + swipe.Logging(false), + swipe.Instrumenting(true), + ), + ), + ) +} diff --git a/v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl b/v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl new file mode 100755 index 00000000..b64b4415 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl @@ -0,0 +1,35 @@ +# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} +A complete description of the service and what it does. + +## Example + + +go run ./cmd/service + + +## Docs + +ToDo. + +## Contributing + +ToDo. + +## Contributors + +ToDo. + +## Author + +ToDo. + +## Changelog + +ToDo. + +## Versions + +{{range $index, $tag := .GIT.Tags -}} + {{if gt $index 0 -}}, {{end -}} + [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) +{{end -}} diff --git a/v2/fixtures/ServiceRESTMulti/app/README.md b/v2/fixture/ServiceRESTSingle/app/README.md similarity index 82% rename from v2/fixtures/ServiceRESTMulti/app/README.md rename to v2/fixture/ServiceRESTSingle/app/README.md index 517da913..c0b4fecf 100755 --- a/v2/fixtures/ServiceRESTMulti/app/README.md +++ b/v2/fixture/ServiceRESTSingle/app/README.md @@ -1,4 +1,4 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixtures/ServiceRESTMulti/app : A short description of the service. +# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceRESTSingle/app : A short description of the service. A complete description of the service and what it does. ## Example diff --git a/v2/fixtures/ServiceRESTSingle/app/service.go b/v2/fixture/ServiceRESTSingle/app/service.go similarity index 94% rename from v2/fixtures/ServiceRESTSingle/app/service.go rename to v2/fixture/ServiceRESTSingle/app/service.go index 17e40e7a..c7816c0c 100644 --- a/v2/fixtures/ServiceRESTSingle/app/service.go +++ b/v2/fixture/ServiceRESTSingle/app/service.go @@ -95,6 +95,9 @@ type AppInterface interface { InterfaceB } +type Option struct { +} + type InterfaceB interface { // Create create comment. // @newData param of new data. @@ -107,6 +110,7 @@ type InterfaceB interface { Delete(ctx context.Context, id uint) (a string, b string, err error) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error + TestMethodOptionals(ctx context.Context, ns string, options ...Option) error Start(ctx context.Context) error } @@ -136,3 +140,7 @@ func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (stat func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { panic("implement me") } + +func (s *serviceB) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { + panic("implement me") +} diff --git a/v2/fixtures/ServiceRESTSingle/app/swipe.go b/v2/fixture/ServiceRESTSingle/app/swipe.go similarity index 100% rename from v2/fixtures/ServiceRESTSingle/app/swipe.go rename to v2/fixture/ServiceRESTSingle/app/swipe.go diff --git a/v2/internal/interface/generator/instrumenting.go b/v2/internal/interface/generator/instrumenting.go index 91be6dfa..915fdfec 100644 --- a/v2/internal/interface/generator/instrumenting.go +++ b/v2/internal/interface/generator/instrumenting.go @@ -55,7 +55,7 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") - name := iface.Name() + "InstrumentingMiddleware" + name := iface.NameExport() + "InstrumentingMiddleware" constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", iface.NameExport()) g.W("type %s struct {\n", name) From cebdf7abc6cd96ca4c342f3aa12d9e67810e26f7 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 09:43:20 +0300 Subject: [PATCH 167/293] refactor: update fixtures --- .../app/config_doc_gen.md | 29 ++ .../ConfigRequiredSuccess/app/config_gen.go | 287 +++++++++++++++ .../app/config_doc_gen.md | 28 ++ .../app/config_gen.go | 218 ++++++++++++ .../ConfigSuccess/app/config_doc_gen.md | 30 ++ v2/fixture/ConfigSuccess/app/config_gen.go | 191 ++++++++++ .../app/config_doc_gen.md | 28 ++ .../ConfigUseZeroSuccess/app/config_gen.go | 181 ++++++++++ .../GatewaySuccess/app/client_jsonrpc_gen.js | 132 +++++++ v2/fixture/GatewaySuccess/app/endpoint_gen.go | 40 +++ v2/fixture/GatewaySuccess/app/http_gen.go | 47 +++ .../app/openapi_jsonrpc_gen.json | 1 + v2/fixture/GatewaySuccess/app/server_gen.go | 72 ++++ .../ServiceJSONRPCMulti/app/client_gen.go | 265 ++++++++++++++ .../app/client_jsonrpc_gen.js | 331 ++++++++++++++++++ .../app/client_struct_gen.go | 186 ++++++++++ .../ServiceJSONRPCMulti/app/endpoint_gen.go | 158 +++++++++ .../ServiceJSONRPCMulti/app/http_gen.go | 228 ++++++++++++ .../app/instrumenting_gen.go | 165 +++++++++ .../app/jsonrpc_doc_gen.md | 199 +++++++++++ .../ServiceJSONRPCMulti/app/logging_gen.go | 94 +++++ .../app/openapi_jsonrpc_gen.json | 1 + .../ServiceJSONRPCMulti/app/server_gen.go | 166 +++++++++ .../ServiceJSONRPCSingle/app/client_gen.go | 220 ++++++++++++ .../app/client_jsonrpc_gen.js | 303 ++++++++++++++++ .../app/client_struct_gen.go | 148 ++++++++ .../ServiceJSONRPCSingle/app/endpoint_gen.go | 141 ++++++++ .../ServiceJSONRPCSingle/app/http_gen.go | 204 +++++++++++ .../app/instrumenting_gen.go | 127 +++++++ .../app/jsonrpc_doc_gen.md | 143 ++++++++ .../ServiceJSONRPCSingle/app/logging_gen.go | 89 +++++ .../app/openapi_jsonrpc_gen.json | 1 + .../ServiceJSONRPCSingle/app/server_gen.go | 146 ++++++++ v2/fixture/ServiceRESTMulti/app/client_gen.go | 280 +++++++++++++++ .../ServiceRESTMulti/app/client_struct_gen.go | 186 ++++++++++ .../ServiceRESTMulti/app/endpoint_gen.go | 158 +++++++++ v2/fixture/ServiceRESTMulti/app/http_gen.go | 175 +++++++++ .../ServiceRESTMulti/app/instrumenting_gen.go | 165 +++++++++ .../ServiceRESTMulti/app/logging_gen.go | 94 +++++ .../app/openapi_rest_gen.json | 1 + v2/fixture/ServiceRESTMulti/app/server_gen.go | 208 +++++++++++ .../app/client_gen.go | 119 +++++++ .../app/client_struct_gen.go | 92 +++++ .../app/endpoint_gen.go | 66 ++++ .../app/http_gen.go | 85 +++++ .../app/instrumenting_gen.go | 127 +++++++ .../app/logging_gen.go | 62 ++++ .../app/openapi_rest_gen.json | 1 + .../app/server_gen.go | 119 +++++++ .../ServiceRESTSingle/app/client_gen.go | 284 +++++++++++++++ .../app/client_struct_gen.go | 186 ++++++++++ .../ServiceRESTSingle/app/endpoint_gen.go | 173 +++++++++ v2/fixture/ServiceRESTSingle/app/http_gen.go | 193 ++++++++++ .../app/instrumenting_gen.go | 142 ++++++++ .../ServiceRESTSingle/app/logging_gen.go | 104 ++++++ .../app/openapi_rest_gen.json | 1 + .../ServiceRESTSingle/app/server_gen.go | 229 ++++++++++++ 57 files changed, 7849 insertions(+) create mode 100755 v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md create mode 100755 v2/fixture/ConfigRequiredSuccess/app/config_gen.go create mode 100755 v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md create mode 100755 v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go create mode 100755 v2/fixture/ConfigSuccess/app/config_doc_gen.md create mode 100755 v2/fixture/ConfigSuccess/app/config_gen.go create mode 100755 v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md create mode 100755 v2/fixture/ConfigUseZeroSuccess/app/config_gen.go create mode 100755 v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js create mode 100755 v2/fixture/GatewaySuccess/app/endpoint_gen.go create mode 100755 v2/fixture/GatewaySuccess/app/http_gen.go create mode 100755 v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json create mode 100755 v2/fixture/GatewaySuccess/app/server_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/client_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/http_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json create mode 100755 v2/fixture/ServiceJSONRPCMulti/app/server_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/client_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/http_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json create mode 100755 v2/fixture/ServiceJSONRPCSingle/app/server_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/client_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/client_struct_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/endpoint_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/http_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/logging_gen.go create mode 100755 v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json create mode 100755 v2/fixture/ServiceRESTMulti/app/server_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json create mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/client_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/client_struct_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/endpoint_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/http_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/logging_gen.go create mode 100755 v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json create mode 100755 v2/fixture/ServiceRESTSingle/app/server_gen.go diff --git a/v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md b/v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..26ce930b --- /dev/null +++ b/v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md @@ -0,0 +1,29 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| +|FLD_TIME_REQ|time.Time|Test time required description|yes|no| +|FLD_STRING_REQ|string|Test string required description|yes|no| +|FLD_BOOL_REQ|bool|Test bool required description|yes|no| +|FLD_INT_REQ|int|Test int required description|yes|no| +|FLD_INT8_REQ|int8|Test int8 required description|yes|no| +|FLD_INT16_REQ|int16|Test int16 required description|yes|no| +|FLD_INT32_REQ|int32|Test int32 required description|yes|no| +|FLD_INT64_REQ|int64|Test int64 required description|yes|no| +|FLD_U_INT_REQ|uint|Test uint required description|yes|no| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| +|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixture/ConfigRequiredSuccess/app/config_gen.go b/v2/fixture/ConfigRequiredSuccess/app/config_gen.go new file mode 100755 index 00000000..a86f0970 --- /dev/null +++ b/v2/fixture/ConfigRequiredSuccess/app/config_gen.go @@ -0,0 +1,287 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "errors" + "fmt" + "os" + "strconv" + "strings" + "time" +) + +func LoadConfig() (cfg *Config, errs []error) { + cfg = &Config{} + fldDurationReqTmp, ok := os.LookupEnv("FLD_DURATION_REQ") + if ok { + fldDurationReqResult, err := time.ParseDuration(fldDurationReqTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldDurationReq = fldDurationReqResult + if cfg.FldDurationReq == 0 { + errs = append(errs, errors.New("env FLD_DURATION_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_DURATION_REQ required")) + } + fldTimeReqTmp, ok := os.LookupEnv("FLD_TIME_REQ") + if ok { + fldTimeReqResult, err := time.Parse(time.RFC3339, fldTimeReqTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldTimeReq = fldTimeReqResult + } else { + errs = append(errs, errors.New("env FLD_TIME_REQ required")) + } + fldStringReqTmp, ok := os.LookupEnv("FLD_STRING_REQ") + if ok { + cfg.FldStringReq = fldStringReqTmp + if cfg.FldStringReq == "" { + errs = append(errs, errors.New("env FLD_STRING_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_STRING_REQ required")) + } + fldBoolReqTmp, ok := os.LookupEnv("FLD_BOOL_REQ") + if ok { + fldboolreqBool, err := strconv.ParseBool(fldBoolReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_BOOL_REQ error: %w", err)) + } + cfg.FldBoolReq = bool(fldboolreqBool) + } else { + errs = append(errs, errors.New("env FLD_BOOL_REQ required")) + } + fldIntReqTmp, ok := os.LookupEnv("FLD_INT_REQ") + if ok { + fldintreqInt, err := strconv.Atoi(fldIntReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT_REQ error: %w", err)) + } + cfg.FldIntReq = int(fldintreqInt) + if cfg.FldIntReq == 0 { + errs = append(errs, errors.New("env FLD_INT_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_INT_REQ required")) + } + fldInt8ReqTmp, ok := os.LookupEnv("FLD_INT8_REQ") + if ok { + fldint8reqInt8, err := strconv.Atoi(fldInt8ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT8_REQ error: %w", err)) + } + cfg.FldInt8Req = int8(fldint8reqInt8) + if cfg.FldInt8Req == 0 { + errs = append(errs, errors.New("env FLD_INT8_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_INT8_REQ required")) + } + fldInt16ReqTmp, ok := os.LookupEnv("FLD_INT16_REQ") + if ok { + fldint16reqInt16, err := strconv.Atoi(fldInt16ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT16_REQ error: %w", err)) + } + cfg.FldInt16Req = int16(fldint16reqInt16) + if cfg.FldInt16Req == 0 { + errs = append(errs, errors.New("env FLD_INT16_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_INT16_REQ required")) + } + fldInt32ReqTmp, ok := os.LookupEnv("FLD_INT32_REQ") + if ok { + fldint32reqInt32, err := strconv.Atoi(fldInt32ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT32_REQ error: %w", err)) + } + cfg.FldInt32Req = int32(fldint32reqInt32) + if cfg.FldInt32Req == 0 { + errs = append(errs, errors.New("env FLD_INT32_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_INT32_REQ required")) + } + fldInt64ReqTmp, ok := os.LookupEnv("FLD_INT64_REQ") + if ok { + fldint64reqInt64, err := strconv.Atoi(fldInt64ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT64_REQ error: %w", err)) + } + cfg.FldInt64Req = int64(fldint64reqInt64) + if cfg.FldInt64Req == 0 { + errs = append(errs, errors.New("env FLD_INT64_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_INT64_REQ required")) + } + fldUIntReqTmp, ok := os.LookupEnv("FLD_U_INT_REQ") + if ok { + flduintreqUint, err := strconv.ParseUint(fldUIntReqTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT_REQ error: %w", err)) + } + cfg.FldUIntReq = uint(flduintreqUint) + if cfg.FldUIntReq == 0 { + errs = append(errs, errors.New("env FLD_U_INT_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_U_INT_REQ required")) + } + fldUInt8ReqTmp, ok := os.LookupEnv("FLD_U_INT8_REQ") + if ok { + flduint8reqUint8, err := strconv.ParseUint(fldUInt8ReqTmp, 10, 8) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT8_REQ error: %w", err)) + } + cfg.FldUInt8Req = uint8(flduint8reqUint8) + if cfg.FldUInt8Req == 0 { + errs = append(errs, errors.New("env FLD_U_INT8_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_U_INT8_REQ required")) + } + fldUInt16ReqTmp, ok := os.LookupEnv("FLD_U_INT16_REQ") + if ok { + flduint16reqUint16, err := strconv.ParseUint(fldUInt16ReqTmp, 10, 16) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT16_REQ error: %w", err)) + } + cfg.FldUInt16Req = uint16(flduint16reqUint16) + if cfg.FldUInt16Req == 0 { + errs = append(errs, errors.New("env FLD_U_INT16_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_U_INT16_REQ required")) + } + fldUInt32ReqTmp, ok := os.LookupEnv("FLD_U_INT32_REQ") + if ok { + flduint32reqUint32, err := strconv.ParseUint(fldUInt32ReqTmp, 10, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT32_REQ error: %w", err)) + } + cfg.FldUInt32Req = uint32(flduint32reqUint32) + if cfg.FldUInt32Req == 0 { + errs = append(errs, errors.New("env FLD_U_INT32_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_U_INT32_REQ required")) + } + fldUInt64ReqTmp, ok := os.LookupEnv("FLD_U_INT64_REQ") + if ok { + flduint64reqUint64, err := strconv.ParseUint(fldUInt64ReqTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT64_REQ error: %w", err)) + } + cfg.FldUInt64Req = uint64(flduint64reqUint64) + if cfg.FldUInt64Req == 0 { + errs = append(errs, errors.New("env FLD_U_INT64_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_U_INT64_REQ required")) + } + fldFloat64ReqTmp, ok := os.LookupEnv("FLD_FLOAT64_REQ") + if ok { + fldfloat64reqFloat64, err := strconv.ParseFloat(fldFloat64ReqTmp, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT64_REQ error: %w", err)) + } + cfg.FldFloat64Req = float64(fldfloat64reqFloat64) + if cfg.FldFloat64Req == 0 { + errs = append(errs, errors.New("env FLD_FLOAT64_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_FLOAT64_REQ required")) + } + fldFloat32ReqTmp, ok := os.LookupEnv("FLD_FLOAT32_REQ") + if ok { + fldfloat32reqFloat32, err := strconv.ParseFloat(fldFloat32ReqTmp, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT32_REQ error: %w", err)) + } + cfg.FldFloat32Req = float32(fldfloat32reqFloat32) + if cfg.FldFloat32Req == 0 { + errs = append(errs, errors.New("env FLD_FLOAT32_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_FLOAT32_REQ required")) + } + fldStringsReqTmp, ok := os.LookupEnv("FLD_STRINGS_REQ") + if ok { + cfg.FldStringsReq = strings.Split(fldStringsReqTmp, ",") + if cfg.FldStringsReq == nil { + errs = append(errs, errors.New("env FLD_STRINGS_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_STRINGS_REQ required")) + } + fldMapReqTmp, ok := os.LookupEnv("FLD_MAP_REQ") + if ok { + partsfldmapreq := strings.Split(fldMapReqTmp, ",") + cfg.FldMapReq = make(map[string]string, len(partsfldmapreq)) + for _, s := range partsfldmapreq { + kv := strings.Split(s, "=") + if len(kv) == 2 { + cfg.FldMapReq[kv[0]] = kv[1] + } + } + if cfg.FldMapReq == nil { + errs = append(errs, errors.New("env FLD_MAP_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_MAP_REQ required")) + } + fldMapIntReqTmp, ok := os.LookupEnv("FLD_MAP_INT_REQ") + if ok { + partsfldmapintreq := strings.Split(fldMapIntReqTmp, ",") + cfg.FldMapIntReq = make(map[string]int, len(partsfldmapintreq)) + for _, s := range partsfldmapintreq { + kv := strings.Split(s, "=") + if len(kv) == 2 { + tmpInt, err := strconv.Atoi(kv[1]) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_MAP_INT_REQ error: %w", err)) + } + cfg.FldMapIntReq[kv[0]] = int(tmpInt) + } + } + if cfg.FldMapIntReq == nil { + errs = append(errs, errors.New("env FLD_MAP_INT_REQ required")) + } + } else { + errs = append(errs, errors.New("env FLD_MAP_INT_REQ required")) + } + return +} + +func (cfg *Config) String() string { + out := ` +FLD_DURATION_REQ=` + fmt.Sprintf("%v", cfg.FldDurationReq) + ` ; Test duration required description +FLD_TIME_REQ=` + fmt.Sprintf("%v", cfg.FldTimeReq) + ` ; Test time required description +FLD_STRING_REQ=` + fmt.Sprintf("%v", cfg.FldStringReq) + ` ; Test string required description +FLD_BOOL_REQ=` + fmt.Sprintf("%v", cfg.FldBoolReq) + ` ; Test bool required description +FLD_INT_REQ=` + fmt.Sprintf("%v", cfg.FldIntReq) + ` ; Test int required description +FLD_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldInt8Req) + ` ; Test int8 required description +FLD_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldInt16Req) + ` ; Test int16 required description +FLD_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldInt32Req) + ` ; Test int32 required description +FLD_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldInt64Req) + ` ; Test int64 required description +FLD_U_INT_REQ=` + fmt.Sprintf("%v", cfg.FldUIntReq) + ` ; Test uint required description +FLD_U_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldUInt8Req) + ` ; Test uint8 required description +FLD_U_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldUInt16Req) + ` ; Test uint16 required description +FLD_U_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldUInt32Req) + ` ; Test uint32 required description +FLD_U_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldUInt64Req) + ` ; Test uint64 required description +FLD_FLOAT64_REQ=` + fmt.Sprintf("%v", cfg.FldFloat64Req) + ` ; Test int required description +FLD_FLOAT32_REQ=` + fmt.Sprintf("%v", cfg.FldFloat32Req) + ` ; Test int required description +FLD_STRINGS_REQ=` + fmt.Sprintf("%v", cfg.FldStringsReq) + ` ; Test []string required description +FLD_MAP_REQ=` + fmt.Sprintf("%v", cfg.FldMapReq) + ` ; Test map[string]string required description +FLD_MAP_INT_REQ=` + fmt.Sprintf("%v", cfg.FldMapIntReq) + ` ; Test map[string]int required description +` + return out +} diff --git a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..e03115a9 --- /dev/null +++ b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| +|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| +|FLD_STRING_REQ|string|Test string required description|yes|yes| +|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| +|FLD_INT_REQ|int|Test int required description|yes|yes| +|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| +|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| +|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| +|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| +|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go new file mode 100755 index 00000000..2c3f6000 --- /dev/null +++ b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go @@ -0,0 +1,218 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "errors" + "fmt" + "os" + "strconv" + "strings" + "time" +) + +func LoadConfig() (cfg *Config, errs []error) { + cfg = &Config{} + fldDurationReqTmp, ok := os.LookupEnv("FLD_DURATION_REQ") + if ok { + fldDurationReqResult, err := time.ParseDuration(fldDurationReqTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldDurationReq = fldDurationReqResult + } else { + errs = append(errs, errors.New("env FLD_DURATION_REQ required")) + } + fldTimeReqTmp, ok := os.LookupEnv("FLD_TIME_REQ") + if ok { + fldTimeReqResult, err := time.Parse(time.RFC3339, fldTimeReqTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldTimeReq = fldTimeReqResult + } else { + errs = append(errs, errors.New("env FLD_TIME_REQ required")) + } + fldStringReqTmp, ok := os.LookupEnv("FLD_STRING_REQ") + if ok { + cfg.FldStringReq = fldStringReqTmp + } else { + errs = append(errs, errors.New("env FLD_STRING_REQ required")) + } + fldBoolReqTmp, ok := os.LookupEnv("FLD_BOOL_REQ") + if ok { + fldboolreqBool, err := strconv.ParseBool(fldBoolReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_BOOL_REQ error: %w", err)) + } + cfg.FldBoolReq = bool(fldboolreqBool) + } else { + errs = append(errs, errors.New("env FLD_BOOL_REQ required")) + } + fldIntReqTmp, ok := os.LookupEnv("FLD_INT_REQ") + if ok { + fldintreqInt, err := strconv.Atoi(fldIntReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT_REQ error: %w", err)) + } + cfg.FldIntReq = int(fldintreqInt) + } else { + errs = append(errs, errors.New("env FLD_INT_REQ required")) + } + fldInt8ReqTmp, ok := os.LookupEnv("FLD_INT8_REQ") + if ok { + fldint8reqInt8, err := strconv.Atoi(fldInt8ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT8_REQ error: %w", err)) + } + cfg.FldInt8Req = int8(fldint8reqInt8) + } else { + errs = append(errs, errors.New("env FLD_INT8_REQ required")) + } + fldInt16ReqTmp, ok := os.LookupEnv("FLD_INT16_REQ") + if ok { + fldint16reqInt16, err := strconv.Atoi(fldInt16ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT16_REQ error: %w", err)) + } + cfg.FldInt16Req = int16(fldint16reqInt16) + } else { + errs = append(errs, errors.New("env FLD_INT16_REQ required")) + } + fldInt32ReqTmp, ok := os.LookupEnv("FLD_INT32_REQ") + if ok { + fldint32reqInt32, err := strconv.Atoi(fldInt32ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT32_REQ error: %w", err)) + } + cfg.FldInt32Req = int32(fldint32reqInt32) + } else { + errs = append(errs, errors.New("env FLD_INT32_REQ required")) + } + fldInt64ReqTmp, ok := os.LookupEnv("FLD_INT64_REQ") + if ok { + fldint64reqInt64, err := strconv.Atoi(fldInt64ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT64_REQ error: %w", err)) + } + cfg.FldInt64Req = int64(fldint64reqInt64) + } else { + errs = append(errs, errors.New("env FLD_INT64_REQ required")) + } + fldUIntReqTmp, ok := os.LookupEnv("FLD_U_INT_REQ") + if ok { + flduintreqUint, err := strconv.ParseUint(fldUIntReqTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT_REQ error: %w", err)) + } + cfg.FldUIntReq = uint(flduintreqUint) + } else { + errs = append(errs, errors.New("env FLD_U_INT_REQ required")) + } + fldUInt8ReqTmp, ok := os.LookupEnv("FLD_U_INT8_REQ") + if ok { + flduint8reqUint8, err := strconv.ParseUint(fldUInt8ReqTmp, 10, 8) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT8_REQ error: %w", err)) + } + cfg.FldUInt8Req = uint8(flduint8reqUint8) + } else { + errs = append(errs, errors.New("env FLD_U_INT8_REQ required")) + } + fldUInt16ReqTmp, ok := os.LookupEnv("FLD_U_INT16_REQ") + if ok { + flduint16reqUint16, err := strconv.ParseUint(fldUInt16ReqTmp, 10, 16) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT16_REQ error: %w", err)) + } + cfg.FldUInt16Req = uint16(flduint16reqUint16) + } else { + errs = append(errs, errors.New("env FLD_U_INT16_REQ required")) + } + fldUInt32ReqTmp, ok := os.LookupEnv("FLD_U_INT32_REQ") + if ok { + flduint32reqUint32, err := strconv.ParseUint(fldUInt32ReqTmp, 10, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT32_REQ error: %w", err)) + } + cfg.FldUInt32Req = uint32(flduint32reqUint32) + } else { + errs = append(errs, errors.New("env FLD_U_INT32_REQ required")) + } + fldUInt64ReqTmp, ok := os.LookupEnv("FLD_U_INT64_REQ") + if ok { + flduint64reqUint64, err := strconv.ParseUint(fldUInt64ReqTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT64_REQ error: %w", err)) + } + cfg.FldUInt64Req = uint64(flduint64reqUint64) + } else { + errs = append(errs, errors.New("env FLD_U_INT64_REQ required")) + } + fldFloat64ReqTmp, ok := os.LookupEnv("FLD_FLOAT64_REQ") + if ok { + fldfloat64reqFloat64, err := strconv.ParseFloat(fldFloat64ReqTmp, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT64_REQ error: %w", err)) + } + cfg.FldFloat64Req = float64(fldfloat64reqFloat64) + } else { + errs = append(errs, errors.New("env FLD_FLOAT64_REQ required")) + } + fldFloat32ReqTmp, ok := os.LookupEnv("FLD_FLOAT32_REQ") + if ok { + fldfloat32reqFloat32, err := strconv.ParseFloat(fldFloat32ReqTmp, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT32_REQ error: %w", err)) + } + cfg.FldFloat32Req = float32(fldfloat32reqFloat32) + } else { + errs = append(errs, errors.New("env FLD_FLOAT32_REQ required")) + } + fldStringsReqTmp, ok := os.LookupEnv("FLD_STRINGS_REQ") + if ok { + cfg.FldStringsReq = strings.Split(fldStringsReqTmp, ",") + } else { + errs = append(errs, errors.New("env FLD_STRINGS_REQ required")) + } + fldMapReqTmp, ok := os.LookupEnv("FLD_MAP_REQ") + if ok { + partsfldmapreq := strings.Split(fldMapReqTmp, ",") + cfg.FldMapReq = make(map[string]string, len(partsfldmapreq)) + for _, s := range partsfldmapreq { + kv := strings.Split(s, "=") + if len(kv) == 2 { + cfg.FldMapReq[kv[0]] = kv[1] + } + } + } else { + errs = append(errs, errors.New("env FLD_MAP_REQ required")) + } + return +} + +func (cfg *Config) String() string { + out := ` +FLD_DURATION_REQ=` + fmt.Sprintf("%v", cfg.FldDurationReq) + ` ; Test duration required description +FLD_TIME_REQ=` + fmt.Sprintf("%v", cfg.FldTimeReq) + ` ; Test time required description +FLD_STRING_REQ=` + fmt.Sprintf("%v", cfg.FldStringReq) + ` ; Test string required description +FLD_BOOL_REQ=` + fmt.Sprintf("%v", cfg.FldBoolReq) + ` ; Test bool required description +FLD_INT_REQ=` + fmt.Sprintf("%v", cfg.FldIntReq) + ` ; Test int required description +FLD_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldInt8Req) + ` ; Test int8 required description +FLD_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldInt16Req) + ` ; Test int16 required description +FLD_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldInt32Req) + ` ; Test int32 required description +FLD_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldInt64Req) + ` ; Test int64 required description +FLD_U_INT_REQ=` + fmt.Sprintf("%v", cfg.FldUIntReq) + ` ; Test uint required description +FLD_U_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldUInt8Req) + ` ; Test uint8 required description +FLD_U_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldUInt16Req) + ` ; Test uint16 required description +FLD_U_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldUInt32Req) + ` ; Test uint32 required description +FLD_U_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldUInt64Req) + ` ; Test uint64 required description +FLD_FLOAT64_REQ=` + fmt.Sprintf("%v", cfg.FldFloat64Req) + ` ; Test int required description +FLD_FLOAT32_REQ=` + fmt.Sprintf("%v", cfg.FldFloat32Req) + ` ; Test int required description +FLD_STRINGS_REQ=` + fmt.Sprintf("%v", cfg.FldStringsReq) + ` ; Test []string required description +FLD_MAP_REQ=` + fmt.Sprintf("%v", cfg.FldMapReq) + ` ; Test map[string]string required description +` + return out +} diff --git a/v2/fixture/ConfigSuccess/app/config_doc_gen.md b/v2/fixture/ConfigSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..79abf177 --- /dev/null +++ b/v2/fixture/ConfigSuccess/app/config_doc_gen.md @@ -0,0 +1,30 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION|time.Duration|Test duration required description|no|no| +|FLD_TIME|time.Time|Test time required description|no|no| +|FLD_STRING|string|Test string required description|no|no| +|FLD_BOOL|bool|Test bool required description|no|no| +|FLD_INT|int|Test int required description|no|no| +|FLD_INT8|int8|Test int8 required description|no|no| +|FLD_INT16|int16|Test int16 required description|no|no| +|FLD_INT32|int32|Test int32 required description|no|no| +|FLD_INT64|int64|Test int64 required description|no|no| +|FLD_U_INT|uint|Test uint required description|no|no| +|FLD_U_INT8|uint8|Test uint8 required description|no|no| +|FLD_U_INT16|uint16|Test uint16 required description|no|no| +|FLD_U_INT32|uint32|Test uint32 required description|no|no| +|FLD_U_INT64|uint64|Test uint64 required description|no|no| +|FLD_FLOAT64|float64|Test int required description|no|no| +|FLD_FLOAT32|float32|Test int required description|no|no| +|FLD_STRINGS|[]string|Test []string required description|no|no| +|FLD_MAP|map[string]string|Test map[string]string required description|no|no| +|ID3_VER|string|Test number env name required description|no|no| +|TEST_NUMBER123|string|Test number env name required description|no|no| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixture/ConfigSuccess/app/config_gen.go b/v2/fixture/ConfigSuccess/app/config_gen.go new file mode 100755 index 00000000..afa59b96 --- /dev/null +++ b/v2/fixture/ConfigSuccess/app/config_gen.go @@ -0,0 +1,191 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "fmt" + "os" + "strconv" + "strings" + "time" +) + +func LoadConfig() (cfg *Config, errs []error) { + cfg = &Config{} + fldDurationTmp, ok := os.LookupEnv("FLD_DURATION") + if ok { + fldDurationResult, err := time.ParseDuration(fldDurationTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldDuration = fldDurationResult + } + fldTimeTmp, ok := os.LookupEnv("FLD_TIME") + if ok { + fldTimeResult, err := time.Parse(time.RFC3339, fldTimeTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldTime = fldTimeResult + } + fldStringTmp, ok := os.LookupEnv("FLD_STRING") + if ok { + cfg.FldString = fldStringTmp + } + fldBoolTmp, ok := os.LookupEnv("FLD_BOOL") + if ok { + fldboolBool, err := strconv.ParseBool(fldBoolTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_BOOL error: %w", err)) + } + cfg.FldBool = bool(fldboolBool) + } + fldIntTmp, ok := os.LookupEnv("FLD_INT") + if ok { + fldintInt, err := strconv.Atoi(fldIntTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT error: %w", err)) + } + cfg.FldInt = int(fldintInt) + } + fldInt8Tmp, ok := os.LookupEnv("FLD_INT8") + if ok { + fldint8Int8, err := strconv.Atoi(fldInt8Tmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT8 error: %w", err)) + } + cfg.FldInt8 = int8(fldint8Int8) + } + fldInt16Tmp, ok := os.LookupEnv("FLD_INT16") + if ok { + fldint16Int16, err := strconv.Atoi(fldInt16Tmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT16 error: %w", err)) + } + cfg.FldInt16 = int16(fldint16Int16) + } + fldInt32Tmp, ok := os.LookupEnv("FLD_INT32") + if ok { + fldint32Int32, err := strconv.Atoi(fldInt32Tmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT32 error: %w", err)) + } + cfg.FldInt32 = int32(fldint32Int32) + } + fldInt64Tmp, ok := os.LookupEnv("FLD_INT64") + if ok { + fldint64Int64, err := strconv.Atoi(fldInt64Tmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT64 error: %w", err)) + } + cfg.FldInt64 = int64(fldint64Int64) + } + fldUIntTmp, ok := os.LookupEnv("FLD_U_INT") + if ok { + flduintUint, err := strconv.ParseUint(fldUIntTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT error: %w", err)) + } + cfg.FldUInt = uint(flduintUint) + } + fldUInt8Tmp, ok := os.LookupEnv("FLD_U_INT8") + if ok { + flduint8Uint8, err := strconv.ParseUint(fldUInt8Tmp, 10, 8) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT8 error: %w", err)) + } + cfg.FldUInt8 = uint8(flduint8Uint8) + } + fldUInt16Tmp, ok := os.LookupEnv("FLD_U_INT16") + if ok { + flduint16Uint16, err := strconv.ParseUint(fldUInt16Tmp, 10, 16) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT16 error: %w", err)) + } + cfg.FldUInt16 = uint16(flduint16Uint16) + } + fldUInt32Tmp, ok := os.LookupEnv("FLD_U_INT32") + if ok { + flduint32Uint32, err := strconv.ParseUint(fldUInt32Tmp, 10, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT32 error: %w", err)) + } + cfg.FldUInt32 = uint32(flduint32Uint32) + } + fldUInt64Tmp, ok := os.LookupEnv("FLD_U_INT64") + if ok { + flduint64Uint64, err := strconv.ParseUint(fldUInt64Tmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT64 error: %w", err)) + } + cfg.FldUInt64 = uint64(flduint64Uint64) + } + fldFloat64Tmp, ok := os.LookupEnv("FLD_FLOAT64") + if ok { + fldfloat64Float64, err := strconv.ParseFloat(fldFloat64Tmp, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT64 error: %w", err)) + } + cfg.FldFloat64 = float64(fldfloat64Float64) + } + fldFloat32Tmp, ok := os.LookupEnv("FLD_FLOAT32") + if ok { + fldfloat32Float32, err := strconv.ParseFloat(fldFloat32Tmp, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT32 error: %w", err)) + } + cfg.FldFloat32 = float32(fldfloat32Float32) + } + fldStringsTmp, ok := os.LookupEnv("FLD_STRINGS") + if ok { + cfg.FldStrings = strings.Split(fldStringsTmp, ",") + } + fldMapTmp, ok := os.LookupEnv("FLD_MAP") + if ok { + partsfldmap := strings.Split(fldMapTmp, ",") + cfg.FldMap = make(map[string]string, len(partsfldmap)) + for _, s := range partsfldmap { + kv := strings.Split(s, "=") + if len(kv) == 2 { + cfg.FldMap[kv[0]] = kv[1] + } + } + } + iD3VerTmp, ok := os.LookupEnv("ID3_VER") + if ok { + cfg.ID3Ver = iD3VerTmp + } + testNumber123Tmp, ok := os.LookupEnv("TEST_NUMBER123") + if ok { + cfg.TestNumber123 = testNumber123Tmp + } + return +} + +func (cfg *Config) String() string { + out := ` +FLD_DURATION=` + fmt.Sprintf("%v", cfg.FldDuration) + ` ; Test duration required description +FLD_TIME=` + fmt.Sprintf("%v", cfg.FldTime) + ` ; Test time required description +FLD_STRING=` + fmt.Sprintf("%v", cfg.FldString) + ` ; Test string required description +FLD_BOOL=` + fmt.Sprintf("%v", cfg.FldBool) + ` ; Test bool required description +FLD_INT=` + fmt.Sprintf("%v", cfg.FldInt) + ` ; Test int required description +FLD_INT8=` + fmt.Sprintf("%v", cfg.FldInt8) + ` ; Test int8 required description +FLD_INT16=` + fmt.Sprintf("%v", cfg.FldInt16) + ` ; Test int16 required description +FLD_INT32=` + fmt.Sprintf("%v", cfg.FldInt32) + ` ; Test int32 required description +FLD_INT64=` + fmt.Sprintf("%v", cfg.FldInt64) + ` ; Test int64 required description +FLD_U_INT=` + fmt.Sprintf("%v", cfg.FldUInt) + ` ; Test uint required description +FLD_U_INT8=` + fmt.Sprintf("%v", cfg.FldUInt8) + ` ; Test uint8 required description +FLD_U_INT16=` + fmt.Sprintf("%v", cfg.FldUInt16) + ` ; Test uint16 required description +FLD_U_INT32=` + fmt.Sprintf("%v", cfg.FldUInt32) + ` ; Test uint32 required description +FLD_U_INT64=` + fmt.Sprintf("%v", cfg.FldUInt64) + ` ; Test uint64 required description +FLD_FLOAT64=` + fmt.Sprintf("%v", cfg.FldFloat64) + ` ; Test int required description +FLD_FLOAT32=` + fmt.Sprintf("%v", cfg.FldFloat32) + ` ; Test int required description +FLD_STRINGS=` + fmt.Sprintf("%v", cfg.FldStrings) + ` ; Test []string required description +FLD_MAP=` + fmt.Sprintf("%v", cfg.FldMap) + ` ; Test map[string]string required description +ID3_VER=` + fmt.Sprintf("%v", cfg.ID3Ver) + ` ; Test number env name required description +TEST_NUMBER123=` + fmt.Sprintf("%v", cfg.TestNumber123) + ` ; Test number env name required description +` + return out +} diff --git a/v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md b/v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md new file mode 100755 index 00000000..60eb6078 --- /dev/null +++ b/v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md @@ -0,0 +1,28 @@ +# Config + +## Environment variables + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| +|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| +|FLD_TIME_REQ|time.Time|Test time required description|no|yes| +|FLD_STRING_REQ|string|Test string required description|no|yes| +|FLD_BOOL_REQ|bool|Test bool required description|no|yes| +|FLD_INT_REQ|int|Test int required description|no|yes| +|FLD_INT8_REQ|int8|Test int8 required description|no|yes| +|FLD_INT16_REQ|int16|Test int16 required description|no|yes| +|FLD_INT32_REQ|int32|Test int32 required description|no|yes| +|FLD_INT64_REQ|int64|Test int64 required description|no|yes| +|FLD_U_INT_REQ|uint|Test uint required description|no|yes| +|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| +|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| +|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| +|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| +|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| +|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| +|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| +|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| +## Flags + +| Name | Type | Description | Required | Use Zero | +|------|------|------|------|------| diff --git a/v2/fixture/ConfigUseZeroSuccess/app/config_gen.go b/v2/fixture/ConfigUseZeroSuccess/app/config_gen.go new file mode 100755 index 00000000..ec851334 --- /dev/null +++ b/v2/fixture/ConfigUseZeroSuccess/app/config_gen.go @@ -0,0 +1,181 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "fmt" + "os" + "strconv" + "strings" + "time" +) + +func LoadConfig() (cfg *Config, errs []error) { + cfg = &Config{} + fldDurationReqTmp, ok := os.LookupEnv("FLD_DURATION_REQ") + if ok { + fldDurationReqResult, err := time.ParseDuration(fldDurationReqTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldDurationReq = fldDurationReqResult + } + fldTimeReqTmp, ok := os.LookupEnv("FLD_TIME_REQ") + if ok { + fldTimeReqResult, err := time.Parse(time.RFC3339, fldTimeReqTmp) + if err != nil { + errs = append(errs, err) + } + cfg.FldTimeReq = fldTimeReqResult + } + fldStringReqTmp, ok := os.LookupEnv("FLD_STRING_REQ") + if ok { + cfg.FldStringReq = fldStringReqTmp + } + fldBoolReqTmp, ok := os.LookupEnv("FLD_BOOL_REQ") + if ok { + fldboolreqBool, err := strconv.ParseBool(fldBoolReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_BOOL_REQ error: %w", err)) + } + cfg.FldBoolReq = bool(fldboolreqBool) + } + fldIntReqTmp, ok := os.LookupEnv("FLD_INT_REQ") + if ok { + fldintreqInt, err := strconv.Atoi(fldIntReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT_REQ error: %w", err)) + } + cfg.FldIntReq = int(fldintreqInt) + } + fldInt8ReqTmp, ok := os.LookupEnv("FLD_INT8_REQ") + if ok { + fldint8reqInt8, err := strconv.Atoi(fldInt8ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT8_REQ error: %w", err)) + } + cfg.FldInt8Req = int8(fldint8reqInt8) + } + fldInt16ReqTmp, ok := os.LookupEnv("FLD_INT16_REQ") + if ok { + fldint16reqInt16, err := strconv.Atoi(fldInt16ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT16_REQ error: %w", err)) + } + cfg.FldInt16Req = int16(fldint16reqInt16) + } + fldInt32ReqTmp, ok := os.LookupEnv("FLD_INT32_REQ") + if ok { + fldint32reqInt32, err := strconv.Atoi(fldInt32ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT32_REQ error: %w", err)) + } + cfg.FldInt32Req = int32(fldint32reqInt32) + } + fldInt64ReqTmp, ok := os.LookupEnv("FLD_INT64_REQ") + if ok { + fldint64reqInt64, err := strconv.Atoi(fldInt64ReqTmp) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_INT64_REQ error: %w", err)) + } + cfg.FldInt64Req = int64(fldint64reqInt64) + } + fldUIntReqTmp, ok := os.LookupEnv("FLD_U_INT_REQ") + if ok { + flduintreqUint, err := strconv.ParseUint(fldUIntReqTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT_REQ error: %w", err)) + } + cfg.FldUIntReq = uint(flduintreqUint) + } + fldUInt8ReqTmp, ok := os.LookupEnv("FLD_U_INT8_REQ") + if ok { + flduint8reqUint8, err := strconv.ParseUint(fldUInt8ReqTmp, 10, 8) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT8_REQ error: %w", err)) + } + cfg.FldUInt8Req = uint8(flduint8reqUint8) + } + fldUInt16ReqTmp, ok := os.LookupEnv("FLD_U_INT16_REQ") + if ok { + flduint16reqUint16, err := strconv.ParseUint(fldUInt16ReqTmp, 10, 16) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT16_REQ error: %w", err)) + } + cfg.FldUInt16Req = uint16(flduint16reqUint16) + } + fldUInt32ReqTmp, ok := os.LookupEnv("FLD_U_INT32_REQ") + if ok { + flduint32reqUint32, err := strconv.ParseUint(fldUInt32ReqTmp, 10, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT32_REQ error: %w", err)) + } + cfg.FldUInt32Req = uint32(flduint32reqUint32) + } + fldUInt64ReqTmp, ok := os.LookupEnv("FLD_U_INT64_REQ") + if ok { + flduint64reqUint64, err := strconv.ParseUint(fldUInt64ReqTmp, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_U_INT64_REQ error: %w", err)) + } + cfg.FldUInt64Req = uint64(flduint64reqUint64) + } + fldFloat64ReqTmp, ok := os.LookupEnv("FLD_FLOAT64_REQ") + if ok { + fldfloat64reqFloat64, err := strconv.ParseFloat(fldFloat64ReqTmp, 64) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT64_REQ error: %w", err)) + } + cfg.FldFloat64Req = float64(fldfloat64reqFloat64) + } + fldFloat32ReqTmp, ok := os.LookupEnv("FLD_FLOAT32_REQ") + if ok { + fldfloat32reqFloat32, err := strconv.ParseFloat(fldFloat32ReqTmp, 32) + if err != nil { + errs = append(errs, fmt.Errorf("convert FLD_FLOAT32_REQ error: %w", err)) + } + cfg.FldFloat32Req = float32(fldfloat32reqFloat32) + } + fldStringsReqTmp, ok := os.LookupEnv("FLD_STRINGS_REQ") + if ok { + cfg.FldStringsReq = strings.Split(fldStringsReqTmp, ",") + } + fldMapReqTmp, ok := os.LookupEnv("FLD_MAP_REQ") + if ok { + partsfldmapreq := strings.Split(fldMapReqTmp, ",") + cfg.FldMapReq = make(map[string]string, len(partsfldmapreq)) + for _, s := range partsfldmapreq { + kv := strings.Split(s, "=") + if len(kv) == 2 { + cfg.FldMapReq[kv[0]] = kv[1] + } + } + } + return +} + +func (cfg *Config) String() string { + out := ` +FLD_DURATION_REQ=` + fmt.Sprintf("%v", cfg.FldDurationReq) + ` ; Test duration required description +FLD_TIME_REQ=` + fmt.Sprintf("%v", cfg.FldTimeReq) + ` ; Test time required description +FLD_STRING_REQ=` + fmt.Sprintf("%v", cfg.FldStringReq) + ` ; Test string required description +FLD_BOOL_REQ=` + fmt.Sprintf("%v", cfg.FldBoolReq) + ` ; Test bool required description +FLD_INT_REQ=` + fmt.Sprintf("%v", cfg.FldIntReq) + ` ; Test int required description +FLD_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldInt8Req) + ` ; Test int8 required description +FLD_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldInt16Req) + ` ; Test int16 required description +FLD_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldInt32Req) + ` ; Test int32 required description +FLD_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldInt64Req) + ` ; Test int64 required description +FLD_U_INT_REQ=` + fmt.Sprintf("%v", cfg.FldUIntReq) + ` ; Test uint required description +FLD_U_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldUInt8Req) + ` ; Test uint8 required description +FLD_U_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldUInt16Req) + ` ; Test uint16 required description +FLD_U_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldUInt32Req) + ` ; Test uint32 required description +FLD_U_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldUInt64Req) + ` ; Test uint64 required description +FLD_FLOAT64_REQ=` + fmt.Sprintf("%v", cfg.FldFloat64Req) + ` ; Test int required description +FLD_FLOAT32_REQ=` + fmt.Sprintf("%v", cfg.FldFloat32Req) + ` ; Test int required description +FLD_STRINGS_REQ=` + fmt.Sprintf("%v", cfg.FldStringsReq) + ` ; Test []string required description +FLD_MAP_REQ=` + fmt.Sprintf("%v", cfg.FldMapReq) + ` ; Test map[string]string required description +` + return out +} diff --git a/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js b/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..05a7197e --- /dev/null +++ b/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js @@ -0,0 +1,132 @@ +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler + .__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }) + .catch((e) => { + throw interfaceBCreateConvertError(e); + }); + } +} + +export default JSONRPCClientB; + +function interfaceBCreateConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixture/GatewaySuccess/app/endpoint_gen.go b/v2/fixture/GatewaySuccess/app/endpoint_gen.go new file mode 100755 index 00000000..158a0be5 --- /dev/null +++ b/v2/fixture/GatewaySuccess/app/endpoint_gen.go @@ -0,0 +1,40 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" +) + +func MakeInterfaceBCreateEndpoint(s app.InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBCreateRequest) + err := s.Create(ctx, req.NewData, req.Name, req.Data) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +type InterfaceBEndpointSet struct { + CreateEndpoint endpoint.Endpoint +} + +func MakeInterfaceBEndpointSet(svc app.InterfaceB) InterfaceBEndpointSet { + return InterfaceBEndpointSet{ + CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), + } +} + +type InterfaceBCreateRequest struct { + NewData app.Data `json:"newData"` + Name string `json:"name"` + Data []byte `json:"data"` +} diff --git a/v2/fixture/GatewaySuccess/app/http_gen.go b/v2/fixture/GatewaySuccess/app/http_gen.go new file mode 100755 index 00000000..fad1a4e2 --- /dev/null +++ b/v2/fixture/GatewaySuccess/app/http_gen.go @@ -0,0 +1,47 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "github.com/go-kit/kit/endpoint" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" +) + +func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + if len(middlewares) == 0 { + return next + } + outer := middlewares[0] + others := middlewares[1:] + for i := len(others) - 1; i >= 0; i-- { + next = others[i](next) + } + return outer(next) + } +} +func GenericServerOptions(v ...jsonrpc.ServerOption) ServerOption { + return func(o *serverOpts) { o.genericServerOption = v } +} + +func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { + return func(o *serverOpts) { o.genericEndpointMiddleware = v } +} + +type ServerOption func(*serverOpts) +type serverOpts struct { + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + interfaceBCreateServerOption []jsonrpc.ServerOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware +} + +func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +} + +func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} diff --git a/v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json b/v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..78c5b1c5 --- /dev/null +++ b/v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/v2/fixture/GatewaySuccess/app/server_gen.go b/v2/fixture/GatewaySuccess/app/server_gen.go new file mode 100755 index 00000000..810c37fc --- /dev/null +++ b/v2/fixture/GatewaySuccess/app/server_gen.go @@ -0,0 +1,72 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" + "github.com/pquerna/ffjson/ffjson" + "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" +) + +func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap { + mergedECM := make(jsonrpc.EndpointCodecMap, 512) + for _, ecm := range ecms { + for key, codec := range ecm { + mergedECM[key] = codec + } + } + return mergedECM +} +func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessage, error) { + b, err := ffjson.Marshal(result) + if err != nil { + return nil, err + } + return b, nil +} + +func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { + var namespace string + if len(ns) > 0 { + namespace = strings.Join(ns, ".") + "." + } + ecm := jsonrpc.EndpointCodecMap{} + if ep.CreateEndpoint != nil { + ecm[namespace+"create"] = jsonrpc.EndpointCodec{ + Endpoint: ep.CreateEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBCreateRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBCreateRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + return ecm +} + +// HTTP JSONRPC Transport +func MakeHandlerJSONRPC(svcInterfaceB app.InterfaceB, options ...ServerOption) (http.Handler, error) { + opts := &serverOpts{} + for _, o := range options { + o(opts) + } + epSet := MakeInterfaceBEndpointSet(svcInterfaceB) + epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSet.CreateEndpoint) + r := mux.NewRouter() + handler := jsonrpc.NewServer(MakeInterfaceBEndpointCodecMap(epSet), opts.genericServerOption...) + r.Methods("POST").Path("").Handler(handler) + return r, nil +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go new file mode 100755 index 00000000..d2e81006 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go @@ -0,0 +1,265 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "encoding/json" + "fmt" + "net" + "net/url" + "strings" + + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" + "github.com/pquerna/ffjson/ffjson" +) + +// Deprecated +func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceA, error) { + return NewClientJSONRPCInterfaceA(tgt, options...) +} +func NewClientJSONRPCInterfaceA(tgt string, options ...ClientOption) (InterfaceA, error) { + opts := &clientOpts{} + c := &clientInterfaceA{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + opts.interfaceATestMethodClientOption = append( + opts.interfaceATestMethodClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + return nil, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceATestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + return nil, nil + }), + ) + c.testMethodEndpoint = jsonrpc.NewClient( + u, + "a.testMethod", + append(opts.genericClientOption, opts.interfaceATestMethodClientOption...)..., + ).Endpoint() + c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(c.testMethodEndpoint) + return c, nil +} + +// Deprecated +func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceB, error) { + return NewClientJSONRPCInterfaceB(tgt, options...) +} +func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB, error) { + opts := &clientOpts{} + c := &clientInterfaceB{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + opts.interfaceBCreateClientOption = append( + opts.interfaceBCreateClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(InterfaceBCreateRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as InterfaceBCreateRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + return nil, nil + }), + ) + c.createEndpoint = jsonrpc.NewClient( + u, + "b.create", + append(opts.genericClientOption, opts.interfaceBCreateClientOption...)..., + ).Endpoint() + c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(c.createEndpoint) + opts.interfaceBDeleteClientOption = append( + opts.interfaceBDeleteClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(InterfaceBDeleteRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as InterfaceBDeleteRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp InterfaceBDeleteResponse + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteResponse: %s", err) + } + return resp, nil + }), + ) + c.deleteEndpoint = jsonrpc.NewClient( + u, + "b.delete", + append(opts.genericClientOption, opts.interfaceBDeleteClientOption...)..., + ).Endpoint() + c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(c.deleteEndpoint) + opts.interfaceBGetClientOption = append( + opts.interfaceBGetClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(InterfaceBGetRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as InterfaceBGetRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp User + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetResponse: %s", err) + } + return resp, nil + }), + ) + c.getEndpoint = jsonrpc.NewClient( + u, + "b.get", + append(opts.genericClientOption, opts.interfaceBGetClientOption...)..., + ).Endpoint() + c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(c.getEndpoint) + opts.interfaceBGetAllClientOption = append( + opts.interfaceBGetAllClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(InterfaceBGetAllRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as InterfaceBGetAllRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp []*User + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllResponse: %s", err) + } + return resp, nil + }), + ) + c.getAllEndpoint = jsonrpc.NewClient( + u, + "b.getAll", + append(opts.genericClientOption, opts.interfaceBGetAllClientOption...)..., + ).Endpoint() + c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(c.getAllEndpoint) + opts.interfaceBTestMethodClientOption = append( + opts.interfaceBTestMethodClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(InterfaceBTestMethodRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as InterfaceBTestMethodRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp map[string]map[int][]string + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodResponse: %s", err) + } + return resp, nil + }), + ) + c.testMethodEndpoint = jsonrpc.NewClient( + u, + "b.testMethod", + append(opts.genericClientOption, opts.interfaceBTestMethodClientOption...)..., + ).Endpoint() + c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(c.testMethodEndpoint) + opts.interfaceBTestMethod2ClientOption = append( + opts.interfaceBTestMethod2ClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(InterfaceBTestMethod2Request) + if !ok { + return nil, fmt.Errorf("couldn't assert request as InterfaceBTestMethod2Request, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + return nil, nil + }), + ) + c.testMethod2Endpoint = jsonrpc.NewClient( + u, + "b.testMethod2", + append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., + ).Endpoint() + c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + return c, nil +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..7abc1ae0 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -0,0 +1,331 @@ +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** +* @typedef {Object} User +* @property {string} title + +* @property {string} id +* @property {string} name +* @property {string} password +* @property {GeoJSON} point +* @property {string} last_seen +* @property {Data} data +* @property {Array} photo +* @property {User} user +* @property {Profile} profile +* @property {Recurse} recurse +* @property {string} created_at +* @property {string} updated_at +*/ + +/** + * @typedef {Object} Info + * @property {string} title + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class JSONRPCClientA { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + **/ + testMethod() { + return this.scheduler.__scheduleRequest("a.testMethod", {}).catch((e) => { + throw interfaceATestMethodConvertError(e); + }); + } +} + +class JSONRPCClientB { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler + .__scheduleRequest("b.create", { + newData: newData, + name: name, + data: data + }) + .catch((e) => { + throw interfaceBCreateConvertError(e); + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler + .__scheduleRequest("b.delete", { id: id }) + .catch((e) => { + throw interfaceBDeleteConvertError(e); + }); + } + /** + * Get item. + * + * @param {number} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler + .__scheduleRequest("b.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }) + .catch((e) => { + throw interfaceBGetConvertError(e); + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler + .__scheduleRequest("b.getAll", { members: members }) + .catch((e) => { + throw interfaceBGetAllConvertError(e); + }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler + .__scheduleRequest("b.testMethod", { data: data, ss: ss }) + .catch((e) => { + throw interfaceBTestMethodConvertError(e); + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler + .__scheduleRequest("b.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }) + .catch((e) => { + throw interfaceBTestMethod2ConvertError(e); + }); + } +} + +class JSONRPCClient { + constructor(transport) { + this.A = new JSONRPCClientA(transport); + this.B = new JSONRPCClientB(transport); + } +} +export default JSONRPCClient; + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +function interfaceATestMethodConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBCreateConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + } +} +function interfaceBDeleteConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetAllConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethodConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethod2ConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go new file mode 100755 index 00000000..daa6529f --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go @@ -0,0 +1,186 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" +) + +type AppClient struct { + AClient InterfaceA + BClient InterfaceB +} + +func NewClientJSONRPC(tgt string, opts ...ClientOption) (*AppClient, error) { + interfaceAClient, err := NewClientJSONRPCInterfaceA(tgt, opts...) + if err != nil { + return nil, err + } + interfaceBClient, err := NewClientJSONRPCInterfaceB(tgt, opts...) + if err != nil { + return nil, err + } + return &AppClient{ + AClient: interfaceAClient, + BClient: interfaceBClient, + }, nil +} + +type ClientOption func(*clientOpts) +type clientOpts struct { + interfaceATestMethodClientOption []jsonrpc.ClientOption + interfaceATestMethodEndpointMiddleware []endpoint.Middleware + interfaceBCreateClientOption []jsonrpc.ClientOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteClientOption []jsonrpc.ClientOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetClientOption []jsonrpc.ClientOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllClientOption []jsonrpc.ClientOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodClientOption []jsonrpc.ClientOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ClientOption []jsonrpc.ClientOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + genericClientOption []jsonrpc.ClientOption + genericEndpointMiddleware []endpoint.Middleware +} + +func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.genericClientOption = opt } +} + +func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.genericEndpointMiddleware = opt } +} + +func InterfaceATestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceATestMethodClientOption = opt } +} + +func InterfaceATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +} + +func InterfaceBCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBCreateClientOption = opt } +} + +func InterfaceBCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} + +func InterfaceBDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBDeleteClientOption = opt } +} + +func InterfaceBDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +} + +func InterfaceBGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBGetClientOption = opt } +} + +func InterfaceBGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBGetEndpointMiddleware = opt } +} + +func InterfaceBGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBGetAllClientOption = opt } +} + +func InterfaceBGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +} + +func InterfaceBTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodClientOption = opt } +} + +func InterfaceBTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +} + +func InterfaceBTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethod2ClientOption = opt } +} + +func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +} + +type clientInterfaceA struct { + testMethodEndpoint endpoint.Endpoint +} + +func (c *clientInterfaceA) TestMethod() { + _, _ = c.testMethodEndpoint(context.Background(), nil) + return +} + +type clientInterfaceB struct { + createEndpoint endpoint.Endpoint + deleteEndpoint endpoint.Endpoint + getEndpoint endpoint.Endpoint + getAllEndpoint endpoint.Endpoint + testMethodEndpoint endpoint.Endpoint + testMethod2Endpoint endpoint.Endpoint +} + +func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { + _, err := c.createEndpoint(ctx, InterfaceBCreateRequest{NewData: newData, Name: name, Data: data}) + if err != nil { + return err + } + return nil +} + +func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.deleteEndpoint(ctx, InterfaceBDeleteRequest{Id: id}) + if err != nil { + return "", "", err + } + response := resp.(InterfaceBDeleteResponse) + return response.A, response.B, nil +} + +func (c *clientInterfaceB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.getEndpoint(ctx, InterfaceBGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) + if err != nil { + return User{}, err + } + response := resp.(User) + return response, nil +} + +func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.getAllEndpoint(ctx, InterfaceBGetAllRequest{Members: members}) + if err != nil { + return nil, err + } + response := resp.([]*User) + return response, nil +} + +func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.testMethodEndpoint(context.Background(), InterfaceBTestMethodRequest{Data: data, Ss: ss}) + if err != nil { + return nil, err + } + response := resp.(map[string]map[int][]string) + return response, nil +} + +func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.testMethod2Endpoint(ctx, InterfaceBTestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) + if err != nil { + return err + } + return nil +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go new file mode 100755 index 00000000..f9c5ca2a --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go @@ -0,0 +1,158 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" +) + +func MakeInterfaceATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + s.TestMethod() + return nil, nil + } + +} + +func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBCreateRequest) + err := s.Create(ctx, req.NewData, req.Name, req.Data) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBDeleteRequest) + a, b, err := s.Delete(ctx, req.Id) + if err != nil { + return nil, err + } + return InterfaceBDeleteResponse{A: a, B: b}, nil + } + +} + +func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBGetRequest) + result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBGetAllRequest) + result, err := s.GetAll(ctx, req.Members) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBTestMethodRequest) + result, err := s.TestMethod(req.Data, req.Ss) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBTestMethod2Request) + err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +type InterfaceAEndpointSet struct { + TestMethodEndpoint endpoint.Endpoint +} + +func MakeInterfaceAEndpointSet(svc InterfaceA) InterfaceAEndpointSet { + return InterfaceAEndpointSet{ + TestMethodEndpoint: MakeInterfaceATestMethodEndpoint(svc), + } +} + +type InterfaceBEndpointSet struct { + CreateEndpoint endpoint.Endpoint + DeleteEndpoint endpoint.Endpoint + GetEndpoint endpoint.Endpoint + GetAllEndpoint endpoint.Endpoint + TestMethodEndpoint endpoint.Endpoint + TestMethod2Endpoint endpoint.Endpoint +} + +func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { + return InterfaceBEndpointSet{ + CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), + DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), + GetEndpoint: MakeInterfaceBGetEndpoint(svc), + GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), + TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), + } +} + +type InterfaceBCreateRequest struct { + NewData Data `json:"newData"` + Name string `json:"name"` + Data []byte `json:"data"` +} +type InterfaceBDeleteRequest struct { + Id uint `json:"id"` +} +type InterfaceBDeleteResponse struct { + A string `json:"a"` + B string `json:"b"` +} +type InterfaceBGetRequest struct { + Id int `json:"id"` + Name string `json:"name"` + Fname string `json:"fname"` + Price float32 `json:"price"` + N int `json:"n"` + B int `json:"b"` + Cc int `json:"cc"` +} +type InterfaceBGetAllRequest struct { + Members Members `json:"members"` +} +type InterfaceBTestMethodRequest struct { + Data map[string]interface{} `json:"data"` + Ss interface{} `json:"ss"` +} +type InterfaceBTestMethod2Request struct { + Ns string `json:"ns"` + Utype string `json:"utype"` + User string `json:"user"` + Restype string `json:"restype"` + Resource string `json:"resource"` + Permission string `json:"permission"` +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go new file mode 100755 index 00000000..7cbe4ef4 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go @@ -0,0 +1,228 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "github.com/go-kit/kit/endpoint" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" +) + +type httpError struct { + code int + data interface{} + message string +} + +func (e *httpError) Error() string { + return e.message +} +func (e *httpError) StatusCode() int { + return e.code +} +func (e *httpError) ErrorData() interface{} { + return e.data +} +func (e *httpError) SetErrorData(data interface{}) { + e.data = data +} +func (e *httpError) SetErrorMessage(message string) { + e.message = message +} +func interfaceATestMethodErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBCreateErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + case -32001: + err = ErrUnauthorized{} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBDeleteErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBGetErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBGetAllErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBTestMethodErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + if len(middlewares) == 0 { + return next + } + outer := middlewares[0] + others := middlewares[1:] + for i := len(others) - 1; i >= 0; i-- { + next = others[i](next) + } + return outer(next) + } +} +func GenericServerOptions(v ...jsonrpc.ServerOption) ServerOption { + return func(o *serverOpts) { o.genericServerOption = v } +} + +func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { + return func(o *serverOpts) { o.genericEndpointMiddleware = v } +} + +type ServerOption func(*serverOpts) +type serverOpts struct { + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + interfaceATestMethodServerOption []jsonrpc.ServerOption + interfaceATestMethodEndpointMiddleware []endpoint.Middleware + interfaceBCreateServerOption []jsonrpc.ServerOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteServerOption []jsonrpc.ServerOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetServerOption []jsonrpc.ServerOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllServerOption []jsonrpc.ServerOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodServerOption []jsonrpc.ServerOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ServerOption []jsonrpc.ServerOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware +} + +func InterfaceATestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceATestMethodServerOption = opt } +} + +func InterfaceATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +} + +func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +} + +func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} + +func InterfaceBDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBDeleteServerOption = opt } +} + +func InterfaceBDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +} + +func InterfaceBGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBGetServerOption = opt } +} + +func InterfaceBGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBGetEndpointMiddleware = opt } +} + +func InterfaceBGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBGetAllServerOption = opt } +} + +func InterfaceBGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +} + +func InterfaceBTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodServerOption = opt } +} + +func InterfaceBTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +} + +func InterfaceBTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethod2ServerOption = opt } +} + +func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go new file mode 100755 index 00000000..7e450c13 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go @@ -0,0 +1,165 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/metrics" + prometheus2 "github.com/go-kit/kit/metrics/prometheus" + "github.com/prometheus/client_golang/prometheus" +) + +type instrumentingOpts struct { + requestCount metrics.Counter + requestLatency metrics.Histogram + namespace string + subsystem string +} + +type InstrumentingOption func(*instrumentingOpts) + +func Namespace(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.namespace = v + } +} + +func Subsystem(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.subsystem = v + } +} + +func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestLatency = requestLatency + } +} + +func RequestCount(requestCount metrics.Counter) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestCount = requestCount + } +} + +type AInstrumentingMiddleware struct { + next InterfaceA + opts *instrumentingOpts +} + +func (s *AInstrumentingMiddleware) TestMethod() { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod").Add(1) + s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) + }(time.Now()) + s.next.TestMethod() +} + +func NewInstrumentingAMiddleware(s InterfaceA, opts ...InstrumentingOption) InterfaceA { + i := &AInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} + +type BInstrumentingMiddleware struct { + next InterfaceB + opts *instrumentingOpts +} + +func (s *BInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Create").Add(1) + s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Create(ctx, newData, name, data) +} + +func (s *BInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Delete").Add(1) + s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Delete(ctx, id) +} + +func (s *BInstrumentingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Get").Add(1) + s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Get(ctx, id, name, fname, price, n, b, cc) +} + +func (s *BInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "GetAll").Add(1) + s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.GetAll(ctx, members) +} + +func (s *BInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod").Add(1) + s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod(data, ss) +} + +func (s *BInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod2").Add(1) + s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) +} + +func NewInstrumentingBMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { + i := &BInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..cc9de527 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md @@ -0,0 +1,199 @@ +# UsersvitalyworkgosrcgithubComswipeIoswipev2fixtureServiceJSONRPCMultiapp JSONRPC Client + +## Getting Started + +You can install this with: + +```shell script +npm install --save-dev service +``` + +Import the package with the client: + +```javascript +import API from "service" +``` + +Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. + +For example: + +```javascript +class FetchTransport { + constructor(url) { + this.url = url; + } + + doRequest(requests) { + return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) + } +} +``` + +Now for a complete example: + +```javascript +import API from "service" +import Transport from "transport" + +const api = new API(new Transport("http://127.0.0.1")) + +// call method here. +``` + +## API +## Methods + +a.TestMethod + +### a.TestMethod() ⇒void + + + + + +**Throws**: + + + +b.Create + +b.Delete + +b.Get + +b.GetAll + +b.TestMethod + +b.TestMethod2 + +### b.Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### b.Delete(id) ⇒ + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### b.Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### b.GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|title|string|| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|created_at|string|| +|updated_at|string|| diff --git a/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go new file mode 100755 index 00000000..6d633228 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go @@ -0,0 +1,94 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" +) + +type ALoggingMiddleware struct { + next InterfaceA + logger log.Logger +} + +func (s *ALoggingMiddleware) TestMethod() { + s.next.TestMethod() +} + +func NewLoggingAMiddleware(s InterfaceA, logger log.Logger) InterfaceA { + return &ALoggingMiddleware{next: s, logger: logger} +} + +type BLoggingMiddleware struct { + next InterfaceB + logger log.Logger +} + +func (s *BLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { + var ( + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "err", logErr) + }(time.Now()) + err = s.next.Create(ctx, newData, name, data) + return err +} + +func (s *BLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + var ( + a string + b string + err error + ) + a, b, err = s.next.Delete(ctx, id) + return a, b, err +} + +func (s *BLoggingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + var ( + result User + err error + ) + result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) + return result, err +} + +func (s *BLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + var ( + result []*User + err error + ) + result, err = s.next.GetAll(ctx, members) + return result, err +} + +func (s *BLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + var ( + result map[string]map[int][]string + err error + ) + result, err = s.next.TestMethod(data, ss) + return result, err +} + +func (s *BLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + var ( + err error + ) + err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) + return err +} + +func NewLoggingBMiddleware(s InterfaceB, logger log.Logger) InterfaceB { + return &BLoggingMiddleware{next: s, logger: logger} +} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..4dbe39ff --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go new file mode 100755 index 00000000..71c003eb --- /dev/null +++ b/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go @@ -0,0 +1,166 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" + "github.com/pquerna/ffjson/ffjson" +) + +func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap { + mergedECM := make(jsonrpc.EndpointCodecMap, 512) + for _, ecm := range ecms { + for key, codec := range ecm { + mergedECM[key] = codec + } + } + return mergedECM +} +func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessage, error) { + b, err := ffjson.Marshal(result) + if err != nil { + return nil, err + } + return b, nil +} + +func MakeInterfaceAEndpointCodecMap(ep InterfaceAEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { + var namespace string + if len(ns) > 0 { + namespace = strings.Join(ns, ".") + "." + } + ecm := jsonrpc.EndpointCodecMap{} + if ep.TestMethodEndpoint != nil { + ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ + Endpoint: ep.TestMethodEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + return nil, nil + }, + Encode: encodeResponseJSONRPC, + } + } + return ecm +} + +func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { + var namespace string + if len(ns) > 0 { + namespace = strings.Join(ns, ".") + "." + } + ecm := jsonrpc.EndpointCodecMap{} + if ep.CreateEndpoint != nil { + ecm[namespace+"create"] = jsonrpc.EndpointCodec{ + Endpoint: ep.CreateEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBCreateRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBCreateRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.DeleteEndpoint != nil { + ecm[namespace+"delete"] = jsonrpc.EndpointCodec{ + Endpoint: ep.DeleteEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBDeleteRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.GetEndpoint != nil { + ecm[namespace+"get"] = jsonrpc.EndpointCodec{ + Endpoint: ep.GetEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBGetRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.GetAllEndpoint != nil { + ecm[namespace+"getAll"] = jsonrpc.EndpointCodec{ + Endpoint: ep.GetAllEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBGetAllRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.TestMethodEndpoint != nil { + ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ + Endpoint: ep.TestMethodEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBTestMethodRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.TestMethod2Endpoint != nil { + ecm[namespace+"testMethod2"] = jsonrpc.EndpointCodec{ + Endpoint: ep.TestMethod2Endpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req InterfaceBTestMethod2Request + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethod2Request: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + return ecm +} + +// HTTP JSONRPC Transport +func MakeHandlerJSONRPC(svcInterfaceA InterfaceA, svcInterfaceB InterfaceB, options ...ServerOption) (http.Handler, error) { + opts := &serverOpts{} + for _, o := range options { + o(opts) + } + epSetA := MakeInterfaceAEndpointSet(svcInterfaceA) + epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) + epSetB := MakeInterfaceBEndpointSet(svcInterfaceB) + epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSetB.CreateEndpoint) + epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) + epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(epSetB.GetEndpoint) + epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) + epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) + epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) + r := mux.NewRouter() + handler := jsonrpc.NewServer(MergeEndpointCodecMaps(MakeInterfaceAEndpointCodecMap(epSetA, "a"), MakeInterfaceBEndpointCodecMap(epSetB, "b")), opts.genericServerOption...) + r.Methods("POST").Path("").Handler(handler) + return r, nil +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go new file mode 100755 index 00000000..e7b83ce2 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go @@ -0,0 +1,220 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "encoding/json" + "fmt" + "net" + "net/url" + "strings" + + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" + "github.com/pquerna/ffjson/ffjson" +) + +// Deprecated +func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceB, error) { + return NewClientJSONRPCInterfaceB(tgt, options...) +} +func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB, error) { + opts := &clientOpts{} + c := &clientInterfaceB{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + opts.interfaceBCreateClientOption = append( + opts.interfaceBCreateClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(CreateRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as CreateRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + return nil, nil + }), + ) + c.createEndpoint = jsonrpc.NewClient( + u, + "service.create", + append(opts.genericClientOption, opts.interfaceBCreateClientOption...)..., + ).Endpoint() + c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(c.createEndpoint) + opts.interfaceBDeleteClientOption = append( + opts.interfaceBDeleteClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(DeleteRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as DeleteRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp DeleteResponse + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to DeleteResponse: %s", err) + } + return resp, nil + }), + ) + c.deleteEndpoint = jsonrpc.NewClient( + u, + "service.delete", + append(opts.genericClientOption, opts.interfaceBDeleteClientOption...)..., + ).Endpoint() + c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(c.deleteEndpoint) + opts.interfaceBGetClientOption = append( + opts.interfaceBGetClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(GetRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as GetRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp User + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to GetResponse: %s", err) + } + return resp, nil + }), + ) + c.getEndpoint = jsonrpc.NewClient( + u, + "service.get", + append(opts.genericClientOption, opts.interfaceBGetClientOption...)..., + ).Endpoint() + c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(c.getEndpoint) + opts.interfaceBGetAllClientOption = append( + opts.interfaceBGetAllClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(GetAllRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as GetAllRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp []*User + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to GetAllResponse: %s", err) + } + return resp, nil + }), + ) + c.getAllEndpoint = jsonrpc.NewClient( + u, + "service.getAll", + append(opts.genericClientOption, opts.interfaceBGetAllClientOption...)..., + ).Endpoint() + c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(c.getAllEndpoint) + opts.interfaceBTestMethodClientOption = append( + opts.interfaceBTestMethodClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(TestMethodRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as TestMethodRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + var resp map[string]map[int][]string + err := ffjson.Unmarshal(response.Result, &resp) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethodResponse: %s", err) + } + return resp, nil + }), + ) + c.testMethodEndpoint = jsonrpc.NewClient( + u, + "service.testMethod", + append(opts.genericClientOption, opts.interfaceBTestMethodClientOption...)..., + ).Endpoint() + c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(c.testMethodEndpoint) + opts.interfaceBTestMethod2ClientOption = append( + opts.interfaceBTestMethod2ClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(TestMethod2Request) + if !ok { + return nil, fmt.Errorf("couldn't assert request as TestMethod2Request, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + return nil, nil + }), + ) + c.testMethod2Endpoint = jsonrpc.NewClient( + u, + "service.testMethod2", + append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., + ).Endpoint() + c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + return c, nil +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js new file mode 100755 index 00000000..d37fc098 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -0,0 +1,303 @@ +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e); + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } +} +/** + * @typedef {Object} Data + */ + +/** + * @typedef {Object} User + * @property {string} id + * @property {string} name + * @property {string} password + * @property {GeoJSON} point + * @property {string} last_seen + * @property {Data} data + * @property {Array} photo + * @property {User} user + * @property {Profile} profile + * @property {Recurse} recurse + * @property {Kind} kind + * @property {string} created_at + * @property {string} updated_at + */ + +/** + * @typedef {Object} GeoJSON + * @property {Array} coordinates200 + */ + +/** + * @typedef {Object} Profile + * @property {string} phone + */ + +/** + * @typedef {Object} Recurse + * @property {string} name + * @property {Array} recurse + */ + +/** + * @typedef {string} Kind + */ + +/** + * @typedef {Array} Members + */ + +/** + * @typedef {Object} Member + * @property {string} id + */ + +class JSONRPCClientService { + constructor(transport) { + this.scheduler = new JSONRPCScheduler(transport); + } + + /** + * Create new item of item. + * + * @param {Data} newData + * @param {string} name + * @param {Array} data + **/ + create(newData, name, data) { + return this.scheduler + .__scheduleRequest("service.create", { + newData: newData, + name: name, + data: data + }) + .catch((e) => { + throw interfaceBCreateConvertError(e); + }); + } + /** + * @param {number} id + * @return {PromiseLike<{a: string, b: string}>} + **/ + delete(id) { + return this.scheduler + .__scheduleRequest("service.delete", { id: id }) + .catch((e) => { + throw interfaceBDeleteConvertError(e); + }); + } + /** + * Get item. + * + * @param {string} id + * @param {string} name + * @param {string} fname + * @param {number} price + * @param {number} n + * @param {number} b + * @param {number} cc + * @return {PromiseLike} + **/ + get(id, name, fname, price, n, b, cc) { + return this.scheduler + .__scheduleRequest("service.get", { + id: id, + name: name, + fname: fname, + price: price, + n: n, + b: b, + cc: cc + }) + .catch((e) => { + throw interfaceBGetConvertError(e); + }); + } + /** + * GetAll more comment and more and more comment and more and more comment and more. + * New line comment. + * + * @param {Members} members + * @return {PromiseLike>} + **/ + getAll(members) { + return this.scheduler + .__scheduleRequest("service.getAll", { members: members }) + .catch((e) => { + throw interfaceBGetAllConvertError(e); + }); + } + /** + * @param {Object} data + * @param {object} ss + * @return {PromiseLike>>>} + **/ + testMethod(data, ss) { + return this.scheduler + .__scheduleRequest("service.testMethod", { data: data, ss: ss }) + .catch((e) => { + throw interfaceBTestMethodConvertError(e); + }); + } + /** + * @param {string} ns + * @param {string} utype + * @param {string} user + * @param {string} restype + * @param {string} resource + * @param {string} permission + **/ + testMethod2(ns, utype, user, restype, resource, permission) { + return this.scheduler + .__scheduleRequest("service.testMethod2", { + ns: ns, + utype: utype, + user: user, + restype: restype, + resource: resource, + permission: permission + }) + .catch((e) => { + throw interfaceBTestMethod2ConvertError(e); + }); + } +} + +export default JSONRPCClientService; + +export class ErrUnauthorizedError extends JSONRPCError { + constructor(message, data) { + super(message, "ErrUnauthorizedError", -32001, data); + } +} +function interfaceBCreateConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + case -32001: + return new ErrUnauthorizedError(e.message, e.data); + } +} +function interfaceBDeleteConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBGetAllConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethodConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} +function interfaceBTestMethod2ConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go new file mode 100755 index 00000000..db8fb9f9 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go @@ -0,0 +1,148 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/google/uuid" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" +) + +type ClientOption func(*clientOpts) +type clientOpts struct { + interfaceBCreateClientOption []jsonrpc.ClientOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteClientOption []jsonrpc.ClientOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetClientOption []jsonrpc.ClientOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllClientOption []jsonrpc.ClientOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodClientOption []jsonrpc.ClientOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ClientOption []jsonrpc.ClientOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + genericClientOption []jsonrpc.ClientOption + genericEndpointMiddleware []endpoint.Middleware +} + +func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.genericClientOption = opt } +} + +func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.genericEndpointMiddleware = opt } +} + +func InterfaceBCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBCreateClientOption = opt } +} + +func InterfaceBCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} + +func InterfaceBDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBDeleteClientOption = opt } +} + +func InterfaceBDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +} + +func InterfaceBGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBGetClientOption = opt } +} + +func InterfaceBGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBGetEndpointMiddleware = opt } +} + +func InterfaceBGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBGetAllClientOption = opt } +} + +func InterfaceBGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +} + +func InterfaceBTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodClientOption = opt } +} + +func InterfaceBTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +} + +func InterfaceBTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethod2ClientOption = opt } +} + +func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +} + +type clientInterfaceB struct { + createEndpoint endpoint.Endpoint + deleteEndpoint endpoint.Endpoint + getEndpoint endpoint.Endpoint + getAllEndpoint endpoint.Endpoint + testMethodEndpoint endpoint.Endpoint + testMethod2Endpoint endpoint.Endpoint +} + +func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { + _, err := c.createEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data}) + if err != nil { + return err + } + return nil +} + +func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.deleteEndpoint(ctx, DeleteRequest{Id: id}) + if err != nil { + return "", "", err + } + response := resp.(DeleteResponse) + return response.A, response.B, nil +} + +func (c *clientInterfaceB) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.getEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) + if err != nil { + return User{}, err + } + response := resp.(User) + return response, nil +} + +func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.getAllEndpoint(ctx, GetAllRequest{Members: members}) + if err != nil { + return nil, err + } + response := resp.([]*User) + return response, nil +} + +func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.testMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) + if err != nil { + return nil, err + } + response := resp.(map[string]map[int][]string) + return response, nil +} + +func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.testMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) + if err != nil { + return err + } + return nil +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go new file mode 100755 index 00000000..88e2edc4 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go @@ -0,0 +1,141 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/google/uuid" +) + +func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(CreateRequest) + err := s.Create(ctx, req.NewData, req.Name, req.Data) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(DeleteRequest) + a, b, err := s.Delete(ctx, req.Id) + if err != nil { + return nil, err + } + return DeleteResponse{A: a, B: b}, nil + } + +} + +func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(GetRequest) + result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(GetAllRequest) + result, err := s.GetAll(ctx, req.Members) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(TestMethodRequest) + result, err := s.TestMethod(req.Data, req.Ss) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(TestMethod2Request) + err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +type InterfaceBEndpointSet struct { + CreateEndpoint endpoint.Endpoint + DeleteEndpoint endpoint.Endpoint + GetEndpoint endpoint.Endpoint + GetAllEndpoint endpoint.Endpoint + TestMethodEndpoint endpoint.Endpoint + TestMethod2Endpoint endpoint.Endpoint +} + +func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { + return InterfaceBEndpointSet{ + CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), + DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), + GetEndpoint: MakeInterfaceBGetEndpoint(svc), + GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), + TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), + } +} + +type CreateRequest struct { + NewData Data `json:"newData"` + Name string `json:"name"` + Data []byte `json:"data"` +} +type DeleteRequest struct { + Id uint `json:"id"` +} +type DeleteResponse struct { + A string `json:"a"` + B string `json:"b"` +} +type GetRequest struct { + Id uuid.UUID `json:"id"` + Name string `json:"name"` + Fname string `json:"fname"` + Price float32 `json:"price"` + N int `json:"n"` + B int `json:"b"` + Cc int `json:"cc"` +} +type GetAllRequest struct { + Members Members `json:"members"` +} +type TestMethodRequest struct { + Data map[string]interface{} `json:"data"` + Ss interface{} `json:"ss"` +} +type TestMethod2Request struct { + Ns string `json:"ns"` + Utype string `json:"utype"` + User string `json:"user"` + Restype string `json:"restype"` + Resource string `json:"resource"` + Permission string `json:"permission"` +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go new file mode 100755 index 00000000..d674b4f6 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go @@ -0,0 +1,204 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "github.com/go-kit/kit/endpoint" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" +) + +type httpError struct { + code int + data interface{} + message string +} + +func (e *httpError) Error() string { + return e.message +} +func (e *httpError) StatusCode() int { + return e.code +} +func (e *httpError) ErrorData() interface{} { + return e.data +} +func (e *httpError) SetErrorData(data interface{}) { + e.data = data +} +func (e *httpError) SetErrorMessage(message string) { + e.message = message +} +func interfaceBCreateErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + case -32001: + err = ErrUnauthorized{} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBDeleteErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBGetErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBGetAllErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBTestMethodErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func interfaceBTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + +func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + if len(middlewares) == 0 { + return next + } + outer := middlewares[0] + others := middlewares[1:] + for i := len(others) - 1; i >= 0; i-- { + next = others[i](next) + } + return outer(next) + } +} +func GenericServerOptions(v ...jsonrpc.ServerOption) ServerOption { + return func(o *serverOpts) { o.genericServerOption = v } +} + +func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { + return func(o *serverOpts) { o.genericEndpointMiddleware = v } +} + +type ServerOption func(*serverOpts) +type serverOpts struct { + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + interfaceBCreateServerOption []jsonrpc.ServerOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteServerOption []jsonrpc.ServerOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetServerOption []jsonrpc.ServerOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllServerOption []jsonrpc.ServerOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodServerOption []jsonrpc.ServerOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ServerOption []jsonrpc.ServerOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware +} + +func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +} + +func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} + +func InterfaceBDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBDeleteServerOption = opt } +} + +func InterfaceBDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +} + +func InterfaceBGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBGetServerOption = opt } +} + +func InterfaceBGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBGetEndpointMiddleware = opt } +} + +func InterfaceBGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBGetAllServerOption = opt } +} + +func InterfaceBGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +} + +func InterfaceBTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodServerOption = opt } +} + +func InterfaceBTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +} + +func InterfaceBTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethod2ServerOption = opt } +} + +func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go new file mode 100755 index 00000000..6a201932 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go @@ -0,0 +1,127 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/metrics" + prometheus2 "github.com/go-kit/kit/metrics/prometheus" + "github.com/google/uuid" + "github.com/prometheus/client_golang/prometheus" +) + +type instrumentingOpts struct { + requestCount metrics.Counter + requestLatency metrics.Histogram + namespace string + subsystem string +} + +type InstrumentingOption func(*instrumentingOpts) + +func Namespace(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.namespace = v + } +} + +func Subsystem(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.subsystem = v + } +} + +func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestLatency = requestLatency + } +} + +func RequestCount(requestCount metrics.Counter) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestCount = requestCount + } +} + +type ServiceInstrumentingMiddleware struct { + next InterfaceB + opts *instrumentingOpts +} + +func (s *ServiceInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Create").Add(1) + s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Create(ctx, newData, name, data) +} + +func (s *ServiceInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Delete").Add(1) + s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Delete(ctx, id) +} + +func (s *ServiceInstrumentingMiddleware) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Get").Add(1) + s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Get(ctx, id, name, fname, price, n, b, cc) +} + +func (s *ServiceInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "GetAll").Add(1) + s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.GetAll(ctx, members) +} + +func (s *ServiceInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod").Add(1) + s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod(data, ss) +} + +func (s *ServiceInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod2").Add(1) + s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) +} + +func NewInstrumentingServiceMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { + i := &ServiceInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md new file mode 100755 index 00000000..67310683 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -0,0 +1,143 @@ +# UsersvitalyworkgosrcgithubComswipeIoswipev2fixtureServiceJSONRPCSingleapp JSONRPC Client + +Create + +Delete + +Get + +GetAll + +TestMethod + +TestMethod2 + +### Create(newData, name, data) ⇒void + + new item of item. + + + +**Throws**: + +ErrUnauthorizedException + + + +| Param | Type | Description | +|------|------|------| +|newData|Data|| +|name|string|| +|data|Array.<number>|| +### Delete(id) ⇒ + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|number|| +### Get(id, name, fname, price, n, b, cc) ⇒User + + item. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|fname|string|| +|price|number|| +|n|number|| +|b|number|| +|cc|number|| +### GetAll(members) ⇒Array.<User> + + more comment and more and more comment and more and more comment and more.New line comment. + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|members|Members|| +### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|data|Object.<string, Object>|| +|ss|Object|| +### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| +|utype|string|| +|user|string|| +|restype|string|| +|resource|string|| +|permission|string|| +## Members + +### GeoJSON + +| Field | Type | Description | +|------|------|------| +|coordinates200|Array.<number>|| +### Profile + +| Field | Type | Description | +|------|------|------| +|phone|string|| +### Recurse + +| Field | Type | Description | +|------|------|------| +|name|string|| +|recurse|Array.<Recurse>|| +### User + +| Field | Type | Description | +|------|------|------| +|id|string|| +|name|string|| +|password|string|| +|point|GeoJSON|| +|last_seen|string|| +|data|Data|| +|photo|Array.<number>|| +|user|User|| +|profile|Profile|| +|recurse|Recurse|| +|kind|Kind|| +|created_at|string|| +|updated_at|string|| diff --git a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go new file mode 100755 index 00000000..08c29166 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go @@ -0,0 +1,89 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" + "github.com/google/uuid" +) + +type ServiceLoggingMiddleware struct { + next InterfaceB + logger log.Logger +} + +func (s *ServiceLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { + var ( + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "err", logErr) + }(time.Now()) + err = s.next.Create(ctx, newData, name, data) + return err +} + +func (s *ServiceLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + var ( + a string + b string + err error + ) + a, b, err = s.next.Delete(ctx, id) + return a, b, err +} + +func (s *ServiceLoggingMiddleware) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { + var ( + result User + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Get", "took", time.Since(now), "id", id, "err", logErr) + }(time.Now()) + result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) + return result, err +} + +func (s *ServiceLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + var ( + result []*User + err error + ) + result, err = s.next.GetAll(ctx, members) + return result, err +} + +func (s *ServiceLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + var ( + result map[string]map[int][]string + err error + ) + result, err = s.next.TestMethod(data, ss) + return result, err +} + +func (s *ServiceLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + var ( + err error + ) + err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) + return err +} + +func NewLoggingServiceMiddleware(s InterfaceB, logger log.Logger) InterfaceB { + return &ServiceLoggingMiddleware{next: s, logger: logger} +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json new file mode 100755 index 00000000..3f5cc945 --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go new file mode 100755 index 00000000..32af243f --- /dev/null +++ b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go @@ -0,0 +1,146 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" + "github.com/l-vitaly/go-kit/transport/http/jsonrpc" + "github.com/pquerna/ffjson/ffjson" +) + +func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap { + mergedECM := make(jsonrpc.EndpointCodecMap, 512) + for _, ecm := range ecms { + for key, codec := range ecm { + mergedECM[key] = codec + } + } + return mergedECM +} +func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessage, error) { + b, err := ffjson.Marshal(result) + if err != nil { + return nil, err + } + return b, nil +} + +func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { + var namespace string + if len(ns) > 0 { + namespace = strings.Join(ns, ".") + "." + } + ecm := jsonrpc.EndpointCodecMap{} + if ep.CreateEndpoint != nil { + ecm[namespace+"create"] = jsonrpc.EndpointCodec{ + Endpoint: ep.CreateEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req CreateRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to CreateRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.DeleteEndpoint != nil { + ecm[namespace+"delete"] = jsonrpc.EndpointCodec{ + Endpoint: ep.DeleteEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req DeleteRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to DeleteRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.GetEndpoint != nil { + ecm[namespace+"get"] = jsonrpc.EndpointCodec{ + Endpoint: ep.GetEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req GetRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to GetRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.GetAllEndpoint != nil { + ecm[namespace+"getAll"] = jsonrpc.EndpointCodec{ + Endpoint: ep.GetAllEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req GetAllRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to GetAllRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.TestMethodEndpoint != nil { + ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ + Endpoint: ep.TestMethodEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req TestMethodRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethodRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + if ep.TestMethod2Endpoint != nil { + ecm[namespace+"testMethod2"] = jsonrpc.EndpointCodec{ + Endpoint: ep.TestMethod2Endpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req TestMethod2Request + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethod2Request: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } + return ecm +} + +// HTTP JSONRPC Transport +func MakeHandlerJSONRPC(svcInterfaceB InterfaceB, options ...ServerOption) (http.Handler, error) { + opts := &serverOpts{} + for _, o := range options { + o(opts) + } + epSet := MakeInterfaceBEndpointSet(svcInterfaceB) + epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSet.CreateEndpoint) + epSet.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(epSet.DeleteEndpoint) + epSet.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(epSet.GetEndpoint) + epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) + epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) + epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) + r := mux.NewRouter() + handler := jsonrpc.NewServer(MakeInterfaceBEndpointCodecMap(epSet), opts.genericServerOption...) + r.Methods("POST").Path("").Handler(handler) + return r, nil +} diff --git a/v2/fixture/ServiceRESTMulti/app/client_gen.go b/v2/fixture/ServiceRESTMulti/app/client_gen.go new file mode 100755 index 00000000..b7644e93 --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/client_gen.go @@ -0,0 +1,280 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "bytes" + "context" + "fmt" + "io" + "io/ioutil" + "net" + http2 "net/http" + "net/url" + "strconv" + "strings" + + "github.com/go-kit/kit/transport/http" + "github.com/pquerna/ffjson/ffjson" +) + +func NewClientRESTInterfaceA(tgt string, options ...ClientOption) (InterfaceA, error) { + opts := &clientOpts{} + c := &clientInterfaceA{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + c.testMethodEndpoint = http.NewClient( + "GET", + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + r.Method = "GET" + r.URL.Path += "/a/testMethod" + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceATestMethodErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.interfaceATestMethodClientOption...)..., + ).Endpoint() + c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(c.testMethodEndpoint) + return c, nil +} + +func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, error) { + opts := &clientOpts{} + c := &clientInterfaceB{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + c.createEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(InterfaceBCreateRequest) + if !ok { + return fmt.Errorf("couldn't assert request as InterfaceBCreateRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/b/create" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceBCreateErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.interfaceBCreateClientOption...)..., + ).Endpoint() + c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(c.createEndpoint) + c.deleteEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(InterfaceBDeleteRequest) + if !ok { + return fmt.Errorf("couldn't assert request as InterfaceBDeleteRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/b/delete" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceBDeleteErrorDecode(statusCode) + } + var resp InterfaceBDeleteRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.interfaceBDeleteClientOption...)..., + ).Endpoint() + c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(c.deleteEndpoint) + c.getEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(InterfaceBGetRequest) + if !ok { + return fmt.Errorf("couldn't assert request as InterfaceBGetRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/b/get-test" + q := r.URL.Query() + ccStr := strconv.FormatInt(int64(req.Cc), 10) + q.Add("cc", ccStr) + r.URL.RawQuery = q.Encode() + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceBGetErrorDecode(statusCode) + } + var resp User + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.interfaceBGetClientOption...)..., + ).Endpoint() + c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(c.getEndpoint) + c.getAllEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(InterfaceBGetAllRequest) + if !ok { + return fmt.Errorf("couldn't assert request as InterfaceBGetAllRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/b/getAll" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceBGetAllErrorDecode(statusCode) + } + var resp []*User + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.interfaceBGetAllClientOption...)..., + ).Endpoint() + c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(c.getAllEndpoint) + c.testMethodEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(InterfaceBTestMethodRequest) + if !ok { + return fmt.Errorf("couldn't assert request as InterfaceBTestMethodRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/b/testMethod" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceBTestMethodErrorDecode(statusCode) + } + var resp map[string]map[int][]string + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.interfaceBTestMethodClientOption...)..., + ).Endpoint() + c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(c.testMethodEndpoint) + c.testMethod2Endpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(InterfaceBTestMethod2Request) + if !ok { + return fmt.Errorf("couldn't assert request as InterfaceBTestMethod2Request, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/b/testMethod2" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, interfaceBTestMethod2ErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., + ).Endpoint() + c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + return c, nil +} diff --git a/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go b/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go new file mode 100755 index 00000000..4da2585d --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go @@ -0,0 +1,186 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/go-kit/kit/transport/http" +) + +type AppClient struct { + AClient InterfaceA + BClient InterfaceB +} + +func NewClientREST(tgt string, opts ...ClientOption) (*AppClient, error) { + interfaceAClient, err := NewClientRESTInterfaceA(tgt, opts...) + if err != nil { + return nil, err + } + interfaceBClient, err := NewClientRESTInterfaceB(tgt, opts...) + if err != nil { + return nil, err + } + return &AppClient{ + AClient: interfaceAClient, + BClient: interfaceBClient, + }, nil +} + +type ClientOption func(*clientOpts) +type clientOpts struct { + interfaceATestMethodClientOption []http.ClientOption + interfaceATestMethodEndpointMiddleware []endpoint.Middleware + interfaceBCreateClientOption []http.ClientOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteClientOption []http.ClientOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetClientOption []http.ClientOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllClientOption []http.ClientOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodClientOption []http.ClientOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ClientOption []http.ClientOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + genericClientOption []http.ClientOption + genericEndpointMiddleware []endpoint.Middleware +} + +func GenericClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.genericClientOption = opt } +} + +func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.genericEndpointMiddleware = opt } +} + +func InterfaceATestMethodClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceATestMethodClientOption = opt } +} + +func InterfaceATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +} + +func InterfaceBCreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBCreateClientOption = opt } +} + +func InterfaceBCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} + +func InterfaceBDeleteClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBDeleteClientOption = opt } +} + +func InterfaceBDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +} + +func InterfaceBGetClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBGetClientOption = opt } +} + +func InterfaceBGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBGetEndpointMiddleware = opt } +} + +func InterfaceBGetAllClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBGetAllClientOption = opt } +} + +func InterfaceBGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +} + +func InterfaceBTestMethodClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodClientOption = opt } +} + +func InterfaceBTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +} + +func InterfaceBTestMethod2ClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethod2ClientOption = opt } +} + +func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +} + +type clientInterfaceA struct { + testMethodEndpoint endpoint.Endpoint +} + +func (c *clientInterfaceA) TestMethod() { + _, _ = c.testMethodEndpoint(context.Background(), nil) + return +} + +type clientInterfaceB struct { + createEndpoint endpoint.Endpoint + deleteEndpoint endpoint.Endpoint + getEndpoint endpoint.Endpoint + getAllEndpoint endpoint.Endpoint + testMethodEndpoint endpoint.Endpoint + testMethod2Endpoint endpoint.Endpoint +} + +func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { + _, err := c.createEndpoint(ctx, InterfaceBCreateRequest{NewData: newData, Name: name, Data: data}) + if err != nil { + return err + } + return nil +} + +func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.deleteEndpoint(ctx, InterfaceBDeleteRequest{Id: id}) + if err != nil { + return "", "", err + } + response := resp.(InterfaceBDeleteResponse) + return response.A, response.B, nil +} + +func (c *clientInterfaceB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.getEndpoint(ctx, InterfaceBGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) + if err != nil { + return User{}, err + } + response := resp.(User) + return response, nil +} + +func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.getAllEndpoint(ctx, InterfaceBGetAllRequest{Members: members}) + if err != nil { + return nil, err + } + response := resp.([]*User) + return response, nil +} + +func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.testMethodEndpoint(context.Background(), InterfaceBTestMethodRequest{Data: data, Ss: ss}) + if err != nil { + return nil, err + } + response := resp.(map[string]map[int][]string) + return response, nil +} + +func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.testMethod2Endpoint(ctx, InterfaceBTestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) + if err != nil { + return err + } + return nil +} diff --git a/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go b/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go new file mode 100755 index 00000000..f9c5ca2a --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go @@ -0,0 +1,158 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" +) + +func MakeInterfaceATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + s.TestMethod() + return nil, nil + } + +} + +func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBCreateRequest) + err := s.Create(ctx, req.NewData, req.Name, req.Data) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBDeleteRequest) + a, b, err := s.Delete(ctx, req.Id) + if err != nil { + return nil, err + } + return InterfaceBDeleteResponse{A: a, B: b}, nil + } + +} + +func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBGetRequest) + result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBGetAllRequest) + result, err := s.GetAll(ctx, req.Members) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBTestMethodRequest) + result, err := s.TestMethod(req.Data, req.Ss) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(InterfaceBTestMethod2Request) + err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +type InterfaceAEndpointSet struct { + TestMethodEndpoint endpoint.Endpoint +} + +func MakeInterfaceAEndpointSet(svc InterfaceA) InterfaceAEndpointSet { + return InterfaceAEndpointSet{ + TestMethodEndpoint: MakeInterfaceATestMethodEndpoint(svc), + } +} + +type InterfaceBEndpointSet struct { + CreateEndpoint endpoint.Endpoint + DeleteEndpoint endpoint.Endpoint + GetEndpoint endpoint.Endpoint + GetAllEndpoint endpoint.Endpoint + TestMethodEndpoint endpoint.Endpoint + TestMethod2Endpoint endpoint.Endpoint +} + +func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { + return InterfaceBEndpointSet{ + CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), + DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), + GetEndpoint: MakeInterfaceBGetEndpoint(svc), + GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), + TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), + } +} + +type InterfaceBCreateRequest struct { + NewData Data `json:"newData"` + Name string `json:"name"` + Data []byte `json:"data"` +} +type InterfaceBDeleteRequest struct { + Id uint `json:"id"` +} +type InterfaceBDeleteResponse struct { + A string `json:"a"` + B string `json:"b"` +} +type InterfaceBGetRequest struct { + Id int `json:"id"` + Name string `json:"name"` + Fname string `json:"fname"` + Price float32 `json:"price"` + N int `json:"n"` + B int `json:"b"` + Cc int `json:"cc"` +} +type InterfaceBGetAllRequest struct { + Members Members `json:"members"` +} +type InterfaceBTestMethodRequest struct { + Data map[string]interface{} `json:"data"` + Ss interface{} `json:"ss"` +} +type InterfaceBTestMethod2Request struct { + Ns string `json:"ns"` + Utype string `json:"utype"` + User string `json:"user"` + Restype string `json:"restype"` + Resource string `json:"resource"` + Permission string `json:"permission"` +} diff --git a/v2/fixture/ServiceRESTMulti/app/http_gen.go b/v2/fixture/ServiceRESTMulti/app/http_gen.go new file mode 100755 index 00000000..d7a48dde --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/http_gen.go @@ -0,0 +1,175 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + http2 "net/http" + + "github.com/go-kit/kit/endpoint" + "github.com/go-kit/kit/transport/http" +) + +type httpError struct { + code int +} + +func (e *httpError) Error() string { + return http2.StatusText(e.code) +} +func (e *httpError) StatusCode() int { + return e.code +} +func interfaceATestMethodErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func interfaceBCreateErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func interfaceBDeleteErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func interfaceBGetErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func interfaceBGetAllErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func interfaceBTestMethodErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func interfaceBTestMethod2ErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + if len(middlewares) == 0 { + return next + } + outer := middlewares[0] + others := middlewares[1:] + for i := len(others) - 1; i >= 0; i-- { + next = others[i](next) + } + return outer(next) + } +} +func GenericServerOptions(v ...http.ServerOption) ServerOption { + return func(o *serverOpts) { o.genericServerOption = v } +} + +func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { + return func(o *serverOpts) { o.genericEndpointMiddleware = v } +} + +type ServerOption func(*serverOpts) +type serverOpts struct { + genericServerOption []http.ServerOption + genericEndpointMiddleware []endpoint.Middleware + interfaceATestMethodServerOption []http.ServerOption + interfaceATestMethodEndpointMiddleware []endpoint.Middleware + interfaceBCreateServerOption []http.ServerOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteServerOption []http.ServerOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetServerOption []http.ServerOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllServerOption []http.ServerOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodServerOption []http.ServerOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ServerOption []http.ServerOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware +} + +func InterfaceATestMethodServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceATestMethodServerOption = opt } +} + +func InterfaceATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +} + +func InterfaceBCreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +} + +func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +} + +func InterfaceBDeleteServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBDeleteServerOption = opt } +} + +func InterfaceBDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +} + +func InterfaceBGetServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBGetServerOption = opt } +} + +func InterfaceBGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBGetEndpointMiddleware = opt } +} + +func InterfaceBGetAllServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBGetAllServerOption = opt } +} + +func InterfaceBGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +} + +func InterfaceBTestMethodServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodServerOption = opt } +} + +func InterfaceBTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +} + +func InterfaceBTestMethod2ServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethod2ServerOption = opt } +} + +func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +} diff --git a/v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go b/v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go new file mode 100755 index 00000000..7e450c13 --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go @@ -0,0 +1,165 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/metrics" + prometheus2 "github.com/go-kit/kit/metrics/prometheus" + "github.com/prometheus/client_golang/prometheus" +) + +type instrumentingOpts struct { + requestCount metrics.Counter + requestLatency metrics.Histogram + namespace string + subsystem string +} + +type InstrumentingOption func(*instrumentingOpts) + +func Namespace(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.namespace = v + } +} + +func Subsystem(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.subsystem = v + } +} + +func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestLatency = requestLatency + } +} + +func RequestCount(requestCount metrics.Counter) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestCount = requestCount + } +} + +type AInstrumentingMiddleware struct { + next InterfaceA + opts *instrumentingOpts +} + +func (s *AInstrumentingMiddleware) TestMethod() { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod").Add(1) + s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) + }(time.Now()) + s.next.TestMethod() +} + +func NewInstrumentingAMiddleware(s InterfaceA, opts ...InstrumentingOption) InterfaceA { + i := &AInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} + +type BInstrumentingMiddleware struct { + next InterfaceB + opts *instrumentingOpts +} + +func (s *BInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Create").Add(1) + s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Create(ctx, newData, name, data) +} + +func (s *BInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Delete").Add(1) + s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Delete(ctx, id) +} + +func (s *BInstrumentingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Get").Add(1) + s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Get(ctx, id, name, fname, price, n, b, cc) +} + +func (s *BInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "GetAll").Add(1) + s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.GetAll(ctx, members) +} + +func (s *BInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod").Add(1) + s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod(data, ss) +} + +func (s *BInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod2").Add(1) + s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) +} + +func NewInstrumentingBMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { + i := &BInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} diff --git a/v2/fixture/ServiceRESTMulti/app/logging_gen.go b/v2/fixture/ServiceRESTMulti/app/logging_gen.go new file mode 100755 index 00000000..ae4f0114 --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/logging_gen.go @@ -0,0 +1,94 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" +) + +type ALoggingMiddleware struct { + next InterfaceA + logger log.Logger +} + +func (s *ALoggingMiddleware) TestMethod() { + s.next.TestMethod() +} + +func NewLoggingAMiddleware(s InterfaceA, logger log.Logger) InterfaceA { + return &ALoggingMiddleware{next: s, logger: logger} +} + +type BLoggingMiddleware struct { + next InterfaceB + logger log.Logger +} + +func (s *BLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { + var ( + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) + }(time.Now()) + err = s.next.Create(ctx, newData, name, data) + return err +} + +func (s *BLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + var ( + a string + b string + err error + ) + a, b, err = s.next.Delete(ctx, id) + return a, b, err +} + +func (s *BLoggingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + var ( + result User + err error + ) + result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) + return result, err +} + +func (s *BLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + var ( + result []*User + err error + ) + result, err = s.next.GetAll(ctx, members) + return result, err +} + +func (s *BLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + var ( + result map[string]map[int][]string + err error + ) + result, err = s.next.TestMethod(data, ss) + return result, err +} + +func (s *BLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + var ( + err error + ) + err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) + return err +} + +func NewLoggingBMiddleware(s InterfaceB, logger log.Logger) InterfaceB { + return &BLoggingMiddleware{next: s, logger: logger} +} diff --git a/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json new file mode 100755 index 00000000..197f82ef --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceRESTMulti/app/server_gen.go b/v2/fixture/ServiceRESTMulti/app/server_gen.go new file mode 100755 index 00000000..29572c02 --- /dev/null +++ b/v2/fixture/ServiceRESTMulti/app/server_gen.go @@ -0,0 +1,208 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "fmt" + "io" + "io/ioutil" + http2 "net/http" + "strconv" + + "github.com/go-kit/kit/transport/http" + "github.com/gorilla/mux" + "github.com/pquerna/ffjson/ffjson" +) + +type errorWrapper struct { + Error string `json:"error"` + Data interface{} `json:"data,omitempty"` +} + +func defaultErrorEncoder(ctx context.Context, err error, w http2.ResponseWriter) { + var errData interface{} + if e, ok := err.(interface{ ErrorData() interface{} }); ok { + errData = e.ErrorData() + } + data, merr := ffjson.Marshal(errorWrapper{Error: err.Error(), Data: errData}) + if merr != nil { + _, _ = w.Write([]byte("unexpected error")) + return + } + w.Header().Set("Content-Type", "application/json; charset=utf-8") + if headerer, ok := err.(http.Headerer); ok { + for k, values := range headerer.Headers() { + for _, v := range values { + w.Header().Add(k, v) + } + } + } + code := http2.StatusInternalServerError + if sc, ok := err.(http.StatusCoder); ok { + code = sc.StatusCode() + } + w.WriteHeader(code) + _, _ = w.Write(data) +} + +func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response interface{}) (err error) { + contentType := "application/json; charset=utf-8" + statusCode := 200 + h := w.Header() + var data []byte + if response != nil { + data, err = ffjson.Marshal(response) + if err != nil { + return err + } + } else { + contentType = "text/plain; charset=utf-8" + statusCode = 201 + } + h.Set("Content-Type", contentType) + w.WriteHeader(statusCode) + w.Write(data) + return nil +} + +// MakeHandlerREST HTTP REST Transport +func MakeHandlerREST(svcInterfaceA InterfaceA, svcInterfaceB InterfaceB, options ...ServerOption) (http2.Handler, error) { + opts := &serverOpts{} + for _, o := range options { + o(opts) + } + opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) + epSetA := MakeInterfaceAEndpointSet(svcInterfaceA) + epSetB := MakeInterfaceBEndpointSet(svcInterfaceB) + epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) + epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSetB.CreateEndpoint) + epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) + epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(epSetB.GetEndpoint) + epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) + epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) + epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) + r := mux.NewRouter() + r.Methods("GET").Path("/a/testmethod").Handler(http.NewServer( + epSetA.TestMethodEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + return nil, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceATestMethodServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/b/create").Handler(http.NewServer( + epSetB.CreateEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req InterfaceBCreateRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for InterfaceBCreateRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBCreateRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceBCreateServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/b/delete").Handler(http.NewServer( + epSetB.DeleteEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req InterfaceBDeleteRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for InterfaceBDeleteRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceBDeleteServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/b/get-test").Handler(http.NewServer( + epSetB.GetEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req InterfaceBGetRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for InterfaceBGetRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetRequest: %w", err) + } + q := r.URL.Query() + tmpcc := q.Get("cc") + if tmpcc != "" { + ccInt, err := strconv.Atoi(tmpcc) + if err != nil { + return nil, err + } + req.Cc = int(ccInt) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceBGetServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/b/getall").Handler(http.NewServer( + epSetB.GetAllEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req InterfaceBGetAllRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for InterfaceBGetAllRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceBGetAllServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/b/testmethod").Handler(http.NewServer( + epSetB.TestMethodEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req InterfaceBTestMethodRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for InterfaceBTestMethodRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceBTestMethodServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/b/testmethod2").Handler(http.NewServer( + epSetB.TestMethod2Endpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req InterfaceBTestMethod2Request + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for InterfaceBTestMethod2Request: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethod2Request: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.interfaceBTestMethod2ServerOption...)..., + )) + return r, nil +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go new file mode 100755 index 00000000..cc14c79d --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go @@ -0,0 +1,119 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "bytes" + "context" + "fmt" + "io/ioutil" + "net" + http2 "net/http" + "net/url" + "strings" + + "github.com/go-kit/kit/transport/http" + "github.com/pquerna/ffjson/ffjson" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" +) + +func NewClientRESTApp(tgt string, options ...ClientOption) (app1.App, error) { + opts := &clientOpts{} + c := &clientApp{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + c.createEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(AppCreateRequest) + if !ok { + return fmt.Errorf("couldn't assert request as AppCreateRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/app1/create" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appCreateErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.appCreateClientOption...)..., + ).Endpoint() + c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(c.createEndpoint) + return c, nil +} + +func NewClientRESTApp(tgt string, options ...ClientOption) (app2.App, error) { + opts := &clientOpts{} + c := &clientApp{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + c.createEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(AppCreateRequest) + if !ok { + return fmt.Errorf("couldn't assert request as AppCreateRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/app2/create" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appCreateErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.appCreateClientOption...)..., + ).Endpoint() + c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(c.createEndpoint) + return c, nil +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go new file mode 100755 index 00000000..122a41f4 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go @@ -0,0 +1,92 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/go-kit/kit/transport/http" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" +) + +type AppClient struct { + App1Client app1.App + App2Client app2.App +} + +func NewClientREST(tgt string, opts ...ClientOption) (*AppClient, error) { + appClient, err := NewClientRESTApp(tgt, opts...) + if err != nil { + return nil, err + } + appClient, err := NewClientRESTApp(tgt, opts...) + if err != nil { + return nil, err + } + return &AppClient{ + App1Client: appClient, + App2Client: appClient, + }, nil +} + +type ClientOption func(*clientOpts) +type clientOpts struct { + appCreateClientOption []http.ClientOption + appCreateEndpointMiddleware []endpoint.Middleware + appCreateClientOption []http.ClientOption + appCreateEndpointMiddleware []endpoint.Middleware + genericClientOption []http.ClientOption + genericEndpointMiddleware []endpoint.Middleware +} + +func GenericClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.genericClientOption = opt } +} + +func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.genericEndpointMiddleware = opt } +} + +func AppCreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appCreateClientOption = opt } +} + +func AppCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appCreateEndpointMiddleware = opt } +} + +func AppCreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appCreateClientOption = opt } +} + +func AppCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appCreateEndpointMiddleware = opt } +} + +type clientApp struct { + createEndpoint endpoint.Endpoint +} + +func (c *clientApp) Create(ctx context.Context, name string, data []byte) error { + _, err := c.createEndpoint(ctx, AppCreateRequest{Name: name, Data: data}) + if err != nil { + return err + } + return nil +} + +type clientApp struct { + createEndpoint endpoint.Endpoint +} + +func (c *clientApp) Create(ctx context.Context, name string, data []byte) error { + _, err := c.createEndpoint(ctx, AppCreateRequest{Name: name, Data: data}) + if err != nil { + return err + } + return nil +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go new file mode 100755 index 00000000..68820ad4 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go @@ -0,0 +1,66 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + + "github.com/go-kit/kit/endpoint" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" +) + +func MakeAppCreateEndpoint(s app1.App) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(AppCreateRequest) + err := s.Create(ctx, req.Name, req.Data) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeAppCreateEndpoint(s app2.App) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(AppCreateRequest) + err := s.Create(ctx, req.Name, req.Data) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +type AppEndpointSet struct { + CreateEndpoint endpoint.Endpoint +} + +func MakeAppEndpointSet(svc app1.App) AppEndpointSet { + return AppEndpointSet{ + CreateEndpoint: MakeAppCreateEndpoint(svc), + } +} + +type AppCreateRequest struct { + Name string `json:"name"` + Data []byte `json:"data"` +} +type AppEndpointSet struct { + CreateEndpoint endpoint.Endpoint +} + +func MakeAppEndpointSet(svc app2.App) AppEndpointSet { + return AppEndpointSet{ + CreateEndpoint: MakeAppCreateEndpoint(svc), + } +} + +type AppCreateRequest struct { + Name string `json:"name"` + Data []byte `json:"data"` +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go new file mode 100755 index 00000000..12a4fe65 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go @@ -0,0 +1,85 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + http2 "net/http" + + "github.com/go-kit/kit/endpoint" + "github.com/go-kit/kit/transport/http" +) + +type httpError struct { + code int +} + +func (e *httpError) Error() string { + return http2.StatusText(e.code) +} +func (e *httpError) StatusCode() int { + return e.code +} +func appCreateErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appCreateErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + if len(middlewares) == 0 { + return next + } + outer := middlewares[0] + others := middlewares[1:] + for i := len(others) - 1; i >= 0; i-- { + next = others[i](next) + } + return outer(next) + } +} +func GenericServerOptions(v ...http.ServerOption) ServerOption { + return func(o *serverOpts) { o.genericServerOption = v } +} + +func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { + return func(o *serverOpts) { o.genericEndpointMiddleware = v } +} + +type ServerOption func(*serverOpts) +type serverOpts struct { + genericServerOption []http.ServerOption + genericEndpointMiddleware []endpoint.Middleware + appCreateServerOption []http.ServerOption + appCreateEndpointMiddleware []endpoint.Middleware + appCreateServerOption []http.ServerOption + appCreateEndpointMiddleware []endpoint.Middleware +} + +func AppCreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appCreateServerOption = opt } +} + +func AppCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appCreateEndpointMiddleware = opt } +} + +func AppCreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appCreateServerOption = opt } +} + +func AppCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appCreateEndpointMiddleware = opt } +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go new file mode 100755 index 00000000..8f0c5c58 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go @@ -0,0 +1,127 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/metrics" + prometheus2 "github.com/go-kit/kit/metrics/prometheus" + "github.com/prometheus/client_golang/prometheus" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" +) + +type instrumentingOpts struct { + requestCount metrics.Counter + requestLatency metrics.Histogram + namespace string + subsystem string +} + +type InstrumentingOption func(*instrumentingOpts) + +func Namespace(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.namespace = v + } +} + +func Subsystem(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.subsystem = v + } +} + +func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestLatency = requestLatency + } +} + +func RequestCount(requestCount metrics.Counter) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestCount = requestCount + } +} + +type App1InstrumentingMiddleware struct { + next app1.App + opts *instrumentingOpts +} + +func (s *App1InstrumentingMiddleware) Create(ctx context.Context, name string, data []byte) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Create").Add(1) + s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Create(ctx, name, data) +} + +func NewInstrumentingApp1Middleware(s app1.App, opts ...InstrumentingOption) app1.App { + i := &App1InstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} + +type App2InstrumentingMiddleware struct { + next app2.App + opts *instrumentingOpts +} + +func (s *App2InstrumentingMiddleware) Create(ctx context.Context, name string, data []byte) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Create").Add(1) + s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Create(ctx, name, data) +} + +func NewInstrumentingApp2Middleware(s app2.App, opts ...InstrumentingOption) app2.App { + i := &App2InstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go new file mode 100755 index 00000000..895ac311 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go @@ -0,0 +1,62 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" +) + +type App1LoggingMiddleware struct { + next app1.App + logger log.Logger +} + +func (s *App1LoggingMiddleware) Create(ctx context.Context, name string, data []byte) error { + var ( + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) + }(time.Now()) + err = s.next.Create(ctx, name, data) + return err +} + +func NewLoggingApp1Middleware(s app1.App, logger log.Logger) app1.App { + return &App1LoggingMiddleware{next: s, logger: logger} +} + +type App2LoggingMiddleware struct { + next app2.App + logger log.Logger +} + +func (s *App2LoggingMiddleware) Create(ctx context.Context, name string, data []byte) error { + var ( + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) + }(time.Now()) + err = s.next.Create(ctx, name, data) + return err +} + +func NewLoggingApp2Middleware(s app2.App, logger log.Logger) app2.App { + return &App2LoggingMiddleware{next: s, logger: logger} +} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json new file mode 100755 index 00000000..572ce022 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/app/create":{"post":{"tags":["App2"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go new file mode 100755 index 00000000..4b6f0a58 --- /dev/null +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go @@ -0,0 +1,119 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "fmt" + "io" + "io/ioutil" + http2 "net/http" + + "github.com/go-kit/kit/transport/http" + "github.com/gorilla/mux" + "github.com/pquerna/ffjson/ffjson" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" + "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" +) + +type errorWrapper struct { + Error string `json:"error"` + Data interface{} `json:"data,omitempty"` +} + +func defaultErrorEncoder(ctx context.Context, err error, w http2.ResponseWriter) { + var errData interface{} + if e, ok := err.(interface{ ErrorData() interface{} }); ok { + errData = e.ErrorData() + } + data, merr := ffjson.Marshal(errorWrapper{Error: err.Error(), Data: errData}) + if merr != nil { + _, _ = w.Write([]byte("unexpected error")) + return + } + w.Header().Set("Content-Type", "application/json; charset=utf-8") + if headerer, ok := err.(http.Headerer); ok { + for k, values := range headerer.Headers() { + for _, v := range values { + w.Header().Add(k, v) + } + } + } + code := http2.StatusInternalServerError + if sc, ok := err.(http.StatusCoder); ok { + code = sc.StatusCode() + } + w.WriteHeader(code) + _, _ = w.Write(data) +} + +func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response interface{}) (err error) { + contentType := "application/json; charset=utf-8" + statusCode := 200 + h := w.Header() + var data []byte + if response != nil { + data, err = ffjson.Marshal(response) + if err != nil { + return err + } + } else { + contentType = "text/plain; charset=utf-8" + statusCode = 201 + } + h.Set("Content-Type", contentType) + w.WriteHeader(statusCode) + w.Write(data) + return nil +} + +// MakeHandlerREST HTTP REST Transport +func MakeHandlerREST(svcApp app1.App, svcApp app2.App, options ...ServerOption) (http2.Handler, error) { + opts := &serverOpts{} + for _, o := range options { + o(opts) + } + opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) + epSetApp1 := MakeAppEndpointSet(svcApp) + epSetApp2 := MakeAppEndpointSet(svcApp) + epSetApp1.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(epSetApp1.CreateEndpoint) + epSetApp2.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(epSetApp2.CreateEndpoint) + r := mux.NewRouter() + r.Methods(http2.MethodPost).Path("/app1/create").Handler(http.NewServer( + epSetApp1.CreateEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req AppCreateRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for AppCreateRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to AppCreateRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appCreateServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/app2/create").Handler(http.NewServer( + epSetApp2.CreateEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req AppCreateRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for AppCreateRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to AppCreateRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appCreateServerOption...)..., + )) + return r, nil +} diff --git a/v2/fixture/ServiceRESTSingle/app/client_gen.go b/v2/fixture/ServiceRESTSingle/app/client_gen.go new file mode 100755 index 00000000..0b093670 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/client_gen.go @@ -0,0 +1,284 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "bytes" + "context" + "fmt" + "io" + "io/ioutil" + "net" + http2 "net/http" + "net/url" + "strconv" + "strings" + "time" + + "github.com/go-kit/kit/transport/http" + "github.com/pquerna/ffjson/ffjson" +) + +func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { + opts := &clientOpts{} + c := &clientAppInterface{} + for _, o := range options { + o(opts) + } + if strings.HasPrefix(tgt, "[") { + host, port, err := net.SplitHostPort(tgt) + if err != nil { + return nil, err + } + tgt = host + ":" + port + } + u, err := url.Parse(tgt) + if err != nil { + return nil, err + } + if u.Scheme == "" { + u.Scheme = "https" + } + c.createEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(CreateRequest) + if !ok { + return fmt.Errorf("couldn't assert request as CreateRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/create" + q := r.URL.Query() + dateStr := req.Date.Format(time.RFC3339) + q.Add("date", dateStr) + r.URL.RawQuery = q.Encode() + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceCreateErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.appInterfaceCreateClientOption...)..., + ).Endpoint() + c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceCreateEndpointMiddleware...))(c.createEndpoint) + c.deleteEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(DeleteRequest) + if !ok { + return fmt.Errorf("couldn't assert request as DeleteRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/delete" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceDeleteErrorDecode(statusCode) + } + var resp DeleteRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to DeleteRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.appInterfaceDeleteClientOption...)..., + ).Endpoint() + c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceDeleteEndpointMiddleware...))(c.deleteEndpoint) + c.getEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(GetRequest) + if !ok { + return fmt.Errorf("couldn't assert request as GetRequest, got %T", request) + } + r.Method = http2.MethodPost + fnameStr := req.Fname + r.URL.Path += fmt.Sprintf("/get/%s", fnameStr) + q := r.URL.Query() + ccStr := strconv.FormatInt(int64(req.Cc), 10) + q.Add("cc", ccStr) + r.URL.RawQuery = q.Encode() + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceGetErrorDecode(statusCode) + } + var resp User + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to GetRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.appInterfaceGetClientOption...)..., + ).Endpoint() + c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetEndpointMiddleware...))(c.getEndpoint) + c.getAllEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(GetAllRequest) + if !ok { + return fmt.Errorf("couldn't assert request as GetAllRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/getAll" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceGetAllErrorDecode(statusCode) + } + var resp []*User + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to GetAllRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.appInterfaceGetAllClientOption...)..., + ).Endpoint() + c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetAllEndpointMiddleware...))(c.getAllEndpoint) + c.startEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + r.Method = http2.MethodPost + r.URL.Path += "/start" + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceStartErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.appInterfaceStartClientOption...)..., + ).Endpoint() + c.startEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceStartEndpointMiddleware...))(c.startEndpoint) + c.testMethodEndpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(TestMethodRequest) + if !ok { + return fmt.Errorf("couldn't assert request as TestMethodRequest, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/testMethod" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceTestMethodErrorDecode(statusCode) + } + var resp map[string]map[int][]string + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, err + } + err = ffjson.Unmarshal(b, &resp) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethodRequest: %s", err) + } + return resp, nil + }, + append(opts.genericClientOption, opts.appInterfaceTestMethodClientOption...)..., + ).Endpoint() + c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodEndpointMiddleware...))(c.testMethodEndpoint) + c.testMethod2Endpoint = http.NewClient( + http2.MethodPost, + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(TestMethod2Request) + if !ok { + return fmt.Errorf("couldn't assert request as TestMethod2Request, got %T", request) + } + r.Method = http2.MethodPost + r.URL.Path += "/testMethod2" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceTestMethod2ErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.appInterfaceTestMethod2ClientOption...)..., + ).Endpoint() + c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + c.testMethodOptionalsEndpoint = http.NewClient( + "GET", + u, + func(_ context.Context, r *http2.Request, request interface{}) error { + req, ok := request.(TestMethodOptionalsRequest) + if !ok { + return fmt.Errorf("couldn't assert request as TestMethodOptionalsRequest, got %T", request) + } + r.Method = "GET" + r.URL.Path += "/testMethodOptionals" + return nil + }, + func(_ context.Context, r *http2.Response) (interface{}, error) { + if statusCode := r.StatusCode; statusCode != http2.StatusOK { + return nil, appInterfaceTestMethodOptionalsErrorDecode(statusCode) + } + return nil, nil + }, + append(opts.genericClientOption, opts.appInterfaceTestMethodOptionalsClientOption...)..., + ).Endpoint() + c.testMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodOptionalsEndpointMiddleware...))(c.testMethodOptionalsEndpoint) + return c, nil +} diff --git a/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go b/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go new file mode 100755 index 00000000..fd8c5475 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go @@ -0,0 +1,186 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/endpoint" + "github.com/go-kit/kit/transport/http" +) + +type ClientOption func(*clientOpts) +type clientOpts struct { + appInterfaceCreateClientOption []http.ClientOption + appInterfaceCreateEndpointMiddleware []endpoint.Middleware + appInterfaceDeleteClientOption []http.ClientOption + appInterfaceDeleteEndpointMiddleware []endpoint.Middleware + appInterfaceGetClientOption []http.ClientOption + appInterfaceGetEndpointMiddleware []endpoint.Middleware + appInterfaceGetAllClientOption []http.ClientOption + appInterfaceGetAllEndpointMiddleware []endpoint.Middleware + appInterfaceStartClientOption []http.ClientOption + appInterfaceStartEndpointMiddleware []endpoint.Middleware + appInterfaceTestMethodClientOption []http.ClientOption + appInterfaceTestMethodEndpointMiddleware []endpoint.Middleware + appInterfaceTestMethod2ClientOption []http.ClientOption + appInterfaceTestMethod2EndpointMiddleware []endpoint.Middleware + appInterfaceTestMethodOptionalsClientOption []http.ClientOption + appInterfaceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware + genericClientOption []http.ClientOption + genericEndpointMiddleware []endpoint.Middleware +} + +func GenericClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.genericClientOption = opt } +} + +func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.genericEndpointMiddleware = opt } +} + +func AppInterfaceCreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceCreateClientOption = opt } +} + +func AppInterfaceCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceCreateEndpointMiddleware = opt } +} + +func AppInterfaceDeleteClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceDeleteClientOption = opt } +} + +func AppInterfaceDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceDeleteEndpointMiddleware = opt } +} + +func AppInterfaceGetClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceGetClientOption = opt } +} + +func AppInterfaceGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceGetEndpointMiddleware = opt } +} + +func AppInterfaceGetAllClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceGetAllClientOption = opt } +} + +func AppInterfaceGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceGetAllEndpointMiddleware = opt } +} + +func AppInterfaceStartClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceStartClientOption = opt } +} + +func AppInterfaceStartClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceStartEndpointMiddleware = opt } +} + +func AppInterfaceTestMethodClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceTestMethodClientOption = opt } +} + +func AppInterfaceTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceTestMethodEndpointMiddleware = opt } +} + +func AppInterfaceTestMethod2ClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceTestMethod2ClientOption = opt } +} + +func AppInterfaceTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceTestMethod2EndpointMiddleware = opt } +} + +func AppInterfaceTestMethodOptionalsClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.appInterfaceTestMethodOptionalsClientOption = opt } +} + +func AppInterfaceTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.appInterfaceTestMethodOptionalsEndpointMiddleware = opt } +} + +type clientAppInterface struct { + createEndpoint endpoint.Endpoint + deleteEndpoint endpoint.Endpoint + getEndpoint endpoint.Endpoint + getAllEndpoint endpoint.Endpoint + startEndpoint endpoint.Endpoint + testMethodEndpoint endpoint.Endpoint + testMethod2Endpoint endpoint.Endpoint + testMethodOptionalsEndpoint endpoint.Endpoint +} + +func (c *clientAppInterface) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { + _, err := c.createEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data, Date: date}) + if err != nil { + return err + } + return nil +} + +func (c *clientAppInterface) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.deleteEndpoint(ctx, DeleteRequest{Id: id}) + if err != nil { + return "", "", err + } + response := resp.(DeleteResponse) + return response.A, response.B, nil +} + +func (c *clientAppInterface) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.getEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) + if err != nil { + return User{}, err + } + response := resp.(User) + return response, nil +} + +func (c *clientAppInterface) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.getAllEndpoint(ctx, GetAllRequest{Members: members}) + if err != nil { + return nil, err + } + response := resp.([]*User) + return response, nil +} + +func (c *clientAppInterface) Start(ctx context.Context) error { + _, err := c.startEndpoint(ctx, nil) + if err != nil { + return err + } + return nil +} + +func (c *clientAppInterface) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.testMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) + if err != nil { + return nil, err + } + response := resp.(map[string]map[int][]string) + return response, nil +} + +func (c *clientAppInterface) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.testMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) + if err != nil { + return err + } + return nil +} + +func (c *clientAppInterface) TestMethodOptionals(ctx context.Context, ns string) error { + _, err := c.testMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns}) + if err != nil { + return err + } + return nil +} diff --git a/v2/fixture/ServiceRESTSingle/app/endpoint_gen.go b/v2/fixture/ServiceRESTSingle/app/endpoint_gen.go new file mode 100755 index 00000000..d47a4940 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/endpoint_gen.go @@ -0,0 +1,173 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/endpoint" +) + +func MakeAppInterfaceCreateEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(CreateRequest) + err := s.Create(ctx, req.NewData, req.Name, req.Data, req.Date) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeAppInterfaceDeleteEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(DeleteRequest) + a, b, err := s.Delete(ctx, req.Id) + if err != nil { + return nil, err + } + return DeleteResponse{A: a, B: b}, nil + } + +} + +func MakeAppInterfaceGetEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(GetRequest) + result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeAppInterfaceGetAllEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(GetAllRequest) + result, err := s.GetAll(ctx, req.Members) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeAppInterfaceStartEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + err := s.Start(ctx) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeAppInterfaceTestMethodEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(TestMethodRequest) + result, err := s.TestMethod(req.Data, req.Ss) + if err != nil { + return nil, err + } + return result, nil + } + +} + +func MakeAppInterfaceTestMethod2Endpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(TestMethod2Request) + err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +func MakeAppInterfaceTestMethodOptionalsEndpoint(s AppInterface) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(TestMethodOptionalsRequest) + err := s.TestMethodOptionals(ctx, req.Ns, req.Options...) + if err != nil { + return nil, err + } + return nil, nil + } + +} + +type AppInterfaceEndpointSet struct { + CreateEndpoint endpoint.Endpoint + DeleteEndpoint endpoint.Endpoint + GetEndpoint endpoint.Endpoint + GetAllEndpoint endpoint.Endpoint + StartEndpoint endpoint.Endpoint + TestMethodEndpoint endpoint.Endpoint + TestMethod2Endpoint endpoint.Endpoint + TestMethodOptionalsEndpoint endpoint.Endpoint +} + +func MakeAppInterfaceEndpointSet(svc AppInterface) AppInterfaceEndpointSet { + return AppInterfaceEndpointSet{ + CreateEndpoint: MakeAppInterfaceCreateEndpoint(svc), + DeleteEndpoint: MakeAppInterfaceDeleteEndpoint(svc), + GetEndpoint: MakeAppInterfaceGetEndpoint(svc), + GetAllEndpoint: MakeAppInterfaceGetAllEndpoint(svc), + StartEndpoint: MakeAppInterfaceStartEndpoint(svc), + TestMethodEndpoint: MakeAppInterfaceTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeAppInterfaceTestMethod2Endpoint(svc), + TestMethodOptionalsEndpoint: MakeAppInterfaceTestMethodOptionalsEndpoint(svc), + } +} + +type CreateRequest struct { + NewData Data `json:"newData"` + Name string `json:"name"` + Data []byte `json:"data"` + Date time.Time `json:"date"` +} +type DeleteRequest struct { + Id uint `json:"id"` +} +type DeleteResponse struct { + A string `json:"a"` + B string `json:"b"` +} +type GetRequest struct { + Id int `json:"id"` + Name string `json:"name"` + Fname string `json:"fname"` + Price float32 `json:"price"` + N int `json:"n"` + B int `json:"b"` + Cc int `json:"cc"` +} +type GetAllRequest struct { + Members Members `json:"members"` +} +type TestMethodRequest struct { + Data map[string]interface{} `json:"data"` + Ss interface{} `json:"ss"` +} +type TestMethod2Request struct { + Ns string `json:"ns"` + Utype string `json:"utype"` + User string `json:"user"` + Restype string `json:"restype"` + Resource string `json:"resource"` + Permission string `json:"permission"` +} +type TestMethodOptionalsRequest struct { + Ns string `json:"ns"` + Options []Option `json:"options"` +} diff --git a/v2/fixture/ServiceRESTSingle/app/http_gen.go b/v2/fixture/ServiceRESTSingle/app/http_gen.go new file mode 100755 index 00000000..ccf1302b --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/http_gen.go @@ -0,0 +1,193 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + http2 "net/http" + + "github.com/go-kit/kit/endpoint" + "github.com/go-kit/kit/transport/http" +) + +type httpError struct { + code int +} + +func (e *httpError) Error() string { + return http2.StatusText(e.code) +} +func (e *httpError) StatusCode() int { + return e.code +} +func appInterfaceCreateErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceDeleteErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceGetErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceGetAllErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceStartErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceTestMethodErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceTestMethod2ErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func appInterfaceTestMethodOptionalsErrorDecode(code int) (err error) { + switch code { + default: + err = &httpError{code: code} + } + return +} + +func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + if len(middlewares) == 0 { + return next + } + outer := middlewares[0] + others := middlewares[1:] + for i := len(others) - 1; i >= 0; i-- { + next = others[i](next) + } + return outer(next) + } +} +func GenericServerOptions(v ...http.ServerOption) ServerOption { + return func(o *serverOpts) { o.genericServerOption = v } +} + +func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { + return func(o *serverOpts) { o.genericEndpointMiddleware = v } +} + +type ServerOption func(*serverOpts) +type serverOpts struct { + genericServerOption []http.ServerOption + genericEndpointMiddleware []endpoint.Middleware + appInterfaceCreateServerOption []http.ServerOption + appInterfaceCreateEndpointMiddleware []endpoint.Middleware + appInterfaceDeleteServerOption []http.ServerOption + appInterfaceDeleteEndpointMiddleware []endpoint.Middleware + appInterfaceGetServerOption []http.ServerOption + appInterfaceGetEndpointMiddleware []endpoint.Middleware + appInterfaceGetAllServerOption []http.ServerOption + appInterfaceGetAllEndpointMiddleware []endpoint.Middleware + appInterfaceStartServerOption []http.ServerOption + appInterfaceStartEndpointMiddleware []endpoint.Middleware + appInterfaceTestMethodServerOption []http.ServerOption + appInterfaceTestMethodEndpointMiddleware []endpoint.Middleware + appInterfaceTestMethod2ServerOption []http.ServerOption + appInterfaceTestMethod2EndpointMiddleware []endpoint.Middleware + appInterfaceTestMethodOptionalsServerOption []http.ServerOption + appInterfaceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware +} + +func AppInterfaceCreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceCreateServerOption = opt } +} + +func AppInterfaceCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceCreateEndpointMiddleware = opt } +} + +func AppInterfaceDeleteServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceDeleteServerOption = opt } +} + +func AppInterfaceDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceDeleteEndpointMiddleware = opt } +} + +func AppInterfaceGetServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceGetServerOption = opt } +} + +func AppInterfaceGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceGetEndpointMiddleware = opt } +} + +func AppInterfaceGetAllServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceGetAllServerOption = opt } +} + +func AppInterfaceGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceGetAllEndpointMiddleware = opt } +} + +func AppInterfaceStartServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceStartServerOption = opt } +} + +func AppInterfaceStartServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceStartEndpointMiddleware = opt } +} + +func AppInterfaceTestMethodServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceTestMethodServerOption = opt } +} + +func AppInterfaceTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceTestMethodEndpointMiddleware = opt } +} + +func AppInterfaceTestMethod2ServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceTestMethod2ServerOption = opt } +} + +func AppInterfaceTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceTestMethod2EndpointMiddleware = opt } +} + +func AppInterfaceTestMethodOptionalsServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.appInterfaceTestMethodOptionalsServerOption = opt } +} + +func AppInterfaceTestMethodOptionalsServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.appInterfaceTestMethodOptionalsEndpointMiddleware = opt } +} diff --git a/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go b/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go new file mode 100755 index 00000000..de29e7c7 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go @@ -0,0 +1,142 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/metrics" + prometheus2 "github.com/go-kit/kit/metrics/prometheus" + "github.com/prometheus/client_golang/prometheus" +) + +type instrumentingOpts struct { + requestCount metrics.Counter + requestLatency metrics.Histogram + namespace string + subsystem string +} + +type InstrumentingOption func(*instrumentingOpts) + +func Namespace(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.namespace = v + } +} + +func Subsystem(v string) InstrumentingOption { + return func(o *instrumentingOpts) { + o.subsystem = v + } +} + +func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestLatency = requestLatency + } +} + +func RequestCount(requestCount metrics.Counter) InstrumentingOption { + return func(o *instrumentingOpts) { + o.requestCount = requestCount + } +} + +type AppInterfaceInstrumentingMiddleware struct { + next AppInterface + opts *instrumentingOpts +} + +func (s *AppInterfaceInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Create").Add(1) + s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Create(ctx, newData, name, data, date) +} + +func (s *AppInterfaceInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Delete").Add(1) + s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Delete(ctx, id) +} + +func (s *AppInterfaceInstrumentingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Get").Add(1) + s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Get(ctx, id, name, fname, price, n, b, cc) +} + +func (s *AppInterfaceInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "GetAll").Add(1) + s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.GetAll(ctx, members) +} + +func (s *AppInterfaceInstrumentingMiddleware) Start(ctx context.Context) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "Start").Add(1) + s.opts.requestLatency.With("method", "Start").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.Start(ctx) +} + +func (s *AppInterfaceInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod").Add(1) + s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod(data, ss) +} + +func (s *AppInterfaceInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethod2").Add(1) + s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) +} + +func (s *AppInterfaceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethodOptionals").Add(1) + s.opts.requestLatency.With("method", "TestMethodOptionals").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethodOptionals(ctx, ns) +} + +func NewInstrumentingAppInterfaceMiddleware(s AppInterface, opts ...InstrumentingOption) AppInterface { + i := &AppInterfaceInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} + for _, o := range opts { + o(i.opts) + } + if i.opts.requestCount == nil { + i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_count", + Help: "Number of requests received.", + }, []string{"method"}) + + } + if i.opts.requestLatency == nil { + i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ + Namespace: i.opts.namespace, + Subsystem: i.opts.subsystem, + Name: "request_latency_microseconds", + Help: "Total duration of requests in microseconds.", + }, []string{"method"}) + + } + return i +} diff --git a/v2/fixture/ServiceRESTSingle/app/logging_gen.go b/v2/fixture/ServiceRESTSingle/app/logging_gen.go new file mode 100755 index 00000000..38d66d21 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/logging_gen.go @@ -0,0 +1,104 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" +) + +type AppInterfaceLoggingMiddleware struct { + next AppInterface + logger log.Logger +} + +func (s *AppInterfaceLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { + var ( + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "date", date, "err", logErr) + }(time.Now()) + err = s.next.Create(ctx, newData, name, data, date) + return err +} + +func (s *AppInterfaceLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { + var ( + a string + b string + err error + ) + a, b, err = s.next.Delete(ctx, id) + return a, b, err +} + +func (s *AppInterfaceLoggingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + var ( + result User + err error + ) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + s.logger.Log("method", "Get", "took", time.Since(now), "id", id, "name", name, "fname", fname, "price", price, "n", n, "b", b, "cc", cc, "result", result.LogParams(), "err", logErr) + }(time.Now()) + result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) + return result, err +} + +func (s *AppInterfaceLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { + var ( + result []*User + err error + ) + result, err = s.next.GetAll(ctx, members) + return result, err +} + +func (s *AppInterfaceLoggingMiddleware) Start(ctx context.Context) error { + var ( + err error + ) + err = s.next.Start(ctx) + return err +} + +func (s *AppInterfaceLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + var ( + result map[string]map[int][]string + err error + ) + result, err = s.next.TestMethod(data, ss) + return result, err +} + +func (s *AppInterfaceLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + var ( + err error + ) + err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) + return err +} + +func (s *AppInterfaceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { + var ( + err error + ) + err = s.next.TestMethodOptionals(ctx, ns) + return err +} + +func NewLoggingAppInterfaceMiddleware(s AppInterface, logger log.Logger) AppInterface { + return &AppInterfaceLoggingMiddleware{next: s, logger: logger} +} diff --git a/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json new file mode 100755 index 00000000..d367fe1a --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-optionals":{"get":{"summary":"TestMethodOptionals","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceRESTSingle/app/server_gen.go b/v2/fixture/ServiceRESTSingle/app/server_gen.go new file mode 100755 index 00000000..f6dadae2 --- /dev/null +++ b/v2/fixture/ServiceRESTSingle/app/server_gen.go @@ -0,0 +1,229 @@ +//+build !swipe + +// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. + +package app + +import ( + "context" + "fmt" + "io" + "io/ioutil" + http2 "net/http" + "strconv" + "time" + + "github.com/go-kit/kit/transport/http" + "github.com/gorilla/mux" + "github.com/pquerna/ffjson/ffjson" +) + +type errorWrapper struct { + Error string `json:"error"` + Data interface{} `json:"data,omitempty"` +} + +func defaultErrorEncoder(ctx context.Context, err error, w http2.ResponseWriter) { + var errData interface{} + if e, ok := err.(interface{ ErrorData() interface{} }); ok { + errData = e.ErrorData() + } + data, merr := ffjson.Marshal(errorWrapper{Error: err.Error(), Data: errData}) + if merr != nil { + _, _ = w.Write([]byte("unexpected error")) + return + } + w.Header().Set("Content-Type", "application/json; charset=utf-8") + if headerer, ok := err.(http.Headerer); ok { + for k, values := range headerer.Headers() { + for _, v := range values { + w.Header().Add(k, v) + } + } + } + code := http2.StatusInternalServerError + if sc, ok := err.(http.StatusCoder); ok { + code = sc.StatusCode() + } + w.WriteHeader(code) + _, _ = w.Write(data) +} + +func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response interface{}) (err error) { + contentType := "application/json; charset=utf-8" + statusCode := 200 + h := w.Header() + var data []byte + if response != nil { + data, err = ffjson.Marshal(response) + if err != nil { + return err + } + } else { + contentType = "text/plain; charset=utf-8" + statusCode = 201 + } + h.Set("Content-Type", contentType) + w.WriteHeader(statusCode) + w.Write(data) + return nil +} + +// MakeHandlerREST HTTP REST Transport +func MakeHandlerREST(svcAppInterface AppInterface, options ...ServerOption) (http2.Handler, error) { + opts := &serverOpts{} + for _, o := range options { + o(opts) + } + opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) + epSet := MakeAppInterfaceEndpointSet(svcAppInterface) + epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceCreateEndpointMiddleware...))(epSet.CreateEndpoint) + epSet.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceDeleteEndpointMiddleware...))(epSet.DeleteEndpoint) + epSet.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetEndpointMiddleware...))(epSet.GetEndpoint) + epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) + epSet.StartEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceStartEndpointMiddleware...))(epSet.StartEndpoint) + epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) + epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) + epSet.TestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodOptionalsEndpointMiddleware...))(epSet.TestMethodOptionalsEndpoint) + r := mux.NewRouter() + r.Methods(http2.MethodPost).Path("/create").Handler(http.NewServer( + epSet.CreateEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req CreateRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for CreateRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to CreateRequest: %w", err) + } + q := r.URL.Query() + tmpdate := q.Get("date") + if tmpdate != "" { + dateResult, err := time.Parse(time.RFC3339, tmpdate) + if err != nil { + return nil, err + } + req.Date = dateResult + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceCreateServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/delete").Handler(http.NewServer( + epSet.DeleteEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req DeleteRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for DeleteRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to DeleteRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceDeleteServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/get/{fname}").Handler(http.NewServer( + epSet.GetEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req GetRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for GetRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to GetRequest: %w", err) + } + vars := mux.Vars(r) + q := r.URL.Query() + req.Fname = vars["fname"] + tmpcc := q.Get("cc") + if tmpcc != "" { + ccInt, err := strconv.Atoi(tmpcc) + if err != nil { + return nil, err + } + req.Cc = int(ccInt) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceGetServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/getall").Handler(http.NewServer( + epSet.GetAllEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req GetAllRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for GetAllRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to GetAllRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceGetAllServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/start").Handler(http.NewServer( + epSet.StartEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + return nil, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceStartServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/testmethod").Handler(http.NewServer( + epSet.TestMethodEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req TestMethodRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for TestMethodRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethodRequest: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceTestMethodServerOption...)..., + )) + r.Methods(http2.MethodPost).Path("/testmethod2").Handler(http.NewServer( + epSet.TestMethod2Endpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req TestMethod2Request + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for TestMethod2Request: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethod2Request: %w", err) + } + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceTestMethod2ServerOption...)..., + )) + r.Methods("GET").Path("/testmethodoptionals").Handler(http.NewServer( + epSet.TestMethodOptionalsEndpoint, + func(ctx context.Context, r *http2.Request) (interface{}, error) { + var req TestMethodOptionalsRequest + return req, nil + }, + encodeResponseHTTP, + append(opts.genericServerOption, opts.appInterfaceTestMethodOptionalsServerOption...)..., + )) + return r, nil +} From c5d7f71bb878b9c9b4b03a90fa9e75a85a4166a6 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 09:43:43 +0300 Subject: [PATCH 168/293] fix: error when generating logging in gateway if there are identical interface names --- v2/internal/interface/generator/logging.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2/internal/interface/generator/logging.go b/v2/internal/interface/generator/logging.go index 1788a5ae..3c84acc4 100644 --- a/v2/internal/interface/generator/logging.go +++ b/v2/internal/interface/generator/logging.go @@ -41,8 +41,8 @@ func (g *logging) Process(ctx context.Context) error { loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - name := iface.Name() + "LoggingMiddleware" - constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.Name()) + name := iface.NameExport() + "LoggingMiddleware" + constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.NameExport()) g.WriteTypeStruct( name, From c0fcd289790b1673e83f2ec8c5fb19b2994a7ece Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 09:44:36 +0300 Subject: [PATCH 169/293] test: added check for the number of generated files --- v2/gen_test.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/v2/gen_test.go b/v2/gen_test.go index 5c56eefc..76ef15f3 100644 --- a/v2/gen_test.go +++ b/v2/gen_test.go @@ -33,7 +33,7 @@ func newGeneratorExecutor(wd string) ue.GenerationExecutor { } func TestSwipe(t *testing.T) { - const testRoot = "fixtures" + const testRoot = "fixture" testdataEnts, err := ioutil.ReadDir(testRoot) if err != nil { @@ -64,15 +64,17 @@ func TestSwipe(t *testing.T) { } } - // clear all before generated files. - _ = filepath.Walk(test.testCasePath, func(path string, info os.FileInfo, err error) error { - if !info.IsDir() { - if strings.Contains(info.Name(), "_gen") { - _ = os.Remove(path) + if *record { + // clear all before generated files. + _ = filepath.Walk(test.testCasePath, func(path string, info os.FileInfo, err error) error { + if !info.IsDir() { + if strings.Contains(info.Name(), "_gen") { + _ = os.Remove(path) + } } - } - return nil - }) + return nil + }) + } for _, result := range results { if len(result.Errs) > 0 { @@ -99,11 +101,11 @@ func TestSwipe(t *testing.T) { } } } - //if !*record && len(test.expectedOutput) > 0 { - //for _, expectedContent := range test.expectedOutput { - //t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) - //} - //} + if !*record && len(test.expectedOutput) > 0 { + for _, expectedContent := range test.expectedOutput { + t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) + } + } }) } } From 97c2ccf5759d8c4f36d17f7f25b3c41b407c9cab Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 10:13:49 +0300 Subject: [PATCH 170/293] feat: added support for optional parameters in the interface --- .../ServiceJSONRPCSingle/app/client_gen.go | 26 ++++++++ .../app/client_jsonrpc_gen.js | 25 ++++++++ .../app/client_struct_gen.go | 59 ++++++++++++------- .../ServiceJSONRPCSingle/app/endpoint_gen.go | 42 +++++++++---- .../ServiceJSONRPCSingle/app/http_gen.go | 52 +++++++++++----- .../app/instrumenting_gen.go | 8 +++ .../app/jsonrpc_doc_gen.md | 15 +++++ .../ServiceJSONRPCSingle/app/logging_gen.go | 8 +++ .../app/openapi_jsonrpc_gen.json | 2 +- .../ServiceJSONRPCSingle/app/server_gen.go | 15 +++++ .../ServiceJSONRPCSingle/app/service.go | 9 +++ v2/internal/domain/model/service.go | 32 +++++----- v2/internal/interface/gateway/service.go | 11 +++- v2/internal/interface/generator/endpoint.go | 14 +++++ .../interface/generator/jsonrpc_go_client.go | 11 ++-- .../interface/generator/jsonrpc_js_client.go | 31 +++++++--- .../interface/generator/jsonrpc_server.go | 6 +- v2/swipe.go | 2 +- 18 files changed, 290 insertions(+), 78 deletions(-) diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go index e7b83ce2..5c75a8aa 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go @@ -216,5 +216,31 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., ).Endpoint() c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + opts.interfaceBTestMethodOptionalsClientOption = append( + opts.interfaceBTestMethodOptionalsClientOption, + jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { + req, ok := obj.(TestMethodOptionalsRequest) + if !ok { + return nil, fmt.Errorf("couldn't assert request as TestMethodOptionalsRequest, got %T", obj) + } + b, err := ffjson.Marshal(req) + if err != nil { + return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) + } + return b, nil + }), + jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { + if response.Error != nil { + return nil, interfaceBTestMethodOptionalsErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + } + return nil, nil + }), + ) + c.testMethodOptionalsEndpoint = jsonrpc.NewClient( + u, + "service.testMethodOptionals", + append(opts.genericClientOption, opts.interfaceBTestMethodOptionalsClientOption...)..., + ).Endpoint() + c.testMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodOptionalsEndpointMiddleware...))(c.testMethodOptionalsEndpoint) return c, nil } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index d37fc098..735f9e1a 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -145,6 +145,11 @@ class JSONRPCScheduler { * @property {string} id */ +/** + * @typedef {Object} OptionService + * @property {string} name + */ + class JSONRPCClientService { constructor(transport) { this.scheduler = new JSONRPCScheduler(transport); @@ -254,6 +259,20 @@ class JSONRPCClientService { throw interfaceBTestMethod2ConvertError(e); }); } + /** + * @param {string} ns + * @param {...OptionService} options + **/ + testMethodOptionals(ns, ...options) { + return this.scheduler + .__scheduleRequest("service.testMethodOptionals", { + ns: ns, + options: options + }) + .catch((e) => { + throw interfaceBTestMethodOptionalsConvertError(e); + }); + } } export default JSONRPCClientService; @@ -301,3 +320,9 @@ function interfaceBTestMethod2ConvertError(e) { return new JSONRPCError(e.message, "UnknownError", e.code, e.data); } } +function interfaceBTestMethodOptionalsConvertError(e) { + switch (e.code) { + default: + return new JSONRPCError(e.message, "UnknownError", e.code, e.data); + } +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go index db8fb9f9..38f82431 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go @@ -14,20 +14,22 @@ import ( type ClientOption func(*clientOpts) type clientOpts struct { - interfaceBCreateClientOption []jsonrpc.ClientOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteClientOption []jsonrpc.ClientOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetClientOption []jsonrpc.ClientOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllClientOption []jsonrpc.ClientOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodClientOption []jsonrpc.ClientOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ClientOption []jsonrpc.ClientOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware - genericClientOption []jsonrpc.ClientOption - genericEndpointMiddleware []endpoint.Middleware + interfaceBCreateClientOption []jsonrpc.ClientOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteClientOption []jsonrpc.ClientOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetClientOption []jsonrpc.ClientOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllClientOption []jsonrpc.ClientOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodClientOption []jsonrpc.ClientOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ClientOption []jsonrpc.ClientOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + interfaceBTestMethodOptionalsClientOption []jsonrpc.ClientOption + interfaceBTestMethodOptionalsEndpointMiddleware []endpoint.Middleware + genericClientOption []jsonrpc.ClientOption + genericEndpointMiddleware []endpoint.Middleware } func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { @@ -86,13 +88,22 @@ func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } } +func InterfaceBTestMethodOptionalsClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodOptionalsClientOption = opt } +} + +func InterfaceBTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.interfaceBTestMethodOptionalsEndpointMiddleware = opt } +} + type clientInterfaceB struct { - createEndpoint endpoint.Endpoint - deleteEndpoint endpoint.Endpoint - getEndpoint endpoint.Endpoint - getAllEndpoint endpoint.Endpoint - testMethodEndpoint endpoint.Endpoint - testMethod2Endpoint endpoint.Endpoint + createEndpoint endpoint.Endpoint + deleteEndpoint endpoint.Endpoint + getEndpoint endpoint.Endpoint + getAllEndpoint endpoint.Endpoint + testMethodEndpoint endpoint.Endpoint + testMethod2Endpoint endpoint.Endpoint + testMethodOptionalsEndpoint endpoint.Endpoint } func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { @@ -146,3 +157,11 @@ func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype str } return nil } + +func (c *clientInterfaceB) TestMethodOptionals(ctx context.Context, ns string) error { + _, err := c.testMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns}) + if err != nil { + return err + } + return nil +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go index 88e2edc4..e8dbdf97 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go @@ -83,23 +83,37 @@ func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { } +func MakeInterfaceBTestMethodOptionalsEndpoint(s InterfaceB) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (interface{}, error) { + req := request.(TestMethodOptionalsRequest) + err := s.TestMethodOptionals(ctx, req.Ns, req.Options...) + if err != nil { + return nil, err + } + return nil, nil + } + +} + type InterfaceBEndpointSet struct { - CreateEndpoint endpoint.Endpoint - DeleteEndpoint endpoint.Endpoint - GetEndpoint endpoint.Endpoint - GetAllEndpoint endpoint.Endpoint - TestMethodEndpoint endpoint.Endpoint - TestMethod2Endpoint endpoint.Endpoint + CreateEndpoint endpoint.Endpoint + DeleteEndpoint endpoint.Endpoint + GetEndpoint endpoint.Endpoint + GetAllEndpoint endpoint.Endpoint + TestMethodEndpoint endpoint.Endpoint + TestMethod2Endpoint endpoint.Endpoint + TestMethodOptionalsEndpoint endpoint.Endpoint } func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { return InterfaceBEndpointSet{ - CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), - DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), - GetEndpoint: MakeInterfaceBGetEndpoint(svc), - GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), - TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), + CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), + DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), + GetEndpoint: MakeInterfaceBGetEndpoint(svc), + GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), + TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), + TestMethodOptionalsEndpoint: MakeInterfaceBTestMethodOptionalsEndpoint(svc), } } @@ -139,3 +153,7 @@ type TestMethod2Request struct { Resource string `json:"resource"` Permission string `json:"permission"` } +type TestMethodOptionalsRequest struct { + Ns string `json:"ns"` + Options []OptionService `json:"options"` +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go index d674b4f6..266d2e4e 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go @@ -116,6 +116,20 @@ func interfaceBTestMethod2ErrorDecode(code int, message string, data interface{} return } +func interfaceBTestMethodOptionalsErrorDecode(code int, message string, data interface{}) (err error) { + switch code { + default: + err = &httpError{code: code} + } + if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { + err.SetErrorData(data) + } + if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { + err.SetErrorMessage(message) + } + return +} + func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { return func(next endpoint.Endpoint) endpoint.Endpoint { if len(middlewares) == 0 { @@ -139,20 +153,22 @@ func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { type ServerOption func(*serverOpts) type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - interfaceBCreateServerOption []jsonrpc.ServerOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteServerOption []jsonrpc.ServerOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetServerOption []jsonrpc.ServerOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllServerOption []jsonrpc.ServerOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodServerOption []jsonrpc.ServerOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ServerOption []jsonrpc.ServerOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + interfaceBCreateServerOption []jsonrpc.ServerOption + interfaceBCreateEndpointMiddleware []endpoint.Middleware + interfaceBDeleteServerOption []jsonrpc.ServerOption + interfaceBDeleteEndpointMiddleware []endpoint.Middleware + interfaceBGetServerOption []jsonrpc.ServerOption + interfaceBGetEndpointMiddleware []endpoint.Middleware + interfaceBGetAllServerOption []jsonrpc.ServerOption + interfaceBGetAllEndpointMiddleware []endpoint.Middleware + interfaceBTestMethodServerOption []jsonrpc.ServerOption + interfaceBTestMethodEndpointMiddleware []endpoint.Middleware + interfaceBTestMethod2ServerOption []jsonrpc.ServerOption + interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + interfaceBTestMethodOptionalsServerOption []jsonrpc.ServerOption + interfaceBTestMethodOptionalsEndpointMiddleware []endpoint.Middleware } func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { @@ -202,3 +218,11 @@ func InterfaceBTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOptio func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } } + +func InterfaceBTestMethodOptionalsServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodOptionalsServerOption = opt } +} + +func InterfaceBTestMethodOptionalsServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.interfaceBTestMethodOptionalsEndpointMiddleware = opt } +} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go index 6a201932..f8a72c86 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go @@ -100,6 +100,14 @@ func (s *ServiceInstrumentingMiddleware) TestMethod2(ctx context.Context, ns str return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) } +func (s *ServiceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { + defer func(begin time.Time) { + s.opts.requestCount.With("method", "TestMethodOptionals").Add(1) + s.opts.requestLatency.With("method", "TestMethodOptionals").Observe(time.Since(begin).Seconds()) + }(time.Now()) + return s.next.TestMethodOptionals(ctx, ns) +} + func NewInstrumentingServiceMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { i := &ServiceInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} for _, o := range opts { diff --git a/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md index 67310683..2f2821bf 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ b/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md @@ -12,6 +12,8 @@ TestMethod2 +TestMethodOptionals + ### Create(newData, name, data) ⇒void new item of item. @@ -106,6 +108,19 @@ |restype|string|| |resource|string|| |permission|string|| +### TestMethodOptionals(ns) ⇒void + + + + + +**Throws**: + + + +| Param | Type | Description | +|------|------|------| +|ns|string|| ## Members ### GeoJSON diff --git a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go index 08c29166..8f95b32a 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go @@ -84,6 +84,14 @@ func (s *ServiceLoggingMiddleware) TestMethod2(ctx context.Context, ns string, u return err } +func (s *ServiceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { + var ( + err error + ) + err = s.next.TestMethodOptionals(ctx, ns) + return err +} + func NewLoggingServiceMiddleware(s InterfaceB, logger log.Logger) InterfaceB { return &ServiceLoggingMiddleware{next: s, logger: logger} } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json index 3f5cc945..0d1c0861 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ b/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethodOptionals":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethodOptionals"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go index 32af243f..f45558d6 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go @@ -123,6 +123,20 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json Encode: encodeResponseJSONRPC, } } + if ep.TestMethodOptionalsEndpoint != nil { + ecm[namespace+"testMethodOptionals"] = jsonrpc.EndpointCodec{ + Endpoint: ep.TestMethodOptionalsEndpoint, + Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { + var req TestMethodOptionalsRequest + err := ffjson.Unmarshal(msg, &req) + if err != nil { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethodOptionalsRequest: %s", err) + } + return req, nil + }, + Encode: encodeResponseJSONRPC, + } + } return ecm } @@ -139,6 +153,7 @@ func MakeHandlerJSONRPC(svcInterfaceB InterfaceB, options ...ServerOption) (http epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) + epSet.TestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodOptionalsEndpointMiddleware...))(epSet.TestMethodOptionalsEndpoint) r := mux.NewRouter() handler := jsonrpc.NewServer(MakeInterfaceBEndpointCodecMap(epSet), opts.genericServerOption...) r.Methods("POST").Path("").Handler(handler) diff --git a/v2/fixture/ServiceJSONRPCSingle/app/service.go b/v2/fixture/ServiceJSONRPCSingle/app/service.go index 18246085..0b407e24 100644 --- a/v2/fixture/ServiceJSONRPCSingle/app/service.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/service.go @@ -87,6 +87,10 @@ type User struct { UpdatedAt time.Time `json:"updated_at"` } +type OptionService struct { + Name string `json:"name"` +} + type InterfaceB interface { // Create new item of item. Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) @@ -98,6 +102,7 @@ type InterfaceB interface { Delete(ctx context.Context, id uint) (a string, b string, err error) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error + TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error } type serviceB struct { @@ -126,3 +131,7 @@ func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (stat func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { panic("implement me") } + +func (s *serviceB) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { + panic("implement me") +} diff --git a/v2/internal/domain/model/service.go b/v2/internal/domain/model/service.go index 73d2e549..b5a4d3ae 100644 --- a/v2/internal/domain/model/service.go +++ b/v2/internal/domain/model/service.go @@ -123,21 +123,23 @@ type DeclType struct { } type ServiceMethod struct { - Type *stdtypes.Func - Name string - NameExport string - NameUnExport string - LcName string - NameRequest string - NameResponse string - Params VarSlice - Results VarSlice - Comments []string - ParamCtx *stdtypes.Var - ReturnErr *stdtypes.Var - ResultsNamed bool - Errors HTTPErrors - T stdtypes.Type + Type *stdtypes.Func + Name string + NameExport string + NameUnExport string + LcName string + NameRequest string + NameResponse string + Params VarSlice + Results VarSlice + Comments []string + ParamCtx *stdtypes.Var + ParamVariadic *stdtypes.Var + ReturnErr *stdtypes.Var + ResultsNamed bool + Variadic bool + Errors HTTPErrors + T stdtypes.Type } type ReqRespFunc struct { diff --git a/v2/internal/interface/gateway/service.go b/v2/internal/interface/gateway/service.go index 62aeb11d..964d796b 100644 --- a/v2/internal/interface/gateway/service.go +++ b/v2/internal/interface/gateway/service.go @@ -338,6 +338,7 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] NameRequest: nameRequest, NameResponse: nameResponse, Comments: comments, + Variadic: sig.Variadic(), } if g.MethodOption(sm).Exclude { @@ -380,12 +381,18 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] }) var ( - resultOffset, paramOffset int + resultOffset, variadicOffset, paramOffset int ) if types.ContainsContext(sig.Params()) { sm.ParamCtx = sig.Params().At(0) paramOffset = 1 } + + if sm.Variadic { + sm.ParamVariadic = sig.Params().At(sig.Params().Len() - 1) + variadicOffset = 1 + } + if types.ContainsError(sig.Results()) { sm.ReturnErr = sig.Results().At(sig.Results().Len() - 1) resultOffset = 1 @@ -399,7 +406,7 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] return nil, errors.NotePosition(o.Position, fmt.Errorf("interface method with unnamed results cannot be greater than 1")) } - for j := paramOffset; j < sig.Params().Len(); j++ { + for j := paramOffset; j < sig.Params().Len()-variadicOffset; j++ { sm.Params = append(sm.Params, sig.Params().At(j)) } for j := 0; j < sig.Results().Len()-resultOffset; j++ { diff --git a/v2/internal/interface/generator/endpoint.go b/v2/internal/interface/generator/endpoint.go index a6783e87..cbd91bec 100644 --- a/v2/internal/interface/generator/endpoint.go +++ b/v2/internal/interface/generator/endpoint.go @@ -70,6 +70,9 @@ func (g *endpoint) Process(ctx context.Context) error { for _, p := range m.Params { g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(p.Name()), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(p.Name())) } + if m.ParamVariadic != nil { + g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(m.ParamVariadic.Name()), stdtypes.TypeString(m.ParamVariadic.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(m.ParamVariadic.Name())) + } g.W("}\n") } @@ -122,12 +125,22 @@ func (g *endpoint) writeEndpointMake() { if m.ParamCtx != nil { callParams = append(callParams, "ctx") } + + methodParams := model.VarSlice{} + methodParams = append(methodParams, m.Params...) + callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { name := p.Name() name = stdstrings.ToUpper(name[:1]) + name[1:] return []string{"req." + name} }, nil)...) + if m.ParamVariadic != nil { + name := m.ParamVariadic.Name() + name = stdstrings.ToUpper(name[:1]) + name[1:] + callParams = append(callParams, "req."+name+"...") + } + if len(m.Params) > 0 { g.W("req := request.(%s)\n", m.NameRequest) } @@ -153,6 +166,7 @@ func (g *endpoint) writeEndpointMake() { if len(m.Results) > 0 || m.ReturnErr != nil { g.W(" := ") } + g.WriteFuncCall("s", m.Name, callParams) if m.ReturnErr != nil { g.WriteCheckErr(func() { diff --git a/v2/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go index 8243707e..b0762f69 100644 --- a/v2/internal/interface/generator/jsonrpc_go_client.go +++ b/v2/internal/interface/generator/jsonrpc_go_client.go @@ -47,12 +47,13 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { clientType := "client" + iface.Name() typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - var name string - if g.options.Interfaces().Len() > 1 { - name = iface.Name() - } + g.W("// Deprecated\nfunc NewClient%s(tgt string", g.options.Prefix()) + g.W(" ,options ...ClientOption") + g.W(") (%s, error) {\n", typeStr) + g.W("return NewClient%s%s(tgt, options...)", g.options.Prefix(), iface.Name()) + g.W("}\n") - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), name) + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.Name()) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") diff --git a/v2/internal/interface/generator/jsonrpc_js_client.go b/v2/internal/interface/generator/jsonrpc_js_client.go index e11d00b0..4326767d 100644 --- a/v2/internal/interface/generator/jsonrpc_js_client.go +++ b/v2/internal/interface/generator/jsonrpc_js_client.go @@ -2,6 +2,9 @@ package generator import ( "context" + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" "golang.org/x/tools/go/types/typeutil" @@ -120,6 +123,7 @@ type jsonRPCJSClientOptionsGateway interface { type jsonRPCJSClient struct { writer.BaseWriter options jsonRPCJSClientOptionsGateway + i *importer.Importer } func (g *jsonRPCJSClient) Prepare(_ context.Context) error { @@ -158,6 +162,15 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { tdc.Visit(p.Type()) mw.W("* @param {%s} %s\n", buf.String(), p.Name()) } + if m.ParamVariadic != nil { + vt := m.ParamVariadic.Type() + if t, ok := vt.(*stdtypes.Slice); ok { + vt = t.Elem() + } + tdc.Visit(vt) + + mw.W("* @param {...%s} %s\n", stdtypes.TypeString(vt, g.i.QualifyPkg), m.ParamVariadic.Name()) + } if len(m.Results) > 0 { mw.W("* @return {PromiseLike<") @@ -175,12 +188,9 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { if m.ResultsNamed { mw.W("%s: ", p.Name()) } - buf := new(writer.BaseWriter) typevisitor.JSTypeVisitor(buf).Visit(p.Type()) - tdc.Visit(p.Type()) - mw.W(buf.String()) } if m.ResultsNamed || mopt.WrapResponse.Enable { @@ -198,6 +208,10 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } mw.W(p.Name()) } + if m.ParamVariadic != nil { + mw.W(", ...%s", m.ParamVariadic.Name()) + } + var prefix string if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { prefix = iface.NameUnExport() + "." @@ -212,6 +226,9 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } mw.W("%[1]s:%[1]s", p.Name()) } + if m.ParamVariadic != nil { + mw.W(",%[1]s:%[1]s", m.ParamVariadic.Name()) + } mw.W("}).catch(e => { throw ") if iface.External() { @@ -313,10 +330,6 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { return nil } -func (g *jsonRPCJSClient) Imports() []string { - return nil -} - func (g *jsonRPCJSClient) PkgName() string { return "" } @@ -329,6 +342,10 @@ func (g *jsonRPCJSClient) Filename() string { return "client_jsonrpc_gen.js" } +func (g *jsonRPCJSClient) SetImporter(i *importer.Importer) { + g.i = i +} + func NewJsonRPCJSClient(options jsonRPCJSClientOptionsGateway) generator.Generator { return &jsonRPCJSClient{ options: options, diff --git a/v2/internal/interface/generator/jsonrpc_server.go b/v2/internal/interface/generator/jsonrpc_server.go index cebc7a4f..1e7fe644 100644 --- a/v2/internal/interface/generator/jsonrpc_server.go +++ b/v2/internal/interface/generator/jsonrpc_server.go @@ -209,12 +209,16 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("if %s.Instance != \"\"{\n", optName) g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(%[2]s.Instance, \"/\")", stringsPkg, optName) g.W("}\n") - g.W("c, err := %s.NewClient%s(instance, %s.ClientOptions...)\n", transportExtPkg, g.options.Prefix(), optName) + + g.W("c, err := %s.NewClient%s%s(instance, %s.ClientOptions...)\n", transportExtPkg, g.options.Prefix(), iface.Name(), optName) + g.WriteCheckErr(func() { g.W("return nil, nil, err\n") }) g.W("return ") + g.W("%s.Make%sEndpoint(c), nil, nil\n", transportExtPkg, m.NameExport) + g.W("\n}\n\n") g.W("endpointer := %s.NewEndpointer(%s.Instancer, %s, logger)\n", sdPkg, optName, epFactoryName) diff --git a/v2/swipe.go b/v2/swipe.go index 0ec2a8dd..b476bba7 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -43,7 +43,7 @@ // } package v2 -const Version = "v2.0.0-rc3" +const Version = "v2.0.0-rc4" // A Option is an option for a Swipe. type Option string From dcc9b015c5289f6c94fcc6ab1a7721a2061c3424 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 10:19:00 +0300 Subject: [PATCH 171/293] chore(release): 2.0.0-rc4 --- CHANGELOG.md | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08fb22d8..7f909719 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,17 @@ + +## [v2.0.0-rc4] - 2021-03-11 +### Bug Fixes +- error when generating logging in gateway if there are identical interface names +- error when generating instrumenting in gateway if there are identical interface names + +### Features +- added support for optional parameters in the interface + + + +## [v2.0.0-rc3] - 2021-03-05 + ## [v2.0.0-rc2] - 2021-03-04 ### Bug Fixes @@ -247,11 +260,11 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [vv2.0.0-alpha.15] - 2020-09-09 - -## [vv2.0.0-alpha.16] - 2020-09-09 - ## [vv2.0.0-beta.1] - 2020-09-09 + + +## [vv2.0.0-alpha.16] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -421,15 +434,15 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. -- Incorrect generate enum name for markdown docs. ### Features - Added command for generate CRUD service structure. - -## [v1.24.3] - 2020-07-28 + +## [v1.24.4] - 2020-07-28 ### Bug Fixes +- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -440,10 +453,9 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.2] - 2020-07-28 - -## [v1.24.4] - 2020-07-28 + +## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -747,7 +759,9 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc2...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc4...HEAD +[v2.0.0-rc4]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc3...v2.0.0-rc4 +[v2.0.0-rc3]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc2...v2.0.0-rc3 [v2.0.0-rc2]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc1...v2.0.0-rc2 [v2.0.0-rc1]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta6...v2.0.0-rc1 [v2.0.0-beta6]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta5...v2.0.0-beta6 @@ -781,9 +795,9 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 [v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 -[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-alpha.15 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.16 -[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-beta.1 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.15 +[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-beta.1 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 @@ -806,11 +820,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.5 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.1 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.2 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 From 8760dde2af24710f61bd4e8904b5d68f3bdd06aa Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 12:31:55 +0300 Subject: [PATCH 172/293] chore(release): 2.0.0-rc4 --- .../GatewaySuccess/app/client_jsonrpc_gen.js | 8 +- v2/fixture/GatewaySuccess/app/endpoint_gen.go | 14 +- v2/fixture/GatewaySuccess/app/http_gen.go | 16 +- v2/fixture/GatewaySuccess/app/server_gen.go | 14 +- .../ServiceJSONRPCMulti/app/client_gen.go | 149 ++++++++---------- .../app/client_jsonrpc_gen.js | 14 +- .../app/client_struct_gen.go | 144 ++++++++--------- .../ServiceJSONRPCMulti/app/endpoint_gen.go | 68 ++++---- .../ServiceJSONRPCMulti/app/http_gen.go | 102 ++++++------ .../ServiceJSONRPCMulti/app/logging_gen.go | 3 +- .../ServiceJSONRPCMulti/app/server_gen.go | 50 +++--- .../ServiceJSONRPCSingle/app/client_gen.go | 104 ++++++------ .../app/client_jsonrpc_gen.js | 41 ++--- .../app/client_struct_gen.go | 132 ++++++++-------- .../ServiceJSONRPCSingle/app/endpoint_gen.go | 34 ++-- .../ServiceJSONRPCSingle/app/http_gen.go | 102 ++++++------ .../app/instrumenting_gen.go | 4 +- .../ServiceJSONRPCSingle/app/logging_gen.go | 23 ++- .../ServiceJSONRPCSingle/app/server_gen.go | 22 +-- v2/fixture/ServiceJSONRPCSingle/app/swipe.go | 4 + v2/fixture/ServiceRESTMulti/app/client_gen.go | 106 ++++++------- .../ServiceRESTMulti/app/client_struct_gen.go | 144 ++++++++--------- .../ServiceRESTMulti/app/endpoint_gen.go | 68 ++++---- v2/fixture/ServiceRESTMulti/app/http_gen.go | 102 ++++++------ .../ServiceRESTMulti/app/logging_gen.go | 3 +- .../app/openapi_rest_gen.json | 2 +- v2/fixture/ServiceRESTMulti/app/server_gen.go | 70 ++++---- .../app/client_gen.go | 32 ++-- .../app/client_struct_gen.go | 52 +++--- .../app/endpoint_gen.go | 28 ++-- .../app/http_gen.go | 32 ++-- .../app/logging_gen.go | 6 +- .../app/openapi_rest_gen.json | 2 +- .../app/server_gen.go | 26 +-- .../ServiceRESTSingle/app/client_gen.go | 53 ++++--- .../app/client_struct_gen.go | 34 ++-- .../app/instrumenting_gen.go | 4 +- .../ServiceRESTSingle/app/logging_gen.go | 10 +- .../app/openapi_rest_gen.json | 2 +- .../ServiceRESTSingle/app/server_gen.go | 10 +- v2/fixture/ServiceRESTSingle/app/swipe.go | 3 + v2/internal/domain/model/service.go | 3 +- v2/internal/interface/gateway/service.go | 16 +- .../interface/generator/client_struct.go | 35 ++-- v2/internal/interface/generator/endpoint.go | 22 +-- .../interface/generator/endpoint_factory.go | 2 +- .../interface/generator/http_transport.go | 14 +- .../interface/generator/instrumenting.go | 13 +- .../interface/generator/jsonrpc_go_client.go | 24 +-- .../interface/generator/jsonrpc_js_client.go | 6 +- .../interface/generator/jsonrpc_server.go | 28 ++-- v2/internal/interface/generator/logging.go | 28 +++- v2/internal/interface/generator/openapi.go | 5 +- .../interface/generator/rest_go_client.go | 29 ++-- .../interface/generator/rest_server.go | 17 +- v2/internal/interface/generator/utils.go | 4 +- v2/internal/strings/strings.go | 11 -- v2/internal/writer/golang_writer.go | 5 +- 58 files changed, 1076 insertions(+), 1023 deletions(-) delete mode 100644 v2/internal/strings/strings.go diff --git a/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js b/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js index 05a7197e..b3188d48 100755 --- a/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js +++ b/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js @@ -109,13 +109,9 @@ class JSONRPCClientB { * @param {string} name * @param {Array} data **/ - create(newData, name, data) { + bCreate(newData, name, data) { return this.scheduler - .__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }) + .__scheduleRequest("create", { newData: newData, name: name, data: data }) .catch((e) => { throw interfaceBCreateConvertError(e); }); diff --git a/v2/fixture/GatewaySuccess/app/endpoint_gen.go b/v2/fixture/GatewaySuccess/app/endpoint_gen.go index 158a0be5..bdbfeacc 100755 --- a/v2/fixture/GatewaySuccess/app/endpoint_gen.go +++ b/v2/fixture/GatewaySuccess/app/endpoint_gen.go @@ -11,9 +11,9 @@ import ( "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" ) -func MakeInterfaceBCreateEndpoint(s app.InterfaceB) endpoint.Endpoint { +func MakeBCreateEndpoint(s app.InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBCreateRequest) + req := request.(BCreateCreateRequest) err := s.Create(ctx, req.NewData, req.Name, req.Data) if err != nil { return nil, err @@ -23,17 +23,17 @@ func MakeInterfaceBCreateEndpoint(s app.InterfaceB) endpoint.Endpoint { } -type InterfaceBEndpointSet struct { +type BEndpointSet struct { CreateEndpoint endpoint.Endpoint } -func MakeInterfaceBEndpointSet(svc app.InterfaceB) InterfaceBEndpointSet { - return InterfaceBEndpointSet{ - CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), +func MakeBEndpointSet(svc app.InterfaceB) BEndpointSet { + return BEndpointSet{ + CreateEndpoint: MakeBCreateEndpoint(svc), } } -type InterfaceBCreateRequest struct { +type BCreateCreateRequest struct { NewData app.Data `json:"newData"` Name string `json:"name"` Data []byte `json:"data"` diff --git a/v2/fixture/GatewaySuccess/app/http_gen.go b/v2/fixture/GatewaySuccess/app/http_gen.go index fad1a4e2..02911c2a 100755 --- a/v2/fixture/GatewaySuccess/app/http_gen.go +++ b/v2/fixture/GatewaySuccess/app/http_gen.go @@ -32,16 +32,16 @@ func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { type ServerOption func(*serverOpts) type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - interfaceBCreateServerOption []jsonrpc.ServerOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + bCreateServerOption []jsonrpc.ServerOption + bCreateEndpointMiddleware []endpoint.Middleware } -func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +func BCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bCreateServerOption = opt } } -func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func BCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bCreateEndpointMiddleware = opt } } diff --git a/v2/fixture/GatewaySuccess/app/server_gen.go b/v2/fixture/GatewaySuccess/app/server_gen.go index 810c37fc..48fea08b 100755 --- a/v2/fixture/GatewaySuccess/app/server_gen.go +++ b/v2/fixture/GatewaySuccess/app/server_gen.go @@ -34,7 +34,7 @@ func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessa return b, nil } -func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { +func MakeBEndpointCodecMap(ep BEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { var namespace string if len(ns) > 0 { namespace = strings.Join(ns, ".") + "." @@ -44,10 +44,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"create"] = jsonrpc.EndpointCodec{ Endpoint: ep.CreateEndpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBCreateRequest + var req BCreateCreateRequest err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBCreateRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BCreateCreateRequest: %s", err) } return req, nil }, @@ -58,15 +58,15 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json } // HTTP JSONRPC Transport -func MakeHandlerJSONRPC(svcInterfaceB app.InterfaceB, options ...ServerOption) (http.Handler, error) { +func MakeHandlerJSONRPC(svcB app.InterfaceB, options ...ServerOption) (http.Handler, error) { opts := &serverOpts{} for _, o := range options { o(opts) } - epSet := MakeInterfaceBEndpointSet(svcInterfaceB) - epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSet.CreateEndpoint) + epSet := MakeBEndpointSet(svcB) + epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(epSet.CreateEndpoint) r := mux.NewRouter() - handler := jsonrpc.NewServer(MakeInterfaceBEndpointCodecMap(epSet), opts.genericServerOption...) + handler := jsonrpc.NewServer(MakeBEndpointCodecMap(epSet), opts.genericServerOption...) r.Methods("POST").Path("").Handler(handler) return r, nil } diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go index d2e81006..63a9ec00 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go +++ b/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go @@ -16,13 +16,9 @@ import ( "github.com/pquerna/ffjson/ffjson" ) -// Deprecated -func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceA, error) { - return NewClientJSONRPCInterfaceA(tgt, options...) -} -func NewClientJSONRPCInterfaceA(tgt string, options ...ClientOption) (InterfaceA, error) { +func NewClientJSONRPCA(tgt string, options ...ClientOption) (InterfaceA, error) { opts := &clientOpts{} - c := &clientInterfaceA{} + c := &clientA{} for _, o := range options { o(opts) } @@ -40,34 +36,29 @@ func NewClientJSONRPCInterfaceA(tgt string, options ...ClientOption) (InterfaceA if u.Scheme == "" { u.Scheme = "https" } - opts.interfaceATestMethodClientOption = append( - opts.interfaceATestMethodClientOption, + opts.aTestMethodClientOption = append( + opts.aTestMethodClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { return nil, nil }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceATestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, aTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } return nil, nil }), ) - c.testMethodEndpoint = jsonrpc.NewClient( + c.aTestMethodEndpoint = jsonrpc.NewClient( u, - "a.testMethod", - append(opts.genericClientOption, opts.interfaceATestMethodClientOption...)..., + "a.aTestMethod", + append(opts.genericClientOption, opts.aTestMethodClientOption...)..., ).Endpoint() - c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(c.testMethodEndpoint) + c.aTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(c.aTestMethodEndpoint) return c, nil } - -// Deprecated -func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceB, error) { - return NewClientJSONRPCInterfaceB(tgt, options...) -} -func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB, error) { +func NewClientJSONRPCB(tgt string, options ...ClientOption) (InterfaceB, error) { opts := &clientOpts{} - c := &clientInterfaceB{} + c := &clientB{} for _, o := range options { o(opts) } @@ -85,12 +76,12 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB if u.Scheme == "" { u.Scheme = "https" } - opts.interfaceBCreateClientOption = append( - opts.interfaceBCreateClientOption, + opts.bCreateClientOption = append( + opts.bCreateClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(InterfaceBCreateRequest) + req, ok := obj.(BCreateCreateRequest) if !ok { - return nil, fmt.Errorf("couldn't assert request as InterfaceBCreateRequest, got %T", obj) + return nil, fmt.Errorf("couldn't assert request as BCreateCreateRequest, got %T", obj) } b, err := ffjson.Marshal(req) if err != nil { @@ -100,23 +91,23 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, bCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } return nil, nil }), ) - c.createEndpoint = jsonrpc.NewClient( + c.bCreateEndpoint = jsonrpc.NewClient( u, - "b.create", - append(opts.genericClientOption, opts.interfaceBCreateClientOption...)..., + "b.bCreate", + append(opts.genericClientOption, opts.bCreateClientOption...)..., ).Endpoint() - c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(c.createEndpoint) - opts.interfaceBDeleteClientOption = append( - opts.interfaceBDeleteClientOption, + c.bCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(c.bCreateEndpoint) + opts.bDeleteClientOption = append( + opts.bDeleteClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(InterfaceBDeleteRequest) + req, ok := obj.(BDeleteDeleteRequest) if !ok { - return nil, fmt.Errorf("couldn't assert request as InterfaceBDeleteRequest, got %T", obj) + return nil, fmt.Errorf("couldn't assert request as BDeleteDeleteRequest, got %T", obj) } b, err := ffjson.Marshal(req) if err != nil { @@ -126,28 +117,28 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, bDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } - var resp InterfaceBDeleteResponse + var resp BDeleteDeleteResponse err := ffjson.Unmarshal(response.Result, &resp) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteResponse: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteResponse: %s", err) } return resp, nil }), ) - c.deleteEndpoint = jsonrpc.NewClient( + c.bDeleteEndpoint = jsonrpc.NewClient( u, - "b.delete", - append(opts.genericClientOption, opts.interfaceBDeleteClientOption...)..., + "b.bDelete", + append(opts.genericClientOption, opts.bDeleteClientOption...)..., ).Endpoint() - c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(c.deleteEndpoint) - opts.interfaceBGetClientOption = append( - opts.interfaceBGetClientOption, + c.bDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(c.bDeleteEndpoint) + opts.bGetClientOption = append( + opts.bGetClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(InterfaceBGetRequest) + req, ok := obj.(BGetGetRequest) if !ok { - return nil, fmt.Errorf("couldn't assert request as InterfaceBGetRequest, got %T", obj) + return nil, fmt.Errorf("couldn't assert request as BGetGetRequest, got %T", obj) } b, err := ffjson.Marshal(req) if err != nil { @@ -157,28 +148,28 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, bGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp User err := ffjson.Unmarshal(response.Result, &resp) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetResponse: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetGetResponse: %s", err) } return resp, nil }), ) - c.getEndpoint = jsonrpc.NewClient( + c.bGetEndpoint = jsonrpc.NewClient( u, - "b.get", - append(opts.genericClientOption, opts.interfaceBGetClientOption...)..., + "b.bGet", + append(opts.genericClientOption, opts.bGetClientOption...)..., ).Endpoint() - c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(c.getEndpoint) - opts.interfaceBGetAllClientOption = append( - opts.interfaceBGetAllClientOption, + c.bGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(c.bGetEndpoint) + opts.bGetAllClientOption = append( + opts.bGetAllClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(InterfaceBGetAllRequest) + req, ok := obj.(BGetAllGetAllRequest) if !ok { - return nil, fmt.Errorf("couldn't assert request as InterfaceBGetAllRequest, got %T", obj) + return nil, fmt.Errorf("couldn't assert request as BGetAllGetAllRequest, got %T", obj) } b, err := ffjson.Marshal(req) if err != nil { @@ -188,28 +179,28 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, bGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp []*User err := ffjson.Unmarshal(response.Result, &resp) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllResponse: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllResponse: %s", err) } return resp, nil }), ) - c.getAllEndpoint = jsonrpc.NewClient( + c.bGetAllEndpoint = jsonrpc.NewClient( u, - "b.getAll", - append(opts.genericClientOption, opts.interfaceBGetAllClientOption...)..., + "b.bGetAll", + append(opts.genericClientOption, opts.bGetAllClientOption...)..., ).Endpoint() - c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(c.getAllEndpoint) - opts.interfaceBTestMethodClientOption = append( - opts.interfaceBTestMethodClientOption, + c.bGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(c.bGetAllEndpoint) + opts.bTestMethodClientOption = append( + opts.bTestMethodClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(InterfaceBTestMethodRequest) + req, ok := obj.(BTestMethodTestMethodRequest) if !ok { - return nil, fmt.Errorf("couldn't assert request as InterfaceBTestMethodRequest, got %T", obj) + return nil, fmt.Errorf("couldn't assert request as BTestMethodTestMethodRequest, got %T", obj) } b, err := ffjson.Marshal(req) if err != nil { @@ -219,28 +210,28 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, bTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp map[string]map[int][]string err := ffjson.Unmarshal(response.Result, &resp) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodResponse: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodResponse: %s", err) } return resp, nil }), ) - c.testMethodEndpoint = jsonrpc.NewClient( + c.bTestMethodEndpoint = jsonrpc.NewClient( u, - "b.testMethod", - append(opts.genericClientOption, opts.interfaceBTestMethodClientOption...)..., + "b.bTestMethod", + append(opts.genericClientOption, opts.bTestMethodClientOption...)..., ).Endpoint() - c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(c.testMethodEndpoint) - opts.interfaceBTestMethod2ClientOption = append( - opts.interfaceBTestMethod2ClientOption, + c.bTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(c.bTestMethodEndpoint) + opts.bTestMethod2ClientOption = append( + opts.bTestMethod2ClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(InterfaceBTestMethod2Request) + req, ok := obj.(BTestMethod2TestMethod2Request) if !ok { - return nil, fmt.Errorf("couldn't assert request as InterfaceBTestMethod2Request, got %T", obj) + return nil, fmt.Errorf("couldn't assert request as BTestMethod2TestMethod2Request, got %T", obj) } b, err := ffjson.Marshal(req) if err != nil { @@ -250,16 +241,16 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, bTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } return nil, nil }), ) - c.testMethod2Endpoint = jsonrpc.NewClient( + c.bTestMethod2Endpoint = jsonrpc.NewClient( u, - "b.testMethod2", - append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., + "b.bTestMethod2", + append(opts.genericClientOption, opts.bTestMethod2ClientOption...)..., ).Endpoint() - c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + c.bTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(c.bTestMethod2Endpoint) return c, nil } diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js index 7abc1ae0..44774f7c 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ b/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js @@ -154,7 +154,7 @@ class JSONRPCClientA { /** **/ - testMethod() { + aTestMethod() { return this.scheduler.__scheduleRequest("a.testMethod", {}).catch((e) => { throw interfaceATestMethodConvertError(e); }); @@ -173,7 +173,7 @@ class JSONRPCClientB { * @param {string} name * @param {Array} data **/ - create(newData, name, data) { + bCreate(newData, name, data) { return this.scheduler .__scheduleRequest("b.create", { newData: newData, @@ -188,7 +188,7 @@ class JSONRPCClientB { * @param {number} id * @return {PromiseLike<{a: string, b: string}>} **/ - delete(id) { + bDelete(id) { return this.scheduler .__scheduleRequest("b.delete", { id: id }) .catch((e) => { @@ -207,7 +207,7 @@ class JSONRPCClientB { * @param {number} cc * @return {PromiseLike} **/ - get(id, name, fname, price, n, b, cc) { + bGet(id, name, fname, price, n, b, cc) { return this.scheduler .__scheduleRequest("b.get", { id: id, @@ -229,7 +229,7 @@ class JSONRPCClientB { * @param {Members} members * @return {PromiseLike>} **/ - getAll(members) { + bGetAll(members) { return this.scheduler .__scheduleRequest("b.getAll", { members: members }) .catch((e) => { @@ -241,7 +241,7 @@ class JSONRPCClientB { * @param {object} ss * @return {PromiseLike>>>} **/ - testMethod(data, ss) { + bTestMethod(data, ss) { return this.scheduler .__scheduleRequest("b.testMethod", { data: data, ss: ss }) .catch((e) => { @@ -256,7 +256,7 @@ class JSONRPCClientB { * @param {string} resource * @param {string} permission **/ - testMethod2(ns, utype, user, restype, resource, permission) { + bTestMethod2(ns, utype, user, restype, resource, permission) { return this.scheduler .__scheduleRequest("b.testMethod2", { ns: ns, diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go index daa6529f..0bdddab0 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go +++ b/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go @@ -17,38 +17,38 @@ type AppClient struct { } func NewClientJSONRPC(tgt string, opts ...ClientOption) (*AppClient, error) { - interfaceAClient, err := NewClientJSONRPCInterfaceA(tgt, opts...) + aClient, err := NewClientJSONRPCA(tgt, opts...) if err != nil { return nil, err } - interfaceBClient, err := NewClientJSONRPCInterfaceB(tgt, opts...) + bClient, err := NewClientJSONRPCB(tgt, opts...) if err != nil { return nil, err } return &AppClient{ - AClient: interfaceAClient, - BClient: interfaceBClient, + AClient: aClient, + BClient: bClient, }, nil } type ClientOption func(*clientOpts) type clientOpts struct { - interfaceATestMethodClientOption []jsonrpc.ClientOption - interfaceATestMethodEndpointMiddleware []endpoint.Middleware - interfaceBCreateClientOption []jsonrpc.ClientOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteClientOption []jsonrpc.ClientOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetClientOption []jsonrpc.ClientOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllClientOption []jsonrpc.ClientOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodClientOption []jsonrpc.ClientOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ClientOption []jsonrpc.ClientOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware - genericClientOption []jsonrpc.ClientOption - genericEndpointMiddleware []endpoint.Middleware + aTestMethodClientOption []jsonrpc.ClientOption + aTestMethodEndpointMiddleware []endpoint.Middleware + bCreateClientOption []jsonrpc.ClientOption + bCreateEndpointMiddleware []endpoint.Middleware + bDeleteClientOption []jsonrpc.ClientOption + bDeleteEndpointMiddleware []endpoint.Middleware + bGetClientOption []jsonrpc.ClientOption + bGetEndpointMiddleware []endpoint.Middleware + bGetAllClientOption []jsonrpc.ClientOption + bGetAllEndpointMiddleware []endpoint.Middleware + bTestMethodClientOption []jsonrpc.ClientOption + bTestMethodEndpointMiddleware []endpoint.Middleware + bTestMethod2ClientOption []jsonrpc.ClientOption + bTestMethod2EndpointMiddleware []endpoint.Middleware + genericClientOption []jsonrpc.ClientOption + genericEndpointMiddleware []endpoint.Middleware } func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { @@ -59,99 +59,99 @@ func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { return func(c *clientOpts) { c.genericEndpointMiddleware = opt } } -func InterfaceATestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceATestMethodClientOption = opt } +func ATestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.aTestMethodClientOption = opt } } -func InterfaceATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +func ATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.aTestMethodEndpointMiddleware = opt } } -func InterfaceBCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBCreateClientOption = opt } +func BCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.bCreateClientOption = opt } } -func InterfaceBCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func BCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bCreateEndpointMiddleware = opt } } -func InterfaceBDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBDeleteClientOption = opt } +func BDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.bDeleteClientOption = opt } } -func InterfaceBDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +func BDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bDeleteEndpointMiddleware = opt } } -func InterfaceBGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBGetClientOption = opt } +func BGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.bGetClientOption = opt } } -func InterfaceBGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBGetEndpointMiddleware = opt } +func BGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bGetEndpointMiddleware = opt } } -func InterfaceBGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBGetAllClientOption = opt } +func BGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.bGetAllClientOption = opt } } -func InterfaceBGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +func BGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bGetAllEndpointMiddleware = opt } } -func InterfaceBTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodClientOption = opt } +func BTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.bTestMethodClientOption = opt } } -func InterfaceBTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +func BTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bTestMethodEndpointMiddleware = opt } } -func InterfaceBTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethod2ClientOption = opt } +func BTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.bTestMethod2ClientOption = opt } } -func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +func BTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bTestMethod2EndpointMiddleware = opt } } -type clientInterfaceA struct { - testMethodEndpoint endpoint.Endpoint +type clientA struct { + aTestMethodEndpoint endpoint.Endpoint } -func (c *clientInterfaceA) TestMethod() { - _, _ = c.testMethodEndpoint(context.Background(), nil) +func (c *clientA) TestMethod() { + _, _ = c.aTestMethodEndpoint(context.Background(), nil) return } -type clientInterfaceB struct { - createEndpoint endpoint.Endpoint - deleteEndpoint endpoint.Endpoint - getEndpoint endpoint.Endpoint - getAllEndpoint endpoint.Endpoint - testMethodEndpoint endpoint.Endpoint - testMethod2Endpoint endpoint.Endpoint +type clientB struct { + bCreateEndpoint endpoint.Endpoint + bDeleteEndpoint endpoint.Endpoint + bGetEndpoint endpoint.Endpoint + bGetAllEndpoint endpoint.Endpoint + bTestMethodEndpoint endpoint.Endpoint + bTestMethod2Endpoint endpoint.Endpoint } -func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { - _, err := c.createEndpoint(ctx, InterfaceBCreateRequest{NewData: newData, Name: name, Data: data}) +func (c *clientB) Create(ctx context.Context, newData Data, name string, data []byte) error { + _, err := c.bCreateEndpoint(ctx, BCreateCreateRequest{NewData: newData, Name: name, Data: data}) if err != nil { return err } return nil } -func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.deleteEndpoint(ctx, InterfaceBDeleteRequest{Id: id}) +func (c *clientB) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.bDeleteEndpoint(ctx, BDeleteDeleteRequest{Id: id}) if err != nil { return "", "", err } - response := resp.(InterfaceBDeleteResponse) + response := resp.(BDeleteDeleteResponse) return response.A, response.B, nil } -func (c *clientInterfaceB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.getEndpoint(ctx, InterfaceBGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) +func (c *clientB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.bGetEndpoint(ctx, BGetGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) if err != nil { return User{}, err } @@ -159,8 +159,8 @@ func (c *clientInterfaceB) Get(ctx context.Context, id int, name string, fname s return response, nil } -func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.getAllEndpoint(ctx, InterfaceBGetAllRequest{Members: members}) +func (c *clientB) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.bGetAllEndpoint(ctx, BGetAllGetAllRequest{Members: members}) if err != nil { return nil, err } @@ -168,8 +168,8 @@ func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User return response, nil } -func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.testMethodEndpoint(context.Background(), InterfaceBTestMethodRequest{Data: data, Ss: ss}) +func (c *clientB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.bTestMethodEndpoint(context.Background(), BTestMethodTestMethodRequest{Data: data, Ss: ss}) if err != nil { return nil, err } @@ -177,8 +177,8 @@ func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{ return response, nil } -func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.testMethod2Endpoint(ctx, InterfaceBTestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) +func (c *clientB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.bTestMethod2Endpoint(ctx, BTestMethod2TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) if err != nil { return err } diff --git a/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go index f9c5ca2a..ab02d7fd 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go +++ b/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go @@ -10,7 +10,7 @@ import ( "github.com/go-kit/kit/endpoint" ) -func MakeInterfaceATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { +func MakeATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { s.TestMethod() return nil, nil @@ -18,9 +18,9 @@ func MakeInterfaceATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { } -func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBCreateEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBCreateRequest) + req := request.(BCreateCreateRequest) err := s.Create(ctx, req.NewData, req.Name, req.Data) if err != nil { return nil, err @@ -30,21 +30,21 @@ func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBDeleteRequest) + req := request.(BDeleteDeleteRequest) a, b, err := s.Delete(ctx, req.Id) if err != nil { return nil, err } - return InterfaceBDeleteResponse{A: a, B: b}, nil + return BDeleteDeleteResponse{A: a, B: b}, nil } } -func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBGetEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBGetRequest) + req := request.(BGetGetRequest) result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) if err != nil { return nil, err @@ -54,9 +54,9 @@ func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBGetAllRequest) + req := request.(BGetAllGetAllRequest) result, err := s.GetAll(ctx, req.Members) if err != nil { return nil, err @@ -66,9 +66,9 @@ func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBTestMethodRequest) + req := request.(BTestMethodTestMethodRequest) result, err := s.TestMethod(req.Data, req.Ss) if err != nil { return nil, err @@ -78,9 +78,9 @@ func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { +func MakeBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBTestMethod2Request) + req := request.(BTestMethod2TestMethod2Request) err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) if err != nil { return nil, err @@ -90,17 +90,17 @@ func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { } -type InterfaceAEndpointSet struct { +type AEndpointSet struct { TestMethodEndpoint endpoint.Endpoint } -func MakeInterfaceAEndpointSet(svc InterfaceA) InterfaceAEndpointSet { - return InterfaceAEndpointSet{ - TestMethodEndpoint: MakeInterfaceATestMethodEndpoint(svc), +func MakeAEndpointSet(svc InterfaceA) AEndpointSet { + return AEndpointSet{ + TestMethodEndpoint: MakeATestMethodEndpoint(svc), } } -type InterfaceBEndpointSet struct { +type BEndpointSet struct { CreateEndpoint endpoint.Endpoint DeleteEndpoint endpoint.Endpoint GetEndpoint endpoint.Endpoint @@ -109,30 +109,30 @@ type InterfaceBEndpointSet struct { TestMethod2Endpoint endpoint.Endpoint } -func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { - return InterfaceBEndpointSet{ - CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), - DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), - GetEndpoint: MakeInterfaceBGetEndpoint(svc), - GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), - TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), +func MakeBEndpointSet(svc InterfaceB) BEndpointSet { + return BEndpointSet{ + CreateEndpoint: MakeBCreateEndpoint(svc), + DeleteEndpoint: MakeBDeleteEndpoint(svc), + GetEndpoint: MakeBGetEndpoint(svc), + GetAllEndpoint: MakeBGetAllEndpoint(svc), + TestMethodEndpoint: MakeBTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeBTestMethod2Endpoint(svc), } } -type InterfaceBCreateRequest struct { +type BCreateCreateRequest struct { NewData Data `json:"newData"` Name string `json:"name"` Data []byte `json:"data"` } -type InterfaceBDeleteRequest struct { +type BDeleteDeleteRequest struct { Id uint `json:"id"` } -type InterfaceBDeleteResponse struct { +type BDeleteDeleteResponse struct { A string `json:"a"` B string `json:"b"` } -type InterfaceBGetRequest struct { +type BGetGetRequest struct { Id int `json:"id"` Name string `json:"name"` Fname string `json:"fname"` @@ -141,14 +141,14 @@ type InterfaceBGetRequest struct { B int `json:"b"` Cc int `json:"cc"` } -type InterfaceBGetAllRequest struct { +type BGetAllGetAllRequest struct { Members Members `json:"members"` } -type InterfaceBTestMethodRequest struct { +type BTestMethodTestMethodRequest struct { Data map[string]interface{} `json:"data"` Ss interface{} `json:"ss"` } -type InterfaceBTestMethod2Request struct { +type BTestMethod2TestMethod2Request struct { Ns string `json:"ns"` Utype string `json:"utype"` User string `json:"user"` diff --git a/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go index 7cbe4ef4..e52a6e7a 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go +++ b/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go @@ -30,7 +30,7 @@ func (e *httpError) SetErrorData(data interface{}) { func (e *httpError) SetErrorMessage(message string) { e.message = message } -func interfaceATestMethodErrorDecode(code int, message string, data interface{}) (err error) { +func aTestMethodErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -44,7 +44,7 @@ func interfaceATestMethodErrorDecode(code int, message string, data interface{}) return } -func interfaceBCreateErrorDecode(code int, message string, data interface{}) (err error) { +func bCreateErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -60,7 +60,7 @@ func interfaceBCreateErrorDecode(code int, message string, data interface{}) (er return } -func interfaceBDeleteErrorDecode(code int, message string, data interface{}) (err error) { +func bDeleteErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -74,7 +74,7 @@ func interfaceBDeleteErrorDecode(code int, message string, data interface{}) (er return } -func interfaceBGetErrorDecode(code int, message string, data interface{}) (err error) { +func bGetErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -88,7 +88,7 @@ func interfaceBGetErrorDecode(code int, message string, data interface{}) (err e return } -func interfaceBGetAllErrorDecode(code int, message string, data interface{}) (err error) { +func bGetAllErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -102,7 +102,7 @@ func interfaceBGetAllErrorDecode(code int, message string, data interface{}) (er return } -func interfaceBTestMethodErrorDecode(code int, message string, data interface{}) (err error) { +func bTestMethodErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -116,7 +116,7 @@ func interfaceBTestMethodErrorDecode(code int, message string, data interface{}) return } -func interfaceBTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { +func bTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -153,76 +153,76 @@ func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { type ServerOption func(*serverOpts) type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - interfaceATestMethodServerOption []jsonrpc.ServerOption - interfaceATestMethodEndpointMiddleware []endpoint.Middleware - interfaceBCreateServerOption []jsonrpc.ServerOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteServerOption []jsonrpc.ServerOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetServerOption []jsonrpc.ServerOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllServerOption []jsonrpc.ServerOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodServerOption []jsonrpc.ServerOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ServerOption []jsonrpc.ServerOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + aTestMethodServerOption []jsonrpc.ServerOption + aTestMethodEndpointMiddleware []endpoint.Middleware + bCreateServerOption []jsonrpc.ServerOption + bCreateEndpointMiddleware []endpoint.Middleware + bDeleteServerOption []jsonrpc.ServerOption + bDeleteEndpointMiddleware []endpoint.Middleware + bGetServerOption []jsonrpc.ServerOption + bGetEndpointMiddleware []endpoint.Middleware + bGetAllServerOption []jsonrpc.ServerOption + bGetAllEndpointMiddleware []endpoint.Middleware + bTestMethodServerOption []jsonrpc.ServerOption + bTestMethodEndpointMiddleware []endpoint.Middleware + bTestMethod2ServerOption []jsonrpc.ServerOption + bTestMethod2EndpointMiddleware []endpoint.Middleware } -func InterfaceATestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceATestMethodServerOption = opt } +func ATestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.aTestMethodServerOption = opt } } -func InterfaceATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +func ATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.aTestMethodEndpointMiddleware = opt } } -func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +func BCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bCreateServerOption = opt } } -func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func BCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bCreateEndpointMiddleware = opt } } -func InterfaceBDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBDeleteServerOption = opt } +func BDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bDeleteServerOption = opt } } -func InterfaceBDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +func BDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bDeleteEndpointMiddleware = opt } } -func InterfaceBGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBGetServerOption = opt } +func BGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bGetServerOption = opt } } -func InterfaceBGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBGetEndpointMiddleware = opt } +func BGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bGetEndpointMiddleware = opt } } -func InterfaceBGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBGetAllServerOption = opt } +func BGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bGetAllServerOption = opt } } -func InterfaceBGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +func BGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bGetAllEndpointMiddleware = opt } } -func InterfaceBTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodServerOption = opt } +func BTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bTestMethodServerOption = opt } } -func InterfaceBTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +func BTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bTestMethodEndpointMiddleware = opt } } -func InterfaceBTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethod2ServerOption = opt } +func BTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.bTestMethod2ServerOption = opt } } -func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +func BTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bTestMethod2EndpointMiddleware = opt } } diff --git a/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go index 6d633228..4cd0d399 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go +++ b/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go @@ -38,7 +38,8 @@ func (s *BLoggingMiddleware) Create(ctx context.Context, newData Data, name stri if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) + logger.Log("name", name, "data", len(data), "err", logErr) }(time.Now()) err = s.next.Create(ctx, newData, name, data) return err diff --git a/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go index 71c003eb..470bf016 100755 --- a/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go +++ b/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go @@ -33,7 +33,7 @@ func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessa return b, nil } -func MakeInterfaceAEndpointCodecMap(ep InterfaceAEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { +func MakeAEndpointCodecMap(ep AEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { var namespace string if len(ns) > 0 { namespace = strings.Join(ns, ".") + "." @@ -51,7 +51,7 @@ func MakeInterfaceAEndpointCodecMap(ep InterfaceAEndpointSet, ns ...string) json return ecm } -func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { +func MakeBEndpointCodecMap(ep BEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { var namespace string if len(ns) > 0 { namespace = strings.Join(ns, ".") + "." @@ -61,10 +61,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"create"] = jsonrpc.EndpointCodec{ Endpoint: ep.CreateEndpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBCreateRequest + var req BCreateCreateRequest err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBCreateRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BCreateCreateRequest: %s", err) } return req, nil }, @@ -75,10 +75,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"delete"] = jsonrpc.EndpointCodec{ Endpoint: ep.DeleteEndpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBDeleteRequest + var req BDeleteDeleteRequest err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteRequest: %s", err) } return req, nil }, @@ -89,10 +89,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"get"] = jsonrpc.EndpointCodec{ Endpoint: ep.GetEndpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBGetRequest + var req BGetGetRequest err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetGetRequest: %s", err) } return req, nil }, @@ -103,10 +103,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"getAll"] = jsonrpc.EndpointCodec{ Endpoint: ep.GetAllEndpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBGetAllRequest + var req BGetAllGetAllRequest err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllRequest: %s", err) } return req, nil }, @@ -117,10 +117,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ Endpoint: ep.TestMethodEndpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBTestMethodRequest + var req BTestMethodTestMethodRequest err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodRequest: %s", err) } return req, nil }, @@ -131,10 +131,10 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json ecm[namespace+"testMethod2"] = jsonrpc.EndpointCodec{ Endpoint: ep.TestMethod2Endpoint, Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req InterfaceBTestMethod2Request + var req BTestMethod2TestMethod2Request err := ffjson.Unmarshal(msg, &req) if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethod2Request: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BTestMethod2TestMethod2Request: %s", err) } return req, nil }, @@ -145,22 +145,22 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json } // HTTP JSONRPC Transport -func MakeHandlerJSONRPC(svcInterfaceA InterfaceA, svcInterfaceB InterfaceB, options ...ServerOption) (http.Handler, error) { +func MakeHandlerJSONRPC(svcA InterfaceA, svcB InterfaceB, options ...ServerOption) (http.Handler, error) { opts := &serverOpts{} for _, o := range options { o(opts) } - epSetA := MakeInterfaceAEndpointSet(svcInterfaceA) - epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) - epSetB := MakeInterfaceBEndpointSet(svcInterfaceB) - epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSetB.CreateEndpoint) - epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) - epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(epSetB.GetEndpoint) - epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) - epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) - epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) + epSetA := MakeAEndpointSet(svcA) + epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) + epSetB := MakeBEndpointSet(svcB) + epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(epSetB.CreateEndpoint) + epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) + epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(epSetB.GetEndpoint) + epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) + epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) + epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) r := mux.NewRouter() - handler := jsonrpc.NewServer(MergeEndpointCodecMaps(MakeInterfaceAEndpointCodecMap(epSetA, "a"), MakeInterfaceBEndpointCodecMap(epSetB, "b")), opts.genericServerOption...) + handler := jsonrpc.NewServer(MergeEndpointCodecMaps(MakeAEndpointCodecMap(epSetA, "a"), MakeBEndpointCodecMap(epSetB, "b")), opts.genericServerOption...) r.Methods("POST").Path("").Handler(handler) return r, nil } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go index 5c75a8aa..481ff5f1 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go @@ -18,11 +18,11 @@ import ( // Deprecated func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceB, error) { - return NewClientJSONRPCInterfaceB(tgt, options...) + return NewClientJSONRPCService(tgt, options...) } -func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB, error) { +func NewClientJSONRPCService(tgt string, options ...ClientOption) (InterfaceB, error) { opts := &clientOpts{} - c := &clientInterfaceB{} + c := &clientService{} for _, o := range options { o(opts) } @@ -40,8 +40,8 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB if u.Scheme == "" { u.Scheme = "https" } - opts.interfaceBCreateClientOption = append( - opts.interfaceBCreateClientOption, + opts.serviceCreateClientOption = append( + opts.serviceCreateClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(CreateRequest) if !ok { @@ -55,19 +55,19 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } return nil, nil }), ) - c.createEndpoint = jsonrpc.NewClient( + c.serviceCreateEndpoint = jsonrpc.NewClient( u, - "service.create", - append(opts.genericClientOption, opts.interfaceBCreateClientOption...)..., + "service.serviceCreate", + append(opts.genericClientOption, opts.serviceCreateClientOption...)..., ).Endpoint() - c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(c.createEndpoint) - opts.interfaceBDeleteClientOption = append( - opts.interfaceBDeleteClientOption, + c.serviceCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceCreateEndpointMiddleware...))(c.serviceCreateEndpoint) + opts.serviceDeleteClientOption = append( + opts.serviceDeleteClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(DeleteRequest) if !ok { @@ -81,7 +81,7 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp DeleteResponse err := ffjson.Unmarshal(response.Result, &resp) @@ -91,14 +91,14 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB return resp, nil }), ) - c.deleteEndpoint = jsonrpc.NewClient( + c.serviceDeleteEndpoint = jsonrpc.NewClient( u, - "service.delete", - append(opts.genericClientOption, opts.interfaceBDeleteClientOption...)..., + "service.serviceDelete", + append(opts.genericClientOption, opts.serviceDeleteClientOption...)..., ).Endpoint() - c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(c.deleteEndpoint) - opts.interfaceBGetClientOption = append( - opts.interfaceBGetClientOption, + c.serviceDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceDeleteEndpointMiddleware...))(c.serviceDeleteEndpoint) + opts.serviceGetClientOption = append( + opts.serviceGetClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(GetRequest) if !ok { @@ -112,7 +112,7 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp User err := ffjson.Unmarshal(response.Result, &resp) @@ -122,14 +122,14 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB return resp, nil }), ) - c.getEndpoint = jsonrpc.NewClient( + c.serviceGetEndpoint = jsonrpc.NewClient( u, - "service.get", - append(opts.genericClientOption, opts.interfaceBGetClientOption...)..., + "service.serviceGet", + append(opts.genericClientOption, opts.serviceGetClientOption...)..., ).Endpoint() - c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(c.getEndpoint) - opts.interfaceBGetAllClientOption = append( - opts.interfaceBGetAllClientOption, + c.serviceGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetEndpointMiddleware...))(c.serviceGetEndpoint) + opts.serviceGetAllClientOption = append( + opts.serviceGetAllClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(GetAllRequest) if !ok { @@ -143,7 +143,7 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp []*User err := ffjson.Unmarshal(response.Result, &resp) @@ -153,14 +153,14 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB return resp, nil }), ) - c.getAllEndpoint = jsonrpc.NewClient( + c.serviceGetAllEndpoint = jsonrpc.NewClient( u, - "service.getAll", - append(opts.genericClientOption, opts.interfaceBGetAllClientOption...)..., + "service.serviceGetAll", + append(opts.genericClientOption, opts.serviceGetAllClientOption...)..., ).Endpoint() - c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(c.getAllEndpoint) - opts.interfaceBTestMethodClientOption = append( - opts.interfaceBTestMethodClientOption, + c.serviceGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetAllEndpointMiddleware...))(c.serviceGetAllEndpoint) + opts.serviceTestMethodClientOption = append( + opts.serviceTestMethodClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(TestMethodRequest) if !ok { @@ -174,7 +174,7 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } var resp map[string]map[int][]string err := ffjson.Unmarshal(response.Result, &resp) @@ -184,14 +184,14 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB return resp, nil }), ) - c.testMethodEndpoint = jsonrpc.NewClient( + c.serviceTestMethodEndpoint = jsonrpc.NewClient( u, - "service.testMethod", - append(opts.genericClientOption, opts.interfaceBTestMethodClientOption...)..., + "service.serviceTestMethod", + append(opts.genericClientOption, opts.serviceTestMethodClientOption...)..., ).Endpoint() - c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(c.testMethodEndpoint) - opts.interfaceBTestMethod2ClientOption = append( - opts.interfaceBTestMethod2ClientOption, + c.serviceTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodEndpointMiddleware...))(c.serviceTestMethodEndpoint) + opts.serviceTestMethod2ClientOption = append( + opts.serviceTestMethod2ClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(TestMethod2Request) if !ok { @@ -205,19 +205,19 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } return nil, nil }), ) - c.testMethod2Endpoint = jsonrpc.NewClient( + c.serviceTestMethod2Endpoint = jsonrpc.NewClient( u, - "service.testMethod2", - append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., + "service.serviceTestMethod2", + append(opts.genericClientOption, opts.serviceTestMethod2ClientOption...)..., ).Endpoint() - c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) - opts.interfaceBTestMethodOptionalsClientOption = append( - opts.interfaceBTestMethodOptionalsClientOption, + c.serviceTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethod2EndpointMiddleware...))(c.serviceTestMethod2Endpoint) + opts.serviceTestMethodOptionalsClientOption = append( + opts.serviceTestMethodOptionalsClientOption, jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { req, ok := obj.(TestMethodOptionalsRequest) if !ok { @@ -231,16 +231,16 @@ func NewClientJSONRPCInterfaceB(tgt string, options ...ClientOption) (InterfaceB }), jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { if response.Error != nil { - return nil, interfaceBTestMethodOptionalsErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) + return nil, serviceTestMethodOptionalsErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) } return nil, nil }), ) - c.testMethodOptionalsEndpoint = jsonrpc.NewClient( + c.serviceTestMethodOptionalsEndpoint = jsonrpc.NewClient( u, - "service.testMethodOptionals", - append(opts.genericClientOption, opts.interfaceBTestMethodOptionalsClientOption...)..., + "service.serviceTestMethodOptionals", + append(opts.genericClientOption, opts.serviceTestMethodOptionalsClientOption...)..., ).Endpoint() - c.testMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodOptionalsEndpointMiddleware...))(c.testMethodOptionalsEndpoint) + c.serviceTestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodOptionalsEndpointMiddleware...))(c.serviceTestMethodOptionalsEndpoint) return c, nil } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js index 735f9e1a..ec63cc41 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js @@ -162,13 +162,9 @@ class JSONRPCClientService { * @param {string} name * @param {Array} data **/ - create(newData, name, data) { + serviceCreate(newData, name, data) { return this.scheduler - .__scheduleRequest("service.create", { - newData: newData, - name: name, - data: data - }) + .__scheduleRequest("create", { newData: newData, name: name, data: data }) .catch((e) => { throw interfaceBCreateConvertError(e); }); @@ -177,12 +173,10 @@ class JSONRPCClientService { * @param {number} id * @return {PromiseLike<{a: string, b: string}>} **/ - delete(id) { - return this.scheduler - .__scheduleRequest("service.delete", { id: id }) - .catch((e) => { - throw interfaceBDeleteConvertError(e); - }); + serviceDelete(id) { + return this.scheduler.__scheduleRequest("delete", { id: id }).catch((e) => { + throw interfaceBDeleteConvertError(e); + }); } /** * Get item. @@ -196,9 +190,9 @@ class JSONRPCClientService { * @param {number} cc * @return {PromiseLike} **/ - get(id, name, fname, price, n, b, cc) { + serviceGet(id, name, fname, price, n, b, cc) { return this.scheduler - .__scheduleRequest("service.get", { + .__scheduleRequest("get", { id: id, name: name, fname: fname, @@ -218,9 +212,9 @@ class JSONRPCClientService { * @param {Members} members * @return {PromiseLike>} **/ - getAll(members) { + serviceGetAll(members) { return this.scheduler - .__scheduleRequest("service.getAll", { members: members }) + .__scheduleRequest("getAll", { members: members }) .catch((e) => { throw interfaceBGetAllConvertError(e); }); @@ -230,9 +224,9 @@ class JSONRPCClientService { * @param {object} ss * @return {PromiseLike>>>} **/ - testMethod(data, ss) { + serviceTestMethod(data, ss) { return this.scheduler - .__scheduleRequest("service.testMethod", { data: data, ss: ss }) + .__scheduleRequest("testMethod", { data: data, ss: ss }) .catch((e) => { throw interfaceBTestMethodConvertError(e); }); @@ -245,9 +239,9 @@ class JSONRPCClientService { * @param {string} resource * @param {string} permission **/ - testMethod2(ns, utype, user, restype, resource, permission) { + serviceTestMethod2(ns, utype, user, restype, resource, permission) { return this.scheduler - .__scheduleRequest("service.testMethod2", { + .__scheduleRequest("testMethod2", { ns: ns, utype: utype, user: user, @@ -263,12 +257,9 @@ class JSONRPCClientService { * @param {string} ns * @param {...OptionService} options **/ - testMethodOptionals(ns, ...options) { + serviceTestMethodOptionals(ns, ...options) { return this.scheduler - .__scheduleRequest("service.testMethodOptionals", { - ns: ns, - options: options - }) + .__scheduleRequest("testMethodOptionals", { ns: ns, options: options }) .catch((e) => { throw interfaceBTestMethodOptionalsConvertError(e); }); diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go index 38f82431..869ab9d5 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go @@ -14,22 +14,22 @@ import ( type ClientOption func(*clientOpts) type clientOpts struct { - interfaceBCreateClientOption []jsonrpc.ClientOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteClientOption []jsonrpc.ClientOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetClientOption []jsonrpc.ClientOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllClientOption []jsonrpc.ClientOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodClientOption []jsonrpc.ClientOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ClientOption []jsonrpc.ClientOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware - interfaceBTestMethodOptionalsClientOption []jsonrpc.ClientOption - interfaceBTestMethodOptionalsEndpointMiddleware []endpoint.Middleware - genericClientOption []jsonrpc.ClientOption - genericEndpointMiddleware []endpoint.Middleware + serviceCreateClientOption []jsonrpc.ClientOption + serviceCreateEndpointMiddleware []endpoint.Middleware + serviceDeleteClientOption []jsonrpc.ClientOption + serviceDeleteEndpointMiddleware []endpoint.Middleware + serviceGetClientOption []jsonrpc.ClientOption + serviceGetEndpointMiddleware []endpoint.Middleware + serviceGetAllClientOption []jsonrpc.ClientOption + serviceGetAllEndpointMiddleware []endpoint.Middleware + serviceTestMethodClientOption []jsonrpc.ClientOption + serviceTestMethodEndpointMiddleware []endpoint.Middleware + serviceTestMethod2ClientOption []jsonrpc.ClientOption + serviceTestMethod2EndpointMiddleware []endpoint.Middleware + serviceTestMethodOptionalsClientOption []jsonrpc.ClientOption + serviceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware + genericClientOption []jsonrpc.ClientOption + genericEndpointMiddleware []endpoint.Middleware } func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { @@ -40,82 +40,82 @@ func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { return func(c *clientOpts) { c.genericEndpointMiddleware = opt } } -func InterfaceBCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBCreateClientOption = opt } +func ServiceCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceCreateClientOption = opt } } -func InterfaceBCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func ServiceCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceCreateEndpointMiddleware = opt } } -func InterfaceBDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBDeleteClientOption = opt } +func ServiceDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceDeleteClientOption = opt } } -func InterfaceBDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +func ServiceDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceDeleteEndpointMiddleware = opt } } -func InterfaceBGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBGetClientOption = opt } +func ServiceGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceGetClientOption = opt } } -func InterfaceBGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBGetEndpointMiddleware = opt } +func ServiceGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceGetEndpointMiddleware = opt } } -func InterfaceBGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBGetAllClientOption = opt } +func ServiceGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceGetAllClientOption = opt } } -func InterfaceBGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +func ServiceGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceGetAllEndpointMiddleware = opt } } -func InterfaceBTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodClientOption = opt } +func ServiceTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceTestMethodClientOption = opt } } -func InterfaceBTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +func ServiceTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceTestMethodEndpointMiddleware = opt } } -func InterfaceBTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethod2ClientOption = opt } +func ServiceTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceTestMethod2ClientOption = opt } } -func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +func ServiceTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceTestMethod2EndpointMiddleware = opt } } -func InterfaceBTestMethodOptionalsClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodOptionalsClientOption = opt } +func ServiceTestMethodOptionalsClientOptions(opt ...jsonrpc.ClientOption) ClientOption { + return func(c *clientOpts) { c.serviceTestMethodOptionalsClientOption = opt } } -func InterfaceBTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodOptionalsEndpointMiddleware = opt } +func ServiceTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.serviceTestMethodOptionalsEndpointMiddleware = opt } } -type clientInterfaceB struct { - createEndpoint endpoint.Endpoint - deleteEndpoint endpoint.Endpoint - getEndpoint endpoint.Endpoint - getAllEndpoint endpoint.Endpoint - testMethodEndpoint endpoint.Endpoint - testMethod2Endpoint endpoint.Endpoint - testMethodOptionalsEndpoint endpoint.Endpoint +type clientService struct { + serviceCreateEndpoint endpoint.Endpoint + serviceDeleteEndpoint endpoint.Endpoint + serviceGetEndpoint endpoint.Endpoint + serviceGetAllEndpoint endpoint.Endpoint + serviceTestMethodEndpoint endpoint.Endpoint + serviceTestMethod2Endpoint endpoint.Endpoint + serviceTestMethodOptionalsEndpoint endpoint.Endpoint } -func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { - _, err := c.createEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data}) +func (c *clientService) Create(ctx context.Context, newData Data, name string, data []byte) error { + _, err := c.serviceCreateEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data}) if err != nil { return err } return nil } -func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.deleteEndpoint(ctx, DeleteRequest{Id: id}) +func (c *clientService) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.serviceDeleteEndpoint(ctx, DeleteRequest{Id: id}) if err != nil { return "", "", err } @@ -123,8 +123,8 @@ func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, return response.A, response.B, nil } -func (c *clientInterfaceB) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.getEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) +func (c *clientService) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.serviceGetEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) if err != nil { return User{}, err } @@ -132,8 +132,8 @@ func (c *clientInterfaceB) Get(ctx context.Context, id uuid.UUID, name string, f return response, nil } -func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.getAllEndpoint(ctx, GetAllRequest{Members: members}) +func (c *clientService) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.serviceGetAllEndpoint(ctx, GetAllRequest{Members: members}) if err != nil { return nil, err } @@ -141,8 +141,8 @@ func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User return response, nil } -func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.testMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) +func (c *clientService) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.serviceTestMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) if err != nil { return nil, err } @@ -150,16 +150,16 @@ func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{ return response, nil } -func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.testMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) +func (c *clientService) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.serviceTestMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) if err != nil { return err } return nil } -func (c *clientInterfaceB) TestMethodOptionals(ctx context.Context, ns string) error { - _, err := c.testMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns}) +func (c *clientService) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { + _, err := c.serviceTestMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns, Options: options}) if err != nil { return err } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go index e8dbdf97..3669d756 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go @@ -11,7 +11,7 @@ import ( "github.com/google/uuid" ) -func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceCreateEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(CreateRequest) err := s.Create(ctx, req.NewData, req.Name, req.Data) @@ -23,7 +23,7 @@ func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceDeleteEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(DeleteRequest) a, b, err := s.Delete(ctx, req.Id) @@ -35,7 +35,7 @@ func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceGetEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(GetRequest) result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) @@ -47,7 +47,7 @@ func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceGetAllEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(GetAllRequest) result, err := s.GetAll(ctx, req.Members) @@ -59,7 +59,7 @@ func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(TestMethodRequest) result, err := s.TestMethod(req.Data, req.Ss) @@ -71,7 +71,7 @@ func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(TestMethod2Request) err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) @@ -83,7 +83,7 @@ func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethodOptionalsEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeServiceTestMethodOptionalsEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(TestMethodOptionalsRequest) err := s.TestMethodOptionals(ctx, req.Ns, req.Options...) @@ -95,7 +95,7 @@ func MakeInterfaceBTestMethodOptionalsEndpoint(s InterfaceB) endpoint.Endpoint { } -type InterfaceBEndpointSet struct { +type ServiceEndpointSet struct { CreateEndpoint endpoint.Endpoint DeleteEndpoint endpoint.Endpoint GetEndpoint endpoint.Endpoint @@ -105,15 +105,15 @@ type InterfaceBEndpointSet struct { TestMethodOptionalsEndpoint endpoint.Endpoint } -func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { - return InterfaceBEndpointSet{ - CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), - DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), - GetEndpoint: MakeInterfaceBGetEndpoint(svc), - GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), - TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), - TestMethodOptionalsEndpoint: MakeInterfaceBTestMethodOptionalsEndpoint(svc), +func MakeServiceEndpointSet(svc InterfaceB) ServiceEndpointSet { + return ServiceEndpointSet{ + CreateEndpoint: MakeServiceCreateEndpoint(svc), + DeleteEndpoint: MakeServiceDeleteEndpoint(svc), + GetEndpoint: MakeServiceGetEndpoint(svc), + GetAllEndpoint: MakeServiceGetAllEndpoint(svc), + TestMethodEndpoint: MakeServiceTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeServiceTestMethod2Endpoint(svc), + TestMethodOptionalsEndpoint: MakeServiceTestMethodOptionalsEndpoint(svc), } } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go index 266d2e4e..5cdfc9ca 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go @@ -30,7 +30,7 @@ func (e *httpError) SetErrorData(data interface{}) { func (e *httpError) SetErrorMessage(message string) { e.message = message } -func interfaceBCreateErrorDecode(code int, message string, data interface{}) (err error) { +func serviceCreateErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -46,7 +46,7 @@ func interfaceBCreateErrorDecode(code int, message string, data interface{}) (er return } -func interfaceBDeleteErrorDecode(code int, message string, data interface{}) (err error) { +func serviceDeleteErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -60,7 +60,7 @@ func interfaceBDeleteErrorDecode(code int, message string, data interface{}) (er return } -func interfaceBGetErrorDecode(code int, message string, data interface{}) (err error) { +func serviceGetErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -74,7 +74,7 @@ func interfaceBGetErrorDecode(code int, message string, data interface{}) (err e return } -func interfaceBGetAllErrorDecode(code int, message string, data interface{}) (err error) { +func serviceGetAllErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -88,7 +88,7 @@ func interfaceBGetAllErrorDecode(code int, message string, data interface{}) (er return } -func interfaceBTestMethodErrorDecode(code int, message string, data interface{}) (err error) { +func serviceTestMethodErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -102,7 +102,7 @@ func interfaceBTestMethodErrorDecode(code int, message string, data interface{}) return } -func interfaceBTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { +func serviceTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -116,7 +116,7 @@ func interfaceBTestMethod2ErrorDecode(code int, message string, data interface{} return } -func interfaceBTestMethodOptionalsErrorDecode(code int, message string, data interface{}) (err error) { +func serviceTestMethodOptionalsErrorDecode(code int, message string, data interface{}) (err error) { switch code { default: err = &httpError{code: code} @@ -153,76 +153,76 @@ func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { type ServerOption func(*serverOpts) type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - interfaceBCreateServerOption []jsonrpc.ServerOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteServerOption []jsonrpc.ServerOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetServerOption []jsonrpc.ServerOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllServerOption []jsonrpc.ServerOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodServerOption []jsonrpc.ServerOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ServerOption []jsonrpc.ServerOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware - interfaceBTestMethodOptionalsServerOption []jsonrpc.ServerOption - interfaceBTestMethodOptionalsEndpointMiddleware []endpoint.Middleware + genericServerOption []jsonrpc.ServerOption + genericEndpointMiddleware []endpoint.Middleware + serviceCreateServerOption []jsonrpc.ServerOption + serviceCreateEndpointMiddleware []endpoint.Middleware + serviceDeleteServerOption []jsonrpc.ServerOption + serviceDeleteEndpointMiddleware []endpoint.Middleware + serviceGetServerOption []jsonrpc.ServerOption + serviceGetEndpointMiddleware []endpoint.Middleware + serviceGetAllServerOption []jsonrpc.ServerOption + serviceGetAllEndpointMiddleware []endpoint.Middleware + serviceTestMethodServerOption []jsonrpc.ServerOption + serviceTestMethodEndpointMiddleware []endpoint.Middleware + serviceTestMethod2ServerOption []jsonrpc.ServerOption + serviceTestMethod2EndpointMiddleware []endpoint.Middleware + serviceTestMethodOptionalsServerOption []jsonrpc.ServerOption + serviceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware } -func InterfaceBCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +func ServiceCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceCreateServerOption = opt } } -func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func ServiceCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceCreateEndpointMiddleware = opt } } -func InterfaceBDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBDeleteServerOption = opt } +func ServiceDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceDeleteServerOption = opt } } -func InterfaceBDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +func ServiceDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceDeleteEndpointMiddleware = opt } } -func InterfaceBGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBGetServerOption = opt } +func ServiceGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceGetServerOption = opt } } -func InterfaceBGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBGetEndpointMiddleware = opt } +func ServiceGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceGetEndpointMiddleware = opt } } -func InterfaceBGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBGetAllServerOption = opt } +func ServiceGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceGetAllServerOption = opt } } -func InterfaceBGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +func ServiceGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceGetAllEndpointMiddleware = opt } } -func InterfaceBTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodServerOption = opt } +func ServiceTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceTestMethodServerOption = opt } } -func InterfaceBTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +func ServiceTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceTestMethodEndpointMiddleware = opt } } -func InterfaceBTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethod2ServerOption = opt } +func ServiceTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceTestMethod2ServerOption = opt } } -func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +func ServiceTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceTestMethod2EndpointMiddleware = opt } } -func InterfaceBTestMethodOptionalsServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodOptionalsServerOption = opt } +func ServiceTestMethodOptionalsServerOptions(opt ...jsonrpc.ServerOption) ServerOption { + return func(c *serverOpts) { c.serviceTestMethodOptionalsServerOption = opt } } -func InterfaceBTestMethodOptionalsServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodOptionalsEndpointMiddleware = opt } +func ServiceTestMethodOptionalsServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.serviceTestMethodOptionalsEndpointMiddleware = opt } } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go index f8a72c86..cb39a98d 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go @@ -100,12 +100,12 @@ func (s *ServiceInstrumentingMiddleware) TestMethod2(ctx context.Context, ns str return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) } -func (s *ServiceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { +func (s *ServiceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { defer func(begin time.Time) { s.opts.requestCount.With("method", "TestMethodOptionals").Add(1) s.opts.requestLatency.With("method", "TestMethodOptionals").Observe(time.Since(begin).Seconds()) }(time.Now()) - return s.next.TestMethodOptionals(ctx, ns) + return s.next.TestMethodOptionals(ctx, ns, options...) } func NewInstrumentingServiceMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { diff --git a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go index 8f95b32a..c5df33ad 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go @@ -26,7 +26,8 @@ func (s *ServiceLoggingMiddleware) Create(ctx context.Context, newData Data, nam if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) + logger.Log("name", name, "data", len(data), "err", logErr) }(time.Now()) err = s.next.Create(ctx, newData, name, data) return err @@ -52,7 +53,8 @@ func (s *ServiceLoggingMiddleware) Get(ctx context.Context, id uuid.UUID, name s if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Get", "took", time.Since(now), "id", id, "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Get", "took", time.Since(now)) + logger.Log("id", id, "err", logErr) }(time.Now()) result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) return result, err @@ -84,11 +86,24 @@ func (s *ServiceLoggingMiddleware) TestMethod2(ctx context.Context, ns string, u return err } -func (s *ServiceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { +func (s *ServiceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { var ( err error ) - err = s.next.TestMethodOptionals(ctx, ns) + defer func(now time.Time) { + logErr := err + if le, ok := err.(interface{ LogError() error }); ok { + logErr = le.LogError() + } + logger := log.WithPrefix(s.logger, "method", "TestMethodOptionals", "took", time.Since(now)) + var variadicParam OptionService + if len(options) > 0 { + variadicParam = options[0] + } + logger = log.WithPrefix(logger, "options", variadicParam) + logger.Log("ns", ns, "err", logErr) + }(time.Now()) + err = s.next.TestMethodOptionals(ctx, ns, options...) return err } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go index f45558d6..7c8fa1a6 100755 --- a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go @@ -33,7 +33,7 @@ func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessa return b, nil } -func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { +func MakeServiceEndpointCodecMap(ep ServiceEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { var namespace string if len(ns) > 0 { namespace = strings.Join(ns, ".") + "." @@ -141,21 +141,21 @@ func MakeInterfaceBEndpointCodecMap(ep InterfaceBEndpointSet, ns ...string) json } // HTTP JSONRPC Transport -func MakeHandlerJSONRPC(svcInterfaceB InterfaceB, options ...ServerOption) (http.Handler, error) { +func MakeHandlerJSONRPC(svcService InterfaceB, options ...ServerOption) (http.Handler, error) { opts := &serverOpts{} for _, o := range options { o(opts) } - epSet := MakeInterfaceBEndpointSet(svcInterfaceB) - epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSet.CreateEndpoint) - epSet.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(epSet.DeleteEndpoint) - epSet.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(epSet.GetEndpoint) - epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) - epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) - epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) - epSet.TestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodOptionalsEndpointMiddleware...))(epSet.TestMethodOptionalsEndpoint) + epSet := MakeServiceEndpointSet(svcService) + epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceCreateEndpointMiddleware...))(epSet.CreateEndpoint) + epSet.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceDeleteEndpointMiddleware...))(epSet.DeleteEndpoint) + epSet.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetEndpointMiddleware...))(epSet.GetEndpoint) + epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) + epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) + epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) + epSet.TestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodOptionalsEndpointMiddleware...))(epSet.TestMethodOptionalsEndpoint) r := mux.NewRouter() - handler := jsonrpc.NewServer(MakeInterfaceBEndpointCodecMap(epSet), opts.genericServerOption...) + handler := jsonrpc.NewServer(MakeServiceEndpointCodecMap(epSet), opts.genericServerOption...) r.Methods("POST").Path("").Handler(handler) return r, nil } diff --git a/v2/fixture/ServiceJSONRPCSingle/app/swipe.go b/v2/fixture/ServiceJSONRPCSingle/app/swipe.go index c1dde4a3..f8b84eec 100644 --- a/v2/fixture/ServiceJSONRPCSingle/app/swipe.go +++ b/v2/fixture/ServiceJSONRPCSingle/app/swipe.go @@ -32,6 +32,10 @@ func Swipe() { swipe.LoggingParams([]string{"id"}, []string{}), ), + swipe.MethodOptions(InterfaceB.TestMethodOptionals, + swipe.Logging(true), + ), + swipe.MethodDefaultOptions( swipe.Logging(false), swipe.Instrumenting(true), diff --git a/v2/fixture/ServiceRESTMulti/app/client_gen.go b/v2/fixture/ServiceRESTMulti/app/client_gen.go index b7644e93..f4c0a83a 100755 --- a/v2/fixture/ServiceRESTMulti/app/client_gen.go +++ b/v2/fixture/ServiceRESTMulti/app/client_gen.go @@ -20,9 +20,9 @@ import ( "github.com/pquerna/ffjson/ffjson" ) -func NewClientRESTInterfaceA(tgt string, options ...ClientOption) (InterfaceA, error) { +func NewClientRESTA(tgt string, options ...ClientOption) (InterfaceA, error) { opts := &clientOpts{} - c := &clientInterfaceA{} + c := &clientA{} for _, o := range options { o(opts) } @@ -40,29 +40,29 @@ func NewClientRESTInterfaceA(tgt string, options ...ClientOption) (InterfaceA, e if u.Scheme == "" { u.Scheme = "https" } - c.testMethodEndpoint = http.NewClient( + c.aTestMethodEndpoint = http.NewClient( "GET", u, func(_ context.Context, r *http2.Request, request interface{}) error { r.Method = "GET" - r.URL.Path += "/a/testMethod" + r.URL.Path += "/a/test-method" return nil }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceATestMethodErrorDecode(statusCode) + return nil, aTestMethodErrorDecode(statusCode) } return nil, nil }, - append(opts.genericClientOption, opts.interfaceATestMethodClientOption...)..., + append(opts.genericClientOption, opts.aTestMethodClientOption...)..., ).Endpoint() - c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(c.testMethodEndpoint) + c.aTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(c.aTestMethodEndpoint) return c, nil } -func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, error) { +func NewClientRESTB(tgt string, options ...ClientOption) (InterfaceB, error) { opts := &clientOpts{} - c := &clientInterfaceB{} + c := &clientB{} for _, o := range options { o(opts) } @@ -80,13 +80,13 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e if u.Scheme == "" { u.Scheme = "https" } - c.createEndpoint = http.NewClient( + c.bCreateEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(InterfaceBCreateRequest) + req, ok := request.(BCreateCreateRequest) if !ok { - return fmt.Errorf("couldn't assert request as InterfaceBCreateRequest, got %T", request) + return fmt.Errorf("couldn't assert request as BCreateCreateRequest, got %T", request) } r.Method = http2.MethodPost r.URL.Path += "/b/create" @@ -99,20 +99,20 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceBCreateErrorDecode(statusCode) + return nil, bCreateErrorDecode(statusCode) } return nil, nil }, - append(opts.genericClientOption, opts.interfaceBCreateClientOption...)..., + append(opts.genericClientOption, opts.bCreateClientOption...)..., ).Endpoint() - c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(c.createEndpoint) - c.deleteEndpoint = http.NewClient( + c.bCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(c.bCreateEndpoint) + c.bDeleteEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(InterfaceBDeleteRequest) + req, ok := request.(BDeleteDeleteRequest) if !ok { - return fmt.Errorf("couldn't assert request as InterfaceBDeleteRequest, got %T", request) + return fmt.Errorf("couldn't assert request as BDeleteDeleteRequest, got %T", request) } r.Method = http2.MethodPost r.URL.Path += "/b/delete" @@ -125,29 +125,29 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceBDeleteErrorDecode(statusCode) + return nil, bDeleteErrorDecode(statusCode) } - var resp InterfaceBDeleteRequest + var resp BDeleteDeleteRequest b, err := ioutil.ReadAll(r.Body) if err != nil { return nil, err } err = ffjson.Unmarshal(b, &resp) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteRequest: %s", err) } return resp, nil }, - append(opts.genericClientOption, opts.interfaceBDeleteClientOption...)..., + append(opts.genericClientOption, opts.bDeleteClientOption...)..., ).Endpoint() - c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(c.deleteEndpoint) - c.getEndpoint = http.NewClient( + c.bDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(c.bDeleteEndpoint) + c.bGetEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(InterfaceBGetRequest) + req, ok := request.(BGetGetRequest) if !ok { - return fmt.Errorf("couldn't assert request as InterfaceBGetRequest, got %T", request) + return fmt.Errorf("couldn't assert request as BGetGetRequest, got %T", request) } r.Method = http2.MethodPost r.URL.Path += "/b/get-test" @@ -164,7 +164,7 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceBGetErrorDecode(statusCode) + return nil, bGetErrorDecode(statusCode) } var resp User b, err := ioutil.ReadAll(r.Body) @@ -173,23 +173,23 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e } err = ffjson.Unmarshal(b, &resp) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetGetRequest: %s", err) } return resp, nil }, - append(opts.genericClientOption, opts.interfaceBGetClientOption...)..., + append(opts.genericClientOption, opts.bGetClientOption...)..., ).Endpoint() - c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(c.getEndpoint) - c.getAllEndpoint = http.NewClient( + c.bGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(c.bGetEndpoint) + c.bGetAllEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(InterfaceBGetAllRequest) + req, ok := request.(BGetAllGetAllRequest) if !ok { - return fmt.Errorf("couldn't assert request as InterfaceBGetAllRequest, got %T", request) + return fmt.Errorf("couldn't assert request as BGetAllGetAllRequest, got %T", request) } r.Method = http2.MethodPost - r.URL.Path += "/b/getAll" + r.URL.Path += "/b/get-all" data, err := ffjson.Marshal(req) if err != nil { return fmt.Errorf("couldn't marshal request %T: %s", req, err) @@ -199,7 +199,7 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceBGetAllErrorDecode(statusCode) + return nil, bGetAllErrorDecode(statusCode) } var resp []*User b, err := ioutil.ReadAll(r.Body) @@ -208,23 +208,23 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e } err = ffjson.Unmarshal(b, &resp) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllRequest: %s", err) } return resp, nil }, - append(opts.genericClientOption, opts.interfaceBGetAllClientOption...)..., + append(opts.genericClientOption, opts.bGetAllClientOption...)..., ).Endpoint() - c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(c.getAllEndpoint) - c.testMethodEndpoint = http.NewClient( + c.bGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(c.bGetAllEndpoint) + c.bTestMethodEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(InterfaceBTestMethodRequest) + req, ok := request.(BTestMethodTestMethodRequest) if !ok { - return fmt.Errorf("couldn't assert request as InterfaceBTestMethodRequest, got %T", request) + return fmt.Errorf("couldn't assert request as BTestMethodTestMethodRequest, got %T", request) } r.Method = http2.MethodPost - r.URL.Path += "/b/testMethod" + r.URL.Path += "/b/test-method" data, err := ffjson.Marshal(req) if err != nil { return fmt.Errorf("couldn't marshal request %T: %s", req, err) @@ -234,7 +234,7 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceBTestMethodErrorDecode(statusCode) + return nil, bTestMethodErrorDecode(statusCode) } var resp map[string]map[int][]string b, err := ioutil.ReadAll(r.Body) @@ -243,23 +243,23 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e } err = ffjson.Unmarshal(b, &resp) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodRequest: %s", err) + return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodRequest: %s", err) } return resp, nil }, - append(opts.genericClientOption, opts.interfaceBTestMethodClientOption...)..., + append(opts.genericClientOption, opts.bTestMethodClientOption...)..., ).Endpoint() - c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(c.testMethodEndpoint) - c.testMethod2Endpoint = http.NewClient( + c.bTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(c.bTestMethodEndpoint) + c.bTestMethod2Endpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(InterfaceBTestMethod2Request) + req, ok := request.(BTestMethod2TestMethod2Request) if !ok { - return fmt.Errorf("couldn't assert request as InterfaceBTestMethod2Request, got %T", request) + return fmt.Errorf("couldn't assert request as BTestMethod2TestMethod2Request, got %T", request) } r.Method = http2.MethodPost - r.URL.Path += "/b/testMethod2" + r.URL.Path += "/b/test-method2" data, err := ffjson.Marshal(req) if err != nil { return fmt.Errorf("couldn't marshal request %T: %s", req, err) @@ -269,12 +269,12 @@ func NewClientRESTInterfaceB(tgt string, options ...ClientOption) (InterfaceB, e }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, interfaceBTestMethod2ErrorDecode(statusCode) + return nil, bTestMethod2ErrorDecode(statusCode) } return nil, nil }, - append(opts.genericClientOption, opts.interfaceBTestMethod2ClientOption...)..., + append(opts.genericClientOption, opts.bTestMethod2ClientOption...)..., ).Endpoint() - c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) + c.bTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(c.bTestMethod2Endpoint) return c, nil } diff --git a/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go b/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go index 4da2585d..7dc1ad00 100755 --- a/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go +++ b/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go @@ -17,38 +17,38 @@ type AppClient struct { } func NewClientREST(tgt string, opts ...ClientOption) (*AppClient, error) { - interfaceAClient, err := NewClientRESTInterfaceA(tgt, opts...) + aClient, err := NewClientRESTA(tgt, opts...) if err != nil { return nil, err } - interfaceBClient, err := NewClientRESTInterfaceB(tgt, opts...) + bClient, err := NewClientRESTB(tgt, opts...) if err != nil { return nil, err } return &AppClient{ - AClient: interfaceAClient, - BClient: interfaceBClient, + AClient: aClient, + BClient: bClient, }, nil } type ClientOption func(*clientOpts) type clientOpts struct { - interfaceATestMethodClientOption []http.ClientOption - interfaceATestMethodEndpointMiddleware []endpoint.Middleware - interfaceBCreateClientOption []http.ClientOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteClientOption []http.ClientOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetClientOption []http.ClientOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllClientOption []http.ClientOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodClientOption []http.ClientOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ClientOption []http.ClientOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware - genericClientOption []http.ClientOption - genericEndpointMiddleware []endpoint.Middleware + aTestMethodClientOption []http.ClientOption + aTestMethodEndpointMiddleware []endpoint.Middleware + bCreateClientOption []http.ClientOption + bCreateEndpointMiddleware []endpoint.Middleware + bDeleteClientOption []http.ClientOption + bDeleteEndpointMiddleware []endpoint.Middleware + bGetClientOption []http.ClientOption + bGetEndpointMiddleware []endpoint.Middleware + bGetAllClientOption []http.ClientOption + bGetAllEndpointMiddleware []endpoint.Middleware + bTestMethodClientOption []http.ClientOption + bTestMethodEndpointMiddleware []endpoint.Middleware + bTestMethod2ClientOption []http.ClientOption + bTestMethod2EndpointMiddleware []endpoint.Middleware + genericClientOption []http.ClientOption + genericEndpointMiddleware []endpoint.Middleware } func GenericClientOptions(opt ...http.ClientOption) ClientOption { @@ -59,99 +59,99 @@ func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { return func(c *clientOpts) { c.genericEndpointMiddleware = opt } } -func InterfaceATestMethodClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceATestMethodClientOption = opt } +func ATestMethodClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.aTestMethodClientOption = opt } } -func InterfaceATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +func ATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.aTestMethodEndpointMiddleware = opt } } -func InterfaceBCreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBCreateClientOption = opt } +func BCreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.bCreateClientOption = opt } } -func InterfaceBCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func BCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bCreateEndpointMiddleware = opt } } -func InterfaceBDeleteClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBDeleteClientOption = opt } +func BDeleteClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.bDeleteClientOption = opt } } -func InterfaceBDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +func BDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bDeleteEndpointMiddleware = opt } } -func InterfaceBGetClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBGetClientOption = opt } +func BGetClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.bGetClientOption = opt } } -func InterfaceBGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBGetEndpointMiddleware = opt } +func BGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bGetEndpointMiddleware = opt } } -func InterfaceBGetAllClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBGetAllClientOption = opt } +func BGetAllClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.bGetAllClientOption = opt } } -func InterfaceBGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +func BGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bGetAllEndpointMiddleware = opt } } -func InterfaceBTestMethodClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodClientOption = opt } +func BTestMethodClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.bTestMethodClientOption = opt } } -func InterfaceBTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +func BTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bTestMethodEndpointMiddleware = opt } } -func InterfaceBTestMethod2ClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethod2ClientOption = opt } +func BTestMethod2ClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.bTestMethod2ClientOption = opt } } -func InterfaceBTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +func BTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.bTestMethod2EndpointMiddleware = opt } } -type clientInterfaceA struct { - testMethodEndpoint endpoint.Endpoint +type clientA struct { + aTestMethodEndpoint endpoint.Endpoint } -func (c *clientInterfaceA) TestMethod() { - _, _ = c.testMethodEndpoint(context.Background(), nil) +func (c *clientA) TestMethod() { + _, _ = c.aTestMethodEndpoint(context.Background(), nil) return } -type clientInterfaceB struct { - createEndpoint endpoint.Endpoint - deleteEndpoint endpoint.Endpoint - getEndpoint endpoint.Endpoint - getAllEndpoint endpoint.Endpoint - testMethodEndpoint endpoint.Endpoint - testMethod2Endpoint endpoint.Endpoint +type clientB struct { + bCreateEndpoint endpoint.Endpoint + bDeleteEndpoint endpoint.Endpoint + bGetEndpoint endpoint.Endpoint + bGetAllEndpoint endpoint.Endpoint + bTestMethodEndpoint endpoint.Endpoint + bTestMethod2Endpoint endpoint.Endpoint } -func (c *clientInterfaceB) Create(ctx context.Context, newData Data, name string, data []byte) error { - _, err := c.createEndpoint(ctx, InterfaceBCreateRequest{NewData: newData, Name: name, Data: data}) +func (c *clientB) Create(ctx context.Context, newData Data, name string, data []byte) error { + _, err := c.bCreateEndpoint(ctx, BCreateCreateRequest{NewData: newData, Name: name, Data: data}) if err != nil { return err } return nil } -func (c *clientInterfaceB) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.deleteEndpoint(ctx, InterfaceBDeleteRequest{Id: id}) +func (c *clientB) Delete(ctx context.Context, id uint) (string, string, error) { + resp, err := c.bDeleteEndpoint(ctx, BDeleteDeleteRequest{Id: id}) if err != nil { return "", "", err } - response := resp.(InterfaceBDeleteResponse) + response := resp.(BDeleteDeleteResponse) return response.A, response.B, nil } -func (c *clientInterfaceB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.getEndpoint(ctx, InterfaceBGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) +func (c *clientB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { + resp, err := c.bGetEndpoint(ctx, BGetGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) if err != nil { return User{}, err } @@ -159,8 +159,8 @@ func (c *clientInterfaceB) Get(ctx context.Context, id int, name string, fname s return response, nil } -func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.getAllEndpoint(ctx, InterfaceBGetAllRequest{Members: members}) +func (c *clientB) GetAll(ctx context.Context, members Members) ([]*User, error) { + resp, err := c.bGetAllEndpoint(ctx, BGetAllGetAllRequest{Members: members}) if err != nil { return nil, err } @@ -168,8 +168,8 @@ func (c *clientInterfaceB) GetAll(ctx context.Context, members Members) ([]*User return response, nil } -func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.testMethodEndpoint(context.Background(), InterfaceBTestMethodRequest{Data: data, Ss: ss}) +func (c *clientB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { + resp, err := c.bTestMethodEndpoint(context.Background(), BTestMethodTestMethodRequest{Data: data, Ss: ss}) if err != nil { return nil, err } @@ -177,8 +177,8 @@ func (c *clientInterfaceB) TestMethod(data map[string]interface{}, ss interface{ return response, nil } -func (c *clientInterfaceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.testMethod2Endpoint(ctx, InterfaceBTestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) +func (c *clientB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { + _, err := c.bTestMethod2Endpoint(ctx, BTestMethod2TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) if err != nil { return err } diff --git a/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go b/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go index f9c5ca2a..ab02d7fd 100755 --- a/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go +++ b/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go @@ -10,7 +10,7 @@ import ( "github.com/go-kit/kit/endpoint" ) -func MakeInterfaceATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { +func MakeATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { s.TestMethod() return nil, nil @@ -18,9 +18,9 @@ func MakeInterfaceATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { } -func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBCreateEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBCreateRequest) + req := request.(BCreateCreateRequest) err := s.Create(ctx, req.NewData, req.Name, req.Data) if err != nil { return nil, err @@ -30,21 +30,21 @@ func MakeInterfaceBCreateEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBDeleteRequest) + req := request.(BDeleteDeleteRequest) a, b, err := s.Delete(ctx, req.Id) if err != nil { return nil, err } - return InterfaceBDeleteResponse{A: a, B: b}, nil + return BDeleteDeleteResponse{A: a, B: b}, nil } } -func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBGetEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBGetRequest) + req := request.(BGetGetRequest) result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) if err != nil { return nil, err @@ -54,9 +54,9 @@ func MakeInterfaceBGetEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBGetAllRequest) + req := request.(BGetAllGetAllRequest) result, err := s.GetAll(ctx, req.Members) if err != nil { return nil, err @@ -66,9 +66,9 @@ func MakeInterfaceBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { +func MakeBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBTestMethodRequest) + req := request.(BTestMethodTestMethodRequest) result, err := s.TestMethod(req.Data, req.Ss) if err != nil { return nil, err @@ -78,9 +78,9 @@ func MakeInterfaceBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { } -func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { +func MakeBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(InterfaceBTestMethod2Request) + req := request.(BTestMethod2TestMethod2Request) err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) if err != nil { return nil, err @@ -90,17 +90,17 @@ func MakeInterfaceBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { } -type InterfaceAEndpointSet struct { +type AEndpointSet struct { TestMethodEndpoint endpoint.Endpoint } -func MakeInterfaceAEndpointSet(svc InterfaceA) InterfaceAEndpointSet { - return InterfaceAEndpointSet{ - TestMethodEndpoint: MakeInterfaceATestMethodEndpoint(svc), +func MakeAEndpointSet(svc InterfaceA) AEndpointSet { + return AEndpointSet{ + TestMethodEndpoint: MakeATestMethodEndpoint(svc), } } -type InterfaceBEndpointSet struct { +type BEndpointSet struct { CreateEndpoint endpoint.Endpoint DeleteEndpoint endpoint.Endpoint GetEndpoint endpoint.Endpoint @@ -109,30 +109,30 @@ type InterfaceBEndpointSet struct { TestMethod2Endpoint endpoint.Endpoint } -func MakeInterfaceBEndpointSet(svc InterfaceB) InterfaceBEndpointSet { - return InterfaceBEndpointSet{ - CreateEndpoint: MakeInterfaceBCreateEndpoint(svc), - DeleteEndpoint: MakeInterfaceBDeleteEndpoint(svc), - GetEndpoint: MakeInterfaceBGetEndpoint(svc), - GetAllEndpoint: MakeInterfaceBGetAllEndpoint(svc), - TestMethodEndpoint: MakeInterfaceBTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeInterfaceBTestMethod2Endpoint(svc), +func MakeBEndpointSet(svc InterfaceB) BEndpointSet { + return BEndpointSet{ + CreateEndpoint: MakeBCreateEndpoint(svc), + DeleteEndpoint: MakeBDeleteEndpoint(svc), + GetEndpoint: MakeBGetEndpoint(svc), + GetAllEndpoint: MakeBGetAllEndpoint(svc), + TestMethodEndpoint: MakeBTestMethodEndpoint(svc), + TestMethod2Endpoint: MakeBTestMethod2Endpoint(svc), } } -type InterfaceBCreateRequest struct { +type BCreateCreateRequest struct { NewData Data `json:"newData"` Name string `json:"name"` Data []byte `json:"data"` } -type InterfaceBDeleteRequest struct { +type BDeleteDeleteRequest struct { Id uint `json:"id"` } -type InterfaceBDeleteResponse struct { +type BDeleteDeleteResponse struct { A string `json:"a"` B string `json:"b"` } -type InterfaceBGetRequest struct { +type BGetGetRequest struct { Id int `json:"id"` Name string `json:"name"` Fname string `json:"fname"` @@ -141,14 +141,14 @@ type InterfaceBGetRequest struct { B int `json:"b"` Cc int `json:"cc"` } -type InterfaceBGetAllRequest struct { +type BGetAllGetAllRequest struct { Members Members `json:"members"` } -type InterfaceBTestMethodRequest struct { +type BTestMethodTestMethodRequest struct { Data map[string]interface{} `json:"data"` Ss interface{} `json:"ss"` } -type InterfaceBTestMethod2Request struct { +type BTestMethod2TestMethod2Request struct { Ns string `json:"ns"` Utype string `json:"utype"` User string `json:"user"` diff --git a/v2/fixture/ServiceRESTMulti/app/http_gen.go b/v2/fixture/ServiceRESTMulti/app/http_gen.go index d7a48dde..7834310d 100755 --- a/v2/fixture/ServiceRESTMulti/app/http_gen.go +++ b/v2/fixture/ServiceRESTMulti/app/http_gen.go @@ -21,7 +21,7 @@ func (e *httpError) Error() string { func (e *httpError) StatusCode() int { return e.code } -func interfaceATestMethodErrorDecode(code int) (err error) { +func aTestMethodErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -29,7 +29,7 @@ func interfaceATestMethodErrorDecode(code int) (err error) { return } -func interfaceBCreateErrorDecode(code int) (err error) { +func bCreateErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -37,7 +37,7 @@ func interfaceBCreateErrorDecode(code int) (err error) { return } -func interfaceBDeleteErrorDecode(code int) (err error) { +func bDeleteErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -45,7 +45,7 @@ func interfaceBDeleteErrorDecode(code int) (err error) { return } -func interfaceBGetErrorDecode(code int) (err error) { +func bGetErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -53,7 +53,7 @@ func interfaceBGetErrorDecode(code int) (err error) { return } -func interfaceBGetAllErrorDecode(code int) (err error) { +func bGetAllErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -61,7 +61,7 @@ func interfaceBGetAllErrorDecode(code int) (err error) { return } -func interfaceBTestMethodErrorDecode(code int) (err error) { +func bTestMethodErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -69,7 +69,7 @@ func interfaceBTestMethodErrorDecode(code int) (err error) { return } -func interfaceBTestMethod2ErrorDecode(code int) (err error) { +func bTestMethod2ErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -100,76 +100,76 @@ func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { type ServerOption func(*serverOpts) type serverOpts struct { - genericServerOption []http.ServerOption - genericEndpointMiddleware []endpoint.Middleware - interfaceATestMethodServerOption []http.ServerOption - interfaceATestMethodEndpointMiddleware []endpoint.Middleware - interfaceBCreateServerOption []http.ServerOption - interfaceBCreateEndpointMiddleware []endpoint.Middleware - interfaceBDeleteServerOption []http.ServerOption - interfaceBDeleteEndpointMiddleware []endpoint.Middleware - interfaceBGetServerOption []http.ServerOption - interfaceBGetEndpointMiddleware []endpoint.Middleware - interfaceBGetAllServerOption []http.ServerOption - interfaceBGetAllEndpointMiddleware []endpoint.Middleware - interfaceBTestMethodServerOption []http.ServerOption - interfaceBTestMethodEndpointMiddleware []endpoint.Middleware - interfaceBTestMethod2ServerOption []http.ServerOption - interfaceBTestMethod2EndpointMiddleware []endpoint.Middleware + genericServerOption []http.ServerOption + genericEndpointMiddleware []endpoint.Middleware + aTestMethodServerOption []http.ServerOption + aTestMethodEndpointMiddleware []endpoint.Middleware + bCreateServerOption []http.ServerOption + bCreateEndpointMiddleware []endpoint.Middleware + bDeleteServerOption []http.ServerOption + bDeleteEndpointMiddleware []endpoint.Middleware + bGetServerOption []http.ServerOption + bGetEndpointMiddleware []endpoint.Middleware + bGetAllServerOption []http.ServerOption + bGetAllEndpointMiddleware []endpoint.Middleware + bTestMethodServerOption []http.ServerOption + bTestMethodEndpointMiddleware []endpoint.Middleware + bTestMethod2ServerOption []http.ServerOption + bTestMethod2EndpointMiddleware []endpoint.Middleware } -func InterfaceATestMethodServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceATestMethodServerOption = opt } +func ATestMethodServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.aTestMethodServerOption = opt } } -func InterfaceATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceATestMethodEndpointMiddleware = opt } +func ATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.aTestMethodEndpointMiddleware = opt } } -func InterfaceBCreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateServerOption = opt } +func BCreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.bCreateServerOption = opt } } -func InterfaceBCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBCreateEndpointMiddleware = opt } +func BCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bCreateEndpointMiddleware = opt } } -func InterfaceBDeleteServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBDeleteServerOption = opt } +func BDeleteServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.bDeleteServerOption = opt } } -func InterfaceBDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBDeleteEndpointMiddleware = opt } +func BDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bDeleteEndpointMiddleware = opt } } -func InterfaceBGetServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBGetServerOption = opt } +func BGetServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.bGetServerOption = opt } } -func InterfaceBGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBGetEndpointMiddleware = opt } +func BGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bGetEndpointMiddleware = opt } } -func InterfaceBGetAllServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBGetAllServerOption = opt } +func BGetAllServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.bGetAllServerOption = opt } } -func InterfaceBGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBGetAllEndpointMiddleware = opt } +func BGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bGetAllEndpointMiddleware = opt } } -func InterfaceBTestMethodServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodServerOption = opt } +func BTestMethodServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.bTestMethodServerOption = opt } } -func InterfaceBTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethodEndpointMiddleware = opt } +func BTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bTestMethodEndpointMiddleware = opt } } -func InterfaceBTestMethod2ServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethod2ServerOption = opt } +func BTestMethod2ServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.bTestMethod2ServerOption = opt } } -func InterfaceBTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.interfaceBTestMethod2EndpointMiddleware = opt } +func BTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.bTestMethod2EndpointMiddleware = opt } } diff --git a/v2/fixture/ServiceRESTMulti/app/logging_gen.go b/v2/fixture/ServiceRESTMulti/app/logging_gen.go index ae4f0114..c936fdb0 100755 --- a/v2/fixture/ServiceRESTMulti/app/logging_gen.go +++ b/v2/fixture/ServiceRESTMulti/app/logging_gen.go @@ -38,7 +38,8 @@ func (s *BLoggingMiddleware) Create(ctx context.Context, newData Data, name stri if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) + logger.Log("name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) }(time.Now()) err = s.next.Create(ctx, newData, name, data) return err diff --git a/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json index 197f82ef..2d8203aa 100755 --- a/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json +++ b/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/interface-a/test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/interface-a/a-test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceRESTMulti/app/server_gen.go b/v2/fixture/ServiceRESTMulti/app/server_gen.go index 29572c02..47b348f1 100755 --- a/v2/fixture/ServiceRESTMulti/app/server_gen.go +++ b/v2/fixture/ServiceRESTMulti/app/server_gen.go @@ -69,21 +69,21 @@ func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response in } // MakeHandlerREST HTTP REST Transport -func MakeHandlerREST(svcInterfaceA InterfaceA, svcInterfaceB InterfaceB, options ...ServerOption) (http2.Handler, error) { +func MakeHandlerREST(svcA InterfaceA, svcB InterfaceB, options ...ServerOption) (http2.Handler, error) { opts := &serverOpts{} for _, o := range options { o(opts) } opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) - epSetA := MakeInterfaceAEndpointSet(svcInterfaceA) - epSetB := MakeInterfaceBEndpointSet(svcInterfaceB) - epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceATestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) - epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBCreateEndpointMiddleware...))(epSetB.CreateEndpoint) - epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) - epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetEndpointMiddleware...))(epSetB.GetEndpoint) - epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) - epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) - epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.interfaceBTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) + epSetA := MakeAEndpointSet(svcA) + epSetB := MakeBEndpointSet(svcB) + epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) + epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(epSetB.CreateEndpoint) + epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) + epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(epSetB.GetEndpoint) + epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) + epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) + epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) r := mux.NewRouter() r.Methods("GET").Path("/a/testmethod").Handler(http.NewServer( epSetA.TestMethodEndpoint, @@ -91,53 +91,53 @@ func MakeHandlerREST(svcInterfaceA InterfaceA, svcInterfaceB InterfaceB, options return nil, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceATestMethodServerOption...)..., + append(opts.genericServerOption, opts.aTestMethodServerOption...)..., )) r.Methods(http2.MethodPost).Path("/b/create").Handler(http.NewServer( epSetB.CreateEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req InterfaceBCreateRequest + var req BCreateCreateRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for InterfaceBCreateRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for BCreateCreateRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBCreateRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to BCreateCreateRequest: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceBCreateServerOption...)..., + append(opts.genericServerOption, opts.bCreateServerOption...)..., )) r.Methods(http2.MethodPost).Path("/b/delete").Handler(http.NewServer( epSetB.DeleteEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req InterfaceBDeleteRequest + var req BDeleteDeleteRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for InterfaceBDeleteRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for BDeleteDeleteRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBDeleteRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteRequest: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceBDeleteServerOption...)..., + append(opts.genericServerOption, opts.bDeleteServerOption...)..., )) r.Methods(http2.MethodPost).Path("/b/get-test").Handler(http.NewServer( epSetB.GetEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req InterfaceBGetRequest + var req BGetGetRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for InterfaceBGetRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for BGetGetRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetGetRequest: %w", err) } q := r.URL.Query() tmpcc := q.Get("cc") @@ -151,58 +151,58 @@ func MakeHandlerREST(svcInterfaceA InterfaceA, svcInterfaceB InterfaceB, options return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceBGetServerOption...)..., + append(opts.genericServerOption, opts.bGetServerOption...)..., )) r.Methods(http2.MethodPost).Path("/b/getall").Handler(http.NewServer( epSetB.GetAllEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req InterfaceBGetAllRequest + var req BGetAllGetAllRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for InterfaceBGetAllRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for BGetAllGetAllRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBGetAllRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllRequest: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceBGetAllServerOption...)..., + append(opts.genericServerOption, opts.bGetAllServerOption...)..., )) r.Methods(http2.MethodPost).Path("/b/testmethod").Handler(http.NewServer( epSetB.TestMethodEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req InterfaceBTestMethodRequest + var req BTestMethodTestMethodRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for InterfaceBTestMethodRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for BTestMethodTestMethodRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethodRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodRequest: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceBTestMethodServerOption...)..., + append(opts.genericServerOption, opts.bTestMethodServerOption...)..., )) r.Methods(http2.MethodPost).Path("/b/testmethod2").Handler(http.NewServer( epSetB.TestMethod2Endpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req InterfaceBTestMethod2Request + var req BTestMethod2TestMethod2Request b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for InterfaceBTestMethod2Request: %w", err) + return nil, fmt.Errorf("couldn't read body for BTestMethod2TestMethod2Request: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to InterfaceBTestMethod2Request: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to BTestMethod2TestMethod2Request: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.interfaceBTestMethod2ServerOption...)..., + append(opts.genericServerOption, opts.bTestMethod2ServerOption...)..., )) return r, nil } diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go index cc14c79d..f8a49d98 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go @@ -20,9 +20,9 @@ import ( "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" ) -func NewClientRESTApp(tgt string, options ...ClientOption) (app1.App, error) { +func NewClientRESTApp1(tgt string, options ...ClientOption) (app1.App, error) { opts := &clientOpts{} - c := &clientApp{} + c := &clientApp1{} for _, o := range options { o(opts) } @@ -40,13 +40,13 @@ func NewClientRESTApp(tgt string, options ...ClientOption) (app1.App, error) { if u.Scheme == "" { u.Scheme = "https" } - c.createEndpoint = http.NewClient( + c.app1CreateEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(AppCreateRequest) + req, ok := request.(App1CreateCreateRequest) if !ok { - return fmt.Errorf("couldn't assert request as AppCreateRequest, got %T", request) + return fmt.Errorf("couldn't assert request as App1CreateCreateRequest, got %T", request) } r.Method = http2.MethodPost r.URL.Path += "/app1/create" @@ -59,19 +59,19 @@ func NewClientRESTApp(tgt string, options ...ClientOption) (app1.App, error) { }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appCreateErrorDecode(statusCode) + return nil, app1CreateErrorDecode(statusCode) } return nil, nil }, - append(opts.genericClientOption, opts.appCreateClientOption...)..., + append(opts.genericClientOption, opts.app1CreateClientOption...)..., ).Endpoint() - c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(c.createEndpoint) + c.app1CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app1CreateEndpointMiddleware...))(c.app1CreateEndpoint) return c, nil } -func NewClientRESTApp(tgt string, options ...ClientOption) (app2.App, error) { +func NewClientRESTApp2(tgt string, options ...ClientOption) (app2.App, error) { opts := &clientOpts{} - c := &clientApp{} + c := &clientApp2{} for _, o := range options { o(opts) } @@ -89,13 +89,13 @@ func NewClientRESTApp(tgt string, options ...ClientOption) (app2.App, error) { if u.Scheme == "" { u.Scheme = "https" } - c.createEndpoint = http.NewClient( + c.app2CreateEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(AppCreateRequest) + req, ok := request.(App2CreateCreateRequest) if !ok { - return fmt.Errorf("couldn't assert request as AppCreateRequest, got %T", request) + return fmt.Errorf("couldn't assert request as App2CreateCreateRequest, got %T", request) } r.Method = http2.MethodPost r.URL.Path += "/app2/create" @@ -108,12 +108,12 @@ func NewClientRESTApp(tgt string, options ...ClientOption) (app2.App, error) { }, func(_ context.Context, r *http2.Response) (interface{}, error) { if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appCreateErrorDecode(statusCode) + return nil, app2CreateErrorDecode(statusCode) } return nil, nil }, - append(opts.genericClientOption, opts.appCreateClientOption...)..., + append(opts.genericClientOption, opts.app2CreateClientOption...)..., ).Endpoint() - c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(c.createEndpoint) + c.app2CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app2CreateEndpointMiddleware...))(c.app2CreateEndpoint) return c, nil } diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go index 122a41f4..163b380a 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go @@ -19,28 +19,28 @@ type AppClient struct { } func NewClientREST(tgt string, opts ...ClientOption) (*AppClient, error) { - appClient, err := NewClientRESTApp(tgt, opts...) + app1Client, err := NewClientRESTApp1(tgt, opts...) if err != nil { return nil, err } - appClient, err := NewClientRESTApp(tgt, opts...) + app2Client, err := NewClientRESTApp2(tgt, opts...) if err != nil { return nil, err } return &AppClient{ - App1Client: appClient, - App2Client: appClient, + App1Client: app1Client, + App2Client: app2Client, }, nil } type ClientOption func(*clientOpts) type clientOpts struct { - appCreateClientOption []http.ClientOption - appCreateEndpointMiddleware []endpoint.Middleware - appCreateClientOption []http.ClientOption - appCreateEndpointMiddleware []endpoint.Middleware - genericClientOption []http.ClientOption - genericEndpointMiddleware []endpoint.Middleware + app1CreateClientOption []http.ClientOption + app1CreateEndpointMiddleware []endpoint.Middleware + app2CreateClientOption []http.ClientOption + app2CreateEndpointMiddleware []endpoint.Middleware + genericClientOption []http.ClientOption + genericEndpointMiddleware []endpoint.Middleware } func GenericClientOptions(opt ...http.ClientOption) ClientOption { @@ -51,40 +51,40 @@ func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { return func(c *clientOpts) { c.genericEndpointMiddleware = opt } } -func AppCreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appCreateClientOption = opt } +func App1CreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.app1CreateClientOption = opt } } -func AppCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appCreateEndpointMiddleware = opt } +func App1CreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.app1CreateEndpointMiddleware = opt } } -func AppCreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appCreateClientOption = opt } +func App2CreateClientOptions(opt ...http.ClientOption) ClientOption { + return func(c *clientOpts) { c.app2CreateClientOption = opt } } -func AppCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appCreateEndpointMiddleware = opt } +func App2CreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { + return func(c *clientOpts) { c.app2CreateEndpointMiddleware = opt } } -type clientApp struct { - createEndpoint endpoint.Endpoint +type clientApp1 struct { + app1CreateEndpoint endpoint.Endpoint } -func (c *clientApp) Create(ctx context.Context, name string, data []byte) error { - _, err := c.createEndpoint(ctx, AppCreateRequest{Name: name, Data: data}) +func (c *clientApp1) Create(ctx context.Context, name string, data []byte) error { + _, err := c.app1CreateEndpoint(ctx, App1CreateCreateRequest{Name: name, Data: data}) if err != nil { return err } return nil } -type clientApp struct { - createEndpoint endpoint.Endpoint +type clientApp2 struct { + app2CreateEndpoint endpoint.Endpoint } -func (c *clientApp) Create(ctx context.Context, name string, data []byte) error { - _, err := c.createEndpoint(ctx, AppCreateRequest{Name: name, Data: data}) +func (c *clientApp2) Create(ctx context.Context, name string, data []byte) error { + _, err := c.app2CreateEndpoint(ctx, App2CreateCreateRequest{Name: name, Data: data}) if err != nil { return err } diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go index 68820ad4..fc9b44b5 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go @@ -12,9 +12,9 @@ import ( "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" ) -func MakeAppCreateEndpoint(s app1.App) endpoint.Endpoint { +func MakeApp1CreateEndpoint(s app1.App) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(AppCreateRequest) + req := request.(App1CreateCreateRequest) err := s.Create(ctx, req.Name, req.Data) if err != nil { return nil, err @@ -24,9 +24,9 @@ func MakeAppCreateEndpoint(s app1.App) endpoint.Endpoint { } -func MakeAppCreateEndpoint(s app2.App) endpoint.Endpoint { +func MakeApp2CreateEndpoint(s app2.App) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(AppCreateRequest) + req := request.(App2CreateCreateRequest) err := s.Create(ctx, req.Name, req.Data) if err != nil { return nil, err @@ -36,31 +36,31 @@ func MakeAppCreateEndpoint(s app2.App) endpoint.Endpoint { } -type AppEndpointSet struct { +type App1EndpointSet struct { CreateEndpoint endpoint.Endpoint } -func MakeAppEndpointSet(svc app1.App) AppEndpointSet { - return AppEndpointSet{ - CreateEndpoint: MakeAppCreateEndpoint(svc), +func MakeApp1EndpointSet(svc app1.App) App1EndpointSet { + return App1EndpointSet{ + CreateEndpoint: MakeApp1CreateEndpoint(svc), } } -type AppCreateRequest struct { +type App1CreateCreateRequest struct { Name string `json:"name"` Data []byte `json:"data"` } -type AppEndpointSet struct { +type App2EndpointSet struct { CreateEndpoint endpoint.Endpoint } -func MakeAppEndpointSet(svc app2.App) AppEndpointSet { - return AppEndpointSet{ - CreateEndpoint: MakeAppCreateEndpoint(svc), +func MakeApp2EndpointSet(svc app2.App) App2EndpointSet { + return App2EndpointSet{ + CreateEndpoint: MakeApp2CreateEndpoint(svc), } } -type AppCreateRequest struct { +type App2CreateCreateRequest struct { Name string `json:"name"` Data []byte `json:"data"` } diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go index 12a4fe65..b8e4a475 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go @@ -21,7 +21,7 @@ func (e *httpError) Error() string { func (e *httpError) StatusCode() int { return e.code } -func appCreateErrorDecode(code int) (err error) { +func app1CreateErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -29,7 +29,7 @@ func appCreateErrorDecode(code int) (err error) { return } -func appCreateErrorDecode(code int) (err error) { +func app2CreateErrorDecode(code int) (err error) { switch code { default: err = &httpError{code: code} @@ -60,26 +60,26 @@ func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { type ServerOption func(*serverOpts) type serverOpts struct { - genericServerOption []http.ServerOption - genericEndpointMiddleware []endpoint.Middleware - appCreateServerOption []http.ServerOption - appCreateEndpointMiddleware []endpoint.Middleware - appCreateServerOption []http.ServerOption - appCreateEndpointMiddleware []endpoint.Middleware + genericServerOption []http.ServerOption + genericEndpointMiddleware []endpoint.Middleware + app1CreateServerOption []http.ServerOption + app1CreateEndpointMiddleware []endpoint.Middleware + app2CreateServerOption []http.ServerOption + app2CreateEndpointMiddleware []endpoint.Middleware } -func AppCreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appCreateServerOption = opt } +func App1CreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.app1CreateServerOption = opt } } -func AppCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appCreateEndpointMiddleware = opt } +func App1CreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.app1CreateEndpointMiddleware = opt } } -func AppCreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appCreateServerOption = opt } +func App2CreateServerOptions(opt ...http.ServerOption) ServerOption { + return func(c *serverOpts) { c.app2CreateServerOption = opt } } -func AppCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appCreateEndpointMiddleware = opt } +func App2CreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { + return func(c *serverOpts) { c.app2CreateEndpointMiddleware = opt } } diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go index 895ac311..713e2d1c 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go @@ -27,7 +27,8 @@ func (s *App1LoggingMiddleware) Create(ctx context.Context, name string, data [] if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) + logger.Log("name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) }(time.Now()) err = s.next.Create(ctx, name, data) return err @@ -51,7 +52,8 @@ func (s *App2LoggingMiddleware) Create(ctx context.Context, name string, data [] if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) + logger.Log("name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) }(time.Now()) err = s.next.Create(ctx, name, data) return err diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json index 572ce022..d9d65d51 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/app/create":{"post":{"tags":["App2"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/app/app1-create":{"post":{"tags":["App1"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app/app2-create":{"post":{"tags":["App2"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go index 4b6f0a58..ff60e78e 100755 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go +++ b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go @@ -70,50 +70,50 @@ func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response in } // MakeHandlerREST HTTP REST Transport -func MakeHandlerREST(svcApp app1.App, svcApp app2.App, options ...ServerOption) (http2.Handler, error) { +func MakeHandlerREST(svcApp1 app1.App, svcApp2 app2.App, options ...ServerOption) (http2.Handler, error) { opts := &serverOpts{} for _, o := range options { o(opts) } opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) - epSetApp1 := MakeAppEndpointSet(svcApp) - epSetApp2 := MakeAppEndpointSet(svcApp) - epSetApp1.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(epSetApp1.CreateEndpoint) - epSetApp2.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appCreateEndpointMiddleware...))(epSetApp2.CreateEndpoint) + epSetApp1 := MakeApp1EndpointSet(svcApp1) + epSetApp2 := MakeApp2EndpointSet(svcApp2) + epSetApp1.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app1CreateEndpointMiddleware...))(epSetApp1.CreateEndpoint) + epSetApp2.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app2CreateEndpointMiddleware...))(epSetApp2.CreateEndpoint) r := mux.NewRouter() r.Methods(http2.MethodPost).Path("/app1/create").Handler(http.NewServer( epSetApp1.CreateEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req AppCreateRequest + var req App1CreateCreateRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for AppCreateRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for App1CreateCreateRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to AppCreateRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to App1CreateCreateRequest: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.appCreateServerOption...)..., + append(opts.genericServerOption, opts.app1CreateServerOption...)..., )) r.Methods(http2.MethodPost).Path("/app2/create").Handler(http.NewServer( epSetApp2.CreateEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req AppCreateRequest + var req App2CreateCreateRequest b, err := ioutil.ReadAll(r.Body) if err != nil { - return nil, fmt.Errorf("couldn't read body for AppCreateRequest: %w", err) + return nil, fmt.Errorf("couldn't read body for App2CreateCreateRequest: %w", err) } err = ffjson.Unmarshal(b, &req) if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to AppCreateRequest: %w", err) + return nil, fmt.Errorf("couldn't unmarshal body to App2CreateCreateRequest: %w", err) } return req, nil }, encodeResponseHTTP, - append(opts.genericServerOption, opts.appCreateServerOption...)..., + append(opts.genericServerOption, opts.app2CreateServerOption...)..., )) return r, nil } diff --git a/v2/fixture/ServiceRESTSingle/app/client_gen.go b/v2/fixture/ServiceRESTSingle/app/client_gen.go index 0b093670..c518f94b 100755 --- a/v2/fixture/ServiceRESTSingle/app/client_gen.go +++ b/v2/fixture/ServiceRESTSingle/app/client_gen.go @@ -21,7 +21,11 @@ import ( "github.com/pquerna/ffjson/ffjson" ) +// Deprecated func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { + return NewClientRESTAppInterface(tgt, options...) +} +func NewClientRESTAppInterface(tgt string, options ...ClientOption) (AppInterface, error) { opts := &clientOpts{} c := &clientAppInterface{} for _, o := range options { @@ -41,7 +45,7 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { if u.Scheme == "" { u.Scheme = "https" } - c.createEndpoint = http.NewClient( + c.appInterfaceCreateEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -70,8 +74,8 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceCreateClientOption...)..., ).Endpoint() - c.createEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceCreateEndpointMiddleware...))(c.createEndpoint) - c.deleteEndpoint = http.NewClient( + c.appInterfaceCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceCreateEndpointMiddleware...))(c.appInterfaceCreateEndpoint) + c.appInterfaceDeleteEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -105,8 +109,8 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceDeleteClientOption...)..., ).Endpoint() - c.deleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceDeleteEndpointMiddleware...))(c.deleteEndpoint) - c.getEndpoint = http.NewClient( + c.appInterfaceDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceDeleteEndpointMiddleware...))(c.appInterfaceDeleteEndpoint) + c.appInterfaceGetEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -145,8 +149,8 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceGetClientOption...)..., ).Endpoint() - c.getEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetEndpointMiddleware...))(c.getEndpoint) - c.getAllEndpoint = http.NewClient( + c.appInterfaceGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetEndpointMiddleware...))(c.appInterfaceGetEndpoint) + c.appInterfaceGetAllEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -155,7 +159,7 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { return fmt.Errorf("couldn't assert request as GetAllRequest, got %T", request) } r.Method = http2.MethodPost - r.URL.Path += "/getAll" + r.URL.Path += "/get-all" data, err := ffjson.Marshal(req) if err != nil { return fmt.Errorf("couldn't marshal request %T: %s", req, err) @@ -180,8 +184,8 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceGetAllClientOption...)..., ).Endpoint() - c.getAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetAllEndpointMiddleware...))(c.getAllEndpoint) - c.startEndpoint = http.NewClient( + c.appInterfaceGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetAllEndpointMiddleware...))(c.appInterfaceGetAllEndpoint) + c.appInterfaceStartEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -197,8 +201,8 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceStartClientOption...)..., ).Endpoint() - c.startEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceStartEndpointMiddleware...))(c.startEndpoint) - c.testMethodEndpoint = http.NewClient( + c.appInterfaceStartEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceStartEndpointMiddleware...))(c.appInterfaceStartEndpoint) + c.appInterfaceTestMethodEndpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -207,7 +211,7 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { return fmt.Errorf("couldn't assert request as TestMethodRequest, got %T", request) } r.Method = http2.MethodPost - r.URL.Path += "/testMethod" + r.URL.Path += "/test-method" data, err := ffjson.Marshal(req) if err != nil { return fmt.Errorf("couldn't marshal request %T: %s", req, err) @@ -232,8 +236,8 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceTestMethodClientOption...)..., ).Endpoint() - c.testMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodEndpointMiddleware...))(c.testMethodEndpoint) - c.testMethod2Endpoint = http.NewClient( + c.appInterfaceTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodEndpointMiddleware...))(c.appInterfaceTestMethodEndpoint) + c.appInterfaceTestMethod2Endpoint = http.NewClient( http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { @@ -242,7 +246,7 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { return fmt.Errorf("couldn't assert request as TestMethod2Request, got %T", request) } r.Method = http2.MethodPost - r.URL.Path += "/testMethod2" + r.URL.Path += "/test-method2" data, err := ffjson.Marshal(req) if err != nil { return fmt.Errorf("couldn't marshal request %T: %s", req, err) @@ -258,17 +262,22 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceTestMethod2ClientOption...)..., ).Endpoint() - c.testMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethod2EndpointMiddleware...))(c.testMethod2Endpoint) - c.testMethodOptionalsEndpoint = http.NewClient( - "GET", + c.appInterfaceTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethod2EndpointMiddleware...))(c.appInterfaceTestMethod2Endpoint) + c.appInterfaceTestMethodOptionalsEndpoint = http.NewClient( + http2.MethodPost, u, func(_ context.Context, r *http2.Request, request interface{}) error { req, ok := request.(TestMethodOptionalsRequest) if !ok { return fmt.Errorf("couldn't assert request as TestMethodOptionalsRequest, got %T", request) } - r.Method = "GET" - r.URL.Path += "/testMethodOptionals" + r.Method = http2.MethodPost + r.URL.Path += "/test-method-optionals" + data, err := ffjson.Marshal(req) + if err != nil { + return fmt.Errorf("couldn't marshal request %T: %s", req, err) + } + r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) return nil }, func(_ context.Context, r *http2.Response) (interface{}, error) { @@ -279,6 +288,6 @@ func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { }, append(opts.genericClientOption, opts.appInterfaceTestMethodOptionalsClientOption...)..., ).Endpoint() - c.testMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodOptionalsEndpointMiddleware...))(c.testMethodOptionalsEndpoint) + c.appInterfaceTestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodOptionalsEndpointMiddleware...))(c.appInterfaceTestMethodOptionalsEndpoint) return c, nil } diff --git a/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go b/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go index fd8c5475..7233078e 100755 --- a/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go +++ b/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go @@ -107,18 +107,18 @@ func AppInterfaceTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Mi } type clientAppInterface struct { - createEndpoint endpoint.Endpoint - deleteEndpoint endpoint.Endpoint - getEndpoint endpoint.Endpoint - getAllEndpoint endpoint.Endpoint - startEndpoint endpoint.Endpoint - testMethodEndpoint endpoint.Endpoint - testMethod2Endpoint endpoint.Endpoint - testMethodOptionalsEndpoint endpoint.Endpoint + appInterfaceCreateEndpoint endpoint.Endpoint + appInterfaceDeleteEndpoint endpoint.Endpoint + appInterfaceGetEndpoint endpoint.Endpoint + appInterfaceGetAllEndpoint endpoint.Endpoint + appInterfaceStartEndpoint endpoint.Endpoint + appInterfaceTestMethodEndpoint endpoint.Endpoint + appInterfaceTestMethod2Endpoint endpoint.Endpoint + appInterfaceTestMethodOptionalsEndpoint endpoint.Endpoint } func (c *clientAppInterface) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { - _, err := c.createEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data, Date: date}) + _, err := c.appInterfaceCreateEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data, Date: date}) if err != nil { return err } @@ -126,7 +126,7 @@ func (c *clientAppInterface) Create(ctx context.Context, newData Data, name stri } func (c *clientAppInterface) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.deleteEndpoint(ctx, DeleteRequest{Id: id}) + resp, err := c.appInterfaceDeleteEndpoint(ctx, DeleteRequest{Id: id}) if err != nil { return "", "", err } @@ -135,7 +135,7 @@ func (c *clientAppInterface) Delete(ctx context.Context, id uint) (string, strin } func (c *clientAppInterface) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.getEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) + resp, err := c.appInterfaceGetEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) if err != nil { return User{}, err } @@ -144,7 +144,7 @@ func (c *clientAppInterface) Get(ctx context.Context, id int, name string, fname } func (c *clientAppInterface) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.getAllEndpoint(ctx, GetAllRequest{Members: members}) + resp, err := c.appInterfaceGetAllEndpoint(ctx, GetAllRequest{Members: members}) if err != nil { return nil, err } @@ -153,7 +153,7 @@ func (c *clientAppInterface) GetAll(ctx context.Context, members Members) ([]*Us } func (c *clientAppInterface) Start(ctx context.Context) error { - _, err := c.startEndpoint(ctx, nil) + _, err := c.appInterfaceStartEndpoint(ctx, nil) if err != nil { return err } @@ -161,7 +161,7 @@ func (c *clientAppInterface) Start(ctx context.Context) error { } func (c *clientAppInterface) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.testMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) + resp, err := c.appInterfaceTestMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) if err != nil { return nil, err } @@ -170,15 +170,15 @@ func (c *clientAppInterface) TestMethod(data map[string]interface{}, ss interfac } func (c *clientAppInterface) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.testMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) + _, err := c.appInterfaceTestMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) if err != nil { return err } return nil } -func (c *clientAppInterface) TestMethodOptionals(ctx context.Context, ns string) error { - _, err := c.testMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns}) +func (c *clientAppInterface) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { + _, err := c.appInterfaceTestMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns, Options: options}) if err != nil { return err } diff --git a/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go b/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go index de29e7c7..e17772c3 100755 --- a/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go +++ b/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go @@ -107,12 +107,12 @@ func (s *AppInterfaceInstrumentingMiddleware) TestMethod2(ctx context.Context, n return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) } -func (s *AppInterfaceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { +func (s *AppInterfaceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { defer func(begin time.Time) { s.opts.requestCount.With("method", "TestMethodOptionals").Add(1) s.opts.requestLatency.With("method", "TestMethodOptionals").Observe(time.Since(begin).Seconds()) }(time.Now()) - return s.next.TestMethodOptionals(ctx, ns) + return s.next.TestMethodOptionals(ctx, ns, options...) } func NewInstrumentingAppInterfaceMiddleware(s AppInterface, opts ...InstrumentingOption) AppInterface { diff --git a/v2/fixture/ServiceRESTSingle/app/logging_gen.go b/v2/fixture/ServiceRESTSingle/app/logging_gen.go index 38d66d21..ee55dc05 100755 --- a/v2/fixture/ServiceRESTSingle/app/logging_gen.go +++ b/v2/fixture/ServiceRESTSingle/app/logging_gen.go @@ -25,7 +25,8 @@ func (s *AppInterfaceLoggingMiddleware) Create(ctx context.Context, newData Data if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Create", "took", time.Since(now), "name", name, "data", len(data), "date", date, "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) + logger.Log("name", name, "data", len(data), "date", date, "err", logErr) }(time.Now()) err = s.next.Create(ctx, newData, name, data, date) return err @@ -51,7 +52,8 @@ func (s *AppInterfaceLoggingMiddleware) Get(ctx context.Context, id int, name st if le, ok := err.(interface{ LogError() error }); ok { logErr = le.LogError() } - s.logger.Log("method", "Get", "took", time.Since(now), "id", id, "name", name, "fname", fname, "price", price, "n", n, "b", b, "cc", cc, "result", result.LogParams(), "err", logErr) + logger := log.WithPrefix(s.logger, "method", "Get", "took", time.Since(now)) + logger.Log("id", id, "name", name, "fname", fname, "price", price, "n", n, "b", b, "cc", cc, "result", result.LogParams(), "err", logErr) }(time.Now()) result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) return result, err @@ -91,11 +93,11 @@ func (s *AppInterfaceLoggingMiddleware) TestMethod2(ctx context.Context, ns stri return err } -func (s *AppInterfaceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string) error { +func (s *AppInterfaceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { var ( err error ) - err = s.next.TestMethodOptionals(ctx, ns) + err = s.next.TestMethodOptionals(ctx, ns, options...) return err } diff --git a/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json index d367fe1a..568daecb 100755 --- a/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json +++ b/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{},"paths":{"/create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method-optionals":{"get":{"summary":"TestMethodOptionals","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} +{"openapi":"3.0.0","info":{},"paths":{"/app-interface-create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-test-method-optionals":{"post":{"summary":"TestMethodOptionals","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceRESTSingle/app/server_gen.go b/v2/fixture/ServiceRESTSingle/app/server_gen.go index f6dadae2..02dcdeec 100755 --- a/v2/fixture/ServiceRESTSingle/app/server_gen.go +++ b/v2/fixture/ServiceRESTSingle/app/server_gen.go @@ -216,10 +216,18 @@ func MakeHandlerREST(svcAppInterface AppInterface, options ...ServerOption) (htt encodeResponseHTTP, append(opts.genericServerOption, opts.appInterfaceTestMethod2ServerOption...)..., )) - r.Methods("GET").Path("/testmethodoptionals").Handler(http.NewServer( + r.Methods(http2.MethodPost).Path("/testmethodoptionals").Handler(http.NewServer( epSet.TestMethodOptionalsEndpoint, func(ctx context.Context, r *http2.Request) (interface{}, error) { var req TestMethodOptionalsRequest + b, err := ioutil.ReadAll(r.Body) + if err != nil { + return nil, fmt.Errorf("couldn't read body for TestMethodOptionalsRequest: %w", err) + } + err = ffjson.Unmarshal(b, &req) + if err != nil && err != io.EOF { + return nil, fmt.Errorf("couldn't unmarshal body to TestMethodOptionalsRequest: %w", err) + } return req, nil }, encodeResponseHTTP, diff --git a/v2/fixture/ServiceRESTSingle/app/swipe.go b/v2/fixture/ServiceRESTSingle/app/swipe.go index 66403c50..6ce52d6d 100644 --- a/v2/fixture/ServiceRESTSingle/app/swipe.go +++ b/v2/fixture/ServiceRESTSingle/app/swipe.go @@ -47,6 +47,9 @@ func Swipe() { swipe.MethodOptions(InterfaceB.TestMethod2, swipe.RESTMethod(http.MethodPost), ), + swipe.MethodOptions(InterfaceB.TestMethodOptionals, + swipe.RESTMethod(http.MethodPost), + ), swipe.MethodOptions(InterfaceB.Start, swipe.RESTMethod(http.MethodPost), ), diff --git a/v2/internal/domain/model/service.go b/v2/internal/domain/model/service.go index b5a4d3ae..fc062e28 100644 --- a/v2/internal/domain/model/service.go +++ b/v2/internal/domain/model/service.go @@ -125,8 +125,7 @@ type DeclType struct { type ServiceMethod struct { Type *stdtypes.Func Name string - NameExport string - NameUnExport string + UcName string LcName string NameRequest string NameResponse string diff --git a/v2/internal/interface/gateway/service.go b/v2/internal/interface/gateway/service.go index 964d796b..cfdf376a 100644 --- a/v2/internal/interface/gateway/service.go +++ b/v2/internal/interface/gateway/service.go @@ -15,7 +15,6 @@ import ( "github.com/swipe-io/swipe/v2/internal/graph" "github.com/swipe-io/swipe/v2/internal/openapi" "github.com/swipe-io/swipe/v2/internal/option" - "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" @@ -315,26 +314,23 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] comments, _ := g.commentFuncs[m.String()] - lcName := strings.LcFirst(m.Name()) - - nameExport := ifaceName + m.Name() - nameUnExport := ifaceLcName + m.Name() + nameUc := nameExport + m.Name() + nameLc := nameUnExport + m.Name() nameRequest := m.Name() + "Request" nameResponse := m.Name() + "Response" if ifaceLen > 1 { - nameRequest = ifaceName + m.Name() + "Request" - nameResponse = ifaceName + m.Name() + "Response" + nameRequest = nameUc + m.Name() + "Request" + nameResponse = nameUc + m.Name() + "Response" } sm := model.ServiceMethod{ Type: m, T: m.Type(), Name: m.Name(), - NameExport: nameExport, - NameUnExport: nameUnExport, - LcName: lcName, + UcName: nameUc, + LcName: nameLc, NameRequest: nameRequest, NameResponse: nameResponse, Comments: comments, diff --git a/v2/internal/interface/generator/client_struct.go b/v2/internal/interface/generator/client_struct.go index 9132cf6b..ef83d58d 100644 --- a/v2/internal/interface/generator/client_struct.go +++ b/v2/internal/interface/generator/client_struct.go @@ -5,7 +5,8 @@ import ( "fmt" stdtypes "go/types" - "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/domain/model" @@ -70,7 +71,7 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%sClient, err := NewClient%s%s(tgt, opts...)\n", iface.LoweName(), g.options.Prefix(), iface.Name()) + g.W("%sClient, err := NewClient%s%s(tgt, opts...)\n", iface.NameUnExport(), g.options.Prefix(), iface.NameExport()) g.WriteCheckErr(func() { g.W("return nil, err") }) @@ -79,7 +80,7 @@ func (g *clientStruct) Process(ctx context.Context) error { g.W("return &AppClient{\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]sClient: %[2]sClient,\n", iface.NameExport(), iface.LoweName()) + g.W("%[1]sClient: %[2]sClient,\n", iface.NameExport(), iface.NameUnExport()) } g.W("}, nil\n") g.W("}\n\n") @@ -90,8 +91,8 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { - g.W("%sClientOption []%s.ClientOption\n", m.NameUnExport, kitHTTPPkg) - g.W("%sEndpointMiddleware []%s.Middleware\n", m.NameUnExport, endpointPkg) + g.W("%sClientOption []%s.ClientOption\n", m.LcName, kitHTTPPkg) + g.W("%sEndpointMiddleware []%s.Middleware\n", m.LcName, endpointPkg) } } g.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) @@ -121,20 +122,20 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { - g.WriteFunc(m.NameExport+"ClientOptions", + g.WriteFunc(m.UcName+"ClientOptions", "", []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, []string{"", clientOptionType}, func() { - g.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", m.NameUnExport) + g.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", m.LcName) }, ) - g.WriteFunc(m.NameExport+"ClientEndpointMiddlewares", + g.WriteFunc(m.UcName+"ClientEndpointMiddlewares", "", []string{"opt", "..." + endpointPkg + ".Middleware"}, []string{"", clientOptionType}, func() { - g.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", m.NameUnExport) + g.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", m.LcName) }, ) } @@ -143,7 +144,7 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - clientType := fmt.Sprintf("client%s", iface.Name()) + clientType := fmt.Sprintf("client%s", iface.NameExport()) contextPkg = g.i.Import("context", "context") @@ -163,6 +164,15 @@ func (g *clientStruct) Process(ctx context.Context) error { } params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) + + if m.ParamVariadic != nil { + pt := m.ParamVariadic.Type() + if t, ok := pt.(*stdtypes.Slice); ok { + pt = t.Elem() + } + params = append(params, m.ParamVariadic.Name(), "..."+stdtypes.TypeString(pt, g.i.QualifyPkg)) + } + results := types.NameType(m.Results, g.i.QualifyPkg, nil) if m.ReturnErr != nil { @@ -199,6 +209,9 @@ func (g *clientStruct) Process(ctx context.Context) error { params := structKeyValue(m.Params, func(p *stdtypes.Var) bool { return !types.IsContext(p.Type()) }) + if m.ParamVariadic != nil { + params = append(params, strcase.ToCamel(m.ParamVariadic.Name()), m.ParamVariadic.Name()) + } g.WriteStructAssign(params) } else { g.W(" nil") @@ -241,7 +254,7 @@ func (g *clientStruct) Process(ctx context.Context) error { if i > 0 { g.W(",") } - g.W("response.%s", strings.UcFirst(r.Name())) + g.W("response.%s", strcase.ToCamel(r.Name())) } } else { g.W("response") diff --git a/v2/internal/interface/generator/endpoint.go b/v2/internal/interface/generator/endpoint.go index cbd91bec..0890d17a 100644 --- a/v2/internal/interface/generator/endpoint.go +++ b/v2/internal/interface/generator/endpoint.go @@ -3,7 +3,6 @@ package generator import ( "context" stdtypes "go/types" - stdstrings "strings" "github.com/swipe-io/swipe/v2/internal/types" @@ -11,7 +10,6 @@ import ( "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -44,7 +42,7 @@ func (g *endpoint) Process(ctx context.Context) error { } typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - epSetName := iface.Name() + "EndpointSet" + epSetName := iface.NameExport() + "EndpointSet" g.W("type %s struct {\n", epSetName) kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") @@ -57,7 +55,7 @@ func (g *endpoint) Process(ctx context.Context) error { g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) g.W("return %s{\n", epSetName) for _, m := range iface.Methods() { - g.W("%sEndpoint: Make%sEndpoint(svc),\n", m.Name, m.NameExport) + g.W("%sEndpoint: Make%sEndpoint(svc),\n", m.Name, m.UcName) } g.W("}\n") @@ -68,10 +66,10 @@ func (g *endpoint) Process(ctx context.Context) error { if len(m.Params) > 0 { g.W("type %s struct {\n", m.NameRequest) for _, p := range m.Params { - g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(p.Name()), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(p.Name())) + g.W("%s %s `json:\"%s\"`\n", strcase.ToCamel(p.Name()), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(p.Name())) } if m.ParamVariadic != nil { - g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(m.ParamVariadic.Name()), stdtypes.TypeString(m.ParamVariadic.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(m.ParamVariadic.Name())) + g.W("%s %s `json:\"%s\"`\n", strcase.ToCamel(m.ParamVariadic.Name()), stdtypes.TypeString(m.ParamVariadic.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(m.ParamVariadic.Name())) } g.W("}\n") } @@ -80,7 +78,7 @@ func (g *endpoint) Process(ctx context.Context) error { g.W("type %s struct {\n", m.NameResponse) for _, p := range m.Results { name := p.Name() - g.W("%s %s `json:\"%s\"`\n", strings.UcFirst(name), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(name)) + g.W("%s %s `json:\"%s\"`\n", strcase.ToCamel(name), stdtypes.TypeString(p.Type(), g.i.QualifyPkg), strcase.ToLowerCamel(name)) } g.W("}\n") } @@ -118,7 +116,7 @@ func (g *endpoint) writeEndpointMake() { typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) for _, m := range iface.Methods() { - g.W("func Make%sEndpoint(s %s) %s.Endpoint {\n", m.NameExport, typeStr, kitEndpointPkg) + g.W("func Make%sEndpoint(s %s) %s.Endpoint {\n", m.UcName, typeStr, kitEndpointPkg) g.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) var callParams []string @@ -130,15 +128,11 @@ func (g *endpoint) writeEndpointMake() { methodParams = append(methodParams, m.Params...) callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { - name := p.Name() - name = stdstrings.ToUpper(name[:1]) + name[1:] - return []string{"req." + name} + return []string{"req." + strcase.ToCamel(p.Name())} }, nil)...) if m.ParamVariadic != nil { - name := m.ParamVariadic.Name() - name = stdstrings.ToUpper(name[:1]) + name[1:] - callParams = append(callParams, "req."+name+"...") + callParams = append(callParams, "req."+strcase.ToCamel(m.ParamVariadic.Name())+"...") } if len(m.Params) > 0 { diff --git a/v2/internal/interface/generator/endpoint_factory.go b/v2/internal/interface/generator/endpoint_factory.go index 56fa1caa..aa530c9c 100644 --- a/v2/internal/interface/generator/endpoint_factory.go +++ b/v2/internal/interface/generator/endpoint_factory.go @@ -45,7 +45,7 @@ func (g *endpointFactory) Process(ctx context.Context) error { g.W("return nil, nil, err\n") }) g.W("return ") - g.W("make%sEndpoint(c), nil, nil\n", m.NameExport) + g.W("make%sEndpoint(c), nil, nil\n", m.UcName) g.W("\n}\n\n") } diff --git a/v2/internal/interface/generator/http_transport.go b/v2/internal/interface/generator/http_transport.go index 982fbc6d..bd535a69 100644 --- a/v2/internal/interface/generator/http_transport.go +++ b/v2/internal/interface/generator/http_transport.go @@ -83,7 +83,7 @@ func (g *httpTransport) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { - g.WriteFunc(method.NameUnExport+"ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { + g.WriteFunc(method.LcName+"ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { g.W("switch code {\n") g.W("default:\nerr = &httpError{code: code}\n") if g.options.JSONRPCEnable() { @@ -167,8 +167,8 @@ func (g *httpTransport) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { - g.W("%sServerOption []%s\n", m.NameUnExport, kithttpServerOption) - g.W("%sEndpointMiddleware []%s\n", m.NameUnExport, endpointMiddlewareOption) + g.W("%sServerOption []%s\n", m.LcName, kithttpServerOption) + g.W("%sEndpointMiddleware []%s\n", m.LcName, endpointMiddlewareOption) } } g.W("}\n") @@ -177,22 +177,22 @@ func (g *httpTransport) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { g.WriteFunc( - fmt.Sprintf("%sServerOptions", m.NameExport), + fmt.Sprintf("%sServerOptions", m.UcName), "", []string{"opt", "..." + kithttpServerOption}, []string{"", serverOptionType}, func() { - g.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, m.NameUnExport) + g.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, m.LcName) }, ) g.WriteFunc( - fmt.Sprintf("%sServerEndpointMiddlewares", m.NameExport), + fmt.Sprintf("%sServerEndpointMiddlewares", m.UcName), "", []string{"opt", "..." + endpointMiddlewareOption}, []string{"", serverOptionType}, func() { - g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, m.NameUnExport) + g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, m.LcName) }, ) } diff --git a/v2/internal/interface/generator/instrumenting.go b/v2/internal/interface/generator/instrumenting.go index 915fdfec..f4a6205a 100644 --- a/v2/internal/interface/generator/instrumenting.go +++ b/v2/internal/interface/generator/instrumenting.go @@ -73,6 +73,15 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { } params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) + + if m.ParamVariadic != nil { + pt := m.ParamVariadic.Type() + if t, ok := pt.(*stdtypes.Slice); ok { + pt = t.Elem() + } + params = append(params, m.ParamVariadic.Name(), "..."+stdtypes.TypeString(pt, g.i.QualifyPkg)) + } + results := types.NameType(m.Results, g.i.QualifyPkg, nil) if m.ReturnErr != nil { @@ -98,13 +107,15 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { if m.ParamCtx != nil { g.W("%s,", m.ParamCtx.Name()) } - for i, p := range m.Params { if i > 0 { g.W(",") } g.W(p.Name()) } + if m.ParamVariadic != nil { + g.W(",%s...", m.ParamVariadic.Name()) + } g.W(")\n") }) diff --git a/v2/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go index b0762f69..c0cb9cca 100644 --- a/v2/internal/interface/generator/jsonrpc_go_client.go +++ b/v2/internal/interface/generator/jsonrpc_go_client.go @@ -44,16 +44,18 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) - clientType := "client" + iface.Name() + clientType := "client" + iface.NameExport() typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("// Deprecated\nfunc NewClient%s(tgt string", g.options.Prefix()) - g.W(" ,options ...ClientOption") - g.W(") (%s, error) {\n", typeStr) - g.W("return NewClient%s%s(tgt, options...)", g.options.Prefix(), iface.Name()) - g.W("}\n") + if g.options.Interfaces().Len() == 1 { + g.W("// Deprecated\nfunc NewClient%s(tgt string", g.options.Prefix()) + g.W(" ,options ...ClientOption") + g.W(") (%s, error) {\n", typeStr) + g.W("return NewClient%s%s(tgt, options...)", g.options.Prefix(), iface.NameExport()) + g.W("}\n") + } - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.Name()) + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") @@ -94,7 +96,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { for _, m := range iface.Methods() { mopt := g.options.MethodOption(m) - g.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", m.NameUnExport) + g.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", m.LcName) g.W("%s.ClientRequestEncoder(", jsonrpcPkg) g.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) @@ -117,7 +119,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("%s.ClientResponseDecoder(", jsonrpcPkg) g.W("func(_ %s.Context, response %s.Response) (interface{}, error) {\n", contextPkg, jsonrpcPkg) g.W("if response.Error != nil {\n") - g.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", m.NameUnExport) + g.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", m.LcName) g.W("}\n") if len(m.Results) > 0 { @@ -159,14 +161,14 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("u,\n") g.W("%s,\n", strconv.Quote(methodName)) - g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.NameUnExport) + g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.LcName) g.W(").Endpoint()\n") g.W( "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[2]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", m.LcName, - m.NameUnExport, + m.LcName, ) } diff --git a/v2/internal/interface/generator/jsonrpc_js_client.go b/v2/internal/interface/generator/jsonrpc_js_client.go index 4326767d..876e7736 100644 --- a/v2/internal/interface/generator/jsonrpc_js_client.go +++ b/v2/internal/interface/generator/jsonrpc_js_client.go @@ -4,6 +4,8 @@ import ( "context" stdtypes "go/types" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" @@ -213,12 +215,12 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } var prefix string - if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { + if iface.IsNameChange() && g.options.Interfaces().Len() > 1 { prefix = iface.NameUnExport() + "." } mw.W(") {\n") - mw.W("return this.scheduler.__scheduleRequest(\"%s\", {", prefix+m.LcName) + mw.W("return this.scheduler.__scheduleRequest(\"%s\", {", prefix+strcase.ToLowerCamel(m.Name)) for i, p := range m.Params { if i > 0 { diff --git a/v2/internal/interface/generator/jsonrpc_server.go b/v2/internal/interface/generator/jsonrpc_server.go index 1e7fe644..64d6b23a 100644 --- a/v2/internal/interface/generator/jsonrpc_server.go +++ b/v2/internal/interface/generator/jsonrpc_server.go @@ -6,7 +6,7 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/strings" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" @@ -70,7 +70,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) if !iface.External() { - g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.Name()) + g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.NameExport()) g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) g.W("var namespace string\n") @@ -86,7 +86,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("if ep.%sEndpoint != nil {\n", m.Name) - g.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.LcName, jsonrpcPkg) + g.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", strcase.ToLowerCamel(m.Name), jsonrpcPkg) g.W("Endpoint: ep.%sEndpoint,\n", m.Name) g.W("Decode: ") @@ -146,9 +146,9 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if iface.External() { hasGateway = true - g.W("%s %sOption", strings.LcFirst(iface.AppName()), iface.AppName()) + g.W("%s %sOption", strcase.ToLowerCamel(iface.AppName()), iface.AppName()) } else { - g.W("svc%s %s", iface.Name(), typeStr) + g.W("svc%s %s", iface.NameExport(), typeStr) } } @@ -178,14 +178,14 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") if iface.External() { - g.W("%s := %s.%sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), pkgExtTransport, iface.Name()) + g.W("%s := %s.%sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), pkgExtTransport, iface.NameExport()) } else { - g.W("%s := %sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + g.W("%s := %sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) } for _, m := range iface.Methods() { epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) - optName := strings.LcFirst(iface.AppName()) + optName := strcase.ToLowerCamel(iface.AppName()) epFactoryName := iface.LoweName() + "ClientEndpointFactory" kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") transportExtPkg := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) @@ -217,7 +217,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { }) g.W("return ") - g.W("%s.Make%sEndpoint(c), nil, nil\n", transportExtPkg, m.NameExport) + g.W("%s.Make%sEndpoint(c), nil, nil\n", transportExtPkg, m.UcName) g.W("\n}\n\n") @@ -232,17 +232,17 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { ) g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.NameUnExport, m.Name, epSetName, + m.LcName, m.Name, epSetName, ) g.W("}\n") } } else { - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) for _, m := range iface.Methods() { g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.NameUnExport, m.Name, epSetName, + m.LcName, m.Name, epSetName, ) } } @@ -267,9 +267,9 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } if iface.External() { pkgExtTransport := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) - g.W("%s.Make%sEndpointCodecMap(%s, %s)", pkgExtTransport, iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len()), strconv.Quote(iface.NameUnExport())) + g.W("%s.Make%sEndpointCodecMap(%s, %s)", pkgExtTransport, iface.NameExport(), makeEpSetName(iface, g.options.Interfaces().Len()), strconv.Quote(iface.NameUnExport())) } else { - g.W("Make%sEndpointCodecMap(%s", iface.Name(), makeEpSetName(iface, g.options.Interfaces().Len())) + g.W("Make%sEndpointCodecMap(%s", iface.NameExport(), makeEpSetName(iface, g.options.Interfaces().Len())) if g.options.Interfaces().Len() > 1 { g.W(",%s", strconv.Quote(iface.NameUnExport())) } diff --git a/v2/internal/interface/generator/logging.go b/v2/internal/interface/generator/logging.go index 3c84acc4..46687468 100644 --- a/v2/internal/interface/generator/logging.go +++ b/v2/internal/interface/generator/logging.go @@ -88,6 +88,14 @@ func (g *logging) Process(ctx context.Context) error { params = append(params, types.NameTypeParams(m.Params, g.i.QualifyPkg, nil)...) + if m.ParamVariadic != nil { + pt := m.ParamVariadic.Type() + if t, ok := pt.(*stdtypes.Slice); ok { + pt = t.Elem() + } + params = append(params, m.ParamVariadic.Name(), "..."+stdtypes.TypeString(pt, g.i.QualifyPkg)) + } + if len(m.Results) > 0 { if m.ResultsNamed { results = types.NameType(m.Results, g.i.QualifyPkg, nil) @@ -126,12 +134,25 @@ func (g *logging) Process(ctx context.Context) error { g.W("logErr = le.LogError()\n") g.W("}\n") } - g.W("s.logger.Log(\"method\",\"%s\",\"took\",%s.Since(now),", m.Name, timePkg) + + g.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, m.Name, timePkg) + + if m.ParamVariadic != nil { + pt := m.ParamVariadic.Type() + if t, ok := pt.(*stdtypes.Slice); ok { + pt = t.Elem() + } + g.W("var variadicParam %s\n", stdtypes.TypeString(pt, g.i.QualifyPkg)) + g.W("if len(%s) > 0 {\n", m.ParamVariadic.Name()) + g.W("variadicParam = %s[0]\n", m.ParamVariadic.Name()) + g.W("}\n") + g.W("logger = %s.WithPrefix(logger, \"%s\", variadicParam)\n", loggerPkg, m.ParamVariadic.Name()) + } + g.W("logger.Log(") g.W(strings.Join(logParams, ",")) g.W(")\n") }) } - } if len(m.Results) > 0 || m.ReturnErr != nil { @@ -165,6 +186,9 @@ func (g *logging) Process(ctx context.Context) error { } g.W(p.Name()) } + if m.ParamVariadic != nil { + g.W(",%s...", m.ParamVariadic.Name()) + } g.W(")\n") if len(m.Results) > 0 || m.ReturnErr != nil { diff --git a/v2/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go index 54717360..ec2ac43e 100644 --- a/v2/internal/interface/generator/openapi.go +++ b/v2/internal/interface/generator/openapi.go @@ -15,7 +15,6 @@ import ( "github.com/swipe-io/swipe/v2/internal/domain/model" iftypevisitor "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" "github.com/swipe-io/swipe/v2/internal/openapi" - "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/generator" ustypevisitor "github.com/swipe-io/swipe/v2/internal/usecase/typevisitor" @@ -289,9 +288,9 @@ func (g *openapiDoc) Process(ctx context.Context) error { if g.options.JSONRPCEnable() { o = g.makeJSONRPCPath(m, ntc, paramsComment, prefix) - pathStr = "/" + strings.LcFirst(m.Name) + pathStr = "/" + strcase.ToLowerCamel(m.Name) if prefix != "" { - pathStr = "/" + prefix + "." + strings.LcFirst(m.Name) + pathStr = "/" + prefix + "." + strcase.ToLowerCamel(m.Name) } methodName = "POST" for _, ei := range m.Errors { diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index d015f5c0..e16d6ee6 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -8,8 +8,6 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/strings" - "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" @@ -49,7 +47,7 @@ func (g *restGoClient) Process(_ context.Context) error { pkgIO string ) iface := g.options.Interfaces().At(i) - clientType := "client" + iface.Name() + clientType := "client" + iface.NameExport() typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) if g.options.UseFast() { @@ -70,12 +68,15 @@ func (g *restGoClient) Process(_ context.Context) error { netPkg = g.i.Import("net", "net") stringsPkg = g.i.Import("strings", "strings") - var name string - if g.options.Interfaces().Len() > 1 { - name = iface.Name() + if g.options.Interfaces().Len() == 1 { + g.W("// Deprecated\nfunc NewClient%s(tgt string", g.options.Prefix()) + g.W(" ,options ...ClientOption") + g.W(") (%s, error) {\n", typeStr) + g.W("return NewClient%s%s(tgt, options...)", g.options.Prefix(), iface.NameExport()) + g.W("}\n") } - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), name) + g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") @@ -113,7 +114,7 @@ func (g *restGoClient) Process(_ context.Context) error { pathStr := mopt.Path if pathStr == "" { - pathStr = path.Join("/", m.LcName) + pathStr = path.Join("/", strcase.ToKebab(m.Name)) } if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { @@ -182,7 +183,7 @@ func (g *restGoClient) Process(_ context.Context) error { for _, p := range pathVars { name := p.Name() + "Str" pathVarNames = append(pathVarNames, name) - g.WriteFormatType(g.i.Import, name, "req."+strings.UcFirst(p.Name()), p) + g.WriteFormatType(g.i.Import, name, "req."+strcase.ToCamel(p.Name()), p) } if g.options.UseFast() { g.W("r.SetRequestURI(") @@ -209,7 +210,7 @@ func (g *restGoClient) Process(_ context.Context) error { } for _, p := range queryVars { name := p.Name() + "Str" - g.WriteFormatType(g.i.Import, name, "req."+strings.UcFirst(p.Name()), p) + g.WriteFormatType(g.i.Import, name, "req."+strcase.ToCamel(p.Name()), p) g.W("q.Add(%s, %s)\n", strconv.Quote(mopt.QueryVars[p.Name()]), name) } if g.options.UseFast() { @@ -220,7 +221,7 @@ func (g *restGoClient) Process(_ context.Context) error { } for _, p := range headerVars { name := p.Name() + "Str" - g.WriteFormatType(g.i.Import, name, "req."+strings.UcFirst(p.Name()), p) + g.WriteFormatType(g.i.Import, name, "req."+strcase.ToCamel(p.Name()), p) g.W("r.Header.Add(%s, %s)\n", strconv.Quote(mopt.HeaderVars[p.Name()]), name) } switch stdstrings.ToUpper(httpMethod) { @@ -260,7 +261,7 @@ func (g *restGoClient) Process(_ context.Context) error { } g.W("if statusCode := %s; statusCode != %s.StatusOK {\n", statusCode, httpPkg) - g.W("return nil, %sErrorDecode(statusCode)\n", m.NameUnExport) + g.W("return nil, %sErrorDecode(statusCode)\n", m.LcName) g.W("}\n") if len(m.Results) > 0 { @@ -307,14 +308,14 @@ func (g *restGoClient) Process(_ context.Context) error { g.W(",\n") - g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.NameUnExport) + g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.LcName) g.W(").Endpoint()\n") g.W( "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[2]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", m.LcName, - m.NameUnExport, + m.LcName, ) } g.W("return c, nil\n") diff --git a/v2/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go index 56267abc..e385e275 100644 --- a/v2/internal/interface/generator/rest_server.go +++ b/v2/internal/interface/generator/rest_server.go @@ -14,7 +14,6 @@ import ( "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -71,7 +70,7 @@ func (g *restServer) Process(_ context.Context) error { if i > 0 { g.W(",") } - g.W("svc%s %s", iface.Name(), typeStr) + g.W("svc%s %s", iface.NameExport(), typeStr) } g.W(", options ...ServerOption") g.W(") (") @@ -95,7 +94,7 @@ func (g *restServer) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.Name()) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) } for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -103,7 +102,7 @@ func (g *restServer) Process(_ context.Context) error { for _, m := range iface.Methods() { g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.NameUnExport, m.Name, epSetName, + m.LcName, m.Name, epSetName, ) } } @@ -144,7 +143,7 @@ func (g *restServer) Process(_ context.Context) error { urlPath = stdstrings.ReplaceAll(urlPath, "}", ">") g.W(strconv.Quote(urlPath)) } else { - g.W(strconv.Quote("/" + m.LcName)) + g.W(strconv.Quote("/" + strcase.ToKebab(m.Name))) } g.W(", ") } else { @@ -226,7 +225,7 @@ func (g *restServer) Process(_ context.Context) error { } else { valueID = "vars[" + strconv.Quote(p.Name()) + "]" } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, []string{"nil"}, "", false, "") + g.WriteConvertType(g.i.Import, "req."+strcase.ToCamel(p.Name()), valueID, p, []string{"nil"}, "", false, "") } else if queryName, ok := mopt.QueryVars[p.Name()]; ok { var valueID string if g.options.UseFast() { @@ -239,7 +238,7 @@ func (g *restServer) Process(_ context.Context) error { g.W("%s := %s\n", tmpID, valueID) g.W("if %s != \"\" {\n", tmpID) - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), tmpID, p, []string{"nil"}, "", false, "") + g.WriteConvertType(g.i.Import, "req."+strcase.ToCamel(p.Name()), tmpID, p, []string{"nil"}, "", false, "") g.W("}\n") } else if headerName, ok := mopt.HeaderVars[p.Name()]; ok { @@ -249,7 +248,7 @@ func (g *restServer) Process(_ context.Context) error { } else { valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" } - g.WriteConvertType(g.i.Import, "req."+strings.UcFirst(p.Name()), valueID, p, []string{"nil"}, "", false, "") + g.WriteConvertType(g.i.Import, "req."+strcase.ToCamel(p.Name()), valueID, p, []string{"nil"}, "", false, "") } } g.W("return req, nil\n") @@ -283,7 +282,7 @@ func (g *restServer) Process(_ context.Context) error { } g.W(",\n") - g.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", m.NameUnExport) + g.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", m.LcName) g.W(")") if g.options.UseFast() { diff --git a/v2/internal/interface/generator/utils.go b/v2/internal/interface/generator/utils.go index 634f2c9e..230606aa 100644 --- a/v2/internal/interface/generator/utils.go +++ b/v2/internal/interface/generator/utils.go @@ -5,6 +5,8 @@ import ( "strconv" "strings" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/types" ) @@ -14,7 +16,7 @@ func structKeyValue(vars []*stdtypes.Var, filterFn types.FilterFn) (results []st vars, func(p *stdtypes.Var) []string { name := p.Name() - fieldName := strings.ToUpper(name[:1]) + name[1:] + fieldName := strcase.ToCamel(name) return []string{fieldName, name} }, filterFn, diff --git a/v2/internal/strings/strings.go b/v2/internal/strings/strings.go deleted file mode 100644 index a8e58cd3..00000000 --- a/v2/internal/strings/strings.go +++ /dev/null @@ -1,11 +0,0 @@ -package strings - -import "strings" - -func UcFirst(s string) string { - return strings.ToUpper(s[:1]) + s[1:] -} - -func LcFirst(s string) string { - return strings.ToLower(s[:1]) + s[1:] -} diff --git a/v2/internal/writer/golang_writer.go b/v2/internal/writer/golang_writer.go index ff8c37cb..debc0918 100644 --- a/v2/internal/writer/golang_writer.go +++ b/v2/internal/writer/golang_writer.go @@ -8,7 +8,6 @@ import ( "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/strings" "github.com/swipe-io/swipe/v2/internal/types" ) @@ -174,7 +173,7 @@ func (w *GoLangWriter) writeFormatBasicType(importFn func(string, string) string func (w *GoLangWriter) writeConvertBasicType(importFn func(string, string) string, name, assignId, valueId string, t *stdtypes.Basic, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { useCheckErr := true - tmpId := stdstrings.ToLower(name) + strings.UcFirst(t.String()) + tmpId := stdstrings.ToLower(name) + strcase.ToCamel(t.String()) funcName := w.getConvertFuncName(t.Kind()) if funcName != "" { @@ -267,7 +266,7 @@ func (w *GoLangWriter) WriteConvertType( switch t := t.Elem().(type) { case *stdtypes.Basic: if isNumeric(t.Kind()) { - tmpId = "parts" + stdstrings.ToLower(f.Name()) + strings.UcFirst(t.String()) + tmpId = "parts" + stdstrings.ToLower(f.Name()) + strcase.ToCamel(t.String()) w.W("%s := %s.Split(%s, \",\")\n", tmpId, stringsPkg, valueId) if declareVar { w.W("var ") From 94257e94ff05ab7125dc0c94512dda055a7311d9 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 11 Mar 2021 12:35:14 +0300 Subject: [PATCH 173/293] refactor: update git module --- homebrew-swipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homebrew-swipe b/homebrew-swipe index f179f253..ff7b8e40 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit f179f25394c31fb9fd0f1b69f65c7f4bbefd6f3c +Subproject commit ff7b8e40d619a259a4de1ae0286603878cffac6e From c119ccf702c6a7e17bf03331936b29f16fde4f3e Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 16:01:42 +0300 Subject: [PATCH 174/293] test: remove fixture --- go.sum | 466 ------------------ .../ConfigRequiredSuccess/app/config.go | 25 - .../app/config_doc_gen.md | 29 -- .../ConfigRequiredSuccess/app/config_gen.go | 287 ----------- v2/fixture/ConfigRequiredSuccess/app/swipe.go | 15 - .../app/config.go | 24 - .../app/config_doc_gen.md | 28 -- .../app/config_gen.go | 218 -------- .../ConfigRequiredUseZeroSuccess/app/swipe.go | 15 - v2/fixture/ConfigSuccess/app/config.go | 26 - .../ConfigSuccess/app/config_doc_gen.md | 30 -- v2/fixture/ConfigSuccess/app/config_gen.go | 191 ------- v2/fixture/ConfigSuccess/app/swipe.go | 15 - v2/fixture/ConfigUseZeroSuccess/app/config.go | 24 - .../app/config_doc_gen.md | 28 -- .../ConfigUseZeroSuccess/app/config_gen.go | 181 ------- v2/fixture/ConfigUseZeroSuccess/app/swipe.go | 15 - .../GatewaySuccess/app/client_jsonrpc_gen.js | 128 ----- v2/fixture/GatewaySuccess/app/endpoint_gen.go | 40 -- v2/fixture/GatewaySuccess/app/http_gen.go | 47 -- .../app/openapi_jsonrpc_gen.json | 1 - v2/fixture/GatewaySuccess/app/server_gen.go | 72 --- v2/fixture/GatewaySuccess/app/swipe.go | 34 -- .../app/.swipe/README.md.tpl | 35 -- v2/fixture/ServiceJSONRPCMulti/app/README.md | 31 -- .../ServiceJSONRPCMulti/app/client_gen.go | 256 ---------- .../app/client_jsonrpc_gen.js | 331 ------------- .../app/client_struct_gen.go | 186 ------- .../ServiceJSONRPCMulti/app/endpoint_gen.go | 158 ------ .../ServiceJSONRPCMulti/app/http_gen.go | 228 --------- .../app/instrumenting_gen.go | 165 ------- .../app/jsonrpc_doc_gen.md | 199 -------- .../ServiceJSONRPCMulti/app/logging_gen.go | 95 ---- .../app/openapi_jsonrpc_gen.json | 1 - .../ServiceJSONRPCMulti/app/package.json | 3 - .../ServiceJSONRPCMulti/app/server_gen.go | 166 ------- v2/fixture/ServiceJSONRPCMulti/app/service.go | 135 ----- v2/fixture/ServiceJSONRPCMulti/app/swipe.go | 37 -- .../app/.swipe/README.md.tpl | 35 -- v2/fixture/ServiceJSONRPCSingle/app/README.md | 31 -- .../ServiceJSONRPCSingle/app/client_gen.go | 246 --------- .../app/client_jsonrpc_gen.js | 319 ------------ .../app/client_struct_gen.go | 167 ------- .../ServiceJSONRPCSingle/app/endpoint_gen.go | 159 ------ .../ServiceJSONRPCSingle/app/http_gen.go | 228 --------- .../app/instrumenting_gen.go | 135 ----- .../app/jsonrpc_doc_gen.md | 158 ------ .../ServiceJSONRPCSingle/app/logging_gen.go | 112 ----- .../app/openapi_jsonrpc_gen.json | 1 - .../ServiceJSONRPCSingle/app/server_gen.go | 161 ------ .../ServiceJSONRPCSingle/app/service.go | 137 ----- v2/fixture/ServiceJSONRPCSingle/app/swipe.go | 45 -- .../ServiceRESTMulti/app/.swipe/README.md.tpl | 35 -- v2/fixture/ServiceRESTMulti/app/README.md | 31 -- v2/fixture/ServiceRESTMulti/app/client_gen.go | 280 ----------- .../ServiceRESTMulti/app/client_struct_gen.go | 186 ------- .../ServiceRESTMulti/app/endpoint_gen.go | 158 ------ v2/fixture/ServiceRESTMulti/app/http_gen.go | 175 ------- .../ServiceRESTMulti/app/instrumenting_gen.go | 165 ------- .../ServiceRESTMulti/app/logging_gen.go | 95 ---- .../app/openapi_rest_gen.json | 1 - v2/fixture/ServiceRESTMulti/app/server_gen.go | 208 -------- v2/fixture/ServiceRESTMulti/app/service.go | 129 ----- v2/fixture/ServiceRESTMulti/app/swipe.go | 55 --- .../app/.swipe/README.md.tpl | 35 -- .../app/README.md | 31 -- .../app/client_gen.go | 119 ----- .../app/client_struct_gen.go | 92 ---- .../app/controller/app1/service.go | 25 - .../app/controller/app2/service.go | 25 - .../app/endpoint_gen.go | 66 --- .../app/http_gen.go | 85 ---- .../app/instrumenting_gen.go | 127 ----- .../app/logging_gen.go | 64 --- .../app/openapi_rest_gen.json | 1 - .../app/server_gen.go | 119 ----- .../app/swipe.go | 49 -- .../app/.swipe/README.md.tpl | 35 -- v2/fixture/ServiceRESTSingle/app/README.md | 31 -- .../ServiceRESTSingle/app/client_gen.go | 293 ----------- .../app/client_struct_gen.go | 186 ------- .../ServiceRESTSingle/app/endpoint_gen.go | 173 ------- v2/fixture/ServiceRESTSingle/app/http_gen.go | 193 -------- .../app/instrumenting_gen.go | 142 ------ .../ServiceRESTSingle/app/logging_gen.go | 106 ---- .../app/openapi_rest_gen.json | 1 - .../ServiceRESTSingle/app/server_gen.go | 237 --------- v2/fixture/ServiceRESTSingle/app/service.go | 146 ------ v2/fixture/ServiceRESTSingle/app/swipe.go | 62 --- .../interface/generator/endpoint_factory.go | 86 ---- 90 files changed, 9946 deletions(-) delete mode 100644 go.sum delete mode 100644 v2/fixture/ConfigRequiredSuccess/app/config.go delete mode 100755 v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md delete mode 100755 v2/fixture/ConfigRequiredSuccess/app/config_gen.go delete mode 100644 v2/fixture/ConfigRequiredSuccess/app/swipe.go delete mode 100644 v2/fixture/ConfigRequiredUseZeroSuccess/app/config.go delete mode 100755 v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md delete mode 100755 v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go delete mode 100644 v2/fixture/ConfigRequiredUseZeroSuccess/app/swipe.go delete mode 100644 v2/fixture/ConfigSuccess/app/config.go delete mode 100755 v2/fixture/ConfigSuccess/app/config_doc_gen.md delete mode 100755 v2/fixture/ConfigSuccess/app/config_gen.go delete mode 100644 v2/fixture/ConfigSuccess/app/swipe.go delete mode 100644 v2/fixture/ConfigUseZeroSuccess/app/config.go delete mode 100755 v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md delete mode 100755 v2/fixture/ConfigUseZeroSuccess/app/config_gen.go delete mode 100644 v2/fixture/ConfigUseZeroSuccess/app/swipe.go delete mode 100755 v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js delete mode 100755 v2/fixture/GatewaySuccess/app/endpoint_gen.go delete mode 100755 v2/fixture/GatewaySuccess/app/http_gen.go delete mode 100755 v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json delete mode 100755 v2/fixture/GatewaySuccess/app/server_gen.go delete mode 100644 v2/fixture/GatewaySuccess/app/swipe.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/.swipe/README.md.tpl delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/README.md delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/client_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/http_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json delete mode 100644 v2/fixture/ServiceJSONRPCMulti/app/package.json delete mode 100755 v2/fixture/ServiceJSONRPCMulti/app/server_gen.go delete mode 100644 v2/fixture/ServiceJSONRPCMulti/app/service.go delete mode 100644 v2/fixture/ServiceJSONRPCMulti/app/swipe.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/.swipe/README.md.tpl delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/README.md delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/client_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/http_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json delete mode 100755 v2/fixture/ServiceJSONRPCSingle/app/server_gen.go delete mode 100644 v2/fixture/ServiceJSONRPCSingle/app/service.go delete mode 100644 v2/fixture/ServiceJSONRPCSingle/app/swipe.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/.swipe/README.md.tpl delete mode 100755 v2/fixture/ServiceRESTMulti/app/README.md delete mode 100755 v2/fixture/ServiceRESTMulti/app/client_gen.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/client_struct_gen.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/endpoint_gen.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/http_gen.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/logging_gen.go delete mode 100755 v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json delete mode 100755 v2/fixture/ServiceRESTMulti/app/server_gen.go delete mode 100644 v2/fixture/ServiceRESTMulti/app/service.go delete mode 100644 v2/fixture/ServiceRESTMulti/app/swipe.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/.swipe/README.md.tpl delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go delete mode 100644 v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go delete mode 100644 v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json delete mode 100755 v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go delete mode 100644 v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl delete mode 100755 v2/fixture/ServiceRESTSingle/app/README.md delete mode 100755 v2/fixture/ServiceRESTSingle/app/client_gen.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/client_struct_gen.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/endpoint_gen.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/http_gen.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/logging_gen.go delete mode 100755 v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json delete mode 100755 v2/fixture/ServiceRESTSingle/app/server_gen.go delete mode 100644 v2/fixture/ServiceRESTSingle/app/service.go delete mode 100644 v2/fixture/ServiceRESTSingle/app/swipe.go delete mode 100644 v2/internal/interface/generator/endpoint_factory.go diff --git a/go.sum b/go.sum deleted file mode 100644 index 6327e01e..00000000 --- a/go.sum +++ /dev/null @@ -1,466 +0,0 @@ -cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= -github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gammazero/nexus v2.1.0+incompatible/go.mod h1:0qqt3FvYuipZoxpd+k7ZrNagbFd9BYGwlOPRloSZMKw= -github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-ozzo/ozzo-routing v2.1.4+incompatible h1:gQmNyAwMnBHr53Nma2gPTfVVc6i2BuAwCWPam2hIvKI= -github.com/go-ozzo/ozzo-routing v2.1.4+incompatible/go.mod h1:hvoxy5M9SJaY0viZvcCsODidtUm5CzRbYKEWuQpr+2A= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/gddo v0.0.0-20200310004957-95ce5a452273/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= -github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/graphql-go/graphql v0.7.9/go.mod h1:k6yrAYQaSP59DC5UVxbgxESlmVyojThKdORUqGDGmrI= -github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/l-vitaly/go-kit v1.13.0 h1:kAy3A7FZ4EMT9RWFarNVRhxrdrjOeeB37o25mILRkHw= -github.com/l-vitaly/go-kit v1.13.0/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= -github.com/l-vitaly/rmqrpc v0.0.0-20170301101204-95b1ce811f78/go.mod h1:RRveuDTon8C8upAP4Cgp0nhA9gQhI2/io4etRR75C6s= -github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= -github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0 h1:miYCvYqFXtl/J9FIy8eNpBfYthAEFg+Ys0XyUVEcDsc= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0 h1:ElTg5tNp4DqfV7UQjDqv2+RJlNzsDtvNAWccbItceIE= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87 h1:u7uCM+HS2caoEKSPtSFQvvUDXQtqZdu3MYtF+QEw7vA= -github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87/go.mod h1:zwr0xP4ZJxwCS/g2d+AUOUwfq/j2NC7a1rK3F0ZbVYM= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= -github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.9.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a h1:gILuVKC+ZPD6g/tj6zBOdnOH1ZHI0zZ86+KLMogc6/s= -golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/v2/fixture/ConfigRequiredSuccess/app/config.go b/v2/fixture/ConfigRequiredSuccess/app/config.go deleted file mode 100644 index 216f4830..00000000 --- a/v2/fixture/ConfigRequiredSuccess/app/config.go +++ /dev/null @@ -1,25 +0,0 @@ -package app - -import "time" - -type Config struct { - FldDurationReq time.Duration `env:",required,desc:Test duration required description"` - FldTimeReq time.Time `env:",required,desc:Test time required description"` - FldStringReq string `env:",required,desc:Test string required description"` - FldBoolReq bool `env:",required,desc:Test bool required description"` - FldIntReq int `env:",required,desc:Test int required description"` - FldInt8Req int8 `env:",required,desc:Test int8 required description"` - FldInt16Req int16 `env:",required,desc:Test int16 required description"` - FldInt32Req int32 `env:",required,desc:Test int32 required description"` - FldInt64Req int64 `env:",required,desc:Test int64 required description"` - FldUIntReq uint `env:",required,desc:Test uint required description"` - FldUInt8Req uint8 `env:",required,desc:Test uint8 required description"` - FldUInt16Req uint16 `env:",required,desc:Test uint16 required description"` - FldUInt32Req uint32 `env:",required,desc:Test uint32 required description"` - FldUInt64Req uint64 `env:",required,desc:Test uint64 required description"` - FldFloat64Req float64 `env:",required,desc:Test int required description"` - FldFloat32Req float32 `env:",required,desc:Test int required description"` - FldStringsReq []string `env:",required,desc:Test []string required description"` - FldMapReq map[string]string `env:",required,desc:Test map[string]string required description"` - FldMapIntReq map[string]int `env:",required,desc:Test map[string]int required description"` -} diff --git a/v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md b/v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md deleted file mode 100755 index 26ce930b..00000000 --- a/v2/fixture/ConfigRequiredSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,29 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|no| -|FLD_TIME_REQ|time.Time|Test time required description|yes|no| -|FLD_STRING_REQ|string|Test string required description|yes|no| -|FLD_BOOL_REQ|bool|Test bool required description|yes|no| -|FLD_INT_REQ|int|Test int required description|yes|no| -|FLD_INT8_REQ|int8|Test int8 required description|yes|no| -|FLD_INT16_REQ|int16|Test int16 required description|yes|no| -|FLD_INT32_REQ|int32|Test int32 required description|yes|no| -|FLD_INT64_REQ|int64|Test int64 required description|yes|no| -|FLD_U_INT_REQ|uint|Test uint required description|yes|no| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|no| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|no| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|no| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|no| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|no| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|no| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|no| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|no| -|FLD_MAP_INT_REQ|map[string]int|Test map[string]int required description|yes|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixture/ConfigRequiredSuccess/app/config_gen.go b/v2/fixture/ConfigRequiredSuccess/app/config_gen.go deleted file mode 100755 index a86f0970..00000000 --- a/v2/fixture/ConfigRequiredSuccess/app/config_gen.go +++ /dev/null @@ -1,287 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "errors" - "fmt" - "os" - "strconv" - "strings" - "time" -) - -func LoadConfig() (cfg *Config, errs []error) { - cfg = &Config{} - fldDurationReqTmp, ok := os.LookupEnv("FLD_DURATION_REQ") - if ok { - fldDurationReqResult, err := time.ParseDuration(fldDurationReqTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldDurationReq = fldDurationReqResult - if cfg.FldDurationReq == 0 { - errs = append(errs, errors.New("env FLD_DURATION_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_DURATION_REQ required")) - } - fldTimeReqTmp, ok := os.LookupEnv("FLD_TIME_REQ") - if ok { - fldTimeReqResult, err := time.Parse(time.RFC3339, fldTimeReqTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldTimeReq = fldTimeReqResult - } else { - errs = append(errs, errors.New("env FLD_TIME_REQ required")) - } - fldStringReqTmp, ok := os.LookupEnv("FLD_STRING_REQ") - if ok { - cfg.FldStringReq = fldStringReqTmp - if cfg.FldStringReq == "" { - errs = append(errs, errors.New("env FLD_STRING_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_STRING_REQ required")) - } - fldBoolReqTmp, ok := os.LookupEnv("FLD_BOOL_REQ") - if ok { - fldboolreqBool, err := strconv.ParseBool(fldBoolReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_BOOL_REQ error: %w", err)) - } - cfg.FldBoolReq = bool(fldboolreqBool) - } else { - errs = append(errs, errors.New("env FLD_BOOL_REQ required")) - } - fldIntReqTmp, ok := os.LookupEnv("FLD_INT_REQ") - if ok { - fldintreqInt, err := strconv.Atoi(fldIntReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT_REQ error: %w", err)) - } - cfg.FldIntReq = int(fldintreqInt) - if cfg.FldIntReq == 0 { - errs = append(errs, errors.New("env FLD_INT_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_INT_REQ required")) - } - fldInt8ReqTmp, ok := os.LookupEnv("FLD_INT8_REQ") - if ok { - fldint8reqInt8, err := strconv.Atoi(fldInt8ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT8_REQ error: %w", err)) - } - cfg.FldInt8Req = int8(fldint8reqInt8) - if cfg.FldInt8Req == 0 { - errs = append(errs, errors.New("env FLD_INT8_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_INT8_REQ required")) - } - fldInt16ReqTmp, ok := os.LookupEnv("FLD_INT16_REQ") - if ok { - fldint16reqInt16, err := strconv.Atoi(fldInt16ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT16_REQ error: %w", err)) - } - cfg.FldInt16Req = int16(fldint16reqInt16) - if cfg.FldInt16Req == 0 { - errs = append(errs, errors.New("env FLD_INT16_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_INT16_REQ required")) - } - fldInt32ReqTmp, ok := os.LookupEnv("FLD_INT32_REQ") - if ok { - fldint32reqInt32, err := strconv.Atoi(fldInt32ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT32_REQ error: %w", err)) - } - cfg.FldInt32Req = int32(fldint32reqInt32) - if cfg.FldInt32Req == 0 { - errs = append(errs, errors.New("env FLD_INT32_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_INT32_REQ required")) - } - fldInt64ReqTmp, ok := os.LookupEnv("FLD_INT64_REQ") - if ok { - fldint64reqInt64, err := strconv.Atoi(fldInt64ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT64_REQ error: %w", err)) - } - cfg.FldInt64Req = int64(fldint64reqInt64) - if cfg.FldInt64Req == 0 { - errs = append(errs, errors.New("env FLD_INT64_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_INT64_REQ required")) - } - fldUIntReqTmp, ok := os.LookupEnv("FLD_U_INT_REQ") - if ok { - flduintreqUint, err := strconv.ParseUint(fldUIntReqTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT_REQ error: %w", err)) - } - cfg.FldUIntReq = uint(flduintreqUint) - if cfg.FldUIntReq == 0 { - errs = append(errs, errors.New("env FLD_U_INT_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_U_INT_REQ required")) - } - fldUInt8ReqTmp, ok := os.LookupEnv("FLD_U_INT8_REQ") - if ok { - flduint8reqUint8, err := strconv.ParseUint(fldUInt8ReqTmp, 10, 8) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT8_REQ error: %w", err)) - } - cfg.FldUInt8Req = uint8(flduint8reqUint8) - if cfg.FldUInt8Req == 0 { - errs = append(errs, errors.New("env FLD_U_INT8_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_U_INT8_REQ required")) - } - fldUInt16ReqTmp, ok := os.LookupEnv("FLD_U_INT16_REQ") - if ok { - flduint16reqUint16, err := strconv.ParseUint(fldUInt16ReqTmp, 10, 16) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT16_REQ error: %w", err)) - } - cfg.FldUInt16Req = uint16(flduint16reqUint16) - if cfg.FldUInt16Req == 0 { - errs = append(errs, errors.New("env FLD_U_INT16_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_U_INT16_REQ required")) - } - fldUInt32ReqTmp, ok := os.LookupEnv("FLD_U_INT32_REQ") - if ok { - flduint32reqUint32, err := strconv.ParseUint(fldUInt32ReqTmp, 10, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT32_REQ error: %w", err)) - } - cfg.FldUInt32Req = uint32(flduint32reqUint32) - if cfg.FldUInt32Req == 0 { - errs = append(errs, errors.New("env FLD_U_INT32_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_U_INT32_REQ required")) - } - fldUInt64ReqTmp, ok := os.LookupEnv("FLD_U_INT64_REQ") - if ok { - flduint64reqUint64, err := strconv.ParseUint(fldUInt64ReqTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT64_REQ error: %w", err)) - } - cfg.FldUInt64Req = uint64(flduint64reqUint64) - if cfg.FldUInt64Req == 0 { - errs = append(errs, errors.New("env FLD_U_INT64_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_U_INT64_REQ required")) - } - fldFloat64ReqTmp, ok := os.LookupEnv("FLD_FLOAT64_REQ") - if ok { - fldfloat64reqFloat64, err := strconv.ParseFloat(fldFloat64ReqTmp, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT64_REQ error: %w", err)) - } - cfg.FldFloat64Req = float64(fldfloat64reqFloat64) - if cfg.FldFloat64Req == 0 { - errs = append(errs, errors.New("env FLD_FLOAT64_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_FLOAT64_REQ required")) - } - fldFloat32ReqTmp, ok := os.LookupEnv("FLD_FLOAT32_REQ") - if ok { - fldfloat32reqFloat32, err := strconv.ParseFloat(fldFloat32ReqTmp, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT32_REQ error: %w", err)) - } - cfg.FldFloat32Req = float32(fldfloat32reqFloat32) - if cfg.FldFloat32Req == 0 { - errs = append(errs, errors.New("env FLD_FLOAT32_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_FLOAT32_REQ required")) - } - fldStringsReqTmp, ok := os.LookupEnv("FLD_STRINGS_REQ") - if ok { - cfg.FldStringsReq = strings.Split(fldStringsReqTmp, ",") - if cfg.FldStringsReq == nil { - errs = append(errs, errors.New("env FLD_STRINGS_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_STRINGS_REQ required")) - } - fldMapReqTmp, ok := os.LookupEnv("FLD_MAP_REQ") - if ok { - partsfldmapreq := strings.Split(fldMapReqTmp, ",") - cfg.FldMapReq = make(map[string]string, len(partsfldmapreq)) - for _, s := range partsfldmapreq { - kv := strings.Split(s, "=") - if len(kv) == 2 { - cfg.FldMapReq[kv[0]] = kv[1] - } - } - if cfg.FldMapReq == nil { - errs = append(errs, errors.New("env FLD_MAP_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_MAP_REQ required")) - } - fldMapIntReqTmp, ok := os.LookupEnv("FLD_MAP_INT_REQ") - if ok { - partsfldmapintreq := strings.Split(fldMapIntReqTmp, ",") - cfg.FldMapIntReq = make(map[string]int, len(partsfldmapintreq)) - for _, s := range partsfldmapintreq { - kv := strings.Split(s, "=") - if len(kv) == 2 { - tmpInt, err := strconv.Atoi(kv[1]) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_MAP_INT_REQ error: %w", err)) - } - cfg.FldMapIntReq[kv[0]] = int(tmpInt) - } - } - if cfg.FldMapIntReq == nil { - errs = append(errs, errors.New("env FLD_MAP_INT_REQ required")) - } - } else { - errs = append(errs, errors.New("env FLD_MAP_INT_REQ required")) - } - return -} - -func (cfg *Config) String() string { - out := ` -FLD_DURATION_REQ=` + fmt.Sprintf("%v", cfg.FldDurationReq) + ` ; Test duration required description -FLD_TIME_REQ=` + fmt.Sprintf("%v", cfg.FldTimeReq) + ` ; Test time required description -FLD_STRING_REQ=` + fmt.Sprintf("%v", cfg.FldStringReq) + ` ; Test string required description -FLD_BOOL_REQ=` + fmt.Sprintf("%v", cfg.FldBoolReq) + ` ; Test bool required description -FLD_INT_REQ=` + fmt.Sprintf("%v", cfg.FldIntReq) + ` ; Test int required description -FLD_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldInt8Req) + ` ; Test int8 required description -FLD_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldInt16Req) + ` ; Test int16 required description -FLD_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldInt32Req) + ` ; Test int32 required description -FLD_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldInt64Req) + ` ; Test int64 required description -FLD_U_INT_REQ=` + fmt.Sprintf("%v", cfg.FldUIntReq) + ` ; Test uint required description -FLD_U_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldUInt8Req) + ` ; Test uint8 required description -FLD_U_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldUInt16Req) + ` ; Test uint16 required description -FLD_U_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldUInt32Req) + ` ; Test uint32 required description -FLD_U_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldUInt64Req) + ` ; Test uint64 required description -FLD_FLOAT64_REQ=` + fmt.Sprintf("%v", cfg.FldFloat64Req) + ` ; Test int required description -FLD_FLOAT32_REQ=` + fmt.Sprintf("%v", cfg.FldFloat32Req) + ` ; Test int required description -FLD_STRINGS_REQ=` + fmt.Sprintf("%v", cfg.FldStringsReq) + ` ; Test []string required description -FLD_MAP_REQ=` + fmt.Sprintf("%v", cfg.FldMapReq) + ` ; Test map[string]string required description -FLD_MAP_INT_REQ=` + fmt.Sprintf("%v", cfg.FldMapIntReq) + ` ; Test map[string]int required description -` - return out -} diff --git a/v2/fixture/ConfigRequiredSuccess/app/swipe.go b/v2/fixture/ConfigRequiredSuccess/app/swipe.go deleted file mode 100644 index e915f910..00000000 --- a/v2/fixture/ConfigRequiredSuccess/app/swipe.go +++ /dev/null @@ -1,15 +0,0 @@ -//+build swipe - -package app - -import swipe "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.ConfigEnv( - &Config{}, - swipe.ConfigEnvDocEnable(), - swipe.ConfigEnvDocOutput("./"), - ), - ) -} diff --git a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config.go b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config.go deleted file mode 100644 index 40e1d4dc..00000000 --- a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config.go +++ /dev/null @@ -1,24 +0,0 @@ -package app - -import "time" - -type Config struct { - FldDurationReq time.Duration `env:",required,use_zero,desc:Test duration required description"` - FldTimeReq time.Time `env:",required,use_zero,desc:Test time required description"` - FldStringReq string `env:",required,use_zero,desc:Test string required description"` - FldBoolReq bool `env:",required,use_zero,desc:Test bool required description"` - FldIntReq int `env:",required,use_zero,desc:Test int required description"` - FldInt8Req int8 `env:",required,use_zero,desc:Test int8 required description"` - FldInt16Req int16 `env:",required,use_zero,desc:Test int16 required description"` - FldInt32Req int32 `env:",required,use_zero,desc:Test int32 required description"` - FldInt64Req int64 `env:",required,use_zero,desc:Test int64 required description"` - FldUIntReq uint `env:",required,use_zero,desc:Test uint required description"` - FldUInt8Req uint8 `env:",required,use_zero,desc:Test uint8 required description"` - FldUInt16Req uint16 `env:",required,use_zero,desc:Test uint16 required description"` - FldUInt32Req uint32 `env:",required,use_zero,desc:Test uint32 required description"` - FldUInt64Req uint64 `env:",required,use_zero,desc:Test uint64 required description"` - FldFloat64Req float64 `env:",required,use_zero,desc:Test int required description"` - FldFloat32Req float32 `env:",required,use_zero,desc:Test int required description"` - FldStringsReq []string `env:",required,use_zero,desc:Test []string required description"` - FldMapReq map[string]string `env:",required,use_zero,desc:Test map[string]string required description"` -} diff --git a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index e03115a9..00000000 --- a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|yes|yes| -|FLD_TIME_REQ|time.Time|Test time required description|yes|yes| -|FLD_STRING_REQ|string|Test string required description|yes|yes| -|FLD_BOOL_REQ|bool|Test bool required description|yes|yes| -|FLD_INT_REQ|int|Test int required description|yes|yes| -|FLD_INT8_REQ|int8|Test int8 required description|yes|yes| -|FLD_INT16_REQ|int16|Test int16 required description|yes|yes| -|FLD_INT32_REQ|int32|Test int32 required description|yes|yes| -|FLD_INT64_REQ|int64|Test int64 required description|yes|yes| -|FLD_U_INT_REQ|uint|Test uint required description|yes|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|yes|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|yes|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|yes|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|yes|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|yes|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|yes|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|yes|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|yes|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go b/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go deleted file mode 100755 index 2c3f6000..00000000 --- a/v2/fixture/ConfigRequiredUseZeroSuccess/app/config_gen.go +++ /dev/null @@ -1,218 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "errors" - "fmt" - "os" - "strconv" - "strings" - "time" -) - -func LoadConfig() (cfg *Config, errs []error) { - cfg = &Config{} - fldDurationReqTmp, ok := os.LookupEnv("FLD_DURATION_REQ") - if ok { - fldDurationReqResult, err := time.ParseDuration(fldDurationReqTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldDurationReq = fldDurationReqResult - } else { - errs = append(errs, errors.New("env FLD_DURATION_REQ required")) - } - fldTimeReqTmp, ok := os.LookupEnv("FLD_TIME_REQ") - if ok { - fldTimeReqResult, err := time.Parse(time.RFC3339, fldTimeReqTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldTimeReq = fldTimeReqResult - } else { - errs = append(errs, errors.New("env FLD_TIME_REQ required")) - } - fldStringReqTmp, ok := os.LookupEnv("FLD_STRING_REQ") - if ok { - cfg.FldStringReq = fldStringReqTmp - } else { - errs = append(errs, errors.New("env FLD_STRING_REQ required")) - } - fldBoolReqTmp, ok := os.LookupEnv("FLD_BOOL_REQ") - if ok { - fldboolreqBool, err := strconv.ParseBool(fldBoolReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_BOOL_REQ error: %w", err)) - } - cfg.FldBoolReq = bool(fldboolreqBool) - } else { - errs = append(errs, errors.New("env FLD_BOOL_REQ required")) - } - fldIntReqTmp, ok := os.LookupEnv("FLD_INT_REQ") - if ok { - fldintreqInt, err := strconv.Atoi(fldIntReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT_REQ error: %w", err)) - } - cfg.FldIntReq = int(fldintreqInt) - } else { - errs = append(errs, errors.New("env FLD_INT_REQ required")) - } - fldInt8ReqTmp, ok := os.LookupEnv("FLD_INT8_REQ") - if ok { - fldint8reqInt8, err := strconv.Atoi(fldInt8ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT8_REQ error: %w", err)) - } - cfg.FldInt8Req = int8(fldint8reqInt8) - } else { - errs = append(errs, errors.New("env FLD_INT8_REQ required")) - } - fldInt16ReqTmp, ok := os.LookupEnv("FLD_INT16_REQ") - if ok { - fldint16reqInt16, err := strconv.Atoi(fldInt16ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT16_REQ error: %w", err)) - } - cfg.FldInt16Req = int16(fldint16reqInt16) - } else { - errs = append(errs, errors.New("env FLD_INT16_REQ required")) - } - fldInt32ReqTmp, ok := os.LookupEnv("FLD_INT32_REQ") - if ok { - fldint32reqInt32, err := strconv.Atoi(fldInt32ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT32_REQ error: %w", err)) - } - cfg.FldInt32Req = int32(fldint32reqInt32) - } else { - errs = append(errs, errors.New("env FLD_INT32_REQ required")) - } - fldInt64ReqTmp, ok := os.LookupEnv("FLD_INT64_REQ") - if ok { - fldint64reqInt64, err := strconv.Atoi(fldInt64ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT64_REQ error: %w", err)) - } - cfg.FldInt64Req = int64(fldint64reqInt64) - } else { - errs = append(errs, errors.New("env FLD_INT64_REQ required")) - } - fldUIntReqTmp, ok := os.LookupEnv("FLD_U_INT_REQ") - if ok { - flduintreqUint, err := strconv.ParseUint(fldUIntReqTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT_REQ error: %w", err)) - } - cfg.FldUIntReq = uint(flduintreqUint) - } else { - errs = append(errs, errors.New("env FLD_U_INT_REQ required")) - } - fldUInt8ReqTmp, ok := os.LookupEnv("FLD_U_INT8_REQ") - if ok { - flduint8reqUint8, err := strconv.ParseUint(fldUInt8ReqTmp, 10, 8) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT8_REQ error: %w", err)) - } - cfg.FldUInt8Req = uint8(flduint8reqUint8) - } else { - errs = append(errs, errors.New("env FLD_U_INT8_REQ required")) - } - fldUInt16ReqTmp, ok := os.LookupEnv("FLD_U_INT16_REQ") - if ok { - flduint16reqUint16, err := strconv.ParseUint(fldUInt16ReqTmp, 10, 16) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT16_REQ error: %w", err)) - } - cfg.FldUInt16Req = uint16(flduint16reqUint16) - } else { - errs = append(errs, errors.New("env FLD_U_INT16_REQ required")) - } - fldUInt32ReqTmp, ok := os.LookupEnv("FLD_U_INT32_REQ") - if ok { - flduint32reqUint32, err := strconv.ParseUint(fldUInt32ReqTmp, 10, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT32_REQ error: %w", err)) - } - cfg.FldUInt32Req = uint32(flduint32reqUint32) - } else { - errs = append(errs, errors.New("env FLD_U_INT32_REQ required")) - } - fldUInt64ReqTmp, ok := os.LookupEnv("FLD_U_INT64_REQ") - if ok { - flduint64reqUint64, err := strconv.ParseUint(fldUInt64ReqTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT64_REQ error: %w", err)) - } - cfg.FldUInt64Req = uint64(flduint64reqUint64) - } else { - errs = append(errs, errors.New("env FLD_U_INT64_REQ required")) - } - fldFloat64ReqTmp, ok := os.LookupEnv("FLD_FLOAT64_REQ") - if ok { - fldfloat64reqFloat64, err := strconv.ParseFloat(fldFloat64ReqTmp, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT64_REQ error: %w", err)) - } - cfg.FldFloat64Req = float64(fldfloat64reqFloat64) - } else { - errs = append(errs, errors.New("env FLD_FLOAT64_REQ required")) - } - fldFloat32ReqTmp, ok := os.LookupEnv("FLD_FLOAT32_REQ") - if ok { - fldfloat32reqFloat32, err := strconv.ParseFloat(fldFloat32ReqTmp, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT32_REQ error: %w", err)) - } - cfg.FldFloat32Req = float32(fldfloat32reqFloat32) - } else { - errs = append(errs, errors.New("env FLD_FLOAT32_REQ required")) - } - fldStringsReqTmp, ok := os.LookupEnv("FLD_STRINGS_REQ") - if ok { - cfg.FldStringsReq = strings.Split(fldStringsReqTmp, ",") - } else { - errs = append(errs, errors.New("env FLD_STRINGS_REQ required")) - } - fldMapReqTmp, ok := os.LookupEnv("FLD_MAP_REQ") - if ok { - partsfldmapreq := strings.Split(fldMapReqTmp, ",") - cfg.FldMapReq = make(map[string]string, len(partsfldmapreq)) - for _, s := range partsfldmapreq { - kv := strings.Split(s, "=") - if len(kv) == 2 { - cfg.FldMapReq[kv[0]] = kv[1] - } - } - } else { - errs = append(errs, errors.New("env FLD_MAP_REQ required")) - } - return -} - -func (cfg *Config) String() string { - out := ` -FLD_DURATION_REQ=` + fmt.Sprintf("%v", cfg.FldDurationReq) + ` ; Test duration required description -FLD_TIME_REQ=` + fmt.Sprintf("%v", cfg.FldTimeReq) + ` ; Test time required description -FLD_STRING_REQ=` + fmt.Sprintf("%v", cfg.FldStringReq) + ` ; Test string required description -FLD_BOOL_REQ=` + fmt.Sprintf("%v", cfg.FldBoolReq) + ` ; Test bool required description -FLD_INT_REQ=` + fmt.Sprintf("%v", cfg.FldIntReq) + ` ; Test int required description -FLD_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldInt8Req) + ` ; Test int8 required description -FLD_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldInt16Req) + ` ; Test int16 required description -FLD_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldInt32Req) + ` ; Test int32 required description -FLD_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldInt64Req) + ` ; Test int64 required description -FLD_U_INT_REQ=` + fmt.Sprintf("%v", cfg.FldUIntReq) + ` ; Test uint required description -FLD_U_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldUInt8Req) + ` ; Test uint8 required description -FLD_U_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldUInt16Req) + ` ; Test uint16 required description -FLD_U_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldUInt32Req) + ` ; Test uint32 required description -FLD_U_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldUInt64Req) + ` ; Test uint64 required description -FLD_FLOAT64_REQ=` + fmt.Sprintf("%v", cfg.FldFloat64Req) + ` ; Test int required description -FLD_FLOAT32_REQ=` + fmt.Sprintf("%v", cfg.FldFloat32Req) + ` ; Test int required description -FLD_STRINGS_REQ=` + fmt.Sprintf("%v", cfg.FldStringsReq) + ` ; Test []string required description -FLD_MAP_REQ=` + fmt.Sprintf("%v", cfg.FldMapReq) + ` ; Test map[string]string required description -` - return out -} diff --git a/v2/fixture/ConfigRequiredUseZeroSuccess/app/swipe.go b/v2/fixture/ConfigRequiredUseZeroSuccess/app/swipe.go deleted file mode 100644 index e915f910..00000000 --- a/v2/fixture/ConfigRequiredUseZeroSuccess/app/swipe.go +++ /dev/null @@ -1,15 +0,0 @@ -//+build swipe - -package app - -import swipe "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.ConfigEnv( - &Config{}, - swipe.ConfigEnvDocEnable(), - swipe.ConfigEnvDocOutput("./"), - ), - ) -} diff --git a/v2/fixture/ConfigSuccess/app/config.go b/v2/fixture/ConfigSuccess/app/config.go deleted file mode 100644 index 6655dd54..00000000 --- a/v2/fixture/ConfigSuccess/app/config.go +++ /dev/null @@ -1,26 +0,0 @@ -package app - -import "time" - -type Config struct { - FldDuration time.Duration `env:",desc:Test duration required description"` - FldTime time.Time `env:",desc:Test time required description"` - FldString string `env:",desc:Test string required description"` - FldBool bool `env:",desc:Test bool required description"` - FldInt int `env:",desc:Test int required description"` - FldInt8 int8 `env:",desc:Test int8 required description"` - FldInt16 int16 `env:",desc:Test int16 required description"` - FldInt32 int32 `env:",desc:Test int32 required description"` - FldInt64 int64 `env:",desc:Test int64 required description"` - FldUInt uint `env:",desc:Test uint required description"` - FldUInt8 uint8 `env:",desc:Test uint8 required description"` - FldUInt16 uint16 `env:",desc:Test uint16 required description"` - FldUInt32 uint32 `env:",desc:Test uint32 required description"` - FldUInt64 uint64 `env:",desc:Test uint64 required description"` - FldFloat64 float64 `env:",desc:Test int required description"` - FldFloat32 float32 `env:",desc:Test int required description"` - FldStrings []string `env:",desc:Test []string required description"` - FldMap map[string]string `env:",desc:Test map[string]string required description"` - ID3Ver string `env:",desc:Test number env name required description"` - TestNumber123 string `env:",desc:Test number env name required description"` -} diff --git a/v2/fixture/ConfigSuccess/app/config_doc_gen.md b/v2/fixture/ConfigSuccess/app/config_doc_gen.md deleted file mode 100755 index 79abf177..00000000 --- a/v2/fixture/ConfigSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,30 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION|time.Duration|Test duration required description|no|no| -|FLD_TIME|time.Time|Test time required description|no|no| -|FLD_STRING|string|Test string required description|no|no| -|FLD_BOOL|bool|Test bool required description|no|no| -|FLD_INT|int|Test int required description|no|no| -|FLD_INT8|int8|Test int8 required description|no|no| -|FLD_INT16|int16|Test int16 required description|no|no| -|FLD_INT32|int32|Test int32 required description|no|no| -|FLD_INT64|int64|Test int64 required description|no|no| -|FLD_U_INT|uint|Test uint required description|no|no| -|FLD_U_INT8|uint8|Test uint8 required description|no|no| -|FLD_U_INT16|uint16|Test uint16 required description|no|no| -|FLD_U_INT32|uint32|Test uint32 required description|no|no| -|FLD_U_INT64|uint64|Test uint64 required description|no|no| -|FLD_FLOAT64|float64|Test int required description|no|no| -|FLD_FLOAT32|float32|Test int required description|no|no| -|FLD_STRINGS|[]string|Test []string required description|no|no| -|FLD_MAP|map[string]string|Test map[string]string required description|no|no| -|ID3_VER|string|Test number env name required description|no|no| -|TEST_NUMBER123|string|Test number env name required description|no|no| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixture/ConfigSuccess/app/config_gen.go b/v2/fixture/ConfigSuccess/app/config_gen.go deleted file mode 100755 index afa59b96..00000000 --- a/v2/fixture/ConfigSuccess/app/config_gen.go +++ /dev/null @@ -1,191 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "fmt" - "os" - "strconv" - "strings" - "time" -) - -func LoadConfig() (cfg *Config, errs []error) { - cfg = &Config{} - fldDurationTmp, ok := os.LookupEnv("FLD_DURATION") - if ok { - fldDurationResult, err := time.ParseDuration(fldDurationTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldDuration = fldDurationResult - } - fldTimeTmp, ok := os.LookupEnv("FLD_TIME") - if ok { - fldTimeResult, err := time.Parse(time.RFC3339, fldTimeTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldTime = fldTimeResult - } - fldStringTmp, ok := os.LookupEnv("FLD_STRING") - if ok { - cfg.FldString = fldStringTmp - } - fldBoolTmp, ok := os.LookupEnv("FLD_BOOL") - if ok { - fldboolBool, err := strconv.ParseBool(fldBoolTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_BOOL error: %w", err)) - } - cfg.FldBool = bool(fldboolBool) - } - fldIntTmp, ok := os.LookupEnv("FLD_INT") - if ok { - fldintInt, err := strconv.Atoi(fldIntTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT error: %w", err)) - } - cfg.FldInt = int(fldintInt) - } - fldInt8Tmp, ok := os.LookupEnv("FLD_INT8") - if ok { - fldint8Int8, err := strconv.Atoi(fldInt8Tmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT8 error: %w", err)) - } - cfg.FldInt8 = int8(fldint8Int8) - } - fldInt16Tmp, ok := os.LookupEnv("FLD_INT16") - if ok { - fldint16Int16, err := strconv.Atoi(fldInt16Tmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT16 error: %w", err)) - } - cfg.FldInt16 = int16(fldint16Int16) - } - fldInt32Tmp, ok := os.LookupEnv("FLD_INT32") - if ok { - fldint32Int32, err := strconv.Atoi(fldInt32Tmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT32 error: %w", err)) - } - cfg.FldInt32 = int32(fldint32Int32) - } - fldInt64Tmp, ok := os.LookupEnv("FLD_INT64") - if ok { - fldint64Int64, err := strconv.Atoi(fldInt64Tmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT64 error: %w", err)) - } - cfg.FldInt64 = int64(fldint64Int64) - } - fldUIntTmp, ok := os.LookupEnv("FLD_U_INT") - if ok { - flduintUint, err := strconv.ParseUint(fldUIntTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT error: %w", err)) - } - cfg.FldUInt = uint(flduintUint) - } - fldUInt8Tmp, ok := os.LookupEnv("FLD_U_INT8") - if ok { - flduint8Uint8, err := strconv.ParseUint(fldUInt8Tmp, 10, 8) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT8 error: %w", err)) - } - cfg.FldUInt8 = uint8(flduint8Uint8) - } - fldUInt16Tmp, ok := os.LookupEnv("FLD_U_INT16") - if ok { - flduint16Uint16, err := strconv.ParseUint(fldUInt16Tmp, 10, 16) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT16 error: %w", err)) - } - cfg.FldUInt16 = uint16(flduint16Uint16) - } - fldUInt32Tmp, ok := os.LookupEnv("FLD_U_INT32") - if ok { - flduint32Uint32, err := strconv.ParseUint(fldUInt32Tmp, 10, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT32 error: %w", err)) - } - cfg.FldUInt32 = uint32(flduint32Uint32) - } - fldUInt64Tmp, ok := os.LookupEnv("FLD_U_INT64") - if ok { - flduint64Uint64, err := strconv.ParseUint(fldUInt64Tmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT64 error: %w", err)) - } - cfg.FldUInt64 = uint64(flduint64Uint64) - } - fldFloat64Tmp, ok := os.LookupEnv("FLD_FLOAT64") - if ok { - fldfloat64Float64, err := strconv.ParseFloat(fldFloat64Tmp, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT64 error: %w", err)) - } - cfg.FldFloat64 = float64(fldfloat64Float64) - } - fldFloat32Tmp, ok := os.LookupEnv("FLD_FLOAT32") - if ok { - fldfloat32Float32, err := strconv.ParseFloat(fldFloat32Tmp, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT32 error: %w", err)) - } - cfg.FldFloat32 = float32(fldfloat32Float32) - } - fldStringsTmp, ok := os.LookupEnv("FLD_STRINGS") - if ok { - cfg.FldStrings = strings.Split(fldStringsTmp, ",") - } - fldMapTmp, ok := os.LookupEnv("FLD_MAP") - if ok { - partsfldmap := strings.Split(fldMapTmp, ",") - cfg.FldMap = make(map[string]string, len(partsfldmap)) - for _, s := range partsfldmap { - kv := strings.Split(s, "=") - if len(kv) == 2 { - cfg.FldMap[kv[0]] = kv[1] - } - } - } - iD3VerTmp, ok := os.LookupEnv("ID3_VER") - if ok { - cfg.ID3Ver = iD3VerTmp - } - testNumber123Tmp, ok := os.LookupEnv("TEST_NUMBER123") - if ok { - cfg.TestNumber123 = testNumber123Tmp - } - return -} - -func (cfg *Config) String() string { - out := ` -FLD_DURATION=` + fmt.Sprintf("%v", cfg.FldDuration) + ` ; Test duration required description -FLD_TIME=` + fmt.Sprintf("%v", cfg.FldTime) + ` ; Test time required description -FLD_STRING=` + fmt.Sprintf("%v", cfg.FldString) + ` ; Test string required description -FLD_BOOL=` + fmt.Sprintf("%v", cfg.FldBool) + ` ; Test bool required description -FLD_INT=` + fmt.Sprintf("%v", cfg.FldInt) + ` ; Test int required description -FLD_INT8=` + fmt.Sprintf("%v", cfg.FldInt8) + ` ; Test int8 required description -FLD_INT16=` + fmt.Sprintf("%v", cfg.FldInt16) + ` ; Test int16 required description -FLD_INT32=` + fmt.Sprintf("%v", cfg.FldInt32) + ` ; Test int32 required description -FLD_INT64=` + fmt.Sprintf("%v", cfg.FldInt64) + ` ; Test int64 required description -FLD_U_INT=` + fmt.Sprintf("%v", cfg.FldUInt) + ` ; Test uint required description -FLD_U_INT8=` + fmt.Sprintf("%v", cfg.FldUInt8) + ` ; Test uint8 required description -FLD_U_INT16=` + fmt.Sprintf("%v", cfg.FldUInt16) + ` ; Test uint16 required description -FLD_U_INT32=` + fmt.Sprintf("%v", cfg.FldUInt32) + ` ; Test uint32 required description -FLD_U_INT64=` + fmt.Sprintf("%v", cfg.FldUInt64) + ` ; Test uint64 required description -FLD_FLOAT64=` + fmt.Sprintf("%v", cfg.FldFloat64) + ` ; Test int required description -FLD_FLOAT32=` + fmt.Sprintf("%v", cfg.FldFloat32) + ` ; Test int required description -FLD_STRINGS=` + fmt.Sprintf("%v", cfg.FldStrings) + ` ; Test []string required description -FLD_MAP=` + fmt.Sprintf("%v", cfg.FldMap) + ` ; Test map[string]string required description -ID3_VER=` + fmt.Sprintf("%v", cfg.ID3Ver) + ` ; Test number env name required description -TEST_NUMBER123=` + fmt.Sprintf("%v", cfg.TestNumber123) + ` ; Test number env name required description -` - return out -} diff --git a/v2/fixture/ConfigSuccess/app/swipe.go b/v2/fixture/ConfigSuccess/app/swipe.go deleted file mode 100644 index e915f910..00000000 --- a/v2/fixture/ConfigSuccess/app/swipe.go +++ /dev/null @@ -1,15 +0,0 @@ -//+build swipe - -package app - -import swipe "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.ConfigEnv( - &Config{}, - swipe.ConfigEnvDocEnable(), - swipe.ConfigEnvDocOutput("./"), - ), - ) -} diff --git a/v2/fixture/ConfigUseZeroSuccess/app/config.go b/v2/fixture/ConfigUseZeroSuccess/app/config.go deleted file mode 100644 index ab634365..00000000 --- a/v2/fixture/ConfigUseZeroSuccess/app/config.go +++ /dev/null @@ -1,24 +0,0 @@ -package app - -import "time" - -type Config struct { - FldDurationReq time.Duration `env:",use_zero,desc:Test duration required description"` - FldTimeReq time.Time `env:",use_zero,desc:Test time required description"` - FldStringReq string `env:",use_zero,desc:Test string required description"` - FldBoolReq bool `env:",use_zero,desc:Test bool required description"` - FldIntReq int `env:",use_zero,desc:Test int required description"` - FldInt8Req int8 `env:",use_zero,desc:Test int8 required description"` - FldInt16Req int16 `env:",use_zero,desc:Test int16 required description"` - FldInt32Req int32 `env:",use_zero,desc:Test int32 required description"` - FldInt64Req int64 `env:",use_zero,desc:Test int64 required description"` - FldUIntReq uint `env:",use_zero,desc:Test uint required description"` - FldUInt8Req uint8 `env:",use_zero,desc:Test uint8 required description"` - FldUInt16Req uint16 `env:",use_zero,desc:Test uint16 required description"` - FldUInt32Req uint32 `env:",use_zero,desc:Test uint32 required description"` - FldUInt64Req uint64 `env:",use_zero,desc:Test uint64 required description"` - FldFloat64Req float64 `env:",use_zero,desc:Test int required description"` - FldFloat32Req float32 `env:",use_zero,desc:Test int required description"` - FldStringsReq []string `env:",use_zero,desc:Test []string required description"` - FldMapReq map[string]string `env:",use_zero,desc:Test map[string]string required description"` -} diff --git a/v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md b/v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md deleted file mode 100755 index 60eb6078..00000000 --- a/v2/fixture/ConfigUseZeroSuccess/app/config_doc_gen.md +++ /dev/null @@ -1,28 +0,0 @@ -# Config - -## Environment variables - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| -|FLD_DURATION_REQ|time.Duration|Test duration required description|no|yes| -|FLD_TIME_REQ|time.Time|Test time required description|no|yes| -|FLD_STRING_REQ|string|Test string required description|no|yes| -|FLD_BOOL_REQ|bool|Test bool required description|no|yes| -|FLD_INT_REQ|int|Test int required description|no|yes| -|FLD_INT8_REQ|int8|Test int8 required description|no|yes| -|FLD_INT16_REQ|int16|Test int16 required description|no|yes| -|FLD_INT32_REQ|int32|Test int32 required description|no|yes| -|FLD_INT64_REQ|int64|Test int64 required description|no|yes| -|FLD_U_INT_REQ|uint|Test uint required description|no|yes| -|FLD_U_INT8_REQ|uint8|Test uint8 required description|no|yes| -|FLD_U_INT16_REQ|uint16|Test uint16 required description|no|yes| -|FLD_U_INT32_REQ|uint32|Test uint32 required description|no|yes| -|FLD_U_INT64_REQ|uint64|Test uint64 required description|no|yes| -|FLD_FLOAT64_REQ|float64|Test int required description|no|yes| -|FLD_FLOAT32_REQ|float32|Test int required description|no|yes| -|FLD_STRINGS_REQ|[]string|Test []string required description|no|yes| -|FLD_MAP_REQ|map[string]string|Test map[string]string required description|no|yes| -## Flags - -| Name | Type | Description | Required | Use Zero | -|------|------|------|------|------| diff --git a/v2/fixture/ConfigUseZeroSuccess/app/config_gen.go b/v2/fixture/ConfigUseZeroSuccess/app/config_gen.go deleted file mode 100755 index ec851334..00000000 --- a/v2/fixture/ConfigUseZeroSuccess/app/config_gen.go +++ /dev/null @@ -1,181 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "fmt" - "os" - "strconv" - "strings" - "time" -) - -func LoadConfig() (cfg *Config, errs []error) { - cfg = &Config{} - fldDurationReqTmp, ok := os.LookupEnv("FLD_DURATION_REQ") - if ok { - fldDurationReqResult, err := time.ParseDuration(fldDurationReqTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldDurationReq = fldDurationReqResult - } - fldTimeReqTmp, ok := os.LookupEnv("FLD_TIME_REQ") - if ok { - fldTimeReqResult, err := time.Parse(time.RFC3339, fldTimeReqTmp) - if err != nil { - errs = append(errs, err) - } - cfg.FldTimeReq = fldTimeReqResult - } - fldStringReqTmp, ok := os.LookupEnv("FLD_STRING_REQ") - if ok { - cfg.FldStringReq = fldStringReqTmp - } - fldBoolReqTmp, ok := os.LookupEnv("FLD_BOOL_REQ") - if ok { - fldboolreqBool, err := strconv.ParseBool(fldBoolReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_BOOL_REQ error: %w", err)) - } - cfg.FldBoolReq = bool(fldboolreqBool) - } - fldIntReqTmp, ok := os.LookupEnv("FLD_INT_REQ") - if ok { - fldintreqInt, err := strconv.Atoi(fldIntReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT_REQ error: %w", err)) - } - cfg.FldIntReq = int(fldintreqInt) - } - fldInt8ReqTmp, ok := os.LookupEnv("FLD_INT8_REQ") - if ok { - fldint8reqInt8, err := strconv.Atoi(fldInt8ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT8_REQ error: %w", err)) - } - cfg.FldInt8Req = int8(fldint8reqInt8) - } - fldInt16ReqTmp, ok := os.LookupEnv("FLD_INT16_REQ") - if ok { - fldint16reqInt16, err := strconv.Atoi(fldInt16ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT16_REQ error: %w", err)) - } - cfg.FldInt16Req = int16(fldint16reqInt16) - } - fldInt32ReqTmp, ok := os.LookupEnv("FLD_INT32_REQ") - if ok { - fldint32reqInt32, err := strconv.Atoi(fldInt32ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT32_REQ error: %w", err)) - } - cfg.FldInt32Req = int32(fldint32reqInt32) - } - fldInt64ReqTmp, ok := os.LookupEnv("FLD_INT64_REQ") - if ok { - fldint64reqInt64, err := strconv.Atoi(fldInt64ReqTmp) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_INT64_REQ error: %w", err)) - } - cfg.FldInt64Req = int64(fldint64reqInt64) - } - fldUIntReqTmp, ok := os.LookupEnv("FLD_U_INT_REQ") - if ok { - flduintreqUint, err := strconv.ParseUint(fldUIntReqTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT_REQ error: %w", err)) - } - cfg.FldUIntReq = uint(flduintreqUint) - } - fldUInt8ReqTmp, ok := os.LookupEnv("FLD_U_INT8_REQ") - if ok { - flduint8reqUint8, err := strconv.ParseUint(fldUInt8ReqTmp, 10, 8) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT8_REQ error: %w", err)) - } - cfg.FldUInt8Req = uint8(flduint8reqUint8) - } - fldUInt16ReqTmp, ok := os.LookupEnv("FLD_U_INT16_REQ") - if ok { - flduint16reqUint16, err := strconv.ParseUint(fldUInt16ReqTmp, 10, 16) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT16_REQ error: %w", err)) - } - cfg.FldUInt16Req = uint16(flduint16reqUint16) - } - fldUInt32ReqTmp, ok := os.LookupEnv("FLD_U_INT32_REQ") - if ok { - flduint32reqUint32, err := strconv.ParseUint(fldUInt32ReqTmp, 10, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT32_REQ error: %w", err)) - } - cfg.FldUInt32Req = uint32(flduint32reqUint32) - } - fldUInt64ReqTmp, ok := os.LookupEnv("FLD_U_INT64_REQ") - if ok { - flduint64reqUint64, err := strconv.ParseUint(fldUInt64ReqTmp, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_U_INT64_REQ error: %w", err)) - } - cfg.FldUInt64Req = uint64(flduint64reqUint64) - } - fldFloat64ReqTmp, ok := os.LookupEnv("FLD_FLOAT64_REQ") - if ok { - fldfloat64reqFloat64, err := strconv.ParseFloat(fldFloat64ReqTmp, 64) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT64_REQ error: %w", err)) - } - cfg.FldFloat64Req = float64(fldfloat64reqFloat64) - } - fldFloat32ReqTmp, ok := os.LookupEnv("FLD_FLOAT32_REQ") - if ok { - fldfloat32reqFloat32, err := strconv.ParseFloat(fldFloat32ReqTmp, 32) - if err != nil { - errs = append(errs, fmt.Errorf("convert FLD_FLOAT32_REQ error: %w", err)) - } - cfg.FldFloat32Req = float32(fldfloat32reqFloat32) - } - fldStringsReqTmp, ok := os.LookupEnv("FLD_STRINGS_REQ") - if ok { - cfg.FldStringsReq = strings.Split(fldStringsReqTmp, ",") - } - fldMapReqTmp, ok := os.LookupEnv("FLD_MAP_REQ") - if ok { - partsfldmapreq := strings.Split(fldMapReqTmp, ",") - cfg.FldMapReq = make(map[string]string, len(partsfldmapreq)) - for _, s := range partsfldmapreq { - kv := strings.Split(s, "=") - if len(kv) == 2 { - cfg.FldMapReq[kv[0]] = kv[1] - } - } - } - return -} - -func (cfg *Config) String() string { - out := ` -FLD_DURATION_REQ=` + fmt.Sprintf("%v", cfg.FldDurationReq) + ` ; Test duration required description -FLD_TIME_REQ=` + fmt.Sprintf("%v", cfg.FldTimeReq) + ` ; Test time required description -FLD_STRING_REQ=` + fmt.Sprintf("%v", cfg.FldStringReq) + ` ; Test string required description -FLD_BOOL_REQ=` + fmt.Sprintf("%v", cfg.FldBoolReq) + ` ; Test bool required description -FLD_INT_REQ=` + fmt.Sprintf("%v", cfg.FldIntReq) + ` ; Test int required description -FLD_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldInt8Req) + ` ; Test int8 required description -FLD_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldInt16Req) + ` ; Test int16 required description -FLD_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldInt32Req) + ` ; Test int32 required description -FLD_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldInt64Req) + ` ; Test int64 required description -FLD_U_INT_REQ=` + fmt.Sprintf("%v", cfg.FldUIntReq) + ` ; Test uint required description -FLD_U_INT8_REQ=` + fmt.Sprintf("%v", cfg.FldUInt8Req) + ` ; Test uint8 required description -FLD_U_INT16_REQ=` + fmt.Sprintf("%v", cfg.FldUInt16Req) + ` ; Test uint16 required description -FLD_U_INT32_REQ=` + fmt.Sprintf("%v", cfg.FldUInt32Req) + ` ; Test uint32 required description -FLD_U_INT64_REQ=` + fmt.Sprintf("%v", cfg.FldUInt64Req) + ` ; Test uint64 required description -FLD_FLOAT64_REQ=` + fmt.Sprintf("%v", cfg.FldFloat64Req) + ` ; Test int required description -FLD_FLOAT32_REQ=` + fmt.Sprintf("%v", cfg.FldFloat32Req) + ` ; Test int required description -FLD_STRINGS_REQ=` + fmt.Sprintf("%v", cfg.FldStringsReq) + ` ; Test []string required description -FLD_MAP_REQ=` + fmt.Sprintf("%v", cfg.FldMapReq) + ` ; Test map[string]string required description -` - return out -} diff --git a/v2/fixture/ConfigUseZeroSuccess/app/swipe.go b/v2/fixture/ConfigUseZeroSuccess/app/swipe.go deleted file mode 100644 index e915f910..00000000 --- a/v2/fixture/ConfigUseZeroSuccess/app/swipe.go +++ /dev/null @@ -1,15 +0,0 @@ -//+build swipe - -package app - -import swipe "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.ConfigEnv( - &Config{}, - swipe.ConfigEnvDocEnable(), - swipe.ConfigEnvDocOutput("./"), - ), - ) -} diff --git a/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js b/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js deleted file mode 100755 index b3188d48..00000000 --- a/v2/fixture/GatewaySuccess/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,128 +0,0 @@ -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - const schedule = scheduleRequests[responses[i].id]; - if (responses[i].error) { - schedule.reject(responses[i].error); - continue; - } - schedule.resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - bCreate(newData, name, data) { - return this.scheduler - .__scheduleRequest("create", { newData: newData, name: name, data: data }) - .catch((e) => { - throw interfaceBCreateConvertError(e); - }); - } -} - -export default JSONRPCClientB; - -function interfaceBCreateConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/v2/fixture/GatewaySuccess/app/endpoint_gen.go b/v2/fixture/GatewaySuccess/app/endpoint_gen.go deleted file mode 100755 index bdbfeacc..00000000 --- a/v2/fixture/GatewaySuccess/app/endpoint_gen.go +++ /dev/null @@ -1,40 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" -) - -func MakeBCreateEndpoint(s app.InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BCreateCreateRequest) - err := s.Create(ctx, req.NewData, req.Name, req.Data) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -type BEndpointSet struct { - CreateEndpoint endpoint.Endpoint -} - -func MakeBEndpointSet(svc app.InterfaceB) BEndpointSet { - return BEndpointSet{ - CreateEndpoint: MakeBCreateEndpoint(svc), - } -} - -type BCreateCreateRequest struct { - NewData app.Data `json:"newData"` - Name string `json:"name"` - Data []byte `json:"data"` -} diff --git a/v2/fixture/GatewaySuccess/app/http_gen.go b/v2/fixture/GatewaySuccess/app/http_gen.go deleted file mode 100755 index 02911c2a..00000000 --- a/v2/fixture/GatewaySuccess/app/http_gen.go +++ /dev/null @@ -1,47 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "github.com/go-kit/kit/endpoint" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" -) - -func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { - return func(next endpoint.Endpoint) endpoint.Endpoint { - if len(middlewares) == 0 { - return next - } - outer := middlewares[0] - others := middlewares[1:] - for i := len(others) - 1; i >= 0; i-- { - next = others[i](next) - } - return outer(next) - } -} -func GenericServerOptions(v ...jsonrpc.ServerOption) ServerOption { - return func(o *serverOpts) { o.genericServerOption = v } -} - -func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { - return func(o *serverOpts) { o.genericEndpointMiddleware = v } -} - -type ServerOption func(*serverOpts) -type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - bCreateServerOption []jsonrpc.ServerOption - bCreateEndpointMiddleware []endpoint.Middleware -} - -func BCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bCreateServerOption = opt } -} - -func BCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bCreateEndpointMiddleware = opt } -} diff --git a/v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json b/v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 78c5b1c5..00000000 --- a/v2/fixture/GatewaySuccess/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/b.create":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}}}}} diff --git a/v2/fixture/GatewaySuccess/app/server_gen.go b/v2/fixture/GatewaySuccess/app/server_gen.go deleted file mode 100755 index 48fea08b..00000000 --- a/v2/fixture/GatewaySuccess/app/server_gen.go +++ /dev/null @@ -1,72 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "strings" - - "github.com/gorilla/mux" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" - "github.com/pquerna/ffjson/ffjson" - "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" -) - -func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap { - mergedECM := make(jsonrpc.EndpointCodecMap, 512) - for _, ecm := range ecms { - for key, codec := range ecm { - mergedECM[key] = codec - } - } - return mergedECM -} -func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessage, error) { - b, err := ffjson.Marshal(result) - if err != nil { - return nil, err - } - return b, nil -} - -func MakeBEndpointCodecMap(ep BEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { - var namespace string - if len(ns) > 0 { - namespace = strings.Join(ns, ".") + "." - } - ecm := jsonrpc.EndpointCodecMap{} - if ep.CreateEndpoint != nil { - ecm[namespace+"create"] = jsonrpc.EndpointCodec{ - Endpoint: ep.CreateEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BCreateCreateRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BCreateCreateRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - return ecm -} - -// HTTP JSONRPC Transport -func MakeHandlerJSONRPC(svcB app.InterfaceB, options ...ServerOption) (http.Handler, error) { - opts := &serverOpts{} - for _, o := range options { - o(opts) - } - epSet := MakeBEndpointSet(svcB) - epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(epSet.CreateEndpoint) - r := mux.NewRouter() - handler := jsonrpc.NewServer(MakeBEndpointCodecMap(epSet), opts.genericServerOption...) - r.Methods("POST").Path("").Handler(handler) - return r, nil -} diff --git a/v2/fixture/GatewaySuccess/app/swipe.go b/v2/fixture/GatewaySuccess/app/swipe.go deleted file mode 100644 index 99603ace..00000000 --- a/v2/fixture/GatewaySuccess/app/swipe.go +++ /dev/null @@ -1,34 +0,0 @@ -//+build swipe ide - -package app - -import ( - swipe "github.com/swipe-io/swipe/v2" - - "github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app" -) - -func Swipe() { - swipe.Build( - swipe.Service( - swipe.Interface((*app.InterfaceA)(nil), "a"), - swipe.Interface((*app.InterfaceB)(nil), "b"), - - swipe.HTTPServer(), - - swipe.JSONRPCEnable(), - - swipe.ClientsEnable([]string{"js"}), - - swipe.OpenapiEnable(), - - swipe.MethodOptions(app.InterfaceB.Create, - swipe.Exclude(false), - ), - - swipe.MethodDefaultOptions( - swipe.Exclude(true), - ), - ), - ) -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/.swipe/README.md.tpl b/v2/fixture/ServiceJSONRPCMulti/app/.swipe/README.md.tpl deleted file mode 100755 index b64b4415..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/.swipe/README.md.tpl +++ /dev/null @@ -1,35 +0,0 @@ -# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) -{{end -}} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/README.md b/v2/fixture/ServiceJSONRPCMulti/app/README.md deleted file mode 100755 index 9e60c463..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCMulti/app : A short description of the service. -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go deleted file mode 100755 index 63a9ec00..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/client_gen.go +++ /dev/null @@ -1,256 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "encoding/json" - "fmt" - "net" - "net/url" - "strings" - - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" - "github.com/pquerna/ffjson/ffjson" -) - -func NewClientJSONRPCA(tgt string, options ...ClientOption) (InterfaceA, error) { - opts := &clientOpts{} - c := &clientA{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - opts.aTestMethodClientOption = append( - opts.aTestMethodClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - return nil, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, aTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - return nil, nil - }), - ) - c.aTestMethodEndpoint = jsonrpc.NewClient( - u, - "a.aTestMethod", - append(opts.genericClientOption, opts.aTestMethodClientOption...)..., - ).Endpoint() - c.aTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(c.aTestMethodEndpoint) - return c, nil -} -func NewClientJSONRPCB(tgt string, options ...ClientOption) (InterfaceB, error) { - opts := &clientOpts{} - c := &clientB{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - opts.bCreateClientOption = append( - opts.bCreateClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(BCreateCreateRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as BCreateCreateRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, bCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - return nil, nil - }), - ) - c.bCreateEndpoint = jsonrpc.NewClient( - u, - "b.bCreate", - append(opts.genericClientOption, opts.bCreateClientOption...)..., - ).Endpoint() - c.bCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(c.bCreateEndpoint) - opts.bDeleteClientOption = append( - opts.bDeleteClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(BDeleteDeleteRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as BDeleteDeleteRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, bDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp BDeleteDeleteResponse - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteResponse: %s", err) - } - return resp, nil - }), - ) - c.bDeleteEndpoint = jsonrpc.NewClient( - u, - "b.bDelete", - append(opts.genericClientOption, opts.bDeleteClientOption...)..., - ).Endpoint() - c.bDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(c.bDeleteEndpoint) - opts.bGetClientOption = append( - opts.bGetClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(BGetGetRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as BGetGetRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, bGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp User - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BGetGetResponse: %s", err) - } - return resp, nil - }), - ) - c.bGetEndpoint = jsonrpc.NewClient( - u, - "b.bGet", - append(opts.genericClientOption, opts.bGetClientOption...)..., - ).Endpoint() - c.bGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(c.bGetEndpoint) - opts.bGetAllClientOption = append( - opts.bGetAllClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(BGetAllGetAllRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as BGetAllGetAllRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, bGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp []*User - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllResponse: %s", err) - } - return resp, nil - }), - ) - c.bGetAllEndpoint = jsonrpc.NewClient( - u, - "b.bGetAll", - append(opts.genericClientOption, opts.bGetAllClientOption...)..., - ).Endpoint() - c.bGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(c.bGetAllEndpoint) - opts.bTestMethodClientOption = append( - opts.bTestMethodClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(BTestMethodTestMethodRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as BTestMethodTestMethodRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, bTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp map[string]map[int][]string - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodResponse: %s", err) - } - return resp, nil - }), - ) - c.bTestMethodEndpoint = jsonrpc.NewClient( - u, - "b.bTestMethod", - append(opts.genericClientOption, opts.bTestMethodClientOption...)..., - ).Endpoint() - c.bTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(c.bTestMethodEndpoint) - opts.bTestMethod2ClientOption = append( - opts.bTestMethod2ClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(BTestMethod2TestMethod2Request) - if !ok { - return nil, fmt.Errorf("couldn't assert request as BTestMethod2TestMethod2Request, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, bTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - return nil, nil - }), - ) - c.bTestMethod2Endpoint = jsonrpc.NewClient( - u, - "b.bTestMethod2", - append(opts.genericClientOption, opts.bTestMethod2ClientOption...)..., - ).Endpoint() - c.bTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(c.bTestMethod2Endpoint) - return c, nil -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js deleted file mode 100755 index 44774f7c..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,331 +0,0 @@ -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - const schedule = scheduleRequests[responses[i].id]; - if (responses[i].error) { - schedule.reject(responses[i].error); - continue; - } - schedule.resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** -* @typedef {Object} User -* @property {string} title - -* @property {string} id -* @property {string} name -* @property {string} password -* @property {GeoJSON} point -* @property {string} last_seen -* @property {Data} data -* @property {Array} photo -* @property {User} user -* @property {Profile} profile -* @property {Recurse} recurse -* @property {string} created_at -* @property {string} updated_at -*/ - -/** - * @typedef {Object} Info - * @property {string} title - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -class JSONRPCClientA { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - **/ - aTestMethod() { - return this.scheduler.__scheduleRequest("a.testMethod", {}).catch((e) => { - throw interfaceATestMethodConvertError(e); - }); - } -} - -class JSONRPCClientB { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - bCreate(newData, name, data) { - return this.scheduler - .__scheduleRequest("b.create", { - newData: newData, - name: name, - data: data - }) - .catch((e) => { - throw interfaceBCreateConvertError(e); - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - bDelete(id) { - return this.scheduler - .__scheduleRequest("b.delete", { id: id }) - .catch((e) => { - throw interfaceBDeleteConvertError(e); - }); - } - /** - * Get item. - * - * @param {number} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - bGet(id, name, fname, price, n, b, cc) { - return this.scheduler - .__scheduleRequest("b.get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }) - .catch((e) => { - throw interfaceBGetConvertError(e); - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - bGetAll(members) { - return this.scheduler - .__scheduleRequest("b.getAll", { members: members }) - .catch((e) => { - throw interfaceBGetAllConvertError(e); - }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - bTestMethod(data, ss) { - return this.scheduler - .__scheduleRequest("b.testMethod", { data: data, ss: ss }) - .catch((e) => { - throw interfaceBTestMethodConvertError(e); - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - bTestMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler - .__scheduleRequest("b.testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }) - .catch((e) => { - throw interfaceBTestMethod2ConvertError(e); - }); - } -} - -class JSONRPCClient { - constructor(transport) { - this.A = new JSONRPCClientA(transport); - this.B = new JSONRPCClientB(transport); - } -} -export default JSONRPCClient; - -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -function interfaceATestMethodConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBCreateConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - } -} -function interfaceBDeleteConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetAllConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethodConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethod2ConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go deleted file mode 100755 index 0bdddab0..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/client_struct_gen.go +++ /dev/null @@ -1,186 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" -) - -type AppClient struct { - AClient InterfaceA - BClient InterfaceB -} - -func NewClientJSONRPC(tgt string, opts ...ClientOption) (*AppClient, error) { - aClient, err := NewClientJSONRPCA(tgt, opts...) - if err != nil { - return nil, err - } - bClient, err := NewClientJSONRPCB(tgt, opts...) - if err != nil { - return nil, err - } - return &AppClient{ - AClient: aClient, - BClient: bClient, - }, nil -} - -type ClientOption func(*clientOpts) -type clientOpts struct { - aTestMethodClientOption []jsonrpc.ClientOption - aTestMethodEndpointMiddleware []endpoint.Middleware - bCreateClientOption []jsonrpc.ClientOption - bCreateEndpointMiddleware []endpoint.Middleware - bDeleteClientOption []jsonrpc.ClientOption - bDeleteEndpointMiddleware []endpoint.Middleware - bGetClientOption []jsonrpc.ClientOption - bGetEndpointMiddleware []endpoint.Middleware - bGetAllClientOption []jsonrpc.ClientOption - bGetAllEndpointMiddleware []endpoint.Middleware - bTestMethodClientOption []jsonrpc.ClientOption - bTestMethodEndpointMiddleware []endpoint.Middleware - bTestMethod2ClientOption []jsonrpc.ClientOption - bTestMethod2EndpointMiddleware []endpoint.Middleware - genericClientOption []jsonrpc.ClientOption - genericEndpointMiddleware []endpoint.Middleware -} - -func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.genericClientOption = opt } -} - -func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.genericEndpointMiddleware = opt } -} - -func ATestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.aTestMethodClientOption = opt } -} - -func ATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.aTestMethodEndpointMiddleware = opt } -} - -func BCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.bCreateClientOption = opt } -} - -func BCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bCreateEndpointMiddleware = opt } -} - -func BDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.bDeleteClientOption = opt } -} - -func BDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bDeleteEndpointMiddleware = opt } -} - -func BGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.bGetClientOption = opt } -} - -func BGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bGetEndpointMiddleware = opt } -} - -func BGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.bGetAllClientOption = opt } -} - -func BGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bGetAllEndpointMiddleware = opt } -} - -func BTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.bTestMethodClientOption = opt } -} - -func BTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bTestMethodEndpointMiddleware = opt } -} - -func BTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.bTestMethod2ClientOption = opt } -} - -func BTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bTestMethod2EndpointMiddleware = opt } -} - -type clientA struct { - aTestMethodEndpoint endpoint.Endpoint -} - -func (c *clientA) TestMethod() { - _, _ = c.aTestMethodEndpoint(context.Background(), nil) - return -} - -type clientB struct { - bCreateEndpoint endpoint.Endpoint - bDeleteEndpoint endpoint.Endpoint - bGetEndpoint endpoint.Endpoint - bGetAllEndpoint endpoint.Endpoint - bTestMethodEndpoint endpoint.Endpoint - bTestMethod2Endpoint endpoint.Endpoint -} - -func (c *clientB) Create(ctx context.Context, newData Data, name string, data []byte) error { - _, err := c.bCreateEndpoint(ctx, BCreateCreateRequest{NewData: newData, Name: name, Data: data}) - if err != nil { - return err - } - return nil -} - -func (c *clientB) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.bDeleteEndpoint(ctx, BDeleteDeleteRequest{Id: id}) - if err != nil { - return "", "", err - } - response := resp.(BDeleteDeleteResponse) - return response.A, response.B, nil -} - -func (c *clientB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.bGetEndpoint(ctx, BGetGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) - if err != nil { - return User{}, err - } - response := resp.(User) - return response, nil -} - -func (c *clientB) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.bGetAllEndpoint(ctx, BGetAllGetAllRequest{Members: members}) - if err != nil { - return nil, err - } - response := resp.([]*User) - return response, nil -} - -func (c *clientB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.bTestMethodEndpoint(context.Background(), BTestMethodTestMethodRequest{Data: data, Ss: ss}) - if err != nil { - return nil, err - } - response := resp.(map[string]map[int][]string) - return response, nil -} - -func (c *clientB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.bTestMethod2Endpoint(ctx, BTestMethod2TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) - if err != nil { - return err - } - return nil -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go deleted file mode 100755 index ab02d7fd..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/endpoint_gen.go +++ /dev/null @@ -1,158 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" -) - -func MakeATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - s.TestMethod() - return nil, nil - } - -} - -func MakeBCreateEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BCreateCreateRequest) - err := s.Create(ctx, req.NewData, req.Name, req.Data) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BDeleteDeleteRequest) - a, b, err := s.Delete(ctx, req.Id) - if err != nil { - return nil, err - } - return BDeleteDeleteResponse{A: a, B: b}, nil - } - -} - -func MakeBGetEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BGetGetRequest) - result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BGetAllGetAllRequest) - result, err := s.GetAll(ctx, req.Members) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BTestMethodTestMethodRequest) - result, err := s.TestMethod(req.Data, req.Ss) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BTestMethod2TestMethod2Request) - err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -type AEndpointSet struct { - TestMethodEndpoint endpoint.Endpoint -} - -func MakeAEndpointSet(svc InterfaceA) AEndpointSet { - return AEndpointSet{ - TestMethodEndpoint: MakeATestMethodEndpoint(svc), - } -} - -type BEndpointSet struct { - CreateEndpoint endpoint.Endpoint - DeleteEndpoint endpoint.Endpoint - GetEndpoint endpoint.Endpoint - GetAllEndpoint endpoint.Endpoint - TestMethodEndpoint endpoint.Endpoint - TestMethod2Endpoint endpoint.Endpoint -} - -func MakeBEndpointSet(svc InterfaceB) BEndpointSet { - return BEndpointSet{ - CreateEndpoint: MakeBCreateEndpoint(svc), - DeleteEndpoint: MakeBDeleteEndpoint(svc), - GetEndpoint: MakeBGetEndpoint(svc), - GetAllEndpoint: MakeBGetAllEndpoint(svc), - TestMethodEndpoint: MakeBTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeBTestMethod2Endpoint(svc), - } -} - -type BCreateCreateRequest struct { - NewData Data `json:"newData"` - Name string `json:"name"` - Data []byte `json:"data"` -} -type BDeleteDeleteRequest struct { - Id uint `json:"id"` -} -type BDeleteDeleteResponse struct { - A string `json:"a"` - B string `json:"b"` -} -type BGetGetRequest struct { - Id int `json:"id"` - Name string `json:"name"` - Fname string `json:"fname"` - Price float32 `json:"price"` - N int `json:"n"` - B int `json:"b"` - Cc int `json:"cc"` -} -type BGetAllGetAllRequest struct { - Members Members `json:"members"` -} -type BTestMethodTestMethodRequest struct { - Data map[string]interface{} `json:"data"` - Ss interface{} `json:"ss"` -} -type BTestMethod2TestMethod2Request struct { - Ns string `json:"ns"` - Utype string `json:"utype"` - User string `json:"user"` - Restype string `json:"restype"` - Resource string `json:"resource"` - Permission string `json:"permission"` -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go deleted file mode 100755 index e52a6e7a..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/http_gen.go +++ /dev/null @@ -1,228 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "github.com/go-kit/kit/endpoint" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" -) - -type httpError struct { - code int - data interface{} - message string -} - -func (e *httpError) Error() string { - return e.message -} -func (e *httpError) StatusCode() int { - return e.code -} -func (e *httpError) ErrorData() interface{} { - return e.data -} -func (e *httpError) SetErrorData(data interface{}) { - e.data = data -} -func (e *httpError) SetErrorMessage(message string) { - e.message = message -} -func aTestMethodErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func bCreateErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - case -32001: - err = ErrUnauthorized{} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func bDeleteErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func bGetErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func bGetAllErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func bTestMethodErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func bTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { - return func(next endpoint.Endpoint) endpoint.Endpoint { - if len(middlewares) == 0 { - return next - } - outer := middlewares[0] - others := middlewares[1:] - for i := len(others) - 1; i >= 0; i-- { - next = others[i](next) - } - return outer(next) - } -} -func GenericServerOptions(v ...jsonrpc.ServerOption) ServerOption { - return func(o *serverOpts) { o.genericServerOption = v } -} - -func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { - return func(o *serverOpts) { o.genericEndpointMiddleware = v } -} - -type ServerOption func(*serverOpts) -type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - aTestMethodServerOption []jsonrpc.ServerOption - aTestMethodEndpointMiddleware []endpoint.Middleware - bCreateServerOption []jsonrpc.ServerOption - bCreateEndpointMiddleware []endpoint.Middleware - bDeleteServerOption []jsonrpc.ServerOption - bDeleteEndpointMiddleware []endpoint.Middleware - bGetServerOption []jsonrpc.ServerOption - bGetEndpointMiddleware []endpoint.Middleware - bGetAllServerOption []jsonrpc.ServerOption - bGetAllEndpointMiddleware []endpoint.Middleware - bTestMethodServerOption []jsonrpc.ServerOption - bTestMethodEndpointMiddleware []endpoint.Middleware - bTestMethod2ServerOption []jsonrpc.ServerOption - bTestMethod2EndpointMiddleware []endpoint.Middleware -} - -func ATestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.aTestMethodServerOption = opt } -} - -func ATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.aTestMethodEndpointMiddleware = opt } -} - -func BCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bCreateServerOption = opt } -} - -func BCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bCreateEndpointMiddleware = opt } -} - -func BDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bDeleteServerOption = opt } -} - -func BDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bDeleteEndpointMiddleware = opt } -} - -func BGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bGetServerOption = opt } -} - -func BGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bGetEndpointMiddleware = opt } -} - -func BGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bGetAllServerOption = opt } -} - -func BGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bGetAllEndpointMiddleware = opt } -} - -func BTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bTestMethodServerOption = opt } -} - -func BTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bTestMethodEndpointMiddleware = opt } -} - -func BTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.bTestMethod2ServerOption = opt } -} - -func BTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bTestMethod2EndpointMiddleware = opt } -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go deleted file mode 100755 index 7e450c13..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/instrumenting_gen.go +++ /dev/null @@ -1,165 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/metrics" - prometheus2 "github.com/go-kit/kit/metrics/prometheus" - "github.com/prometheus/client_golang/prometheus" -) - -type instrumentingOpts struct { - requestCount metrics.Counter - requestLatency metrics.Histogram - namespace string - subsystem string -} - -type InstrumentingOption func(*instrumentingOpts) - -func Namespace(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.namespace = v - } -} - -func Subsystem(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.subsystem = v - } -} - -func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestLatency = requestLatency - } -} - -func RequestCount(requestCount metrics.Counter) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestCount = requestCount - } -} - -type AInstrumentingMiddleware struct { - next InterfaceA - opts *instrumentingOpts -} - -func (s *AInstrumentingMiddleware) TestMethod() { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod").Add(1) - s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) - }(time.Now()) - s.next.TestMethod() -} - -func NewInstrumentingAMiddleware(s InterfaceA, opts ...InstrumentingOption) InterfaceA { - i := &AInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} - -type BInstrumentingMiddleware struct { - next InterfaceB - opts *instrumentingOpts -} - -func (s *BInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Create").Add(1) - s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Create(ctx, newData, name, data) -} - -func (s *BInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Delete").Add(1) - s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Delete(ctx, id) -} - -func (s *BInstrumentingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Get").Add(1) - s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Get(ctx, id, name, fname, price, n, b, cc) -} - -func (s *BInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "GetAll").Add(1) - s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.GetAll(ctx, members) -} - -func (s *BInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod").Add(1) - s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod(data, ss) -} - -func (s *BInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod2").Add(1) - s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) -} - -func NewInstrumentingBMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { - i := &BInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md b/v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md deleted file mode 100755 index cc9de527..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,199 +0,0 @@ -# UsersvitalyworkgosrcgithubComswipeIoswipev2fixtureServiceJSONRPCMultiapp JSONRPC Client - -## Getting Started - -You can install this with: - -```shell script -npm install --save-dev service -``` - -Import the package with the client: - -```javascript -import API from "service" -``` - -Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`. - -For example: - -```javascript -class FetchTransport { - constructor(url) { - this.url = url; - } - - doRequest(requests) { - return fetch(this.url, {method: "POST", body: JSON.stringify(requests)}) - } -} -``` - -Now for a complete example: - -```javascript -import API from "service" -import Transport from "transport" - -const api = new API(new Transport("http://127.0.0.1")) - -// call method here. -``` - -## API -## Methods - -a.TestMethod - -### a.TestMethod() ⇒void - - - - - -**Throws**: - - - -b.Create - -b.Delete - -b.Get - -b.GetAll - -b.TestMethod - -b.TestMethod2 - -### b.Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### b.Delete(id) ⇒ - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### b.Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### b.GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### b.TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### b.TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|title|string|| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|created_at|string|| -|updated_at|string|| diff --git a/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go deleted file mode 100755 index 4cd0d399..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/logging_gen.go +++ /dev/null @@ -1,95 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/log" -) - -type ALoggingMiddleware struct { - next InterfaceA - logger log.Logger -} - -func (s *ALoggingMiddleware) TestMethod() { - s.next.TestMethod() -} - -func NewLoggingAMiddleware(s InterfaceA, logger log.Logger) InterfaceA { - return &ALoggingMiddleware{next: s, logger: logger} -} - -type BLoggingMiddleware struct { - next InterfaceB - logger log.Logger -} - -func (s *BLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) - logger.Log("name", name, "data", len(data), "err", logErr) - }(time.Now()) - err = s.next.Create(ctx, newData, name, data) - return err -} - -func (s *BLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - var ( - a string - b string - err error - ) - a, b, err = s.next.Delete(ctx, id) - return a, b, err -} - -func (s *BLoggingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - var ( - result User - err error - ) - result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) - return result, err -} - -func (s *BLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - var ( - result []*User - err error - ) - result, err = s.next.GetAll(ctx, members) - return result, err -} - -func (s *BLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - var ( - result map[string]map[int][]string - err error - ) - result, err = s.next.TestMethod(data, ss) - return result, err -} - -func (s *BLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - var ( - err error - ) - err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) - return err -} - -func NewLoggingBMiddleware(s InterfaceB, logger log.Logger) InterfaceB { - return &BLoggingMiddleware{next: s, logger: logger} -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json b/v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 4dbe39ff..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/a.testMethod":{"post":{"tags":["A"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["a.testMethod"]},"params":{"type":"object","example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.create":{"post":{"tags":["B"],"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.delete":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.get":{"post":{"tags":["B"],"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.getAll":{"post":{"tags":["B"],"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/b.testMethod2":{"post":{"tags":["B"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["b.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Info":{"properties":{"title":{"type":"string","format":"string","example":"abc"}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"title":{"type":"string","format":"string","example":"abc"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/package.json b/v2/fixture/ServiceJSONRPCMulti/app/package.json deleted file mode 100644 index b8c99b0c..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "service" -} \ No newline at end of file diff --git a/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go b/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go deleted file mode 100755 index 470bf016..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/server_gen.go +++ /dev/null @@ -1,166 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "strings" - - "github.com/gorilla/mux" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" - "github.com/pquerna/ffjson/ffjson" -) - -func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap { - mergedECM := make(jsonrpc.EndpointCodecMap, 512) - for _, ecm := range ecms { - for key, codec := range ecm { - mergedECM[key] = codec - } - } - return mergedECM -} -func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessage, error) { - b, err := ffjson.Marshal(result) - if err != nil { - return nil, err - } - return b, nil -} - -func MakeAEndpointCodecMap(ep AEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { - var namespace string - if len(ns) > 0 { - namespace = strings.Join(ns, ".") + "." - } - ecm := jsonrpc.EndpointCodecMap{} - if ep.TestMethodEndpoint != nil { - ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ - Endpoint: ep.TestMethodEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - return nil, nil - }, - Encode: encodeResponseJSONRPC, - } - } - return ecm -} - -func MakeBEndpointCodecMap(ep BEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { - var namespace string - if len(ns) > 0 { - namespace = strings.Join(ns, ".") + "." - } - ecm := jsonrpc.EndpointCodecMap{} - if ep.CreateEndpoint != nil { - ecm[namespace+"create"] = jsonrpc.EndpointCodec{ - Endpoint: ep.CreateEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BCreateCreateRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BCreateCreateRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.DeleteEndpoint != nil { - ecm[namespace+"delete"] = jsonrpc.EndpointCodec{ - Endpoint: ep.DeleteEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BDeleteDeleteRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.GetEndpoint != nil { - ecm[namespace+"get"] = jsonrpc.EndpointCodec{ - Endpoint: ep.GetEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BGetGetRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BGetGetRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.GetAllEndpoint != nil { - ecm[namespace+"getAll"] = jsonrpc.EndpointCodec{ - Endpoint: ep.GetAllEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BGetAllGetAllRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.TestMethodEndpoint != nil { - ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ - Endpoint: ep.TestMethodEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BTestMethodTestMethodRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.TestMethod2Endpoint != nil { - ecm[namespace+"testMethod2"] = jsonrpc.EndpointCodec{ - Endpoint: ep.TestMethod2Endpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req BTestMethod2TestMethod2Request - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to BTestMethod2TestMethod2Request: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - return ecm -} - -// HTTP JSONRPC Transport -func MakeHandlerJSONRPC(svcA InterfaceA, svcB InterfaceB, options ...ServerOption) (http.Handler, error) { - opts := &serverOpts{} - for _, o := range options { - o(opts) - } - epSetA := MakeAEndpointSet(svcA) - epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) - epSetB := MakeBEndpointSet(svcB) - epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(epSetB.CreateEndpoint) - epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) - epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(epSetB.GetEndpoint) - epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) - epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) - epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) - r := mux.NewRouter() - handler := jsonrpc.NewServer(MergeEndpointCodecMaps(MakeAEndpointCodecMap(epSetA, "a"), MakeBEndpointCodecMap(epSetB, "b")), opts.genericServerOption...) - r.Methods("POST").Path("").Handler(handler) - return r, nil -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/service.go b/v2/fixture/ServiceJSONRPCMulti/app/service.go deleted file mode 100644 index 3745e3cf..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/service.go +++ /dev/null @@ -1,135 +0,0 @@ -package app - -import ( - "context" - "time" - - "github.com/google/uuid" -) - -// ErrUnauthorized unauthorized. -type ErrUnauthorized struct{} - -func (ErrUnauthorized) Error() string { - return "unauthorized" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrUnauthorized) StatusCode() int { - return 401 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrUnauthorized) ErrorCode() int { - return -32001 -} - -// ErrForbidden forbidden. -type ErrForbidden struct{} - -func (ErrForbidden) Error() string { - return "forbidden" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrForbidden) StatusCode() int { - return 403 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrForbidden) ErrorCode() int { - return -32002 -} - -type Member struct { - ID string `json:"id"` -} - -type Members []*Member - -type Data map[string]interface{} - -type AliasData = Data - -type GeoJSON struct { - Type string `json:"-"` - Coordinates []float64 `json:"coordinates200"` -} - -type Profile struct { - Phone string `json:"phone"` -} - -type Recurse struct { - Name string `json:"name"` - Recurse []*Recurse `json:"recurse"` -} - -type Info struct { - Title string `json:"title"` -} - -type User struct { - *Info - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` - Point GeoJSON `json:"point"` - LastSeen time.Time `json:"last_seen"` - Data AliasData `json:"data"` - Photo []byte `json:"photo"` - User *User `json:"user"` - //Users []*User `json:"users"` - Profile *Profile `json:"profile"` - Recurse *Recurse `json:"recurse"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` -} - -type InterfaceA interface { - TestMethod() -} - -type InterfaceB interface { - // Create new item of item. - Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) - // Get item. - Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) - // GetAll more comment and more and more comment and more and more comment and more. - // New line comment. - GetAll(ctx context.Context, members Members) ([]*User, error) - Delete(ctx context.Context, id uint) (a string, b string, err error) - TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) - TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error -} - -type serviceB struct { -} - -func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { - return &ErrUnauthorized{} -} - -func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { - panic("implement me") -} - -func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - panic("implement me") -} - -func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - panic("implement me") -} diff --git a/v2/fixture/ServiceJSONRPCMulti/app/swipe.go b/v2/fixture/ServiceJSONRPCMulti/app/swipe.go deleted file mode 100644 index e92919cd..00000000 --- a/v2/fixture/ServiceJSONRPCMulti/app/swipe.go +++ /dev/null @@ -1,37 +0,0 @@ -//+build swipe - -package app - -import swipe "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.Service( - swipe.Interface((*InterfaceA)(nil), "a"), - swipe.Interface((*InterfaceB)(nil), "b"), - - swipe.HTTPServer(), - - swipe.ClientsEnable([]string{"go", "js"}), - - swipe.OpenapiEnable(), - swipe.OpenapiOutput("./"), - - swipe.JSONRPCEnable(), - swipe.JSONRPCDocEnable(), - swipe.JSONRPCDocOutput("./"), - - swipe.ReadmeEnable(), - - swipe.MethodOptions(InterfaceB.Create, - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - ), - - swipe.MethodDefaultOptions( - swipe.Logging(false), - swipe.Instrumenting(true), - ), - ), - ) -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/.swipe/README.md.tpl b/v2/fixture/ServiceJSONRPCSingle/app/.swipe/README.md.tpl deleted file mode 100755 index b64b4415..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/.swipe/README.md.tpl +++ /dev/null @@ -1,35 +0,0 @@ -# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) -{{end -}} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/README.md b/v2/fixture/ServiceJSONRPCSingle/app/README.md deleted file mode 100755 index cc10485f..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceJSONRPCSingle/app : A short description of the service. -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go deleted file mode 100755 index 481ff5f1..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_gen.go +++ /dev/null @@ -1,246 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "encoding/json" - "fmt" - "net" - "net/url" - "strings" - - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" - "github.com/pquerna/ffjson/ffjson" -) - -// Deprecated -func NewClientJSONRPC(tgt string, options ...ClientOption) (InterfaceB, error) { - return NewClientJSONRPCService(tgt, options...) -} -func NewClientJSONRPCService(tgt string, options ...ClientOption) (InterfaceB, error) { - opts := &clientOpts{} - c := &clientService{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - opts.serviceCreateClientOption = append( - opts.serviceCreateClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(CreateRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as CreateRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceCreateErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - return nil, nil - }), - ) - c.serviceCreateEndpoint = jsonrpc.NewClient( - u, - "service.serviceCreate", - append(opts.genericClientOption, opts.serviceCreateClientOption...)..., - ).Endpoint() - c.serviceCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceCreateEndpointMiddleware...))(c.serviceCreateEndpoint) - opts.serviceDeleteClientOption = append( - opts.serviceDeleteClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(DeleteRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as DeleteRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceDeleteErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp DeleteResponse - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to DeleteResponse: %s", err) - } - return resp, nil - }), - ) - c.serviceDeleteEndpoint = jsonrpc.NewClient( - u, - "service.serviceDelete", - append(opts.genericClientOption, opts.serviceDeleteClientOption...)..., - ).Endpoint() - c.serviceDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceDeleteEndpointMiddleware...))(c.serviceDeleteEndpoint) - opts.serviceGetClientOption = append( - opts.serviceGetClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(GetRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as GetRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceGetErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp User - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to GetResponse: %s", err) - } - return resp, nil - }), - ) - c.serviceGetEndpoint = jsonrpc.NewClient( - u, - "service.serviceGet", - append(opts.genericClientOption, opts.serviceGetClientOption...)..., - ).Endpoint() - c.serviceGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetEndpointMiddleware...))(c.serviceGetEndpoint) - opts.serviceGetAllClientOption = append( - opts.serviceGetAllClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(GetAllRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as GetAllRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceGetAllErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp []*User - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to GetAllResponse: %s", err) - } - return resp, nil - }), - ) - c.serviceGetAllEndpoint = jsonrpc.NewClient( - u, - "service.serviceGetAll", - append(opts.genericClientOption, opts.serviceGetAllClientOption...)..., - ).Endpoint() - c.serviceGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetAllEndpointMiddleware...))(c.serviceGetAllEndpoint) - opts.serviceTestMethodClientOption = append( - opts.serviceTestMethodClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(TestMethodRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as TestMethodRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceTestMethodErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - var resp map[string]map[int][]string - err := ffjson.Unmarshal(response.Result, &resp) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethodResponse: %s", err) - } - return resp, nil - }), - ) - c.serviceTestMethodEndpoint = jsonrpc.NewClient( - u, - "service.serviceTestMethod", - append(opts.genericClientOption, opts.serviceTestMethodClientOption...)..., - ).Endpoint() - c.serviceTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodEndpointMiddleware...))(c.serviceTestMethodEndpoint) - opts.serviceTestMethod2ClientOption = append( - opts.serviceTestMethod2ClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(TestMethod2Request) - if !ok { - return nil, fmt.Errorf("couldn't assert request as TestMethod2Request, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceTestMethod2ErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - return nil, nil - }), - ) - c.serviceTestMethod2Endpoint = jsonrpc.NewClient( - u, - "service.serviceTestMethod2", - append(opts.genericClientOption, opts.serviceTestMethod2ClientOption...)..., - ).Endpoint() - c.serviceTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethod2EndpointMiddleware...))(c.serviceTestMethod2Endpoint) - opts.serviceTestMethodOptionalsClientOption = append( - opts.serviceTestMethodOptionalsClientOption, - jsonrpc.ClientRequestEncoder(func(_ context.Context, obj interface{}) (json.RawMessage, error) { - req, ok := obj.(TestMethodOptionalsRequest) - if !ok { - return nil, fmt.Errorf("couldn't assert request as TestMethodOptionalsRequest, got %T", obj) - } - b, err := ffjson.Marshal(req) - if err != nil { - return nil, fmt.Errorf("couldn't marshal request %T: %s", obj, err) - } - return b, nil - }), - jsonrpc.ClientResponseDecoder(func(_ context.Context, response jsonrpc.Response) (interface{}, error) { - if response.Error != nil { - return nil, serviceTestMethodOptionalsErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data) - } - return nil, nil - }), - ) - c.serviceTestMethodOptionalsEndpoint = jsonrpc.NewClient( - u, - "service.serviceTestMethodOptionals", - append(opts.genericClientOption, opts.serviceTestMethodOptionalsClientOption...)..., - ).Endpoint() - c.serviceTestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodOptionalsEndpointMiddleware...))(c.serviceTestMethodOptionalsEndpoint) - return c, nil -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js b/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js deleted file mode 100755 index ec63cc41..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_jsonrpc_gen.js +++ /dev/null @@ -1,319 +0,0 @@ -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -export class JSONRPCError extends Error { - constructor(message, name, code, data) { - super(message); - this.name = name; - this.code = code; - this.data = data; - } -} - -class JSONRPCScheduler { - /** - * - * @param {*} transport - */ - constructor(transport) { - this._transport = transport; - this._requestID = 0; - this._scheduleRequests = {}; - this._commitTimerID = null; - this._beforeRequest = null; - } - beforeRequest(fn) { - this._beforeRequest = fn; - } - __scheduleCommit() { - if (this._commitTimerID) { - clearTimeout(this._commitTimerID); - } - this._commitTimerID = setTimeout(() => { - this._commitTimerID = null; - const scheduleRequests = { ...this._scheduleRequests }; - this._scheduleRequests = {}; - let requests = []; - for (let key in scheduleRequests) { - requests.push(scheduleRequests[key].request); - } - this.__doRequest(requests) - .then((responses) => { - for (let i = 0; i < responses.length; i++) { - const schedule = scheduleRequests[responses[i].id]; - if (responses[i].error) { - schedule.reject(responses[i].error); - continue; - } - schedule.resolve(responses[i].result); - } - }) - .catch((e) => { - for (let key in requests) { - if (!requests.hasOwnProperty(key)) { - continue; - } - if (scheduleRequests.hasOwnProperty(requests[key].id)) { - scheduleRequests[requests[key].id].reject(e); - } - } - }); - }, 0); - } - makeJSONRPCRequest(id, method, params) { - return { - jsonrpc: "2.0", - id: id, - method: method, - params: params - }; - } - /** - * @param {string} method - * @param {Object} params - * @returns {Promise<*>} - */ - __scheduleRequest(method, params) { - const p = new Promise((resolve, reject) => { - const request = this.makeJSONRPCRequest( - this.__requestIDGenerate(), - method, - params - ); - this._scheduleRequests[request.id] = { - request, - resolve, - reject - }; - }); - this.__scheduleCommit(); - return p; - } - __doRequest(request) { - return this._transport.doRequest(request); - } - __requestIDGenerate() { - return ++this._requestID; - } -} -/** - * @typedef {Object} Data - */ - -/** - * @typedef {Object} User - * @property {string} id - * @property {string} name - * @property {string} password - * @property {GeoJSON} point - * @property {string} last_seen - * @property {Data} data - * @property {Array} photo - * @property {User} user - * @property {Profile} profile - * @property {Recurse} recurse - * @property {Kind} kind - * @property {string} created_at - * @property {string} updated_at - */ - -/** - * @typedef {Object} GeoJSON - * @property {Array} coordinates200 - */ - -/** - * @typedef {Object} Profile - * @property {string} phone - */ - -/** - * @typedef {Object} Recurse - * @property {string} name - * @property {Array} recurse - */ - -/** - * @typedef {string} Kind - */ - -/** - * @typedef {Array} Members - */ - -/** - * @typedef {Object} Member - * @property {string} id - */ - -/** - * @typedef {Object} OptionService - * @property {string} name - */ - -class JSONRPCClientService { - constructor(transport) { - this.scheduler = new JSONRPCScheduler(transport); - } - - /** - * Create new item of item. - * - * @param {Data} newData - * @param {string} name - * @param {Array} data - **/ - serviceCreate(newData, name, data) { - return this.scheduler - .__scheduleRequest("create", { newData: newData, name: name, data: data }) - .catch((e) => { - throw interfaceBCreateConvertError(e); - }); - } - /** - * @param {number} id - * @return {PromiseLike<{a: string, b: string}>} - **/ - serviceDelete(id) { - return this.scheduler.__scheduleRequest("delete", { id: id }).catch((e) => { - throw interfaceBDeleteConvertError(e); - }); - } - /** - * Get item. - * - * @param {string} id - * @param {string} name - * @param {string} fname - * @param {number} price - * @param {number} n - * @param {number} b - * @param {number} cc - * @return {PromiseLike} - **/ - serviceGet(id, name, fname, price, n, b, cc) { - return this.scheduler - .__scheduleRequest("get", { - id: id, - name: name, - fname: fname, - price: price, - n: n, - b: b, - cc: cc - }) - .catch((e) => { - throw interfaceBGetConvertError(e); - }); - } - /** - * GetAll more comment and more and more comment and more and more comment and more. - * New line comment. - * - * @param {Members} members - * @return {PromiseLike>} - **/ - serviceGetAll(members) { - return this.scheduler - .__scheduleRequest("getAll", { members: members }) - .catch((e) => { - throw interfaceBGetAllConvertError(e); - }); - } - /** - * @param {Object} data - * @param {object} ss - * @return {PromiseLike>>>} - **/ - serviceTestMethod(data, ss) { - return this.scheduler - .__scheduleRequest("testMethod", { data: data, ss: ss }) - .catch((e) => { - throw interfaceBTestMethodConvertError(e); - }); - } - /** - * @param {string} ns - * @param {string} utype - * @param {string} user - * @param {string} restype - * @param {string} resource - * @param {string} permission - **/ - serviceTestMethod2(ns, utype, user, restype, resource, permission) { - return this.scheduler - .__scheduleRequest("testMethod2", { - ns: ns, - utype: utype, - user: user, - restype: restype, - resource: resource, - permission: permission - }) - .catch((e) => { - throw interfaceBTestMethod2ConvertError(e); - }); - } - /** - * @param {string} ns - * @param {...OptionService} options - **/ - serviceTestMethodOptionals(ns, ...options) { - return this.scheduler - .__scheduleRequest("testMethodOptionals", { ns: ns, options: options }) - .catch((e) => { - throw interfaceBTestMethodOptionalsConvertError(e); - }); - } -} - -export default JSONRPCClientService; - -export class ErrUnauthorizedError extends JSONRPCError { - constructor(message, data) { - super(message, "ErrUnauthorizedError", -32001, data); - } -} -function interfaceBCreateConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - case -32001: - return new ErrUnauthorizedError(e.message, e.data); - } -} -function interfaceBDeleteConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBGetAllConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethodConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethod2ConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} -function interfaceBTestMethodOptionalsConvertError(e) { - switch (e.code) { - default: - return new JSONRPCError(e.message, "UnknownError", e.code, e.data); - } -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go deleted file mode 100755 index 869ab9d5..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/client_struct_gen.go +++ /dev/null @@ -1,167 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/google/uuid" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" -) - -type ClientOption func(*clientOpts) -type clientOpts struct { - serviceCreateClientOption []jsonrpc.ClientOption - serviceCreateEndpointMiddleware []endpoint.Middleware - serviceDeleteClientOption []jsonrpc.ClientOption - serviceDeleteEndpointMiddleware []endpoint.Middleware - serviceGetClientOption []jsonrpc.ClientOption - serviceGetEndpointMiddleware []endpoint.Middleware - serviceGetAllClientOption []jsonrpc.ClientOption - serviceGetAllEndpointMiddleware []endpoint.Middleware - serviceTestMethodClientOption []jsonrpc.ClientOption - serviceTestMethodEndpointMiddleware []endpoint.Middleware - serviceTestMethod2ClientOption []jsonrpc.ClientOption - serviceTestMethod2EndpointMiddleware []endpoint.Middleware - serviceTestMethodOptionalsClientOption []jsonrpc.ClientOption - serviceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware - genericClientOption []jsonrpc.ClientOption - genericEndpointMiddleware []endpoint.Middleware -} - -func GenericClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.genericClientOption = opt } -} - -func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.genericEndpointMiddleware = opt } -} - -func ServiceCreateClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceCreateClientOption = opt } -} - -func ServiceCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceCreateEndpointMiddleware = opt } -} - -func ServiceDeleteClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceDeleteClientOption = opt } -} - -func ServiceDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceDeleteEndpointMiddleware = opt } -} - -func ServiceGetClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceGetClientOption = opt } -} - -func ServiceGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceGetEndpointMiddleware = opt } -} - -func ServiceGetAllClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceGetAllClientOption = opt } -} - -func ServiceGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceGetAllEndpointMiddleware = opt } -} - -func ServiceTestMethodClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceTestMethodClientOption = opt } -} - -func ServiceTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceTestMethodEndpointMiddleware = opt } -} - -func ServiceTestMethod2ClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceTestMethod2ClientOption = opt } -} - -func ServiceTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceTestMethod2EndpointMiddleware = opt } -} - -func ServiceTestMethodOptionalsClientOptions(opt ...jsonrpc.ClientOption) ClientOption { - return func(c *clientOpts) { c.serviceTestMethodOptionalsClientOption = opt } -} - -func ServiceTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.serviceTestMethodOptionalsEndpointMiddleware = opt } -} - -type clientService struct { - serviceCreateEndpoint endpoint.Endpoint - serviceDeleteEndpoint endpoint.Endpoint - serviceGetEndpoint endpoint.Endpoint - serviceGetAllEndpoint endpoint.Endpoint - serviceTestMethodEndpoint endpoint.Endpoint - serviceTestMethod2Endpoint endpoint.Endpoint - serviceTestMethodOptionalsEndpoint endpoint.Endpoint -} - -func (c *clientService) Create(ctx context.Context, newData Data, name string, data []byte) error { - _, err := c.serviceCreateEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data}) - if err != nil { - return err - } - return nil -} - -func (c *clientService) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.serviceDeleteEndpoint(ctx, DeleteRequest{Id: id}) - if err != nil { - return "", "", err - } - response := resp.(DeleteResponse) - return response.A, response.B, nil -} - -func (c *clientService) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.serviceGetEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) - if err != nil { - return User{}, err - } - response := resp.(User) - return response, nil -} - -func (c *clientService) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.serviceGetAllEndpoint(ctx, GetAllRequest{Members: members}) - if err != nil { - return nil, err - } - response := resp.([]*User) - return response, nil -} - -func (c *clientService) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.serviceTestMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) - if err != nil { - return nil, err - } - response := resp.(map[string]map[int][]string) - return response, nil -} - -func (c *clientService) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.serviceTestMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) - if err != nil { - return err - } - return nil -} - -func (c *clientService) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { - _, err := c.serviceTestMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns, Options: options}) - if err != nil { - return err - } - return nil -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go deleted file mode 100755 index 3669d756..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/endpoint_gen.go +++ /dev/null @@ -1,159 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/google/uuid" -) - -func MakeServiceCreateEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(CreateRequest) - err := s.Create(ctx, req.NewData, req.Name, req.Data) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeServiceDeleteEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(DeleteRequest) - a, b, err := s.Delete(ctx, req.Id) - if err != nil { - return nil, err - } - return DeleteResponse{A: a, B: b}, nil - } - -} - -func MakeServiceGetEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(GetRequest) - result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeServiceGetAllEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(GetAllRequest) - result, err := s.GetAll(ctx, req.Members) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeServiceTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(TestMethodRequest) - result, err := s.TestMethod(req.Data, req.Ss) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeServiceTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(TestMethod2Request) - err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeServiceTestMethodOptionalsEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(TestMethodOptionalsRequest) - err := s.TestMethodOptionals(ctx, req.Ns, req.Options...) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -type ServiceEndpointSet struct { - CreateEndpoint endpoint.Endpoint - DeleteEndpoint endpoint.Endpoint - GetEndpoint endpoint.Endpoint - GetAllEndpoint endpoint.Endpoint - TestMethodEndpoint endpoint.Endpoint - TestMethod2Endpoint endpoint.Endpoint - TestMethodOptionalsEndpoint endpoint.Endpoint -} - -func MakeServiceEndpointSet(svc InterfaceB) ServiceEndpointSet { - return ServiceEndpointSet{ - CreateEndpoint: MakeServiceCreateEndpoint(svc), - DeleteEndpoint: MakeServiceDeleteEndpoint(svc), - GetEndpoint: MakeServiceGetEndpoint(svc), - GetAllEndpoint: MakeServiceGetAllEndpoint(svc), - TestMethodEndpoint: MakeServiceTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeServiceTestMethod2Endpoint(svc), - TestMethodOptionalsEndpoint: MakeServiceTestMethodOptionalsEndpoint(svc), - } -} - -type CreateRequest struct { - NewData Data `json:"newData"` - Name string `json:"name"` - Data []byte `json:"data"` -} -type DeleteRequest struct { - Id uint `json:"id"` -} -type DeleteResponse struct { - A string `json:"a"` - B string `json:"b"` -} -type GetRequest struct { - Id uuid.UUID `json:"id"` - Name string `json:"name"` - Fname string `json:"fname"` - Price float32 `json:"price"` - N int `json:"n"` - B int `json:"b"` - Cc int `json:"cc"` -} -type GetAllRequest struct { - Members Members `json:"members"` -} -type TestMethodRequest struct { - Data map[string]interface{} `json:"data"` - Ss interface{} `json:"ss"` -} -type TestMethod2Request struct { - Ns string `json:"ns"` - Utype string `json:"utype"` - User string `json:"user"` - Restype string `json:"restype"` - Resource string `json:"resource"` - Permission string `json:"permission"` -} -type TestMethodOptionalsRequest struct { - Ns string `json:"ns"` - Options []OptionService `json:"options"` -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go deleted file mode 100755 index 5cdfc9ca..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/http_gen.go +++ /dev/null @@ -1,228 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "github.com/go-kit/kit/endpoint" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" -) - -type httpError struct { - code int - data interface{} - message string -} - -func (e *httpError) Error() string { - return e.message -} -func (e *httpError) StatusCode() int { - return e.code -} -func (e *httpError) ErrorData() interface{} { - return e.data -} -func (e *httpError) SetErrorData(data interface{}) { - e.data = data -} -func (e *httpError) SetErrorMessage(message string) { - e.message = message -} -func serviceCreateErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - case -32001: - err = ErrUnauthorized{} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func serviceDeleteErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func serviceGetErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func serviceGetAllErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func serviceTestMethodErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func serviceTestMethod2ErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func serviceTestMethodOptionalsErrorDecode(code int, message string, data interface{}) (err error) { - switch code { - default: - err = &httpError{code: code} - } - if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok { - err.SetErrorData(data) - } - if err, ok := err.(interface{ SetErrorMessage(message string) }); ok { - err.SetErrorMessage(message) - } - return -} - -func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { - return func(next endpoint.Endpoint) endpoint.Endpoint { - if len(middlewares) == 0 { - return next - } - outer := middlewares[0] - others := middlewares[1:] - for i := len(others) - 1; i >= 0; i-- { - next = others[i](next) - } - return outer(next) - } -} -func GenericServerOptions(v ...jsonrpc.ServerOption) ServerOption { - return func(o *serverOpts) { o.genericServerOption = v } -} - -func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { - return func(o *serverOpts) { o.genericEndpointMiddleware = v } -} - -type ServerOption func(*serverOpts) -type serverOpts struct { - genericServerOption []jsonrpc.ServerOption - genericEndpointMiddleware []endpoint.Middleware - serviceCreateServerOption []jsonrpc.ServerOption - serviceCreateEndpointMiddleware []endpoint.Middleware - serviceDeleteServerOption []jsonrpc.ServerOption - serviceDeleteEndpointMiddleware []endpoint.Middleware - serviceGetServerOption []jsonrpc.ServerOption - serviceGetEndpointMiddleware []endpoint.Middleware - serviceGetAllServerOption []jsonrpc.ServerOption - serviceGetAllEndpointMiddleware []endpoint.Middleware - serviceTestMethodServerOption []jsonrpc.ServerOption - serviceTestMethodEndpointMiddleware []endpoint.Middleware - serviceTestMethod2ServerOption []jsonrpc.ServerOption - serviceTestMethod2EndpointMiddleware []endpoint.Middleware - serviceTestMethodOptionalsServerOption []jsonrpc.ServerOption - serviceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware -} - -func ServiceCreateServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceCreateServerOption = opt } -} - -func ServiceCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceCreateEndpointMiddleware = opt } -} - -func ServiceDeleteServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceDeleteServerOption = opt } -} - -func ServiceDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceDeleteEndpointMiddleware = opt } -} - -func ServiceGetServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceGetServerOption = opt } -} - -func ServiceGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceGetEndpointMiddleware = opt } -} - -func ServiceGetAllServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceGetAllServerOption = opt } -} - -func ServiceGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceGetAllEndpointMiddleware = opt } -} - -func ServiceTestMethodServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceTestMethodServerOption = opt } -} - -func ServiceTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceTestMethodEndpointMiddleware = opt } -} - -func ServiceTestMethod2ServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceTestMethod2ServerOption = opt } -} - -func ServiceTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceTestMethod2EndpointMiddleware = opt } -} - -func ServiceTestMethodOptionalsServerOptions(opt ...jsonrpc.ServerOption) ServerOption { - return func(c *serverOpts) { c.serviceTestMethodOptionalsServerOption = opt } -} - -func ServiceTestMethodOptionalsServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.serviceTestMethodOptionalsEndpointMiddleware = opt } -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go deleted file mode 100755 index cb39a98d..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/instrumenting_gen.go +++ /dev/null @@ -1,135 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/metrics" - prometheus2 "github.com/go-kit/kit/metrics/prometheus" - "github.com/google/uuid" - "github.com/prometheus/client_golang/prometheus" -) - -type instrumentingOpts struct { - requestCount metrics.Counter - requestLatency metrics.Histogram - namespace string - subsystem string -} - -type InstrumentingOption func(*instrumentingOpts) - -func Namespace(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.namespace = v - } -} - -func Subsystem(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.subsystem = v - } -} - -func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestLatency = requestLatency - } -} - -func RequestCount(requestCount metrics.Counter) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestCount = requestCount - } -} - -type ServiceInstrumentingMiddleware struct { - next InterfaceB - opts *instrumentingOpts -} - -func (s *ServiceInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Create").Add(1) - s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Create(ctx, newData, name, data) -} - -func (s *ServiceInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Delete").Add(1) - s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Delete(ctx, id) -} - -func (s *ServiceInstrumentingMiddleware) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Get").Add(1) - s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Get(ctx, id, name, fname, price, n, b, cc) -} - -func (s *ServiceInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "GetAll").Add(1) - s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.GetAll(ctx, members) -} - -func (s *ServiceInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod").Add(1) - s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod(data, ss) -} - -func (s *ServiceInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod2").Add(1) - s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) -} - -func (s *ServiceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethodOptionals").Add(1) - s.opts.requestLatency.With("method", "TestMethodOptionals").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethodOptionals(ctx, ns, options...) -} - -func NewInstrumentingServiceMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { - i := &ServiceInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md b/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md deleted file mode 100755 index 2f2821bf..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/jsonrpc_doc_gen.md +++ /dev/null @@ -1,158 +0,0 @@ -# UsersvitalyworkgosrcgithubComswipeIoswipev2fixtureServiceJSONRPCSingleapp JSONRPC Client - -Create - -Delete - -Get - -GetAll - -TestMethod - -TestMethod2 - -TestMethodOptionals - -### Create(newData, name, data) ⇒void - - new item of item. - - - -**Throws**: - -ErrUnauthorizedException - - - -| Param | Type | Description | -|------|------|------| -|newData|Data|| -|name|string|| -|data|Array.<number>|| -### Delete(id) ⇒ - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|number|| -### Get(id, name, fname, price, n, b, cc) ⇒User - - item. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|fname|string|| -|price|number|| -|n|number|| -|b|number|| -|cc|number|| -### GetAll(members) ⇒Array.<User> - - more comment and more and more comment and more and more comment and more.New line comment. - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|members|Members|| -### TestMethod(data, ss) ⇒Object.<string, Object.<string, Array.<string>>> - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|data|Object.<string, Object>|| -|ss|Object|| -### TestMethod2(ns, utype, user, restype, resource, permission) ⇒void - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -|utype|string|| -|user|string|| -|restype|string|| -|resource|string|| -|permission|string|| -### TestMethodOptionals(ns) ⇒void - - - - - -**Throws**: - - - -| Param | Type | Description | -|------|------|------| -|ns|string|| -## Members - -### GeoJSON - -| Field | Type | Description | -|------|------|------| -|coordinates200|Array.<number>|| -### Profile - -| Field | Type | Description | -|------|------|------| -|phone|string|| -### Recurse - -| Field | Type | Description | -|------|------|------| -|name|string|| -|recurse|Array.<Recurse>|| -### User - -| Field | Type | Description | -|------|------|------| -|id|string|| -|name|string|| -|password|string|| -|point|GeoJSON|| -|last_seen|string|| -|data|Data|| -|photo|Array.<number>|| -|user|User|| -|profile|Profile|| -|recurse|Recurse|| -|kind|Kind|| -|created_at|string|| -|updated_at|string|| diff --git a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go deleted file mode 100755 index c5df33ad..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/logging_gen.go +++ /dev/null @@ -1,112 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/log" - "github.com/google/uuid" -) - -type ServiceLoggingMiddleware struct { - next InterfaceB - logger log.Logger -} - -func (s *ServiceLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) - logger.Log("name", name, "data", len(data), "err", logErr) - }(time.Now()) - err = s.next.Create(ctx, newData, name, data) - return err -} - -func (s *ServiceLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - var ( - a string - b string - err error - ) - a, b, err = s.next.Delete(ctx, id) - return a, b, err -} - -func (s *ServiceLoggingMiddleware) Get(ctx context.Context, id uuid.UUID, name string, fname string, price float32, n int, b int, cc int) (User, error) { - var ( - result User - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Get", "took", time.Since(now)) - logger.Log("id", id, "err", logErr) - }(time.Now()) - result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) - return result, err -} - -func (s *ServiceLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - var ( - result []*User - err error - ) - result, err = s.next.GetAll(ctx, members) - return result, err -} - -func (s *ServiceLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - var ( - result map[string]map[int][]string - err error - ) - result, err = s.next.TestMethod(data, ss) - return result, err -} - -func (s *ServiceLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - var ( - err error - ) - err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) - return err -} - -func (s *ServiceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "TestMethodOptionals", "took", time.Since(now)) - var variadicParam OptionService - if len(options) > 0 { - variadicParam = options[0] - } - logger = log.WithPrefix(logger, "options", variadicParam) - logger.Log("ns", ns, "err", logErr) - }(time.Now()) - err = s.next.TestMethodOptionals(ctx, ns, options...) - return err -} - -func NewLoggingServiceMiddleware(s InterfaceB, logger log.Logger) InterfaceB { - return &ServiceLoggingMiddleware{next: s, logger: logger} -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json b/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json deleted file mode 100755 index 0d1c0861..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/openapi_jsonrpc_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/service.create":{"post":{"description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.create"]},"params":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32001":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.delete":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.delete"]},"params":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.get":{"post":{"description":" item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.get"]},"params":{"type":"object","properties":{"b":{"type":"integer","example":1},"cc":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"$ref":"#/components/schemas/User"}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.getAll":{"post":{"description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.getAll"]},"params":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod"]},"params":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethod2":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethod2"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}},"/service.testMethodOptionals":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"method":{"type":"string","enum":["service.testMethodOptionals"]},"params":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"}}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"c9b14c57-7503-447a-9fb9-be6f8920f31f"},"jsonrpc":{"type":"string","example":"2.0"},"result":{"type":"object","example":null}}}}}},"x-32600":{"description":"Invalid Request. The JSON sent is not a valid Request object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"x-32601":{"description":"Method not found. The method does not exist / is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotFoundError"}}}},"x-32602":{"description":"Invalid params. Invalid method parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParamsError"}}}},"x-32603":{"description":"Internal error. Internal JSON-RPC error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}},"x-32700":{"description":"Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseError"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32001},"message":{"type":"string"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32603},"message":{"type":"string","example":"Internal error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidParamsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32602},"message":{"type":"string","example":"Invalid params"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32600},"message":{"type":"string","example":"Invalid Request"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"MethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32601},"message":{"type":"string","example":"Method not found"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"ParseError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","example":-32700},"message":{"type":"string","example":"Parse error"}}},"id":{"type":"string","example":"1f1ecd1b-d729-40cd-b6f4-4011f69811fe"},"jsonrpc":{"type":"string","example":"2.0"}}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go b/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go deleted file mode 100755 index 7c8fa1a6..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/server_gen.go +++ /dev/null @@ -1,161 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "strings" - - "github.com/gorilla/mux" - "github.com/l-vitaly/go-kit/transport/http/jsonrpc" - "github.com/pquerna/ffjson/ffjson" -) - -func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap { - mergedECM := make(jsonrpc.EndpointCodecMap, 512) - for _, ecm := range ecms { - for key, codec := range ecm { - mergedECM[key] = codec - } - } - return mergedECM -} -func encodeResponseJSONRPC(_ context.Context, result interface{}) (json.RawMessage, error) { - b, err := ffjson.Marshal(result) - if err != nil { - return nil, err - } - return b, nil -} - -func MakeServiceEndpointCodecMap(ep ServiceEndpointSet, ns ...string) jsonrpc.EndpointCodecMap { - var namespace string - if len(ns) > 0 { - namespace = strings.Join(ns, ".") + "." - } - ecm := jsonrpc.EndpointCodecMap{} - if ep.CreateEndpoint != nil { - ecm[namespace+"create"] = jsonrpc.EndpointCodec{ - Endpoint: ep.CreateEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req CreateRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to CreateRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.DeleteEndpoint != nil { - ecm[namespace+"delete"] = jsonrpc.EndpointCodec{ - Endpoint: ep.DeleteEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req DeleteRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to DeleteRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.GetEndpoint != nil { - ecm[namespace+"get"] = jsonrpc.EndpointCodec{ - Endpoint: ep.GetEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req GetRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to GetRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.GetAllEndpoint != nil { - ecm[namespace+"getAll"] = jsonrpc.EndpointCodec{ - Endpoint: ep.GetAllEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req GetAllRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to GetAllRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.TestMethodEndpoint != nil { - ecm[namespace+"testMethod"] = jsonrpc.EndpointCodec{ - Endpoint: ep.TestMethodEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req TestMethodRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethodRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.TestMethod2Endpoint != nil { - ecm[namespace+"testMethod2"] = jsonrpc.EndpointCodec{ - Endpoint: ep.TestMethod2Endpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req TestMethod2Request - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethod2Request: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - if ep.TestMethodOptionalsEndpoint != nil { - ecm[namespace+"testMethodOptionals"] = jsonrpc.EndpointCodec{ - Endpoint: ep.TestMethodOptionalsEndpoint, - Decode: func(_ context.Context, msg json.RawMessage) (interface{}, error) { - var req TestMethodOptionalsRequest - err := ffjson.Unmarshal(msg, &req) - if err != nil { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethodOptionalsRequest: %s", err) - } - return req, nil - }, - Encode: encodeResponseJSONRPC, - } - } - return ecm -} - -// HTTP JSONRPC Transport -func MakeHandlerJSONRPC(svcService InterfaceB, options ...ServerOption) (http.Handler, error) { - opts := &serverOpts{} - for _, o := range options { - o(opts) - } - epSet := MakeServiceEndpointSet(svcService) - epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceCreateEndpointMiddleware...))(epSet.CreateEndpoint) - epSet.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceDeleteEndpointMiddleware...))(epSet.DeleteEndpoint) - epSet.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetEndpointMiddleware...))(epSet.GetEndpoint) - epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) - epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) - epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) - epSet.TestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.serviceTestMethodOptionalsEndpointMiddleware...))(epSet.TestMethodOptionalsEndpoint) - r := mux.NewRouter() - handler := jsonrpc.NewServer(MakeServiceEndpointCodecMap(epSet), opts.genericServerOption...) - r.Methods("POST").Path("").Handler(handler) - return r, nil -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/service.go b/v2/fixture/ServiceJSONRPCSingle/app/service.go deleted file mode 100644 index 0b407e24..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/service.go +++ /dev/null @@ -1,137 +0,0 @@ -package app - -import ( - "context" - "time" - - "github.com/google/uuid" -) - -// ErrUnauthorized unauthorized. -type ErrUnauthorized struct{} - -func (ErrUnauthorized) Error() string { - return "unauthorized" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrUnauthorized) StatusCode() int { - return 401 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrUnauthorized) ErrorCode() int { - return -32001 -} - -// ErrForbidden forbidden. -type ErrForbidden struct{} - -func (ErrForbidden) Error() string { - return "forbidden" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrForbidden) StatusCode() int { - return 403 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrForbidden) ErrorCode() int { - return -32002 -} - -type Member struct { - ID string `json:"id"` -} - -type Members []*Member - -type Data map[string]interface{} - -type AliasData = Data - -type Kind string - -type GeoJSON struct { - Type string `json:"-"` - Coordinates []float64 `json:"coordinates200"` -} - -type Profile struct { - Phone string `json:"phone"` -} - -type Recurse struct { - Name string `json:"name"` - Recurse []*Recurse `json:"recurse"` -} - -type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` - Point GeoJSON `json:"point"` - LastSeen time.Time `json:"last_seen"` - Data AliasData `json:"data"` - Photo []byte `json:"photo"` - User *User `json:"user"` - Profile *Profile `json:"profile"` - Recurse *Recurse `json:"recurse"` - Kind Kind `json:"kind"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` -} - -type OptionService struct { - Name string `json:"name"` -} - -type InterfaceB interface { - // Create new item of item. - Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) - // Get item. - Get(ctx context.Context, id uuid.UUID, name, fname string, price float32, n, b, cc int) (data User, err error) - // GetAll more comment and more and more comment and more and more comment and more. - // New line comment. - GetAll(ctx context.Context, members Members) ([]*User, error) - Delete(ctx context.Context, id uint) (a string, b string, err error) - TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) - TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error - TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error -} - -type serviceB struct { -} - -func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { - return &ErrUnauthorized{} -} - -func (s *serviceB) Get(ctx context.Context, id uuid.UUID, name, fname string, price float32, n, b, cc int) (data User, err error) { - panic("implement me") -} - -func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - panic("implement me") -} - -func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - panic("implement me") -} - -func (s *serviceB) TestMethodOptionals(ctx context.Context, ns string, options ...OptionService) error { - panic("implement me") -} diff --git a/v2/fixture/ServiceJSONRPCSingle/app/swipe.go b/v2/fixture/ServiceJSONRPCSingle/app/swipe.go deleted file mode 100644 index f8b84eec..00000000 --- a/v2/fixture/ServiceJSONRPCSingle/app/swipe.go +++ /dev/null @@ -1,45 +0,0 @@ -//+build swipe - -package app - -import swipe "github.com/swipe-io/swipe/v2" - -func Swipe() { - swipe.Build( - swipe.Service( - swipe.Interface((*InterfaceB)(nil), "service"), - - swipe.HTTPServer(), - - swipe.ClientsEnable([]string{"go", "js"}), - - swipe.OpenapiEnable(), - swipe.OpenapiOutput("./"), - - swipe.JSONRPCEnable(), - swipe.JSONRPCDocEnable(), - swipe.JSONRPCDocOutput("./"), - - swipe.ReadmeEnable(), - - swipe.MethodOptions(InterfaceB.Create, - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - ), - - swipe.MethodOptions(InterfaceB.Get, - swipe.Logging(true), - swipe.LoggingParams([]string{"id"}, []string{}), - ), - - swipe.MethodOptions(InterfaceB.TestMethodOptionals, - swipe.Logging(true), - ), - - swipe.MethodDefaultOptions( - swipe.Logging(false), - swipe.Instrumenting(true), - ), - ), - ) -} diff --git a/v2/fixture/ServiceRESTMulti/app/.swipe/README.md.tpl b/v2/fixture/ServiceRESTMulti/app/.swipe/README.md.tpl deleted file mode 100755 index b64b4415..00000000 --- a/v2/fixture/ServiceRESTMulti/app/.swipe/README.md.tpl +++ /dev/null @@ -1,35 +0,0 @@ -# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) -{{end -}} diff --git a/v2/fixture/ServiceRESTMulti/app/README.md b/v2/fixture/ServiceRESTMulti/app/README.md deleted file mode 100755 index e30908ff..00000000 --- a/v2/fixture/ServiceRESTMulti/app/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceRESTMulti/app : A short description of the service. -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - diff --git a/v2/fixture/ServiceRESTMulti/app/client_gen.go b/v2/fixture/ServiceRESTMulti/app/client_gen.go deleted file mode 100755 index f4c0a83a..00000000 --- a/v2/fixture/ServiceRESTMulti/app/client_gen.go +++ /dev/null @@ -1,280 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "bytes" - "context" - "fmt" - "io" - "io/ioutil" - "net" - http2 "net/http" - "net/url" - "strconv" - "strings" - - "github.com/go-kit/kit/transport/http" - "github.com/pquerna/ffjson/ffjson" -) - -func NewClientRESTA(tgt string, options ...ClientOption) (InterfaceA, error) { - opts := &clientOpts{} - c := &clientA{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - c.aTestMethodEndpoint = http.NewClient( - "GET", - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - r.Method = "GET" - r.URL.Path += "/a/test-method" - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, aTestMethodErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.aTestMethodClientOption...)..., - ).Endpoint() - c.aTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(c.aTestMethodEndpoint) - return c, nil -} - -func NewClientRESTB(tgt string, options ...ClientOption) (InterfaceB, error) { - opts := &clientOpts{} - c := &clientB{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - c.bCreateEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(BCreateCreateRequest) - if !ok { - return fmt.Errorf("couldn't assert request as BCreateCreateRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/b/create" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, bCreateErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.bCreateClientOption...)..., - ).Endpoint() - c.bCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(c.bCreateEndpoint) - c.bDeleteEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(BDeleteDeleteRequest) - if !ok { - return fmt.Errorf("couldn't assert request as BDeleteDeleteRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/b/delete" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, bDeleteErrorDecode(statusCode) - } - var resp BDeleteDeleteRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.bDeleteClientOption...)..., - ).Endpoint() - c.bDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(c.bDeleteEndpoint) - c.bGetEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(BGetGetRequest) - if !ok { - return fmt.Errorf("couldn't assert request as BGetGetRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/b/get-test" - q := r.URL.Query() - ccStr := strconv.FormatInt(int64(req.Cc), 10) - q.Add("cc", ccStr) - r.URL.RawQuery = q.Encode() - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, bGetErrorDecode(statusCode) - } - var resp User - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BGetGetRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.bGetClientOption...)..., - ).Endpoint() - c.bGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(c.bGetEndpoint) - c.bGetAllEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(BGetAllGetAllRequest) - if !ok { - return fmt.Errorf("couldn't assert request as BGetAllGetAllRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/b/get-all" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, bGetAllErrorDecode(statusCode) - } - var resp []*User - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.bGetAllClientOption...)..., - ).Endpoint() - c.bGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(c.bGetAllEndpoint) - c.bTestMethodEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(BTestMethodTestMethodRequest) - if !ok { - return fmt.Errorf("couldn't assert request as BTestMethodTestMethodRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/b/test-method" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, bTestMethodErrorDecode(statusCode) - } - var resp map[string]map[int][]string - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.bTestMethodClientOption...)..., - ).Endpoint() - c.bTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(c.bTestMethodEndpoint) - c.bTestMethod2Endpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(BTestMethod2TestMethod2Request) - if !ok { - return fmt.Errorf("couldn't assert request as BTestMethod2TestMethod2Request, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/b/test-method2" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, bTestMethod2ErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.bTestMethod2ClientOption...)..., - ).Endpoint() - c.bTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(c.bTestMethod2Endpoint) - return c, nil -} diff --git a/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go b/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go deleted file mode 100755 index 7dc1ad00..00000000 --- a/v2/fixture/ServiceRESTMulti/app/client_struct_gen.go +++ /dev/null @@ -1,186 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/go-kit/kit/transport/http" -) - -type AppClient struct { - AClient InterfaceA - BClient InterfaceB -} - -func NewClientREST(tgt string, opts ...ClientOption) (*AppClient, error) { - aClient, err := NewClientRESTA(tgt, opts...) - if err != nil { - return nil, err - } - bClient, err := NewClientRESTB(tgt, opts...) - if err != nil { - return nil, err - } - return &AppClient{ - AClient: aClient, - BClient: bClient, - }, nil -} - -type ClientOption func(*clientOpts) -type clientOpts struct { - aTestMethodClientOption []http.ClientOption - aTestMethodEndpointMiddleware []endpoint.Middleware - bCreateClientOption []http.ClientOption - bCreateEndpointMiddleware []endpoint.Middleware - bDeleteClientOption []http.ClientOption - bDeleteEndpointMiddleware []endpoint.Middleware - bGetClientOption []http.ClientOption - bGetEndpointMiddleware []endpoint.Middleware - bGetAllClientOption []http.ClientOption - bGetAllEndpointMiddleware []endpoint.Middleware - bTestMethodClientOption []http.ClientOption - bTestMethodEndpointMiddleware []endpoint.Middleware - bTestMethod2ClientOption []http.ClientOption - bTestMethod2EndpointMiddleware []endpoint.Middleware - genericClientOption []http.ClientOption - genericEndpointMiddleware []endpoint.Middleware -} - -func GenericClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.genericClientOption = opt } -} - -func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.genericEndpointMiddleware = opt } -} - -func ATestMethodClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.aTestMethodClientOption = opt } -} - -func ATestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.aTestMethodEndpointMiddleware = opt } -} - -func BCreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.bCreateClientOption = opt } -} - -func BCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bCreateEndpointMiddleware = opt } -} - -func BDeleteClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.bDeleteClientOption = opt } -} - -func BDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bDeleteEndpointMiddleware = opt } -} - -func BGetClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.bGetClientOption = opt } -} - -func BGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bGetEndpointMiddleware = opt } -} - -func BGetAllClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.bGetAllClientOption = opt } -} - -func BGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bGetAllEndpointMiddleware = opt } -} - -func BTestMethodClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.bTestMethodClientOption = opt } -} - -func BTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bTestMethodEndpointMiddleware = opt } -} - -func BTestMethod2ClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.bTestMethod2ClientOption = opt } -} - -func BTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.bTestMethod2EndpointMiddleware = opt } -} - -type clientA struct { - aTestMethodEndpoint endpoint.Endpoint -} - -func (c *clientA) TestMethod() { - _, _ = c.aTestMethodEndpoint(context.Background(), nil) - return -} - -type clientB struct { - bCreateEndpoint endpoint.Endpoint - bDeleteEndpoint endpoint.Endpoint - bGetEndpoint endpoint.Endpoint - bGetAllEndpoint endpoint.Endpoint - bTestMethodEndpoint endpoint.Endpoint - bTestMethod2Endpoint endpoint.Endpoint -} - -func (c *clientB) Create(ctx context.Context, newData Data, name string, data []byte) error { - _, err := c.bCreateEndpoint(ctx, BCreateCreateRequest{NewData: newData, Name: name, Data: data}) - if err != nil { - return err - } - return nil -} - -func (c *clientB) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.bDeleteEndpoint(ctx, BDeleteDeleteRequest{Id: id}) - if err != nil { - return "", "", err - } - response := resp.(BDeleteDeleteResponse) - return response.A, response.B, nil -} - -func (c *clientB) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.bGetEndpoint(ctx, BGetGetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) - if err != nil { - return User{}, err - } - response := resp.(User) - return response, nil -} - -func (c *clientB) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.bGetAllEndpoint(ctx, BGetAllGetAllRequest{Members: members}) - if err != nil { - return nil, err - } - response := resp.([]*User) - return response, nil -} - -func (c *clientB) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.bTestMethodEndpoint(context.Background(), BTestMethodTestMethodRequest{Data: data, Ss: ss}) - if err != nil { - return nil, err - } - response := resp.(map[string]map[int][]string) - return response, nil -} - -func (c *clientB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.bTestMethod2Endpoint(ctx, BTestMethod2TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) - if err != nil { - return err - } - return nil -} diff --git a/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go b/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go deleted file mode 100755 index ab02d7fd..00000000 --- a/v2/fixture/ServiceRESTMulti/app/endpoint_gen.go +++ /dev/null @@ -1,158 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" -) - -func MakeATestMethodEndpoint(s InterfaceA) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - s.TestMethod() - return nil, nil - } - -} - -func MakeBCreateEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BCreateCreateRequest) - err := s.Create(ctx, req.NewData, req.Name, req.Data) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeBDeleteEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BDeleteDeleteRequest) - a, b, err := s.Delete(ctx, req.Id) - if err != nil { - return nil, err - } - return BDeleteDeleteResponse{A: a, B: b}, nil - } - -} - -func MakeBGetEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BGetGetRequest) - result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeBGetAllEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BGetAllGetAllRequest) - result, err := s.GetAll(ctx, req.Members) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeBTestMethodEndpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BTestMethodTestMethodRequest) - result, err := s.TestMethod(req.Data, req.Ss) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeBTestMethod2Endpoint(s InterfaceB) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(BTestMethod2TestMethod2Request) - err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -type AEndpointSet struct { - TestMethodEndpoint endpoint.Endpoint -} - -func MakeAEndpointSet(svc InterfaceA) AEndpointSet { - return AEndpointSet{ - TestMethodEndpoint: MakeATestMethodEndpoint(svc), - } -} - -type BEndpointSet struct { - CreateEndpoint endpoint.Endpoint - DeleteEndpoint endpoint.Endpoint - GetEndpoint endpoint.Endpoint - GetAllEndpoint endpoint.Endpoint - TestMethodEndpoint endpoint.Endpoint - TestMethod2Endpoint endpoint.Endpoint -} - -func MakeBEndpointSet(svc InterfaceB) BEndpointSet { - return BEndpointSet{ - CreateEndpoint: MakeBCreateEndpoint(svc), - DeleteEndpoint: MakeBDeleteEndpoint(svc), - GetEndpoint: MakeBGetEndpoint(svc), - GetAllEndpoint: MakeBGetAllEndpoint(svc), - TestMethodEndpoint: MakeBTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeBTestMethod2Endpoint(svc), - } -} - -type BCreateCreateRequest struct { - NewData Data `json:"newData"` - Name string `json:"name"` - Data []byte `json:"data"` -} -type BDeleteDeleteRequest struct { - Id uint `json:"id"` -} -type BDeleteDeleteResponse struct { - A string `json:"a"` - B string `json:"b"` -} -type BGetGetRequest struct { - Id int `json:"id"` - Name string `json:"name"` - Fname string `json:"fname"` - Price float32 `json:"price"` - N int `json:"n"` - B int `json:"b"` - Cc int `json:"cc"` -} -type BGetAllGetAllRequest struct { - Members Members `json:"members"` -} -type BTestMethodTestMethodRequest struct { - Data map[string]interface{} `json:"data"` - Ss interface{} `json:"ss"` -} -type BTestMethod2TestMethod2Request struct { - Ns string `json:"ns"` - Utype string `json:"utype"` - User string `json:"user"` - Restype string `json:"restype"` - Resource string `json:"resource"` - Permission string `json:"permission"` -} diff --git a/v2/fixture/ServiceRESTMulti/app/http_gen.go b/v2/fixture/ServiceRESTMulti/app/http_gen.go deleted file mode 100755 index 7834310d..00000000 --- a/v2/fixture/ServiceRESTMulti/app/http_gen.go +++ /dev/null @@ -1,175 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - http2 "net/http" - - "github.com/go-kit/kit/endpoint" - "github.com/go-kit/kit/transport/http" -) - -type httpError struct { - code int -} - -func (e *httpError) Error() string { - return http2.StatusText(e.code) -} -func (e *httpError) StatusCode() int { - return e.code -} -func aTestMethodErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func bCreateErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func bDeleteErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func bGetErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func bGetAllErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func bTestMethodErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func bTestMethod2ErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { - return func(next endpoint.Endpoint) endpoint.Endpoint { - if len(middlewares) == 0 { - return next - } - outer := middlewares[0] - others := middlewares[1:] - for i := len(others) - 1; i >= 0; i-- { - next = others[i](next) - } - return outer(next) - } -} -func GenericServerOptions(v ...http.ServerOption) ServerOption { - return func(o *serverOpts) { o.genericServerOption = v } -} - -func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { - return func(o *serverOpts) { o.genericEndpointMiddleware = v } -} - -type ServerOption func(*serverOpts) -type serverOpts struct { - genericServerOption []http.ServerOption - genericEndpointMiddleware []endpoint.Middleware - aTestMethodServerOption []http.ServerOption - aTestMethodEndpointMiddleware []endpoint.Middleware - bCreateServerOption []http.ServerOption - bCreateEndpointMiddleware []endpoint.Middleware - bDeleteServerOption []http.ServerOption - bDeleteEndpointMiddleware []endpoint.Middleware - bGetServerOption []http.ServerOption - bGetEndpointMiddleware []endpoint.Middleware - bGetAllServerOption []http.ServerOption - bGetAllEndpointMiddleware []endpoint.Middleware - bTestMethodServerOption []http.ServerOption - bTestMethodEndpointMiddleware []endpoint.Middleware - bTestMethod2ServerOption []http.ServerOption - bTestMethod2EndpointMiddleware []endpoint.Middleware -} - -func ATestMethodServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.aTestMethodServerOption = opt } -} - -func ATestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.aTestMethodEndpointMiddleware = opt } -} - -func BCreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.bCreateServerOption = opt } -} - -func BCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bCreateEndpointMiddleware = opt } -} - -func BDeleteServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.bDeleteServerOption = opt } -} - -func BDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bDeleteEndpointMiddleware = opt } -} - -func BGetServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.bGetServerOption = opt } -} - -func BGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bGetEndpointMiddleware = opt } -} - -func BGetAllServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.bGetAllServerOption = opt } -} - -func BGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bGetAllEndpointMiddleware = opt } -} - -func BTestMethodServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.bTestMethodServerOption = opt } -} - -func BTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bTestMethodEndpointMiddleware = opt } -} - -func BTestMethod2ServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.bTestMethod2ServerOption = opt } -} - -func BTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.bTestMethod2EndpointMiddleware = opt } -} diff --git a/v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go b/v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go deleted file mode 100755 index 7e450c13..00000000 --- a/v2/fixture/ServiceRESTMulti/app/instrumenting_gen.go +++ /dev/null @@ -1,165 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/metrics" - prometheus2 "github.com/go-kit/kit/metrics/prometheus" - "github.com/prometheus/client_golang/prometheus" -) - -type instrumentingOpts struct { - requestCount metrics.Counter - requestLatency metrics.Histogram - namespace string - subsystem string -} - -type InstrumentingOption func(*instrumentingOpts) - -func Namespace(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.namespace = v - } -} - -func Subsystem(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.subsystem = v - } -} - -func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestLatency = requestLatency - } -} - -func RequestCount(requestCount metrics.Counter) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestCount = requestCount - } -} - -type AInstrumentingMiddleware struct { - next InterfaceA - opts *instrumentingOpts -} - -func (s *AInstrumentingMiddleware) TestMethod() { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod").Add(1) - s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) - }(time.Now()) - s.next.TestMethod() -} - -func NewInstrumentingAMiddleware(s InterfaceA, opts ...InstrumentingOption) InterfaceA { - i := &AInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} - -type BInstrumentingMiddleware struct { - next InterfaceB - opts *instrumentingOpts -} - -func (s *BInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Create").Add(1) - s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Create(ctx, newData, name, data) -} - -func (s *BInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Delete").Add(1) - s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Delete(ctx, id) -} - -func (s *BInstrumentingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Get").Add(1) - s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Get(ctx, id, name, fname, price, n, b, cc) -} - -func (s *BInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "GetAll").Add(1) - s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.GetAll(ctx, members) -} - -func (s *BInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod").Add(1) - s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod(data, ss) -} - -func (s *BInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod2").Add(1) - s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) -} - -func NewInstrumentingBMiddleware(s InterfaceB, opts ...InstrumentingOption) InterfaceB { - i := &BInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} diff --git a/v2/fixture/ServiceRESTMulti/app/logging_gen.go b/v2/fixture/ServiceRESTMulti/app/logging_gen.go deleted file mode 100755 index c936fdb0..00000000 --- a/v2/fixture/ServiceRESTMulti/app/logging_gen.go +++ /dev/null @@ -1,95 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/log" -) - -type ALoggingMiddleware struct { - next InterfaceA - logger log.Logger -} - -func (s *ALoggingMiddleware) TestMethod() { - s.next.TestMethod() -} - -func NewLoggingAMiddleware(s InterfaceA, logger log.Logger) InterfaceA { - return &ALoggingMiddleware{next: s, logger: logger} -} - -type BLoggingMiddleware struct { - next InterfaceB - logger log.Logger -} - -func (s *BLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) - logger.Log("name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) - }(time.Now()) - err = s.next.Create(ctx, newData, name, data) - return err -} - -func (s *BLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - var ( - a string - b string - err error - ) - a, b, err = s.next.Delete(ctx, id) - return a, b, err -} - -func (s *BLoggingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - var ( - result User - err error - ) - result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) - return result, err -} - -func (s *BLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - var ( - result []*User - err error - ) - result, err = s.next.GetAll(ctx, members) - return result, err -} - -func (s *BLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - var ( - result map[string]map[int][]string - err error - ) - result, err = s.next.TestMethod(data, ss) - return result, err -} - -func (s *BLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - var ( - err error - ) - err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) - return err -} - -func NewLoggingBMiddleware(s InterfaceB, logger log.Logger) InterfaceB { - return &BLoggingMiddleware{next: s, logger: logger} -} diff --git a/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json deleted file mode 100755 index 2d8203aa..00000000 --- a/v2/fixture/ServiceRESTMulti/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/interface-a/a-test-method":{"get":{"tags":["A"],"summary":"TestMethod","responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-create":{"post":{"tags":["B"],"summary":"Create","description":" new item of item.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"401":{"description":"ErrUnauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrUnauthorized"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-delete":{"post":{"tags":["B"],"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-get-all":{"post":{"tags":["B"],"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-test-method":{"post":{"tags":["B"],"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/b-test-method2":{"post":{"tags":["B"],"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/interface-b/get-test":{"post":{"tags":["B"],"summary":"Get","description":" item.","parameters":[{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"fname":{"type":"string","format":"string","example":"abc"},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ErrUnauthorized":{"type":"object","properties":{"error":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceRESTMulti/app/server_gen.go b/v2/fixture/ServiceRESTMulti/app/server_gen.go deleted file mode 100755 index 47b348f1..00000000 --- a/v2/fixture/ServiceRESTMulti/app/server_gen.go +++ /dev/null @@ -1,208 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "fmt" - "io" - "io/ioutil" - http2 "net/http" - "strconv" - - "github.com/go-kit/kit/transport/http" - "github.com/gorilla/mux" - "github.com/pquerna/ffjson/ffjson" -) - -type errorWrapper struct { - Error string `json:"error"` - Data interface{} `json:"data,omitempty"` -} - -func defaultErrorEncoder(ctx context.Context, err error, w http2.ResponseWriter) { - var errData interface{} - if e, ok := err.(interface{ ErrorData() interface{} }); ok { - errData = e.ErrorData() - } - data, merr := ffjson.Marshal(errorWrapper{Error: err.Error(), Data: errData}) - if merr != nil { - _, _ = w.Write([]byte("unexpected error")) - return - } - w.Header().Set("Content-Type", "application/json; charset=utf-8") - if headerer, ok := err.(http.Headerer); ok { - for k, values := range headerer.Headers() { - for _, v := range values { - w.Header().Add(k, v) - } - } - } - code := http2.StatusInternalServerError - if sc, ok := err.(http.StatusCoder); ok { - code = sc.StatusCode() - } - w.WriteHeader(code) - _, _ = w.Write(data) -} - -func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response interface{}) (err error) { - contentType := "application/json; charset=utf-8" - statusCode := 200 - h := w.Header() - var data []byte - if response != nil { - data, err = ffjson.Marshal(response) - if err != nil { - return err - } - } else { - contentType = "text/plain; charset=utf-8" - statusCode = 201 - } - h.Set("Content-Type", contentType) - w.WriteHeader(statusCode) - w.Write(data) - return nil -} - -// MakeHandlerREST HTTP REST Transport -func MakeHandlerREST(svcA InterfaceA, svcB InterfaceB, options ...ServerOption) (http2.Handler, error) { - opts := &serverOpts{} - for _, o := range options { - o(opts) - } - opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) - epSetA := MakeAEndpointSet(svcA) - epSetB := MakeBEndpointSet(svcB) - epSetA.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.aTestMethodEndpointMiddleware...))(epSetA.TestMethodEndpoint) - epSetB.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bCreateEndpointMiddleware...))(epSetB.CreateEndpoint) - epSetB.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bDeleteEndpointMiddleware...))(epSetB.DeleteEndpoint) - epSetB.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetEndpointMiddleware...))(epSetB.GetEndpoint) - epSetB.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bGetAllEndpointMiddleware...))(epSetB.GetAllEndpoint) - epSetB.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethodEndpointMiddleware...))(epSetB.TestMethodEndpoint) - epSetB.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.bTestMethod2EndpointMiddleware...))(epSetB.TestMethod2Endpoint) - r := mux.NewRouter() - r.Methods("GET").Path("/a/testmethod").Handler(http.NewServer( - epSetA.TestMethodEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - return nil, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.aTestMethodServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/b/create").Handler(http.NewServer( - epSetB.CreateEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req BCreateCreateRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for BCreateCreateRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BCreateCreateRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.bCreateServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/b/delete").Handler(http.NewServer( - epSetB.DeleteEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req BDeleteDeleteRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for BDeleteDeleteRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BDeleteDeleteRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.bDeleteServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/b/get-test").Handler(http.NewServer( - epSetB.GetEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req BGetGetRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for BGetGetRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BGetGetRequest: %w", err) - } - q := r.URL.Query() - tmpcc := q.Get("cc") - if tmpcc != "" { - ccInt, err := strconv.Atoi(tmpcc) - if err != nil { - return nil, err - } - req.Cc = int(ccInt) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.bGetServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/b/getall").Handler(http.NewServer( - epSetB.GetAllEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req BGetAllGetAllRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for BGetAllGetAllRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BGetAllGetAllRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.bGetAllServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/b/testmethod").Handler(http.NewServer( - epSetB.TestMethodEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req BTestMethodTestMethodRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for BTestMethodTestMethodRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BTestMethodTestMethodRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.bTestMethodServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/b/testmethod2").Handler(http.NewServer( - epSetB.TestMethod2Endpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req BTestMethod2TestMethod2Request - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for BTestMethod2TestMethod2Request: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to BTestMethod2TestMethod2Request: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.bTestMethod2ServerOption...)..., - )) - return r, nil -} diff --git a/v2/fixture/ServiceRESTMulti/app/service.go b/v2/fixture/ServiceRESTMulti/app/service.go deleted file mode 100644 index b5a789b8..00000000 --- a/v2/fixture/ServiceRESTMulti/app/service.go +++ /dev/null @@ -1,129 +0,0 @@ -package app - -import ( - "context" - "time" - - "github.com/google/uuid" -) - -// ErrUnauthorized unauthorized. -type ErrUnauthorized struct{} - -func (ErrUnauthorized) Error() string { - return "unauthorized" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrUnauthorized) StatusCode() int { - return 401 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrUnauthorized) ErrorCode() int { - return -32001 -} - -// ErrForbidden forbidden. -type ErrForbidden struct{} - -func (ErrForbidden) Error() string { - return "forbidden" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrForbidden) StatusCode() int { - return 403 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrForbidden) ErrorCode() int { - return -32002 -} - -type Member struct { - ID string `json:"id"` -} - -type Members []*Member - -type Data map[string]interface{} - -type AliasData = Data - -type GeoJSON struct { - Type string `json:"-"` - Coordinates []float64 `json:"coordinates200"` -} - -type Profile struct { - Phone string `json:"phone"` -} - -type Recurse struct { - Name string `json:"name"` - Recurse []*Recurse `json:"recurse"` -} - -type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` - Point GeoJSON `json:"point"` - LastSeen time.Time `json:"last_seen"` - Data AliasData `json:"data"` - Photo []byte `json:"photo"` - User *User `json:"user"` - Profile *Profile `json:"profile"` - Recurse *Recurse `json:"recurse"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` -} - -type InterfaceA interface { - TestMethod() -} - -type InterfaceB interface { - // Create new item of item. - Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) - // Get item. - Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) - // GetAll more comment and more and more comment and more and more comment and more. - // New line comment. - GetAll(ctx context.Context, members Members) ([]*User, error) - Delete(ctx context.Context, id uint) (a string, b string, err error) - TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) - TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error -} - -type serviceB struct { -} - -func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { - return &ErrUnauthorized{} -} - -func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { - panic("implement me") -} - -func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - panic("implement me") -} - -func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - panic("implement me") -} diff --git a/v2/fixture/ServiceRESTMulti/app/swipe.go b/v2/fixture/ServiceRESTMulti/app/swipe.go deleted file mode 100644 index 75a03811..00000000 --- a/v2/fixture/ServiceRESTMulti/app/swipe.go +++ /dev/null @@ -1,55 +0,0 @@ -//+build swipe - -package app - -import ( - "net/http" - - swipe "github.com/swipe-io/swipe/v2" -) - -func Swipe() { - swipe.Build( - swipe.Service( - swipe.Interface((*InterfaceA)(nil), "a"), - swipe.Interface((*InterfaceB)(nil), "b"), - - swipe.HTTPServer(), - - swipe.ClientsEnable([]string{"go", "js"}), - - swipe.OpenapiEnable(), - swipe.OpenapiOutput("./"), - - swipe.ReadmeEnable(), - - swipe.MethodOptions(InterfaceB.Create, - swipe.RESTMethod(http.MethodPost), - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - swipe.LoggingContext("123", "123"), - ), - swipe.MethodOptions(InterfaceB.Get, - swipe.RESTPath("/get-test"), - swipe.RESTMethod(http.MethodPost), - swipe.RESTQueryVars([]string{"cc", "cc"}), - ), - swipe.MethodOptions(InterfaceB.Delete, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.GetAll, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.TestMethod, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.TestMethod2, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodDefaultOptions( - swipe.Logging(false), - swipe.Instrumenting(true), - ), - ), - ) -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/.swipe/README.md.tpl b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/.swipe/README.md.tpl deleted file mode 100755 index b64b4415..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/.swipe/README.md.tpl +++ /dev/null @@ -1,35 +0,0 @@ -# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) -{{end -}} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md deleted file mode 100755 index a70e435a..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app : A short description of the service. -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go deleted file mode 100755 index f8a49d98..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_gen.go +++ /dev/null @@ -1,119 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "bytes" - "context" - "fmt" - "io/ioutil" - "net" - http2 "net/http" - "net/url" - "strings" - - "github.com/go-kit/kit/transport/http" - "github.com/pquerna/ffjson/ffjson" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" -) - -func NewClientRESTApp1(tgt string, options ...ClientOption) (app1.App, error) { - opts := &clientOpts{} - c := &clientApp1{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - c.app1CreateEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(App1CreateCreateRequest) - if !ok { - return fmt.Errorf("couldn't assert request as App1CreateCreateRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/app1/create" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, app1CreateErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.app1CreateClientOption...)..., - ).Endpoint() - c.app1CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app1CreateEndpointMiddleware...))(c.app1CreateEndpoint) - return c, nil -} - -func NewClientRESTApp2(tgt string, options ...ClientOption) (app2.App, error) { - opts := &clientOpts{} - c := &clientApp2{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - c.app2CreateEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(App2CreateCreateRequest) - if !ok { - return fmt.Errorf("couldn't assert request as App2CreateCreateRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/app2/create" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, app2CreateErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.app2CreateClientOption...)..., - ).Endpoint() - c.app2CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app2CreateEndpointMiddleware...))(c.app2CreateEndpoint) - return c, nil -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go deleted file mode 100755 index 163b380a..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/client_struct_gen.go +++ /dev/null @@ -1,92 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/go-kit/kit/transport/http" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" -) - -type AppClient struct { - App1Client app1.App - App2Client app2.App -} - -func NewClientREST(tgt string, opts ...ClientOption) (*AppClient, error) { - app1Client, err := NewClientRESTApp1(tgt, opts...) - if err != nil { - return nil, err - } - app2Client, err := NewClientRESTApp2(tgt, opts...) - if err != nil { - return nil, err - } - return &AppClient{ - App1Client: app1Client, - App2Client: app2Client, - }, nil -} - -type ClientOption func(*clientOpts) -type clientOpts struct { - app1CreateClientOption []http.ClientOption - app1CreateEndpointMiddleware []endpoint.Middleware - app2CreateClientOption []http.ClientOption - app2CreateEndpointMiddleware []endpoint.Middleware - genericClientOption []http.ClientOption - genericEndpointMiddleware []endpoint.Middleware -} - -func GenericClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.genericClientOption = opt } -} - -func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.genericEndpointMiddleware = opt } -} - -func App1CreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.app1CreateClientOption = opt } -} - -func App1CreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.app1CreateEndpointMiddleware = opt } -} - -func App2CreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.app2CreateClientOption = opt } -} - -func App2CreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.app2CreateEndpointMiddleware = opt } -} - -type clientApp1 struct { - app1CreateEndpoint endpoint.Endpoint -} - -func (c *clientApp1) Create(ctx context.Context, name string, data []byte) error { - _, err := c.app1CreateEndpoint(ctx, App1CreateCreateRequest{Name: name, Data: data}) - if err != nil { - return err - } - return nil -} - -type clientApp2 struct { - app2CreateEndpoint endpoint.Endpoint -} - -func (c *clientApp2) Create(ctx context.Context, name string, data []byte) error { - _, err := c.app2CreateEndpoint(ctx, App2CreateCreateRequest{Name: name, Data: data}) - if err != nil { - return err - } - return nil -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go deleted file mode 100644 index bee52ffd..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1/service.go +++ /dev/null @@ -1,25 +0,0 @@ -package app1 - -import ( - "context" - - "github.com/google/uuid" -) - -type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` -} - -type App interface { - // Create new item of item. - Create(ctx context.Context, name string, data []byte) (err error) -} - -type serviceApp struct { -} - -func (s *serviceApp) Create(ctx context.Context, name string, data []byte) (err error) { - return nil -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go deleted file mode 100644 index f9b8762b..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2/service.go +++ /dev/null @@ -1,25 +0,0 @@ -package app2 - -import ( - "context" - - "github.com/google/uuid" -) - -type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` -} - -type App interface { - // Create new item of item. - Create(ctx context.Context, name string, data []byte) (err error) -} - -type serviceApp struct { -} - -func (s *serviceApp) Create(ctx context.Context, name string, data []byte) (err error) { - return nil -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go deleted file mode 100755 index fc9b44b5..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/endpoint_gen.go +++ /dev/null @@ -1,66 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - - "github.com/go-kit/kit/endpoint" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" -) - -func MakeApp1CreateEndpoint(s app1.App) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(App1CreateCreateRequest) - err := s.Create(ctx, req.Name, req.Data) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeApp2CreateEndpoint(s app2.App) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(App2CreateCreateRequest) - err := s.Create(ctx, req.Name, req.Data) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -type App1EndpointSet struct { - CreateEndpoint endpoint.Endpoint -} - -func MakeApp1EndpointSet(svc app1.App) App1EndpointSet { - return App1EndpointSet{ - CreateEndpoint: MakeApp1CreateEndpoint(svc), - } -} - -type App1CreateCreateRequest struct { - Name string `json:"name"` - Data []byte `json:"data"` -} -type App2EndpointSet struct { - CreateEndpoint endpoint.Endpoint -} - -func MakeApp2EndpointSet(svc app2.App) App2EndpointSet { - return App2EndpointSet{ - CreateEndpoint: MakeApp2CreateEndpoint(svc), - } -} - -type App2CreateCreateRequest struct { - Name string `json:"name"` - Data []byte `json:"data"` -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go deleted file mode 100755 index b8e4a475..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/http_gen.go +++ /dev/null @@ -1,85 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - http2 "net/http" - - "github.com/go-kit/kit/endpoint" - "github.com/go-kit/kit/transport/http" -) - -type httpError struct { - code int -} - -func (e *httpError) Error() string { - return http2.StatusText(e.code) -} -func (e *httpError) StatusCode() int { - return e.code -} -func app1CreateErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func app2CreateErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { - return func(next endpoint.Endpoint) endpoint.Endpoint { - if len(middlewares) == 0 { - return next - } - outer := middlewares[0] - others := middlewares[1:] - for i := len(others) - 1; i >= 0; i-- { - next = others[i](next) - } - return outer(next) - } -} -func GenericServerOptions(v ...http.ServerOption) ServerOption { - return func(o *serverOpts) { o.genericServerOption = v } -} - -func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { - return func(o *serverOpts) { o.genericEndpointMiddleware = v } -} - -type ServerOption func(*serverOpts) -type serverOpts struct { - genericServerOption []http.ServerOption - genericEndpointMiddleware []endpoint.Middleware - app1CreateServerOption []http.ServerOption - app1CreateEndpointMiddleware []endpoint.Middleware - app2CreateServerOption []http.ServerOption - app2CreateEndpointMiddleware []endpoint.Middleware -} - -func App1CreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.app1CreateServerOption = opt } -} - -func App1CreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.app1CreateEndpointMiddleware = opt } -} - -func App2CreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.app2CreateServerOption = opt } -} - -func App2CreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.app2CreateEndpointMiddleware = opt } -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go deleted file mode 100755 index 8f0c5c58..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/instrumenting_gen.go +++ /dev/null @@ -1,127 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/metrics" - prometheus2 "github.com/go-kit/kit/metrics/prometheus" - "github.com/prometheus/client_golang/prometheus" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" -) - -type instrumentingOpts struct { - requestCount metrics.Counter - requestLatency metrics.Histogram - namespace string - subsystem string -} - -type InstrumentingOption func(*instrumentingOpts) - -func Namespace(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.namespace = v - } -} - -func Subsystem(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.subsystem = v - } -} - -func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestLatency = requestLatency - } -} - -func RequestCount(requestCount metrics.Counter) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestCount = requestCount - } -} - -type App1InstrumentingMiddleware struct { - next app1.App - opts *instrumentingOpts -} - -func (s *App1InstrumentingMiddleware) Create(ctx context.Context, name string, data []byte) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Create").Add(1) - s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Create(ctx, name, data) -} - -func NewInstrumentingApp1Middleware(s app1.App, opts ...InstrumentingOption) app1.App { - i := &App1InstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} - -type App2InstrumentingMiddleware struct { - next app2.App - opts *instrumentingOpts -} - -func (s *App2InstrumentingMiddleware) Create(ctx context.Context, name string, data []byte) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Create").Add(1) - s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Create(ctx, name, data) -} - -func NewInstrumentingApp2Middleware(s app2.App, opts ...InstrumentingOption) app2.App { - i := &App2InstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go deleted file mode 100755 index 713e2d1c..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/logging_gen.go +++ /dev/null @@ -1,64 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/log" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" -) - -type App1LoggingMiddleware struct { - next app1.App - logger log.Logger -} - -func (s *App1LoggingMiddleware) Create(ctx context.Context, name string, data []byte) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) - logger.Log("name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) - }(time.Now()) - err = s.next.Create(ctx, name, data) - return err -} - -func NewLoggingApp1Middleware(s app1.App, logger log.Logger) app1.App { - return &App1LoggingMiddleware{next: s, logger: logger} -} - -type App2LoggingMiddleware struct { - next app2.App - logger log.Logger -} - -func (s *App2LoggingMiddleware) Create(ctx context.Context, name string, data []byte) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) - logger.Log("name", name, "data", len(data), "123", ctx.Value("123"), "err", logErr) - }(time.Now()) - err = s.next.Create(ctx, name, data) - return err -} - -func NewLoggingApp2Middleware(s app2.App, logger log.Logger) app2.App { - return &App2LoggingMiddleware{next: s, logger: logger} -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json deleted file mode 100755 index d9d65d51..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/app/app1-create":{"post":{"tags":["App1"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app/app2-create":{"post":{"tags":["App2"],"summary":"Create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go deleted file mode 100755 index ff60e78e..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/server_gen.go +++ /dev/null @@ -1,119 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "fmt" - "io" - "io/ioutil" - http2 "net/http" - - "github.com/go-kit/kit/transport/http" - "github.com/gorilla/mux" - "github.com/pquerna/ffjson/ffjson" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" -) - -type errorWrapper struct { - Error string `json:"error"` - Data interface{} `json:"data,omitempty"` -} - -func defaultErrorEncoder(ctx context.Context, err error, w http2.ResponseWriter) { - var errData interface{} - if e, ok := err.(interface{ ErrorData() interface{} }); ok { - errData = e.ErrorData() - } - data, merr := ffjson.Marshal(errorWrapper{Error: err.Error(), Data: errData}) - if merr != nil { - _, _ = w.Write([]byte("unexpected error")) - return - } - w.Header().Set("Content-Type", "application/json; charset=utf-8") - if headerer, ok := err.(http.Headerer); ok { - for k, values := range headerer.Headers() { - for _, v := range values { - w.Header().Add(k, v) - } - } - } - code := http2.StatusInternalServerError - if sc, ok := err.(http.StatusCoder); ok { - code = sc.StatusCode() - } - w.WriteHeader(code) - _, _ = w.Write(data) -} - -func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response interface{}) (err error) { - contentType := "application/json; charset=utf-8" - statusCode := 200 - h := w.Header() - var data []byte - if response != nil { - data, err = ffjson.Marshal(response) - if err != nil { - return err - } - } else { - contentType = "text/plain; charset=utf-8" - statusCode = 201 - } - h.Set("Content-Type", contentType) - w.WriteHeader(statusCode) - w.Write(data) - return nil -} - -// MakeHandlerREST HTTP REST Transport -func MakeHandlerREST(svcApp1 app1.App, svcApp2 app2.App, options ...ServerOption) (http2.Handler, error) { - opts := &serverOpts{} - for _, o := range options { - o(opts) - } - opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) - epSetApp1 := MakeApp1EndpointSet(svcApp1) - epSetApp2 := MakeApp2EndpointSet(svcApp2) - epSetApp1.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app1CreateEndpointMiddleware...))(epSetApp1.CreateEndpoint) - epSetApp2.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.app2CreateEndpointMiddleware...))(epSetApp2.CreateEndpoint) - r := mux.NewRouter() - r.Methods(http2.MethodPost).Path("/app1/create").Handler(http.NewServer( - epSetApp1.CreateEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req App1CreateCreateRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for App1CreateCreateRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to App1CreateCreateRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.app1CreateServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/app2/create").Handler(http.NewServer( - epSetApp2.CreateEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req App2CreateCreateRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for App2CreateCreateRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to App2CreateCreateRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.app2CreateServerOption...)..., - )) - return r, nil -} diff --git a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go b/v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go deleted file mode 100644 index 36cc969f..00000000 --- a/v2/fixture/ServiceRESTMultiIdenticalInterface/app/swipe.go +++ /dev/null @@ -1,49 +0,0 @@ -//+build swipe - -package app - -import ( - "net/http" - - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app1" - "github.com/swipe-io/swipe/v2/fixture/ServiceRESTMultiIdenticalInterface/app/controller/app2" - - swipe "github.com/swipe-io/swipe/v2" -) - -func Swipe() { - swipe.Build( - swipe.Service( - swipe.Interface((*app1.App)(nil), "app1"), - swipe.Interface((*app2.App)(nil), "app2"), - - swipe.HTTPServer(), - - swipe.ClientsEnable([]string{"go", "js"}), - - swipe.OpenapiEnable(), - swipe.OpenapiOutput("./"), - - swipe.ReadmeEnable(), - - swipe.MethodOptions(app1.App.Create, - swipe.RESTMethod(http.MethodPost), - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - swipe.LoggingContext("123", "123"), - ), - - swipe.MethodOptions(app2.App.Create, - swipe.RESTMethod(http.MethodPost), - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - swipe.LoggingContext("123", "123"), - ), - - swipe.MethodDefaultOptions( - swipe.Logging(false), - swipe.Instrumenting(true), - ), - ), - ) -} diff --git a/v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl b/v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl deleted file mode 100755 index b64b4415..00000000 --- a/v2/fixture/ServiceRESTSingle/app/.swipe/README.md.tpl +++ /dev/null @@ -1,35 +0,0 @@ -# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }} -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - -{{range $index, $tag := .GIT.Tags -}} - {{if gt $index 0 -}}, {{end -}} - [{{$tag.Name}}](https://{{$.RootPkgPath}}/tree/{{$tag.Name}}) -{{end -}} diff --git a/v2/fixture/ServiceRESTSingle/app/README.md b/v2/fixture/ServiceRESTSingle/app/README.md deleted file mode 100755 index c0b4fecf..00000000 --- a/v2/fixture/ServiceRESTSingle/app/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# /Users/vitaly/work/go/src/github.com/swipe-io/swipe/v2/fixture/ServiceRESTSingle/app : A short description of the service. -A complete description of the service and what it does. - -## Example - - -go run ./cmd/service - - -## Docs - -ToDo. - -## Contributing - -ToDo. - -## Contributors - -ToDo. - -## Author - -ToDo. - -## Changelog - -ToDo. - -## Versions - diff --git a/v2/fixture/ServiceRESTSingle/app/client_gen.go b/v2/fixture/ServiceRESTSingle/app/client_gen.go deleted file mode 100755 index c518f94b..00000000 --- a/v2/fixture/ServiceRESTSingle/app/client_gen.go +++ /dev/null @@ -1,293 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "bytes" - "context" - "fmt" - "io" - "io/ioutil" - "net" - http2 "net/http" - "net/url" - "strconv" - "strings" - "time" - - "github.com/go-kit/kit/transport/http" - "github.com/pquerna/ffjson/ffjson" -) - -// Deprecated -func NewClientREST(tgt string, options ...ClientOption) (AppInterface, error) { - return NewClientRESTAppInterface(tgt, options...) -} -func NewClientRESTAppInterface(tgt string, options ...ClientOption) (AppInterface, error) { - opts := &clientOpts{} - c := &clientAppInterface{} - for _, o := range options { - o(opts) - } - if strings.HasPrefix(tgt, "[") { - host, port, err := net.SplitHostPort(tgt) - if err != nil { - return nil, err - } - tgt = host + ":" + port - } - u, err := url.Parse(tgt) - if err != nil { - return nil, err - } - if u.Scheme == "" { - u.Scheme = "https" - } - c.appInterfaceCreateEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(CreateRequest) - if !ok { - return fmt.Errorf("couldn't assert request as CreateRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/create" - q := r.URL.Query() - dateStr := req.Date.Format(time.RFC3339) - q.Add("date", dateStr) - r.URL.RawQuery = q.Encode() - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceCreateErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.appInterfaceCreateClientOption...)..., - ).Endpoint() - c.appInterfaceCreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceCreateEndpointMiddleware...))(c.appInterfaceCreateEndpoint) - c.appInterfaceDeleteEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(DeleteRequest) - if !ok { - return fmt.Errorf("couldn't assert request as DeleteRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/delete" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceDeleteErrorDecode(statusCode) - } - var resp DeleteRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to DeleteRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.appInterfaceDeleteClientOption...)..., - ).Endpoint() - c.appInterfaceDeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceDeleteEndpointMiddleware...))(c.appInterfaceDeleteEndpoint) - c.appInterfaceGetEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(GetRequest) - if !ok { - return fmt.Errorf("couldn't assert request as GetRequest, got %T", request) - } - r.Method = http2.MethodPost - fnameStr := req.Fname - r.URL.Path += fmt.Sprintf("/get/%s", fnameStr) - q := r.URL.Query() - ccStr := strconv.FormatInt(int64(req.Cc), 10) - q.Add("cc", ccStr) - r.URL.RawQuery = q.Encode() - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceGetErrorDecode(statusCode) - } - var resp User - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to GetRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.appInterfaceGetClientOption...)..., - ).Endpoint() - c.appInterfaceGetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetEndpointMiddleware...))(c.appInterfaceGetEndpoint) - c.appInterfaceGetAllEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(GetAllRequest) - if !ok { - return fmt.Errorf("couldn't assert request as GetAllRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/get-all" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceGetAllErrorDecode(statusCode) - } - var resp []*User - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to GetAllRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.appInterfaceGetAllClientOption...)..., - ).Endpoint() - c.appInterfaceGetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetAllEndpointMiddleware...))(c.appInterfaceGetAllEndpoint) - c.appInterfaceStartEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - r.Method = http2.MethodPost - r.URL.Path += "/start" - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceStartErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.appInterfaceStartClientOption...)..., - ).Endpoint() - c.appInterfaceStartEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceStartEndpointMiddleware...))(c.appInterfaceStartEndpoint) - c.appInterfaceTestMethodEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(TestMethodRequest) - if !ok { - return fmt.Errorf("couldn't assert request as TestMethodRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/test-method" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceTestMethodErrorDecode(statusCode) - } - var resp map[string]map[int][]string - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, err - } - err = ffjson.Unmarshal(b, &resp) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethodRequest: %s", err) - } - return resp, nil - }, - append(opts.genericClientOption, opts.appInterfaceTestMethodClientOption...)..., - ).Endpoint() - c.appInterfaceTestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodEndpointMiddleware...))(c.appInterfaceTestMethodEndpoint) - c.appInterfaceTestMethod2Endpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(TestMethod2Request) - if !ok { - return fmt.Errorf("couldn't assert request as TestMethod2Request, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/test-method2" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceTestMethod2ErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.appInterfaceTestMethod2ClientOption...)..., - ).Endpoint() - c.appInterfaceTestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethod2EndpointMiddleware...))(c.appInterfaceTestMethod2Endpoint) - c.appInterfaceTestMethodOptionalsEndpoint = http.NewClient( - http2.MethodPost, - u, - func(_ context.Context, r *http2.Request, request interface{}) error { - req, ok := request.(TestMethodOptionalsRequest) - if !ok { - return fmt.Errorf("couldn't assert request as TestMethodOptionalsRequest, got %T", request) - } - r.Method = http2.MethodPost - r.URL.Path += "/test-method-optionals" - data, err := ffjson.Marshal(req) - if err != nil { - return fmt.Errorf("couldn't marshal request %T: %s", req, err) - } - r.Body = ioutil.NopCloser(bytes.NewBuffer(data)) - return nil - }, - func(_ context.Context, r *http2.Response) (interface{}, error) { - if statusCode := r.StatusCode; statusCode != http2.StatusOK { - return nil, appInterfaceTestMethodOptionalsErrorDecode(statusCode) - } - return nil, nil - }, - append(opts.genericClientOption, opts.appInterfaceTestMethodOptionalsClientOption...)..., - ).Endpoint() - c.appInterfaceTestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodOptionalsEndpointMiddleware...))(c.appInterfaceTestMethodOptionalsEndpoint) - return c, nil -} diff --git a/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go b/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go deleted file mode 100755 index 7233078e..00000000 --- a/v2/fixture/ServiceRESTSingle/app/client_struct_gen.go +++ /dev/null @@ -1,186 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/endpoint" - "github.com/go-kit/kit/transport/http" -) - -type ClientOption func(*clientOpts) -type clientOpts struct { - appInterfaceCreateClientOption []http.ClientOption - appInterfaceCreateEndpointMiddleware []endpoint.Middleware - appInterfaceDeleteClientOption []http.ClientOption - appInterfaceDeleteEndpointMiddleware []endpoint.Middleware - appInterfaceGetClientOption []http.ClientOption - appInterfaceGetEndpointMiddleware []endpoint.Middleware - appInterfaceGetAllClientOption []http.ClientOption - appInterfaceGetAllEndpointMiddleware []endpoint.Middleware - appInterfaceStartClientOption []http.ClientOption - appInterfaceStartEndpointMiddleware []endpoint.Middleware - appInterfaceTestMethodClientOption []http.ClientOption - appInterfaceTestMethodEndpointMiddleware []endpoint.Middleware - appInterfaceTestMethod2ClientOption []http.ClientOption - appInterfaceTestMethod2EndpointMiddleware []endpoint.Middleware - appInterfaceTestMethodOptionalsClientOption []http.ClientOption - appInterfaceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware - genericClientOption []http.ClientOption - genericEndpointMiddleware []endpoint.Middleware -} - -func GenericClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.genericClientOption = opt } -} - -func GenericClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.genericEndpointMiddleware = opt } -} - -func AppInterfaceCreateClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceCreateClientOption = opt } -} - -func AppInterfaceCreateClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceCreateEndpointMiddleware = opt } -} - -func AppInterfaceDeleteClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceDeleteClientOption = opt } -} - -func AppInterfaceDeleteClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceDeleteEndpointMiddleware = opt } -} - -func AppInterfaceGetClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceGetClientOption = opt } -} - -func AppInterfaceGetClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceGetEndpointMiddleware = opt } -} - -func AppInterfaceGetAllClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceGetAllClientOption = opt } -} - -func AppInterfaceGetAllClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceGetAllEndpointMiddleware = opt } -} - -func AppInterfaceStartClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceStartClientOption = opt } -} - -func AppInterfaceStartClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceStartEndpointMiddleware = opt } -} - -func AppInterfaceTestMethodClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceTestMethodClientOption = opt } -} - -func AppInterfaceTestMethodClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceTestMethodEndpointMiddleware = opt } -} - -func AppInterfaceTestMethod2ClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceTestMethod2ClientOption = opt } -} - -func AppInterfaceTestMethod2ClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceTestMethod2EndpointMiddleware = opt } -} - -func AppInterfaceTestMethodOptionalsClientOptions(opt ...http.ClientOption) ClientOption { - return func(c *clientOpts) { c.appInterfaceTestMethodOptionalsClientOption = opt } -} - -func AppInterfaceTestMethodOptionalsClientEndpointMiddlewares(opt ...endpoint.Middleware) ClientOption { - return func(c *clientOpts) { c.appInterfaceTestMethodOptionalsEndpointMiddleware = opt } -} - -type clientAppInterface struct { - appInterfaceCreateEndpoint endpoint.Endpoint - appInterfaceDeleteEndpoint endpoint.Endpoint - appInterfaceGetEndpoint endpoint.Endpoint - appInterfaceGetAllEndpoint endpoint.Endpoint - appInterfaceStartEndpoint endpoint.Endpoint - appInterfaceTestMethodEndpoint endpoint.Endpoint - appInterfaceTestMethod2Endpoint endpoint.Endpoint - appInterfaceTestMethodOptionalsEndpoint endpoint.Endpoint -} - -func (c *clientAppInterface) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { - _, err := c.appInterfaceCreateEndpoint(ctx, CreateRequest{NewData: newData, Name: name, Data: data, Date: date}) - if err != nil { - return err - } - return nil -} - -func (c *clientAppInterface) Delete(ctx context.Context, id uint) (string, string, error) { - resp, err := c.appInterfaceDeleteEndpoint(ctx, DeleteRequest{Id: id}) - if err != nil { - return "", "", err - } - response := resp.(DeleteResponse) - return response.A, response.B, nil -} - -func (c *clientAppInterface) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - resp, err := c.appInterfaceGetEndpoint(ctx, GetRequest{Id: id, Name: name, Fname: fname, Price: price, N: n, B: b, Cc: cc}) - if err != nil { - return User{}, err - } - response := resp.(User) - return response, nil -} - -func (c *clientAppInterface) GetAll(ctx context.Context, members Members) ([]*User, error) { - resp, err := c.appInterfaceGetAllEndpoint(ctx, GetAllRequest{Members: members}) - if err != nil { - return nil, err - } - response := resp.([]*User) - return response, nil -} - -func (c *clientAppInterface) Start(ctx context.Context) error { - _, err := c.appInterfaceStartEndpoint(ctx, nil) - if err != nil { - return err - } - return nil -} - -func (c *clientAppInterface) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - resp, err := c.appInterfaceTestMethodEndpoint(context.Background(), TestMethodRequest{Data: data, Ss: ss}) - if err != nil { - return nil, err - } - response := resp.(map[string]map[int][]string) - return response, nil -} - -func (c *clientAppInterface) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - _, err := c.appInterfaceTestMethod2Endpoint(ctx, TestMethod2Request{Ns: ns, Utype: utype, User: user, Restype: restype, Resource: resource, Permission: permission}) - if err != nil { - return err - } - return nil -} - -func (c *clientAppInterface) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { - _, err := c.appInterfaceTestMethodOptionalsEndpoint(ctx, TestMethodOptionalsRequest{Ns: ns, Options: options}) - if err != nil { - return err - } - return nil -} diff --git a/v2/fixture/ServiceRESTSingle/app/endpoint_gen.go b/v2/fixture/ServiceRESTSingle/app/endpoint_gen.go deleted file mode 100755 index d47a4940..00000000 --- a/v2/fixture/ServiceRESTSingle/app/endpoint_gen.go +++ /dev/null @@ -1,173 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/endpoint" -) - -func MakeAppInterfaceCreateEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(CreateRequest) - err := s.Create(ctx, req.NewData, req.Name, req.Data, req.Date) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeAppInterfaceDeleteEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(DeleteRequest) - a, b, err := s.Delete(ctx, req.Id) - if err != nil { - return nil, err - } - return DeleteResponse{A: a, B: b}, nil - } - -} - -func MakeAppInterfaceGetEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(GetRequest) - result, err := s.Get(ctx, req.Id, req.Name, req.Fname, req.Price, req.N, req.B, req.Cc) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeAppInterfaceGetAllEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(GetAllRequest) - result, err := s.GetAll(ctx, req.Members) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeAppInterfaceStartEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - err := s.Start(ctx) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeAppInterfaceTestMethodEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(TestMethodRequest) - result, err := s.TestMethod(req.Data, req.Ss) - if err != nil { - return nil, err - } - return result, nil - } - -} - -func MakeAppInterfaceTestMethod2Endpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(TestMethod2Request) - err := s.TestMethod2(ctx, req.Ns, req.Utype, req.User, req.Restype, req.Resource, req.Permission) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -func MakeAppInterfaceTestMethodOptionalsEndpoint(s AppInterface) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) (interface{}, error) { - req := request.(TestMethodOptionalsRequest) - err := s.TestMethodOptionals(ctx, req.Ns, req.Options...) - if err != nil { - return nil, err - } - return nil, nil - } - -} - -type AppInterfaceEndpointSet struct { - CreateEndpoint endpoint.Endpoint - DeleteEndpoint endpoint.Endpoint - GetEndpoint endpoint.Endpoint - GetAllEndpoint endpoint.Endpoint - StartEndpoint endpoint.Endpoint - TestMethodEndpoint endpoint.Endpoint - TestMethod2Endpoint endpoint.Endpoint - TestMethodOptionalsEndpoint endpoint.Endpoint -} - -func MakeAppInterfaceEndpointSet(svc AppInterface) AppInterfaceEndpointSet { - return AppInterfaceEndpointSet{ - CreateEndpoint: MakeAppInterfaceCreateEndpoint(svc), - DeleteEndpoint: MakeAppInterfaceDeleteEndpoint(svc), - GetEndpoint: MakeAppInterfaceGetEndpoint(svc), - GetAllEndpoint: MakeAppInterfaceGetAllEndpoint(svc), - StartEndpoint: MakeAppInterfaceStartEndpoint(svc), - TestMethodEndpoint: MakeAppInterfaceTestMethodEndpoint(svc), - TestMethod2Endpoint: MakeAppInterfaceTestMethod2Endpoint(svc), - TestMethodOptionalsEndpoint: MakeAppInterfaceTestMethodOptionalsEndpoint(svc), - } -} - -type CreateRequest struct { - NewData Data `json:"newData"` - Name string `json:"name"` - Data []byte `json:"data"` - Date time.Time `json:"date"` -} -type DeleteRequest struct { - Id uint `json:"id"` -} -type DeleteResponse struct { - A string `json:"a"` - B string `json:"b"` -} -type GetRequest struct { - Id int `json:"id"` - Name string `json:"name"` - Fname string `json:"fname"` - Price float32 `json:"price"` - N int `json:"n"` - B int `json:"b"` - Cc int `json:"cc"` -} -type GetAllRequest struct { - Members Members `json:"members"` -} -type TestMethodRequest struct { - Data map[string]interface{} `json:"data"` - Ss interface{} `json:"ss"` -} -type TestMethod2Request struct { - Ns string `json:"ns"` - Utype string `json:"utype"` - User string `json:"user"` - Restype string `json:"restype"` - Resource string `json:"resource"` - Permission string `json:"permission"` -} -type TestMethodOptionalsRequest struct { - Ns string `json:"ns"` - Options []Option `json:"options"` -} diff --git a/v2/fixture/ServiceRESTSingle/app/http_gen.go b/v2/fixture/ServiceRESTSingle/app/http_gen.go deleted file mode 100755 index ccf1302b..00000000 --- a/v2/fixture/ServiceRESTSingle/app/http_gen.go +++ /dev/null @@ -1,193 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - http2 "net/http" - - "github.com/go-kit/kit/endpoint" - "github.com/go-kit/kit/transport/http" -) - -type httpError struct { - code int -} - -func (e *httpError) Error() string { - return http2.StatusText(e.code) -} -func (e *httpError) StatusCode() int { - return e.code -} -func appInterfaceCreateErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceDeleteErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceGetErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceGetAllErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceStartErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceTestMethodErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceTestMethod2ErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func appInterfaceTestMethodOptionalsErrorDecode(code int) (err error) { - switch code { - default: - err = &httpError{code: code} - } - return -} - -func middlewareChain(middlewares []endpoint.Middleware) endpoint.Middleware { - return func(next endpoint.Endpoint) endpoint.Endpoint { - if len(middlewares) == 0 { - return next - } - outer := middlewares[0] - others := middlewares[1:] - for i := len(others) - 1; i >= 0; i-- { - next = others[i](next) - } - return outer(next) - } -} -func GenericServerOptions(v ...http.ServerOption) ServerOption { - return func(o *serverOpts) { o.genericServerOption = v } -} - -func GenericServerEndpointMiddlewares(v ...endpoint.Middleware) ServerOption { - return func(o *serverOpts) { o.genericEndpointMiddleware = v } -} - -type ServerOption func(*serverOpts) -type serverOpts struct { - genericServerOption []http.ServerOption - genericEndpointMiddleware []endpoint.Middleware - appInterfaceCreateServerOption []http.ServerOption - appInterfaceCreateEndpointMiddleware []endpoint.Middleware - appInterfaceDeleteServerOption []http.ServerOption - appInterfaceDeleteEndpointMiddleware []endpoint.Middleware - appInterfaceGetServerOption []http.ServerOption - appInterfaceGetEndpointMiddleware []endpoint.Middleware - appInterfaceGetAllServerOption []http.ServerOption - appInterfaceGetAllEndpointMiddleware []endpoint.Middleware - appInterfaceStartServerOption []http.ServerOption - appInterfaceStartEndpointMiddleware []endpoint.Middleware - appInterfaceTestMethodServerOption []http.ServerOption - appInterfaceTestMethodEndpointMiddleware []endpoint.Middleware - appInterfaceTestMethod2ServerOption []http.ServerOption - appInterfaceTestMethod2EndpointMiddleware []endpoint.Middleware - appInterfaceTestMethodOptionalsServerOption []http.ServerOption - appInterfaceTestMethodOptionalsEndpointMiddleware []endpoint.Middleware -} - -func AppInterfaceCreateServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceCreateServerOption = opt } -} - -func AppInterfaceCreateServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceCreateEndpointMiddleware = opt } -} - -func AppInterfaceDeleteServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceDeleteServerOption = opt } -} - -func AppInterfaceDeleteServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceDeleteEndpointMiddleware = opt } -} - -func AppInterfaceGetServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceGetServerOption = opt } -} - -func AppInterfaceGetServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceGetEndpointMiddleware = opt } -} - -func AppInterfaceGetAllServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceGetAllServerOption = opt } -} - -func AppInterfaceGetAllServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceGetAllEndpointMiddleware = opt } -} - -func AppInterfaceStartServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceStartServerOption = opt } -} - -func AppInterfaceStartServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceStartEndpointMiddleware = opt } -} - -func AppInterfaceTestMethodServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceTestMethodServerOption = opt } -} - -func AppInterfaceTestMethodServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceTestMethodEndpointMiddleware = opt } -} - -func AppInterfaceTestMethod2ServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceTestMethod2ServerOption = opt } -} - -func AppInterfaceTestMethod2ServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceTestMethod2EndpointMiddleware = opt } -} - -func AppInterfaceTestMethodOptionalsServerOptions(opt ...http.ServerOption) ServerOption { - return func(c *serverOpts) { c.appInterfaceTestMethodOptionalsServerOption = opt } -} - -func AppInterfaceTestMethodOptionalsServerEndpointMiddlewares(opt ...endpoint.Middleware) ServerOption { - return func(c *serverOpts) { c.appInterfaceTestMethodOptionalsEndpointMiddleware = opt } -} diff --git a/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go b/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go deleted file mode 100755 index e17772c3..00000000 --- a/v2/fixture/ServiceRESTSingle/app/instrumenting_gen.go +++ /dev/null @@ -1,142 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/metrics" - prometheus2 "github.com/go-kit/kit/metrics/prometheus" - "github.com/prometheus/client_golang/prometheus" -) - -type instrumentingOpts struct { - requestCount metrics.Counter - requestLatency metrics.Histogram - namespace string - subsystem string -} - -type InstrumentingOption func(*instrumentingOpts) - -func Namespace(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.namespace = v - } -} - -func Subsystem(v string) InstrumentingOption { - return func(o *instrumentingOpts) { - o.subsystem = v - } -} - -func RequestLatency(requestLatency metrics.Histogram) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestLatency = requestLatency - } -} - -func RequestCount(requestCount metrics.Counter) InstrumentingOption { - return func(o *instrumentingOpts) { - o.requestCount = requestCount - } -} - -type AppInterfaceInstrumentingMiddleware struct { - next AppInterface - opts *instrumentingOpts -} - -func (s *AppInterfaceInstrumentingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Create").Add(1) - s.opts.requestLatency.With("method", "Create").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Create(ctx, newData, name, data, date) -} - -func (s *AppInterfaceInstrumentingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Delete").Add(1) - s.opts.requestLatency.With("method", "Delete").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Delete(ctx, id) -} - -func (s *AppInterfaceInstrumentingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Get").Add(1) - s.opts.requestLatency.With("method", "Get").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Get(ctx, id, name, fname, price, n, b, cc) -} - -func (s *AppInterfaceInstrumentingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "GetAll").Add(1) - s.opts.requestLatency.With("method", "GetAll").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.GetAll(ctx, members) -} - -func (s *AppInterfaceInstrumentingMiddleware) Start(ctx context.Context) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "Start").Add(1) - s.opts.requestLatency.With("method", "Start").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.Start(ctx) -} - -func (s *AppInterfaceInstrumentingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod").Add(1) - s.opts.requestLatency.With("method", "TestMethod").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod(data, ss) -} - -func (s *AppInterfaceInstrumentingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethod2").Add(1) - s.opts.requestLatency.With("method", "TestMethod2").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) -} - -func (s *AppInterfaceInstrumentingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { - defer func(begin time.Time) { - s.opts.requestCount.With("method", "TestMethodOptionals").Add(1) - s.opts.requestLatency.With("method", "TestMethodOptionals").Observe(time.Since(begin).Seconds()) - }(time.Now()) - return s.next.TestMethodOptionals(ctx, ns, options...) -} - -func NewInstrumentingAppInterfaceMiddleware(s AppInterface, opts ...InstrumentingOption) AppInterface { - i := &AppInterfaceInstrumentingMiddleware{next: s, opts: &instrumentingOpts{}} - for _, o := range opts { - o(i.opts) - } - if i.opts.requestCount == nil { - i.opts.requestCount = prometheus2.NewCounterFrom(prometheus.CounterOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_count", - Help: "Number of requests received.", - }, []string{"method"}) - - } - if i.opts.requestLatency == nil { - i.opts.requestLatency = prometheus2.NewSummaryFrom(prometheus.SummaryOpts{ - Namespace: i.opts.namespace, - Subsystem: i.opts.subsystem, - Name: "request_latency_microseconds", - Help: "Total duration of requests in microseconds.", - }, []string{"method"}) - - } - return i -} diff --git a/v2/fixture/ServiceRESTSingle/app/logging_gen.go b/v2/fixture/ServiceRESTSingle/app/logging_gen.go deleted file mode 100755 index ee55dc05..00000000 --- a/v2/fixture/ServiceRESTSingle/app/logging_gen.go +++ /dev/null @@ -1,106 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "time" - - "github.com/go-kit/kit/log" -) - -type AppInterfaceLoggingMiddleware struct { - next AppInterface - logger log.Logger -} - -func (s *AppInterfaceLoggingMiddleware) Create(ctx context.Context, newData Data, name string, data []byte, date time.Time) error { - var ( - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Create", "took", time.Since(now)) - logger.Log("name", name, "data", len(data), "date", date, "err", logErr) - }(time.Now()) - err = s.next.Create(ctx, newData, name, data, date) - return err -} - -func (s *AppInterfaceLoggingMiddleware) Delete(ctx context.Context, id uint) (string, string, error) { - var ( - a string - b string - err error - ) - a, b, err = s.next.Delete(ctx, id) - return a, b, err -} - -func (s *AppInterfaceLoggingMiddleware) Get(ctx context.Context, id int, name string, fname string, price float32, n int, b int, cc int) (User, error) { - var ( - result User - err error - ) - defer func(now time.Time) { - logErr := err - if le, ok := err.(interface{ LogError() error }); ok { - logErr = le.LogError() - } - logger := log.WithPrefix(s.logger, "method", "Get", "took", time.Since(now)) - logger.Log("id", id, "name", name, "fname", fname, "price", price, "n", n, "b", b, "cc", cc, "result", result.LogParams(), "err", logErr) - }(time.Now()) - result, err = s.next.Get(ctx, id, name, fname, price, n, b, cc) - return result, err -} - -func (s *AppInterfaceLoggingMiddleware) GetAll(ctx context.Context, members Members) ([]*User, error) { - var ( - result []*User - err error - ) - result, err = s.next.GetAll(ctx, members) - return result, err -} - -func (s *AppInterfaceLoggingMiddleware) Start(ctx context.Context) error { - var ( - err error - ) - err = s.next.Start(ctx) - return err -} - -func (s *AppInterfaceLoggingMiddleware) TestMethod(data map[string]interface{}, ss interface{}) (map[string]map[int][]string, error) { - var ( - result map[string]map[int][]string - err error - ) - result, err = s.next.TestMethod(data, ss) - return result, err -} - -func (s *AppInterfaceLoggingMiddleware) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - var ( - err error - ) - err = s.next.TestMethod2(ctx, ns, utype, user, restype, resource, permission) - return err -} - -func (s *AppInterfaceLoggingMiddleware) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { - var ( - err error - ) - err = s.next.TestMethodOptionals(ctx, ns, options...) - return err -} - -func NewLoggingAppInterfaceMiddleware(s AppInterface, logger log.Logger) AppInterface { - return &AppInterfaceLoggingMiddleware{next: s, logger: logger} -} diff --git a/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json b/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json deleted file mode 100755 index 568daecb..00000000 --- a/v2/fixture/ServiceRESTSingle/app/openapi_rest_gen.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{},"paths":{"/app-interface-create":{"post":{"summary":"Create","description":" create comment.","parameters":[{"in":"query","name":"date","required":true,"schema":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"name":{"type":"string","format":"string","example":"abc"},"newData":{"description":"param of new data.","$ref":"#/components/schemas/Data"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-delete":{"post":{"summary":"Delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","example":1}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","format":"string","example":"abc"},"b":{"type":"string","format":"string","example":"abc"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-get-all":{"post":{"summary":"GetAll","description":" more comment and more and more comment and more and more comment and more.New line comment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"$ref":"#/components/schemas/Members"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-start":{"post":{"summary":"Start","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-test-method":{"post":{"summary":"TestMethod","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"ss":{"type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"key":{"properties":{"key":{"type":"array","items":{"type":"string","format":"string","example":"abc"}}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-test-method-optionals":{"post":{"summary":"TestMethodOptionals","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/app-interface-test-method2":{"post":{"summary":"TestMethod2","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ns":{"type":"string","format":"string","example":"abc"},"permission":{"type":"string","format":"string","example":"abc"},"resource":{"type":"string","format":"string","example":"abc"},"restype":{"type":"string","format":"string","example":"abc"},"user":{"type":"string","format":"string","example":"abc"},"utype":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"text/plain":{}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/get/{fname}":{"post":{"summary":"Get","description":" item.","parameters":[{"in":"path","name":"fname","required":true,"schema":{"type":"string","format":"string","example":"abc"}},{"in":"query","name":"cc","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"b":{"type":"integer","example":1},"id":{"type":"integer","example":1},"n":{"type":"integer","example":1},"name":{"type":"string","format":"string","example":"abc"},"price":{"type":"number","format":"float","example":1.11}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Data":{"properties":{"key":{"description":"Can be any value - string, number, boolean, array or object.","type":"object","anyOf":[{"type":"string","example":"abc"},{"type":"integer","example":1},{"type":"number","format":"float","example":1.11},{"type":"boolean","example":true},{"type":"array"},{"type":"object"}],"example":null}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}},"GeoJSON":{"properties":{"coordinates200":{"type":"array","items":{"type":"number","format":"float","example":1.11}}}},"Kind":{"type":"string","format":"string","example":"abc"},"Member":{"properties":{"id":{"type":"string","format":"string","example":"abc"}}},"Members":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"Profile":{"properties":{"phone":{"type":"string","format":"string","example":"abc"}}},"Recurse":{"properties":{"name":{"type":"string","format":"string","example":"abc"},"recurse":{"type":"array","items":{"$ref":"#/components/schemas/Recurse"}}}},"User":{"properties":{"created_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"data":{"$ref":"#/components/schemas/Data"},"id":{"type":"string","format":"uuid","example":"d5c02d83-6fbc-4dd7-8416-9f85ed80de46"},"kind":{"$ref":"#/components/schemas/Kind"},"last_seen":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"name":{"type":"string","format":"string","example":"abc"},"password":{"type":"string","format":"string","example":"abc"},"photo":{"type":"string","format":"byte","example":"U3dhZ2dlciByb2Nrcw=="},"point":{"$ref":"#/components/schemas/GeoJSON"},"profile":{"$ref":"#/components/schemas/Profile"},"recurse":{"$ref":"#/components/schemas/Recurse"},"updated_at":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"user":{"$ref":"#/components/schemas/User"}}}}}} diff --git a/v2/fixture/ServiceRESTSingle/app/server_gen.go b/v2/fixture/ServiceRESTSingle/app/server_gen.go deleted file mode 100755 index 02dcdeec..00000000 --- a/v2/fixture/ServiceRESTSingle/app/server_gen.go +++ /dev/null @@ -1,237 +0,0 @@ -//+build !swipe - -// Code generated by Swipe v2.0.0-rc4. DO NOT EDIT. - -package app - -import ( - "context" - "fmt" - "io" - "io/ioutil" - http2 "net/http" - "strconv" - "time" - - "github.com/go-kit/kit/transport/http" - "github.com/gorilla/mux" - "github.com/pquerna/ffjson/ffjson" -) - -type errorWrapper struct { - Error string `json:"error"` - Data interface{} `json:"data,omitempty"` -} - -func defaultErrorEncoder(ctx context.Context, err error, w http2.ResponseWriter) { - var errData interface{} - if e, ok := err.(interface{ ErrorData() interface{} }); ok { - errData = e.ErrorData() - } - data, merr := ffjson.Marshal(errorWrapper{Error: err.Error(), Data: errData}) - if merr != nil { - _, _ = w.Write([]byte("unexpected error")) - return - } - w.Header().Set("Content-Type", "application/json; charset=utf-8") - if headerer, ok := err.(http.Headerer); ok { - for k, values := range headerer.Headers() { - for _, v := range values { - w.Header().Add(k, v) - } - } - } - code := http2.StatusInternalServerError - if sc, ok := err.(http.StatusCoder); ok { - code = sc.StatusCode() - } - w.WriteHeader(code) - _, _ = w.Write(data) -} - -func encodeResponseHTTP(ctx context.Context, w http2.ResponseWriter, response interface{}) (err error) { - contentType := "application/json; charset=utf-8" - statusCode := 200 - h := w.Header() - var data []byte - if response != nil { - data, err = ffjson.Marshal(response) - if err != nil { - return err - } - } else { - contentType = "text/plain; charset=utf-8" - statusCode = 201 - } - h.Set("Content-Type", contentType) - w.WriteHeader(statusCode) - w.Write(data) - return nil -} - -// MakeHandlerREST HTTP REST Transport -func MakeHandlerREST(svcAppInterface AppInterface, options ...ServerOption) (http2.Handler, error) { - opts := &serverOpts{} - for _, o := range options { - o(opts) - } - opts.genericServerOption = append(opts.genericServerOption, http.ServerErrorEncoder(defaultErrorEncoder)) - epSet := MakeAppInterfaceEndpointSet(svcAppInterface) - epSet.CreateEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceCreateEndpointMiddleware...))(epSet.CreateEndpoint) - epSet.DeleteEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceDeleteEndpointMiddleware...))(epSet.DeleteEndpoint) - epSet.GetEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetEndpointMiddleware...))(epSet.GetEndpoint) - epSet.GetAllEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceGetAllEndpointMiddleware...))(epSet.GetAllEndpoint) - epSet.StartEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceStartEndpointMiddleware...))(epSet.StartEndpoint) - epSet.TestMethodEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodEndpointMiddleware...))(epSet.TestMethodEndpoint) - epSet.TestMethod2Endpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethod2EndpointMiddleware...))(epSet.TestMethod2Endpoint) - epSet.TestMethodOptionalsEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.appInterfaceTestMethodOptionalsEndpointMiddleware...))(epSet.TestMethodOptionalsEndpoint) - r := mux.NewRouter() - r.Methods(http2.MethodPost).Path("/create").Handler(http.NewServer( - epSet.CreateEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req CreateRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for CreateRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to CreateRequest: %w", err) - } - q := r.URL.Query() - tmpdate := q.Get("date") - if tmpdate != "" { - dateResult, err := time.Parse(time.RFC3339, tmpdate) - if err != nil { - return nil, err - } - req.Date = dateResult - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceCreateServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/delete").Handler(http.NewServer( - epSet.DeleteEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req DeleteRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for DeleteRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to DeleteRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceDeleteServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/get/{fname}").Handler(http.NewServer( - epSet.GetEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req GetRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for GetRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to GetRequest: %w", err) - } - vars := mux.Vars(r) - q := r.URL.Query() - req.Fname = vars["fname"] - tmpcc := q.Get("cc") - if tmpcc != "" { - ccInt, err := strconv.Atoi(tmpcc) - if err != nil { - return nil, err - } - req.Cc = int(ccInt) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceGetServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/getall").Handler(http.NewServer( - epSet.GetAllEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req GetAllRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for GetAllRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to GetAllRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceGetAllServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/start").Handler(http.NewServer( - epSet.StartEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - return nil, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceStartServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/testmethod").Handler(http.NewServer( - epSet.TestMethodEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req TestMethodRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for TestMethodRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethodRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceTestMethodServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/testmethod2").Handler(http.NewServer( - epSet.TestMethod2Endpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req TestMethod2Request - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for TestMethod2Request: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethod2Request: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceTestMethod2ServerOption...)..., - )) - r.Methods(http2.MethodPost).Path("/testmethodoptionals").Handler(http.NewServer( - epSet.TestMethodOptionalsEndpoint, - func(ctx context.Context, r *http2.Request) (interface{}, error) { - var req TestMethodOptionalsRequest - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("couldn't read body for TestMethodOptionalsRequest: %w", err) - } - err = ffjson.Unmarshal(b, &req) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("couldn't unmarshal body to TestMethodOptionalsRequest: %w", err) - } - return req, nil - }, - encodeResponseHTTP, - append(opts.genericServerOption, opts.appInterfaceTestMethodOptionalsServerOption...)..., - )) - return r, nil -} diff --git a/v2/fixture/ServiceRESTSingle/app/service.go b/v2/fixture/ServiceRESTSingle/app/service.go deleted file mode 100644 index c7816c0c..00000000 --- a/v2/fixture/ServiceRESTSingle/app/service.go +++ /dev/null @@ -1,146 +0,0 @@ -package app - -import ( - "context" - "time" - - "github.com/google/uuid" -) - -// ErrUnauthorized unauthorized. -type ErrUnauthorized struct{} - -func (ErrUnauthorized) Error() string { - return "unauthorized" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrUnauthorized) StatusCode() int { - return 401 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrUnauthorized) ErrorCode() int { - return -32001 -} - -// ErrForbidden forbidden. -type ErrForbidden struct{} - -func (ErrForbidden) Error() string { - return "forbidden" -} - -// StatusCode error value implements StatusCoder, -// the StatusCode will be used when encoding the error. -func (ErrForbidden) StatusCode() int { - return 403 -} - -// ErrorCode error value implements ErrorCoder, -// the ErrorCode will be used when encoding the error. -func (ErrForbidden) ErrorCode() int { - return -32002 -} - -type Member struct { - ID string `json:"id"` -} - -type Members []*Member - -type Data map[string]interface{} - -type AliasData = Data - -type GeoJSON struct { - Type string `json:"-"` - Coordinates []float64 `json:"coordinates200"` -} - -type Profile struct { - Phone string `json:"phone"` -} - -type Recurse struct { - Name string `json:"name"` - Recurse []*Recurse `json:"recurse"` -} - -type Kind string - -type User struct { - ID uuid.UUID `json:"id"` - Name string `json:"name"` - Password string `json:"password"` - Point GeoJSON `json:"point"` - LastSeen time.Time `json:"last_seen"` - Data AliasData `json:"data"` - Photo []byte `json:"photo"` - User *User `json:"user"` - Profile *Profile `json:"profile"` - Recurse *Recurse `json:"recurse"` - Kind Kind `json:"kind"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` -} - -func (u User) LogParams() []string { - return nil -} - -type AppInterface interface { - InterfaceB -} - -type Option struct { -} - -type InterfaceB interface { - // Create create comment. - // @newData param of new data. - Create(ctx context.Context, newData AliasData, name string, data []byte, date time.Time) (err error) - // Get item. - Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) - // GetAll more comment and more and more comment and more and more comment and more. - // New line comment. - GetAll(ctx context.Context, members Members) ([]*User, error) - Delete(ctx context.Context, id uint) (a string, b string, err error) - TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) - TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error - TestMethodOptionals(ctx context.Context, ns string, options ...Option) error - Start(ctx context.Context) error -} - -type serviceB struct { -} - -func (s *serviceB) Create(ctx context.Context, newData AliasData, name string, data []byte) (err error) { - return &ErrUnauthorized{} -} - -func (s *serviceB) Get(ctx context.Context, id int, name, fname string, price float32, n, b, cc int) (data User, err error) { - panic("implement me") -} - -func (s *serviceB) GetAll(ctx context.Context, members Members) ([]*User, error) { - panic("implement me") -} - -func (s *serviceB) Delete(ctx context.Context, id uint) (a string, b string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod(data map[string]interface{}, ss interface{}) (states map[string]map[int][]string, err error) { - panic("implement me") -} - -func (s *serviceB) TestMethod2(ctx context.Context, ns string, utype string, user string, restype string, resource string, permission string) error { - panic("implement me") -} - -func (s *serviceB) TestMethodOptionals(ctx context.Context, ns string, options ...Option) error { - panic("implement me") -} diff --git a/v2/fixture/ServiceRESTSingle/app/swipe.go b/v2/fixture/ServiceRESTSingle/app/swipe.go deleted file mode 100644 index 6ce52d6d..00000000 --- a/v2/fixture/ServiceRESTSingle/app/swipe.go +++ /dev/null @@ -1,62 +0,0 @@ -//+build swipe - -package app - -import ( - "net/http" - - swipe "github.com/swipe-io/swipe/v2" -) - -func Swipe() { - swipe.Build( - swipe.Service( - swipe.Interface((*AppInterface)(nil), ""), - - swipe.HTTPServer(), - - swipe.ClientsEnable([]string{"go", "js"}), - - swipe.OpenapiEnable(), - swipe.OpenapiOutput("./"), - - swipe.ReadmeEnable(), - - swipe.MethodOptions(AppInterface.Create, - swipe.RESTMethod(http.MethodPost), - swipe.RESTQueryVars([]string{"date", "date"}), - swipe.Logging(true), - swipe.LoggingParams([]string{}, []string{"newData"}), - ), - swipe.MethodOptions(AppInterface.Get, - swipe.RESTPath("/get/{fname}"), - swipe.RESTMethod(http.MethodPost), - swipe.RESTQueryVars([]string{"cc", "cc"}), - swipe.RESTHeaderVars([]string{"fname", "fname"}), - swipe.Logging(true), - ), - swipe.MethodOptions(InterfaceB.Delete, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.GetAll, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.TestMethod, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.TestMethod2, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.TestMethodOptionals, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodOptions(InterfaceB.Start, - swipe.RESTMethod(http.MethodPost), - ), - swipe.MethodDefaultOptions( - swipe.Logging(false), - swipe.Instrumenting(true), - ), - ), - ) -} diff --git a/v2/internal/interface/generator/endpoint_factory.go b/v2/internal/interface/generator/endpoint_factory.go deleted file mode 100644 index aa530c9c..00000000 --- a/v2/internal/interface/generator/endpoint_factory.go +++ /dev/null @@ -1,86 +0,0 @@ -package generator - -import ( - "context" - - "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/writer" -) - -type endpointFactory struct { - writer.GoLangWriter - interfaces model.Interfaces - prefix string - i *importer.Importer -} - -func (g *endpointFactory) Prepare(ctx context.Context) error { - return nil -} - -func (g *endpointFactory) Process(ctx context.Context) error { - for i := 0; i < g.interfaces.Len(); i++ { - iface := g.interfaces.At(i) - - epFactoryName := iface.Name() + "ClientEndpointFactory" - kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - ioPkg := g.i.Import("io", "io") - stringsPkg := g.i.Import("strings", "strings") - - g.W("type %s struct{\n", epFactoryName) - g.W("opts []ClientOption\n") - - g.W("instance string\n") - g.W("}\n\n") - - for _, m := range iface.Methods() { - g.W("func (f *%s) %sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, m.Name, kitEndpointPkg, ioPkg) - g.W("if f.instance != \"\"{\n") - g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(f.instance, \"/\")", stringsPkg) - g.W("}\n") - g.W("c, err := NewClient%s(instance, f.opts...)\n", g.prefix) - g.WriteCheckErr(func() { - g.W("return nil, nil, err\n") - }) - g.W("return ") - g.W("make%sEndpoint(c), nil, nil\n", m.UcName) - g.W("\n}\n\n") - } - - g.W("func New%sClientFactory(instance string,", iface.Name()) - g.W("opts ...ClientOption") - g.W(") *%s {\n", epFactoryName) - - g.W("return &%s{instance: instance, opts: opts}\n", epFactoryName) - g.W("}\n") - } - return nil -} - -func (g *endpointFactory) PkgName() string { - return "" -} - -func (g *endpointFactory) OutputDir() string { - return "" -} - -func (g *endpointFactory) Filename() string { - return "endpoint_factory_gen.go" -} - -func (g *endpointFactory) SetImporter(i *importer.Importer) { - g.i = i -} - -func NewEndpointFactory( - interfaces model.Interfaces, - prefix string, -) generator.Generator { - return &endpointFactory{ - interfaces: interfaces, - prefix: prefix, - } -} From 0cbcb41303f6c04069260fd70cc8ec46e4045d9f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 16:03:35 +0300 Subject: [PATCH 175/293] fix: defining the service package path --- v2/internal/astloader/astloader.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v2/internal/astloader/astloader.go b/v2/internal/astloader/astloader.go index 5982b8c8..20b2ad14 100644 --- a/v2/internal/astloader/astloader.go +++ b/v2/internal/astloader/astloader.go @@ -62,7 +62,9 @@ func (l *Loader) Process() (data *Data, errs []error) { err error ) if l.mod == nil { - pkgPath = strings.Split(l.wd, filepath.Join(build.Default.GOPATH, "src")+"/")[1] + basePath := strings.Replace(l.wd, filepath.Join(build.Default.GOPATH, "src")+string(filepath.Separator), "", -1) + parts := strings.Split(basePath, string(filepath.Separator)) + pkgPath = strings.Join(parts[:3], string(filepath.Separator)) } else { pkgPath = l.mod.Module.Mod.Path } From 2d10245c5dd309297a4240982673ec3923d2fa64 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 16:12:47 +0300 Subject: [PATCH 176/293] refactor: added generate interface --- v2/internal/interface/generator/interface.go | 61 ++++++++++++++++++++ v2/internal/interface/processor/service.go | 4 +- 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 v2/internal/interface/generator/interface.go diff --git a/v2/internal/interface/generator/interface.go b/v2/internal/interface/generator/interface.go new file mode 100644 index 00000000..5deca8c6 --- /dev/null +++ b/v2/internal/interface/generator/interface.go @@ -0,0 +1,61 @@ +package generator + +import ( + "bytes" + "context" + stdtypes "go/types" + + "github.com/swipe-io/swipe/v2/internal/domain/model" + "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/swipe/v2/internal/writer" +) + +type interfaceGenerator struct { + writer.BaseWriter + interfaces model.Interfaces + i *importer.Importer +} + +func (g *interfaceGenerator) Prepare(ctx context.Context) (err error) { + return nil +} + +func (g *interfaceGenerator) Process(ctx context.Context) (err error) { + for i := 0; i < g.interfaces.Len(); i++ { + iface := g.interfaces.At(i) + + interfaceType := iface.UcNameWithPrefix() + "Interface" + + g.W("type %s interface {\n", interfaceType) + for _, m := range iface.Methods() { + sig := m.T.(*stdtypes.Signature) + buf := new(bytes.Buffer) + buf.WriteString(m.Name) + stdtypes.WriteSignature(buf, sig, g.i.QualifyPkg) + g.W("%s\n", buf.String()) + } + g.W("}\n") + } + return nil +} + +func (g *interfaceGenerator) PkgName() string { + return "" +} + +func (g *interfaceGenerator) OutputDir() string { + return "" +} + +func (g *interfaceGenerator) Filename() string { + return "interface.go" +} + +func (g *interfaceGenerator) SetImporter(i *importer.Importer) { + g.i = i +} + +func NewInterface(interfaces model.Interfaces) generator.Generator { + return &interfaceGenerator{interfaces: interfaces} +} diff --git a/v2/internal/interface/processor/service.go b/v2/internal/interface/processor/service.go index 223527a7..03496be9 100644 --- a/v2/internal/interface/processor/service.go +++ b/v2/internal/interface/processor/service.go @@ -22,7 +22,8 @@ func (p *serviceProcessor) Pkg() *packages.Package { } func (p *serviceProcessor) Generators() []ug.Generator { - var generators []ug.Generator + generators := []ug.Generator{generator.NewInterface(p.sg.Interfaces())} + if p.sg.FoundService() { generators = append(generators, generator.NewEndpoint(p.sg)) } @@ -64,7 +65,6 @@ func (p *serviceProcessor) Generators() []ug.Generator { if p.sg.GoClientEnable() { generators = append(generators, generator.NewClientStruct(p.sg), - //generator.NewEndpointFactory(p.sg.Interfaces(), p.sg.Prefix()), ) } if p.sg.JSONRPCEnable() { From bf5fec2f3d91871ba553a97e47b29d6199290057 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 16:13:12 +0300 Subject: [PATCH 177/293] refactor: makeEpSetName change make name --- v2/internal/interface/generator/utils.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/v2/internal/interface/generator/utils.go b/v2/internal/interface/generator/utils.go index 230606aa..7a925733 100644 --- a/v2/internal/interface/generator/utils.go +++ b/v2/internal/interface/generator/utils.go @@ -104,12 +104,8 @@ func normalizeType(t stdtypes.Type) stdtypes.Type { } } -func makeEpSetName(iface *model.ServiceInterface, ifaceLen int) (epSetName string) { - epSetName = "epSet" - if ifaceLen > 1 { - epSetName = "epSet" + iface.NameExport() - } - return +func makeEpSetName(iface *model.ServiceInterface) string { + return iface.LcNameWithPrefix() + "EpSet" } func parseMethodComments(comments []string) (methodComment string, paramsComment map[string]string) { From 3070b9900ebd8e4978c8da7f678bc13dbca1fc47 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 16:21:17 +0300 Subject: [PATCH 178/293] fix: fixed generation of function and structure names BREAKING CHANGE: the name specified in the Interface setting is now used only to define the scope of the API request, in REST it is /scope/service/path, in JSON RPC scope.service.methodName, the names of constructor functions for logging and instrumentation will change during generation. --- v2/cmd/swipe/main.go | 2 +- v2/gen_test.go | 39 +- v2/go.mod | 17 +- v2/go.sum | 449 +----------------- v2/internal/domain/model/service.go | 62 ++- v2/internal/interface/gateway/service.go | 86 ++-- .../interface/generator/client_struct.go | 46 +- v2/internal/interface/generator/endpoint.go | 31 +- .../interface/generator/http_gateway.go | 6 +- .../interface/generator/http_transport.go | 29 +- .../interface/generator/instrumenting.go | 11 +- .../interface/generator/jsonrpc_doc.go | 4 +- .../interface/generator/jsonrpc_go_client.go | 32 +- .../interface/generator/jsonrpc_js_client.go | 42 +- .../interface/generator/jsonrpc_server.go | 56 +-- v2/internal/interface/generator/logging.go | 12 +- v2/internal/interface/generator/openapi.go | 37 +- .../interface/generator/rest_go_client.go | 29 +- .../interface/generator/rest_server.go | 36 +- v2/internal/interface/registry/processor.go | 2 +- v2/internal/usecase/gateway/service.go | 1 - v2/swipe.go | 5 +- 22 files changed, 295 insertions(+), 739 deletions(-) diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index 932cef36..52b603c8 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -261,7 +261,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } log.Println(color.LightGreen.Render("Command execution completed successfully")) - log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Now().Sub(startCmd).String())) + log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Since(startCmd).String())) return subcommands.ExitSuccess } diff --git a/v2/gen_test.go b/v2/gen_test.go index 76ef15f3..889185e9 100644 --- a/v2/gen_test.go +++ b/v2/gen_test.go @@ -23,8 +23,11 @@ import ( var record = flag.Bool("record", false, "write expected result without running tests") var onlyDiff = flag.Bool("only-diff", false, "show only diff") -func newGeneratorExecutor(wd string) ue.GenerationExecutor { - astl := astloader.NewLoader(wd, os.Environ(), []string{"."}, nil) +func newGeneratorExecutor(wd string, pkgs []string) ue.GenerationExecutor { + patterns := []string{"."} + patterns = append(patterns, pkgs...) + + astl := astloader.NewLoader(wd, os.Environ(), patterns, nil) l := option.NewLoader(astl) r := registry.NewRegistry(l) i := factory.NewImporterFactory() @@ -33,19 +36,27 @@ func newGeneratorExecutor(wd string) ue.GenerationExecutor { } func TestSwipe(t *testing.T) { - const testRoot = "fixture" - - testdataEnts, err := ioutil.ReadDir(testRoot) + //testRoot, err := filepath.Abs("../..") + //if err != nil { + // t.Fatal(err) + //} + testdataEnts, err := filepath.Glob("../../../../github.pie.apple.com/ISS-Tools/zeus-gateway") + //testdataEnts, err := ioutil.ReadDir(testRoot) if err != nil { t.Fatal(err) } tests := make([]*testCase, 0, len(testdataEnts)) - for _, ent := range testdataEnts { - name := ent.Name() - if !ent.IsDir() || strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") { - continue + for _, name := range testdataEnts { + var pkgs []string + if data, err := ioutil.ReadFile(filepath.Join(name, "pkgs")); err == nil { + pkgs = strings.Split(string(data), "\n") } - test, err := loadTestCase(filepath.Join(testRoot, name)) + + //name := ent.Name() + //if !ent.IsDir() || strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") { + // continue + //} + test, err := loadTestCase(name, pkgs) if err != nil { t.Error(err) continue @@ -53,7 +64,7 @@ func TestSwipe(t *testing.T) { tests = append(tests, test) } for _, test := range tests { - ge := newGeneratorExecutor(test.testCasePath) + ge := newGeneratorExecutor(test.testCasePath, test.pkgs) test := test t.Run(test.name, func(t *testing.T) { @@ -116,11 +127,12 @@ type testCase struct { expectedError bool expectedErrorStrings []string testCasePath string + pkgs []string } -func loadTestCase(root string) (*testCase, error) { +func loadTestCase(root string, pkgs []string) (*testCase, error) { name := filepath.Base(root) - testCasePath, err := filepath.Abs(filepath.Join(root, "app")) + testCasePath, err := filepath.Abs(filepath.Join(root, "pkg", "transport")) if err != nil { return nil, err } @@ -149,6 +161,7 @@ func loadTestCase(root string) (*testCase, error) { expectedOutput: expectedOutput, expectedError: false, expectedErrorStrings: nil, + pkgs: pkgs, }, nil } diff --git a/v2/go.mod b/v2/go.mod index f530d845..c7c07e5e 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -1,22 +1,23 @@ module github.com/swipe-io/swipe/v2 -go 1.13 +go 1.16 require ( github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee + github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structtag v1.2.0 - github.com/go-kit/kit v0.10.0 github.com/google/go-cmp v0.4.0 github.com/google/subcommands v1.2.0 - github.com/google/uuid v1.0.0 github.com/gookit/color v1.2.5 - github.com/gorilla/mux v1.8.0 - github.com/l-vitaly/go-kit v1.13.0 + github.com/kr/pretty v0.2.0 // indirect github.com/lib/pq v1.8.0 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 - github.com/prometheus/client_golang v1.9.0 + github.com/stretchr/testify v1.5.1 // indirect github.com/swipe-io/strcase v0.1.5 - golang.org/x/mod v0.3.0 - golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a + golang.org/x/mod v0.4.2 + golang.org/x/sys v0.0.0-20210314195730-07df6a141424 // indirect + golang.org/x/tools v0.1.0 + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect + gopkg.in/yaml.v2 v2.3.0 // indirect gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 ) diff --git a/v2/go.sum b/v2/go.sum index f3af089f..0fa5cd1d 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -1,488 +1,67 @@ -cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gammazero/nexus v2.1.0+incompatible/go.mod h1:0qqt3FvYuipZoxpd+k7ZrNagbFd9BYGwlOPRloSZMKw= -github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-ozzo/ozzo-routing v2.1.4+incompatible/go.mod h1:hvoxy5M9SJaY0viZvcCsODidtUm5CzRbYKEWuQpr+2A= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/gddo v0.0.0-20200310004957-95ce5a452273/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/graphql-go/graphql v0.7.9/go.mod h1:k6yrAYQaSP59DC5UVxbgxESlmVyojThKdORUqGDGmrI= -github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/l-vitaly/go-kit v1.13.0 h1:kAy3A7FZ4EMT9RWFarNVRhxrdrjOeeB37o25mILRkHw= -github.com/l-vitaly/go-kit v1.13.0/go.mod h1:TtVRDpb6s3/xbGsgwMUl8AYZFRwEgKeJ51WW2Nb4gOY= -github.com/l-vitaly/rmqrpc v0.0.0-20170301101204-95b1ce811f78/go.mod h1:RRveuDTon8C8upAP4Cgp0nhA9gQhI2/io4etRR75C6s= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= -github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87/go.mod h1:zwr0xP4ZJxwCS/g2d+AUOUwfq/j2NC7a1rK3F0ZbVYM= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.9.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210314195730-07df6a141424 h1:+39ahH47SWi1PhMRAHfIrm8f69HRZ5K2koXH6dmO8TQ= +golang.org/x/sys v0.0.0-20210314195730-07df6a141424/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a h1:gILuVKC+ZPD6g/tj6zBOdnOH1ZHI0zZ86+KLMogc6/s= -golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/v2/internal/domain/model/service.go b/v2/internal/domain/model/service.go index fc062e28..a92d2a5d 100644 --- a/v2/internal/domain/model/service.go +++ b/v2/internal/domain/model/service.go @@ -5,6 +5,8 @@ import ( "go/ast" stdtypes "go/types" + "github.com/swipe-io/strcase" + "golang.org/x/tools/go/packages" ) @@ -25,18 +27,20 @@ func (i Interfaces) At(index int) *ServiceInterface { } type ServiceInterface struct { - name string - loweName string - nameExport string - nameUnExport string + ucName string + lcName string serviceType stdtypes.Type serviceTypeName *stdtypes.Named serviceIface *stdtypes.Interface serviceMethods []ServiceMethod - isNameChange bool external bool externalSwipePkg *packages.Package appName string + ns string +} + +func (g *ServiceInterface) Namespace() string { + return g.ns } func (g *ServiceInterface) AppName() string { @@ -51,24 +55,26 @@ func (g *ServiceInterface) External() bool { return g.external } -func (g *ServiceInterface) IsNameChange() bool { - return g.isNameChange +func (g *ServiceInterface) UcName() string { + return g.ucName } -func (g *ServiceInterface) NameExport() string { - return g.nameExport -} - -func (g *ServiceInterface) NameUnExport() string { - return g.nameUnExport +func (g *ServiceInterface) UcNameWithPrefix() string { + if g.external { + return g.appName + g.ucName + } + return g.ucName } -func (g *ServiceInterface) Name() string { - return g.name +func (g *ServiceInterface) LcName() string { + return g.lcName } -func (g *ServiceInterface) LoweName() string { - return g.loweName +func (g *ServiceInterface) LcNameWithPrefix() string { + if g.external { + return strcase.ToLowerCamel(g.appName) + g.ucName + } + return g.lcName } func (g *ServiceInterface) Methods() []ServiceMethod { @@ -87,13 +93,19 @@ func (g *ServiceInterface) Interface() *stdtypes.Interface { return g.serviceIface } -func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNameChange bool, serviceType stdtypes.Type, serviceTypeName *stdtypes.Named, serviceIface *stdtypes.Interface, serviceMethods []ServiceMethod, external bool, externalSwipePkg *packages.Package, appName string) *ServiceInterface { +func NewServiceInterface( + ucName, lcName string, + serviceType stdtypes.Type, + serviceTypeName *stdtypes.Named, + serviceIface *stdtypes.Interface, + serviceMethods []ServiceMethod, + external bool, + externalSwipePkg *packages.Package, + appName, ns string, +) *ServiceInterface { return &ServiceInterface{ - name: name, - loweName: lowerName, - nameExport: nameExport, - nameUnExport: nameUnExport, - isNameChange: isNameChange, + ucName: ucName, + lcName: lcName, serviceType: serviceType, serviceTypeName: serviceTypeName, serviceIface: serviceIface, @@ -101,6 +113,7 @@ func NewServiceInterface(name, lowerName, nameExport, nameUnExport string, isNam external: external, externalSwipePkg: externalSwipePkg, appName: appName, + ns: ns, } } @@ -125,8 +138,9 @@ type DeclType struct { type ServiceMethod struct { Type *stdtypes.Func Name string - UcName string LcName string + IfaceUcName string + IfaceLcName string NameRequest string NameResponse string Params VarSlice diff --git a/v2/internal/interface/gateway/service.go b/v2/internal/interface/gateway/service.go index cfdf376a..ad5dd577 100644 --- a/v2/internal/interface/gateway/service.go +++ b/v2/internal/interface/gateway/service.go @@ -24,6 +24,7 @@ import ( type serviceGateway struct { pkg *packages.Package + pkgPath string transportType model.Transport useFast bool graphTypes *graph.Graph @@ -35,7 +36,6 @@ type serviceGateway struct { defaultMethodOptions model.MethodOption clientsEnable []string errors map[uint32]*model.HTTPError - prefix string openapiEnable bool openapiOutput string openapiInfo openapi.Info @@ -87,10 +87,6 @@ func (g *serviceGateway) Interfaces() model.Interfaces { return g.interfaces } -func (g *serviceGateway) Prefix() string { - return g.prefix -} - func (g *serviceGateway) UseFast() bool { return g.useFast } @@ -233,13 +229,14 @@ func (g *serviceGateway) loadReadme(o *option.Option) error { func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32]*model.HTTPError, ifaceLen int) (*model.ServiceInterface, error) { ifaceOpt := option.MustOption(o.At("iface")) - nameOpt := option.MustOption(o.At("name")) + nsOpt := option.MustOption(o.At("ns")) ifacePtr, ok := ifaceOpt.Value.Type().(*stdtypes.Pointer) if !ok { return nil, errors.NotePosition(o.Position, fmt.Errorf("the iface option is required must be a pointer to an interface type; found %s", stdtypes.TypeString(o.Value.Type(), nil))) } + ifaceType, ok := ifacePtr.Elem().Underlying().(*stdtypes.Interface) if !ok { return nil, errors.NotePosition(o.Position, @@ -247,10 +244,11 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] } var graphTypes = g.graphTypes + var externalPkgFound bool ifaceNamed := ifacePtr.Elem().(*stdtypes.Named) - var externalSwipePkg *packages.Package + appPkg := g.pkg for _, extOpt := range g.externalOptions { if ifaces, ok := extOpt.Option.Slice("Interface"); ok { @@ -261,12 +259,15 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] if ifaceExtType.NumEmbeddeds() > 0 { for i := 0; i < ifaceExtType.NumEmbeddeds(); i++ { if ifaceExtType.EmbeddedType(i).String() == ifacePtr.Elem().String() { - externalSwipePkg = extOpt.Pkg + appPkg = extOpt.Pkg + externalPkgFound = true } } } if ifaceExtPtr.Elem().String() == ifacePtr.Elem().String() { - externalSwipePkg = extOpt.Pkg + appPkg = extOpt.Pkg + externalPkgFound = true + break } } } @@ -278,27 +279,18 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] external := basePkgService != basePkgInternal var appName string - if externalSwipePkg != nil { - id := stdstrings.Split(externalSwipePkg.PkgPath, "/")[:3][2] - appName = strcase.ToCamel(id) - } else if external { + id := stdstrings.Split(appPkg.PkgPath, "/")[:3][2] + appName = strcase.ToCamel(id) + + if external && !externalPkgFound { return nil, errors.NotePosition(o.Position, fmt.Errorf("you need to add an external service package for %s", stdtypes.TypeString(o.Value.Type(), nil))) } - ifaceName := strcase.ToCamel(ifaceNamed.Obj().Name()) - ifaceLcName := strcase.ToLowerCamel(ifaceName) - - nameExport := ifaceName - nameUnExport := ifaceLcName - name := nameOpt.Value.String() - isNameChange := false + ifaceUcName := ifaceNamed.Obj().Name() + ifaceLcName := strcase.ToLowerCamel(ifaceUcName) - if name != "" { - nameExport = strcase.ToCamel(name) - nameUnExport = strcase.ToLowerCamel(name) - isNameChange = true - } + ns := nsOpt.Value.String() var serviceMethods []model.ServiceMethod @@ -314,23 +306,24 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] comments, _ := g.commentFuncs[m.String()] - nameUc := nameExport + m.Name() - nameLc := nameUnExport + m.Name() + ifaceNameUc := ifaceUcName + m.Name() + ifaceNameLc := ifaceLcName + m.Name() nameRequest := m.Name() + "Request" nameResponse := m.Name() + "Response" if ifaceLen > 1 { - nameRequest = nameUc + m.Name() + "Request" - nameResponse = nameUc + m.Name() + "Response" + nameRequest = ifaceNameUc + "Request" + nameResponse = ifaceNameUc + "Response" } sm := model.ServiceMethod{ Type: m, T: m.Type(), Name: m.Name(), - UcName: nameUc, - LcName: nameLc, + LcName: strcase.ToLowerCamel(m.Name()), + IfaceUcName: ifaceNameUc, + IfaceLcName: ifaceNameLc, NameRequest: nameRequest, NameResponse: nameResponse, Comments: comments, @@ -418,25 +411,25 @@ func (g *serviceGateway) loadService(o *option.Option, genericErrors map[uint32] serviceMethods = append(serviceMethods, sm) } return model.NewServiceInterface( - ifaceName, + ifaceUcName, ifaceLcName, - nameExport, - nameUnExport, - isNameChange, ifacePtr.Elem(), ifaceNamed, ifaceType, serviceMethods, external, - externalSwipePkg, + appPkg, appName, + ns, ), nil } func (g *serviceGateway) load(o *option.Option) error { - parts := filepath.SplitList(g.wd) + + parts := stdstrings.Split(g.pkgPath, string(filepath.Separator)) + g.appName = parts[len(parts)-1] - if nameOpt, ok := o.At("Name"); ok { + if nameOpt, ok := o.At("AppName"); ok { if name := nameOpt.Value.String(); name != "" { g.appName = strcase.ToCamel(name) } @@ -455,11 +448,6 @@ func (g *serviceGateway) load(o *option.Option) error { return err } - g.prefix = "REST" - if g.jsonRPCEnable { - g.prefix = "JSONRPC" - } - errorMethodName := "StatusCode" if g.jsonRPCEnable { errorMethodName = "ErrorCode" @@ -816,18 +804,10 @@ func httpBraceIndices(s string) ([]int, error) { return idxs, nil } -func NewServiceGateway( - pkg *packages.Package, - o *option.Option, - graphTypes *graph.Graph, - commentFuncs map[string][]string, - commentFields map[string]map[string]string, - enums *typeutil.Map, - wd string, - externalOptions []*option.ResultOption, -) (gateway.ServiceGateway, error) { +func NewServiceGateway(pkg *packages.Package, pkgPath string, o *option.Option, graphTypes *graph.Graph, commentFuncs map[string][]string, commentFields map[string]map[string]string, enums *typeutil.Map, wd string, externalOptions []*option.ResultOption) (gateway.ServiceGateway, error) { g := &serviceGateway{ pkg: pkg, + pkgPath: pkgPath, graphTypes: graphTypes, commentFuncs: commentFuncs, commentFields: commentFields, diff --git a/v2/internal/interface/generator/client_struct.go b/v2/internal/interface/generator/client_struct.go index ef83d58d..831e9983 100644 --- a/v2/internal/interface/generator/client_struct.go +++ b/v2/internal/interface/generator/client_struct.go @@ -6,17 +6,14 @@ import ( stdtypes "go/types" "github.com/swipe-io/strcase" - - "github.com/swipe-io/swipe/v2/internal/types" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) type clientStructOptionsGateway interface { - Prefix() string UseFast() bool JSONRPCEnable() bool Interfaces() model.Interfaces @@ -54,24 +51,35 @@ func (g *clientStruct) Process(ctx context.Context) error { } endpointPkg = g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - clientOptionType := fmt.Sprintf("ClientOption") + clientOptionType := "ClientOption" if g.options.Interfaces().Len() > 1 { g.W("type AppClient struct {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - g.W("%sClient %s\n", iface.NameExport(), typeStr) + typeStr := iface.UcName() + "Interface" + g.W("%sClient %s\n", iface.UcName(), typeStr) } g.W("}\n\n") - g.W("func NewClient%s(tgt string", g.options.Prefix()) + if g.options.JSONRPCEnable() { + g.W("func NewClientJSONRPC(tgt string") + } else { + g.W("func NewClientREST(tgt string") + } + g.W(" ,opts ...ClientOption") g.W(") (*AppClient, error) {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%sClient, err := NewClient%s%s(tgt, opts...)\n", iface.NameUnExport(), g.options.Prefix(), iface.NameExport()) + + if g.options.JSONRPCEnable() { + g.W("%sClient, err := NewClientJSONRPC%s(tgt, opts...)\n", iface.LcName(), iface.UcName()) + } else { + g.W("%sClient, err := NewClientREST%s(tgt, opts...)\n", iface.LcName(), iface.UcName()) + } + g.WriteCheckErr(func() { g.W("return nil, err") }) @@ -80,7 +88,7 @@ func (g *clientStruct) Process(ctx context.Context) error { g.W("return &AppClient{\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]sClient: %[2]sClient,\n", iface.NameExport(), iface.NameUnExport()) + g.W("%[1]sClient: %[2]sClient,\n", iface.UcName(), iface.LcName()) } g.W("}, nil\n") g.W("}\n\n") @@ -91,8 +99,8 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { - g.W("%sClientOption []%s.ClientOption\n", m.LcName, kitHTTPPkg) - g.W("%sEndpointMiddleware []%s.Middleware\n", m.LcName, endpointPkg) + g.W("%sClientOption []%s.ClientOption\n", m.IfaceLcName, kitHTTPPkg) + g.W("%sEndpointMiddleware []%s.Middleware\n", m.IfaceLcName, endpointPkg) } } g.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) @@ -122,20 +130,20 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { - g.WriteFunc(m.UcName+"ClientOptions", + g.WriteFunc(m.IfaceUcName+"ClientOptions", "", []string{"opt", "..." + kitHTTPPkg + ".ClientOption"}, []string{"", clientOptionType}, func() { - g.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", m.LcName) + g.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", m.IfaceLcName) }, ) - g.WriteFunc(m.UcName+"ClientEndpointMiddlewares", + g.WriteFunc(m.IfaceUcName+"ClientEndpointMiddlewares", "", []string{"opt", "..." + endpointPkg + ".Middleware"}, []string{"", clientOptionType}, func() { - g.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", m.LcName) + g.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", m.IfaceLcName) }, ) } @@ -144,13 +152,13 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - clientType := fmt.Sprintf("client%s", iface.NameExport()) + clientType := fmt.Sprintf("client%s", iface.UcName()) contextPkg = g.i.Import("context", "context") g.W("type %s struct {\n", clientType) for _, m := range iface.Methods() { - g.W("%sEndpoint %s.Endpoint\n", m.LcName, endpointPkg) + g.W("%sEndpoint %s.Endpoint\n", m.IfaceLcName, endpointPkg) } @@ -196,7 +204,7 @@ func (g *clientStruct) Process(ctx context.Context) error { g.W(" := ") } - g.W("c.%sEndpoint(", m.LcName) + g.W("c.%sEndpoint(", m.IfaceLcName) if m.ParamCtx != nil { g.W("%s,", m.ParamCtx.Name()) diff --git a/v2/internal/interface/generator/endpoint.go b/v2/internal/interface/generator/endpoint.go index 0890d17a..915e81cb 100644 --- a/v2/internal/interface/generator/endpoint.go +++ b/v2/internal/interface/generator/endpoint.go @@ -4,12 +4,10 @@ import ( "context" stdtypes "go/types" - "github.com/swipe-io/swipe/v2/internal/types" - - "github.com/swipe-io/swipe/v2/internal/domain/model" - "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) @@ -41,8 +39,8 @@ func (g *endpoint) Process(ctx context.Context) error { continue } - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - epSetName := iface.NameExport() + "EndpointSet" + typeStr := iface.UcName() + "Interface" + epSetName := iface.UcName() + "EndpointSet" g.W("type %s struct {\n", epSetName) kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") @@ -51,16 +49,14 @@ func (g *endpoint) Process(ctx context.Context) error { } g.W("}\n") - if !iface.External() { - g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) - g.W("return %s{\n", epSetName) - for _, m := range iface.Methods() { - g.W("%sEndpoint: Make%sEndpoint(svc),\n", m.Name, m.UcName) + g.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) + g.W("return %s{\n", epSetName) + for _, m := range iface.Methods() { + g.W("%sEndpoint: Make%sEndpoint(svc),\n", m.Name, m.IfaceUcName) - } - g.W("}\n") - g.W("}\n") } + g.W("}\n") + g.W("}\n") for _, m := range iface.Methods() { if len(m.Params) > 0 { @@ -113,10 +109,10 @@ func (g *endpoint) writeEndpointMake() { contextPkg := g.i.Import("context", "context") kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + typeStr := iface.UcName() + "Interface" for _, m := range iface.Methods() { - g.W("func Make%sEndpoint(s %s) %s.Endpoint {\n", m.UcName, typeStr, kitEndpointPkg) + g.W("func Make%sEndpoint(s %s) %s.Endpoint {\n", m.IfaceUcName, typeStr, kitEndpointPkg) g.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) var callParams []string @@ -124,9 +120,6 @@ func (g *endpoint) writeEndpointMake() { callParams = append(callParams, "ctx") } - methodParams := model.VarSlice{} - methodParams = append(methodParams, m.Params...) - callParams = append(callParams, types.Params(m.Params, func(p *stdtypes.Var) []string { return []string{"req." + strcase.ToCamel(p.Name())} }, nil)...) diff --git a/v2/internal/interface/generator/http_gateway.go b/v2/internal/interface/generator/http_gateway.go index 757a4e96..dd838fcc 100644 --- a/v2/internal/interface/generator/http_gateway.go +++ b/v2/internal/interface/generator/http_gateway.go @@ -69,7 +69,7 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { if !s.External() { continue } - g.W("%s struct {\n", s.AppName()) + g.W("%s struct {\n", s.UcName()) for _, method := range s.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) } @@ -84,13 +84,13 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { transportExtPkg := g.i.Import(s.ExternalSwipePkg().Name, s.ExternalSwipePkg().PkgPath) - g.W("type %sEndpointFactory interface {\n", s.AppName()) + g.W("type %sEndpointFactory interface {\n", s.UcName()) for _, method := range s.Methods() { g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) } g.W("}\n\n") - g.W("type %sOption struct {\n", s.AppName()) + g.W("type %sOption struct {\n", s.UcName()) g.W("Instancer %s.Instancer \n", sdPkg) g.W("Instance string \n") g.W("ClientOptions []%s.ClientOption\n", transportExtPkg) diff --git a/v2/internal/interface/generator/http_transport.go b/v2/internal/interface/generator/http_transport.go index bd535a69..6a71b7ba 100644 --- a/v2/internal/interface/generator/http_transport.go +++ b/v2/internal/interface/generator/http_transport.go @@ -83,7 +83,7 @@ func (g *httpTransport) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { - g.WriteFunc(method.LcName+"ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { + g.WriteFunc(method.IfaceLcName+"ErrorDecode", "", errorDecodeParams, []string{"err", "error"}, func() { g.W("switch code {\n") g.W("default:\nerr = &httpError{code: code}\n") if g.options.JSONRPCEnable() { @@ -132,15 +132,15 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("}\n") g.W("}\n") - serverOptType := fmt.Sprintf("serverOpts") - serverOptionType := fmt.Sprintf("ServerOption") - kithttpServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) + serverOptType := "serverOpts" + serverOptionType := "ServerOption" + kitHTTPServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) g.WriteFunc( "GenericServerOptions", "", - []string{"v", "..." + kithttpServerOption}, + []string{"v", "..." + kitHTTPServerOption}, []string{"", serverOptionType}, func() { g.W("return func(o *%s) { o.genericServerOption = v }\n", serverOptType) @@ -160,15 +160,15 @@ func (g *httpTransport) Process(ctx context.Context) error { g.W("type %s func (*%s)\n", serverOptionType, serverOptType) g.W("type %s struct {\n", serverOptType) - g.W("genericServerOption []%s\n", kithttpServerOption) + g.W("genericServerOption []%s\n", kitHTTPServerOption) g.W("genericEndpointMiddleware []%s\n", endpointMiddlewareOption) for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { - g.W("%sServerOption []%s\n", m.LcName, kithttpServerOption) - g.W("%sEndpointMiddleware []%s\n", m.LcName, endpointMiddlewareOption) + g.W("%sServerOption []%s\n", m.IfaceLcName, kitHTTPServerOption) + g.W("%sEndpointMiddleware []%s\n", m.IfaceLcName, endpointMiddlewareOption) } } g.W("}\n") @@ -176,23 +176,26 @@ func (g *httpTransport) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, m := range iface.Methods() { + fnPrefix := m.IfaceUcName + paramPrefix := m.IfaceLcName + g.WriteFunc( - fmt.Sprintf("%sServerOptions", m.UcName), + fmt.Sprintf("%sServerOptions", fnPrefix), "", - []string{"opt", "..." + kithttpServerOption}, + []string{"opt", "..." + kitHTTPServerOption}, []string{"", serverOptionType}, func() { - g.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, m.LcName) + g.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, paramPrefix) }, ) g.WriteFunc( - fmt.Sprintf("%sServerEndpointMiddlewares", m.UcName), + fmt.Sprintf("%sServerEndpointMiddlewares", fnPrefix), "", []string{"opt", "..." + endpointMiddlewareOption}, []string{"", serverOptionType}, func() { - g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, m.LcName) + g.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, paramPrefix) }, ) } diff --git a/v2/internal/interface/generator/instrumenting.go b/v2/internal/interface/generator/instrumenting.go index f4a6205a..e2ae4c25 100644 --- a/v2/internal/interface/generator/instrumenting.go +++ b/v2/internal/interface/generator/instrumenting.go @@ -50,16 +50,17 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + nextName := iface.UcNameWithPrefix() + "Interface" + timePkg := g.i.Import("time", "time") stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") kitPrometheusPkg := g.i.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") - name := iface.NameExport() + "InstrumentingMiddleware" - constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", iface.NameExport()) + name := iface.UcNameWithPrefix() + "InstrumentingMiddleware" + constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", iface.UcNameWithPrefix()) g.W("type %s struct {\n", name) - g.W("next %s\n", typeStr) + g.W("next %s\n", nextName) g.W("opts *instrumentingOpts\n") g.W("}\n\n") @@ -121,7 +122,7 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { }) } - g.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) %[2]s {\n", constructName, typeStr, metricsPkg) + g.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) *%[3]s {\n", constructName, nextName, name) g.W("i := &%s{next: s, opts: &instrumentingOpts{}}\n", name) g.W("for _, o := range opts {\no(i.opts)\n}\n") diff --git a/v2/internal/interface/generator/jsonrpc_doc.go b/v2/internal/interface/generator/jsonrpc_doc.go index 5f432de3..777dcd47 100644 --- a/v2/internal/interface/generator/jsonrpc_doc.go +++ b/v2/internal/interface/generator/jsonrpc_doc.go @@ -120,7 +120,7 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { } name := method.Name if g.options.Interfaces().Len() > 1 { - name = iface.NameUnExport() + "." + method.Name + name = iface.LcName() + "." + method.Name } g.W("%[1]s\n\n", name) } @@ -128,7 +128,7 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { for _, method := range iface.Methods() { name := method.Name if g.options.Interfaces().Len() > 1 { - name = iface.NameUnExport() + "." + method.Name + name = iface.LcName() + "." + method.Name } g.W("### %[1]s(", name) diff --git a/v2/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go index c0cb9cca..a19dc162 100644 --- a/v2/internal/interface/generator/jsonrpc_go_client.go +++ b/v2/internal/interface/generator/jsonrpc_go_client.go @@ -2,7 +2,6 @@ package generator import ( "context" - "fmt" stdtypes "go/types" "strconv" @@ -13,7 +12,6 @@ import ( ) type jsonRPCGoClientOptionsGateway interface { - Prefix() string Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption UseFast() bool @@ -44,18 +42,19 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) - clientType := "client" + iface.NameExport() - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + clientType := "client" + iface.UcName() + + typeStr := iface.UcName() + "Interface" if g.options.Interfaces().Len() == 1 { - g.W("// Deprecated\nfunc NewClient%s(tgt string", g.options.Prefix()) + g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) - g.W("return NewClient%s%s(tgt, options...)", g.options.Prefix(), iface.NameExport()) + g.W("return NewClientJSONRPC%s(tgt, options...)", iface.UcName()) g.W("}\n") } - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) + g.W("func NewClientJSONRPC%s(tgt string", iface.UcName()) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") @@ -96,7 +95,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { for _, m := range iface.Methods() { mopt := g.options.MethodOption(m) - g.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", m.LcName) + g.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", m.IfaceLcName) g.W("%s.ClientRequestEncoder(", jsonrpcPkg) g.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) @@ -119,13 +118,13 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("%s.ClientResponseDecoder(", jsonrpcPkg) g.W("func(_ %s.Context, response %s.Response) (interface{}, error) {\n", contextPkg, jsonrpcPkg) g.W("if response.Error != nil {\n") - g.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", m.LcName) + g.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", m.IfaceLcName) g.W("}\n") if len(m.Results) > 0 { var responseType string if m.ResultsNamed { - responseType = fmt.Sprintf("%s", m.NameResponse) + responseType = m.NameResponse } else { responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) } @@ -151,24 +150,23 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { } g.W("}),\n") g.W(")\n") - methodName := m.LcName - if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { - methodName = iface.NameUnExport() + "." + methodName + if iface.Namespace() != "" { + methodName = iface.Namespace() + "." + methodName } - g.W("c.%sEndpoint = %s.NewClient(\n", m.LcName, jsonrpcPkg) + g.W("c.%sEndpoint = %s.NewClient(\n", m.IfaceLcName, jsonrpcPkg) g.W("u,\n") g.W("%s,\n", strconv.Quote(methodName)) - g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.LcName) + g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.IfaceLcName) g.W(").Endpoint()\n") g.W( "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[2]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", - m.LcName, - m.LcName, + m.IfaceLcName, + m.IfaceLcName, ) } diff --git a/v2/internal/interface/generator/jsonrpc_js_client.go b/v2/internal/interface/generator/jsonrpc_js_client.go index 876e7736..163614bc 100644 --- a/v2/internal/interface/generator/jsonrpc_js_client.go +++ b/v2/internal/interface/generator/jsonrpc_js_client.go @@ -5,15 +5,13 @@ import ( stdtypes "go/types" "github.com/swipe-io/strcase" - + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" - "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" - "golang.org/x/tools/go/types/typeutil" - - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" + + "golang.org/x/tools/go/types/typeutil" ) const jsonRPCClientBase = ` @@ -142,7 +140,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - mw.W("class JSONRPCClient%s {\n", iface.NameExport()) + mw.W("class JSONRPCClient%s {\n", iface.UcName()) mw.W("constructor(transport) {\n") mw.W("this.scheduler = new JSONRPCScheduler(transport);\n") mw.W("}\n\n") @@ -215,8 +213,8 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } var prefix string - if iface.IsNameChange() && g.options.Interfaces().Len() > 1 { - prefix = iface.NameUnExport() + "." + if iface.Namespace() != "" { + prefix = iface.Namespace() + "." } mw.W(") {\n") @@ -233,11 +231,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } mw.W("}).catch(e => { throw ") - if iface.External() { - mw.W("%s%sConvertError(e)", iface.AppName(), m.Name) - } else { - mw.W("%s%sConvertError(e)", iface.LoweName(), m.Name) - } + mw.W("%s%sConvertError(e)", iface.LcName(), m.Name) mw.W("; })\n") mw.W("}\n") @@ -258,7 +252,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("constructor(transport) {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("this.%[1]s = new JSONRPCClient%[1]s(transport);\n", iface.NameExport()) + g.W("this.%s = new JSONRPCClient%s(transport);\n", iface.LcName(), iface.UcName()) } g.W("}\n") g.W("}\n") @@ -266,7 +260,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default JSONRPCClient\n\n") } else if g.options.Interfaces().Len() == 1 { iface := g.options.Interfaces().At(0) - g.W("export default JSONRPCClient%s\n\n", iface.NameExport()) + g.W("export default JSONRPCClient%s\n\n", iface.UcName()) } httpErrorsDub := map[string]struct{}{} @@ -275,7 +269,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { for _, e := range method.Errors { - errorName := iface.AppName() + e.Named.Obj().Name() + errorName := iface.UcName() + e.Named.Obj().Name() if _, ok := httpErrorsDub[errorName]; ok { continue } @@ -291,21 +285,13 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { - if iface.External() { - g.W("function %s%sConvertError(e) {\n", iface.AppName(), method.Name) - } else { - g.W("function %s%sConvertError(e) {\n", iface.LoweName(), method.Name) - } + g.W("function %s%sConvertError(e) {\n", iface.LcName(), method.Name) g.W("switch(e.code) {\n") g.W("default:\n") g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") for _, e := range method.Errors { g.W("case %d:\n", e.Code) - if iface.External() { - g.W("return new %s%sError(e.message, e.data);\n", iface.AppName(), e.Named.Obj().Name()) - } else { - g.W("return new %sError(e.message, e.data);\n", e.Named.Obj().Name()) - } + g.W("return new %sError(e.message, e.data);\n", iface.UcName()+e.Named.Obj().Name()) } g.W("}\n}\n") } @@ -317,14 +303,14 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { // if !ok { // return // } - // g.W("export const %sEnum = Object.freeze({\n", named.Obj().Name()) + // g.W("export const %sEnum = Object.freeze({\n", named.Obj().IfaceUcName()) // // for _, enum := range value.([]model.Enum) { // value := enum.Value // if b.Info() == stdtypes.IsString { // value = strconv.Quote(value) // } - // g.W("%s: %s,\n", strconv.Quote(enum.Name), value) + // g.W("%s: %s,\n", strconv.Quote(enum.IfaceUcName), value) // } // g.W("});\n") // } diff --git a/v2/internal/interface/generator/jsonrpc_server.go b/v2/internal/interface/generator/jsonrpc_server.go index 64d6b23a..220fe1e9 100644 --- a/v2/internal/interface/generator/jsonrpc_server.go +++ b/v2/internal/interface/generator/jsonrpc_server.go @@ -7,7 +7,6 @@ import ( stdstrings "strings" "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -21,7 +20,6 @@ type jsonRPCServerOptionsGateway interface { JSONRPCPath() string MethodOption(m model.ServiceMethod) model.MethodOption Interfaces() model.Interfaces - Prefix() string } type jsonRPCServer struct { @@ -70,7 +68,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) if !iface.External() { - g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.NameExport()) + g.W("func Make%[1]sEndpointCodecMap(ep %[1]sEndpointSet", iface.UcName()) g.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) g.W("var namespace string\n") @@ -131,11 +129,10 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } - g.W("// HTTP %s Transport\n", g.options.Prefix()) - - g.W("func MakeHandler%s(", g.options.Prefix()) + g.W("// HTTP Transport\n") + g.W("func MakeHandlerJSONRPC(") - var hasGateway bool + var external bool for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) @@ -145,14 +142,14 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } if iface.External() { - hasGateway = true - g.W("%s %sOption", strcase.ToLowerCamel(iface.AppName()), iface.AppName()) + external = true + g.W("%s %sOption", iface.LcName(), iface.UcName()) } else { - g.W("svc%s %s", iface.NameExport(), typeStr) + g.W("svc%s %s", iface.UcName(), typeStr) } } - if hasGateway { + if external { g.W(", logger %s.Logger", g.i.Import("log", "github.com/go-kit/kit/log")) } @@ -172,21 +169,22 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + epSetName := makeEpSetName(iface) + if iface.External() { pkgExtTransport := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) sdPkg := g.i.Import("sd", "github.com/go-kit/kit/sd") lbPkg := g.i.Import("sd", "github.com/go-kit/kit/sd/lb") if iface.External() { - g.W("%s := %s.%sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), pkgExtTransport, iface.NameExport()) + g.W("%s := %s.%sEndpointSet{}\n", epSetName, pkgExtTransport, iface.UcName()) } else { - g.W("%s := %sEndpointSet{}\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) + g.W("%s := %sEndpointSet{}\n", epSetName, iface.UcName()) } for _, m := range iface.Methods() { - epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) - optName := strcase.ToLowerCamel(iface.AppName()) - epFactoryName := iface.LoweName() + "ClientEndpointFactory" + optName := iface.LcName() + epFactoryName := "endpointFactory" kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") transportExtPkg := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) ioPkg := g.i.Import("io", "io") @@ -210,14 +208,14 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { g.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(%[2]s.Instance, \"/\")", stringsPkg, optName) g.W("}\n") - g.W("c, err := %s.NewClient%s%s(instance, %s.ClientOptions...)\n", transportExtPkg, g.options.Prefix(), iface.Name(), optName) + g.W("c, err := %s.NewClientJSONRPC%s(instance, %s.ClientOptions...)\n", transportExtPkg, iface.UcName(), optName) g.WriteCheckErr(func() { g.W("return nil, nil, err\n") }) g.W("return ") - g.W("%s.Make%sEndpoint(c), nil, nil\n", transportExtPkg, m.UcName) + g.W("%s.Make%sEndpoint(c), nil, nil\n", transportExtPkg, m.IfaceUcName) g.W("\n}\n\n") @@ -232,17 +230,16 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { ) g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.LcName, m.Name, epSetName, + m.IfaceLcName, m.Name, epSetName, ) g.W("}\n") } } else { - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) - epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface), iface.UcName()) for _, m := range iface.Methods() { g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.LcName, m.Name, epSetName, + m.IfaceLcName, m.Name, epSetName, ) } } @@ -262,19 +259,22 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + + epSetName := makeEpSetName(iface) + if i > 0 { g.W(",") } if iface.External() { pkgExtTransport := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) - g.W("%s.Make%sEndpointCodecMap(%s, %s)", pkgExtTransport, iface.NameExport(), makeEpSetName(iface, g.options.Interfaces().Len()), strconv.Quote(iface.NameUnExport())) + g.W("%s.Make%sEndpointCodecMap(%s", pkgExtTransport, iface.UcName(), epSetName) } else { - g.W("Make%sEndpointCodecMap(%s", iface.NameExport(), makeEpSetName(iface, g.options.Interfaces().Len())) - if g.options.Interfaces().Len() > 1 { - g.W(",%s", strconv.Quote(iface.NameUnExport())) - } - g.W(")") + g.W("Make%sEndpointCodecMap(%s", iface.UcName(), epSetName) } + if iface.Namespace() != "" { + g.W(",%s", strconv.Quote(iface.Namespace())) + } + g.W(")") } if g.options.Interfaces().Len() > 1 { diff --git a/v2/internal/interface/generator/logging.go b/v2/internal/interface/generator/logging.go index 46687468..370b532e 100644 --- a/v2/internal/interface/generator/logging.go +++ b/v2/internal/interface/generator/logging.go @@ -9,7 +9,6 @@ import ( "strings" "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/types" @@ -37,17 +36,18 @@ func (g *logging) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + interfaceType := iface.UcNameWithPrefix() + "Interface" + timePkg := g.i.Import("time", "time") loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) - name := iface.NameExport() + "LoggingMiddleware" - constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.NameExport()) + name := iface.UcNameWithPrefix() + "LoggingMiddleware" + constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.UcNameWithPrefix()) g.WriteTypeStruct( name, []string{ - "next", typeStr, + "next", interfaceType, "logger", loggerPkg + ".Logger", }, ) @@ -218,7 +218,7 @@ func (g *logging) Process(ctx context.Context) error { }) } - g.W("func %[1]s(s %[2]s, logger %[4]s.Logger) %[2]s {\n return &%[3]s{next: s, logger: logger}\n}\n", constructName, typeStr, name, loggerPkg) + g.W("func %[1]s(s %[2]s, logger %[4]s.Logger) *%[3]s {\n return &%[3]s{next: s, logger: logger}\n}\n", constructName, interfaceType, name, loggerPkg) } return nil } diff --git a/v2/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go index ec2ac43e..ab0e4c06 100644 --- a/v2/internal/interface/generator/openapi.go +++ b/v2/internal/interface/generator/openapi.go @@ -5,7 +5,6 @@ import ( "context" "encoding/json" "fmt" - "path" "path/filepath" "strconv" stdstrings "strings" @@ -14,6 +13,7 @@ import ( "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" iftypevisitor "github.com/swipe-io/swipe/v2/internal/interface/typevisitor" + "github.com/swipe-io/swipe/v2/internal/openapi" "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -277,20 +277,15 @@ func (g *openapiDoc) Process(ctx context.Context) error { methodComment = stdstrings.Replace(methodComment, m.Name, "", len(m.Name)) var prefix string - - if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { - if g.options.JSONRPCEnable() { - prefix = iface.NameUnExport() - } else { - prefix = strcase.ToKebab(iface.Name()) - } + if iface.Namespace() != "" { + prefix = iface.Namespace() } if g.options.JSONRPCEnable() { o = g.makeJSONRPCPath(m, ntc, paramsComment, prefix) - pathStr = "/" + strcase.ToLowerCamel(m.Name) + pathStr = "/" + m.LcName if prefix != "" { - pathStr = "/" + prefix + "." + strcase.ToLowerCamel(m.Name) + pathStr = "/" + prefix + "." + m.LcName } methodName = "POST" for _, ei := range m.Errors { @@ -308,21 +303,19 @@ func (g *openapiDoc) Process(ctx context.Context) error { } } else { o = g.makeRestPath(m, ntc, paramsComment) - pathStr = mopt.Path - if pathStr == "" { - pathStr = strcase.ToKebab(m.LcName) - } - - if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { - prefix = path.Join("/", prefix) + pathStr = strcase.ToKebab(m.Name) + if mopt.Path != "" { + pathStr = mopt.Path } for _, p := range m.Params { if regexp, ok := mopt.PathVars[p.Name()]; ok { pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) } } - pathStr = path.Join(prefix, "/", pathStr) - + if iface.Namespace() != "" { + pathStr = iface.Namespace() + "/" + pathStr + } + pathStr = "/" + stdstrings.TrimLeft(pathStr, "/") for _, ei := range m.Errors { codeStr := strconv.FormatInt(ei.Code, 10) o.Responses[codeStr] = openapi.Response{ @@ -339,9 +332,9 @@ func (g *openapiDoc) Process(ctx context.Context) error { } if g.options.Interfaces().Len() > 1 { - ifaceTag := strcase.ToLowerCamel(iface.Name()) - if iface.NameExport() != "" { - ifaceTag = iface.NameExport() + ifaceTag := strcase.ToLowerCamel(iface.UcName()) + if iface.UcName() != "" { + ifaceTag = iface.UcName() } tags = append(tags, ifaceTag) } diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index e16d6ee6..4dcd4967 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -2,14 +2,12 @@ package generator import ( "context" - "fmt" stdtypes "go/types" "path" "strconv" stdstrings "strings" "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -17,7 +15,6 @@ import ( ) type restGoClientOptionsGateway interface { - Prefix() string Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption UseFast() bool @@ -47,8 +44,8 @@ func (g *restGoClient) Process(_ context.Context) error { pkgIO string ) iface := g.options.Interfaces().At(i) - clientType := "client" + iface.NameExport() - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + clientType := "client" + iface.UcName() + typeStr := iface.UcName() + "Interface" if g.options.UseFast() { kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") @@ -69,14 +66,14 @@ func (g *restGoClient) Process(_ context.Context) error { stringsPkg = g.i.Import("strings", "strings") if g.options.Interfaces().Len() == 1 { - g.W("// Deprecated\nfunc NewClient%s(tgt string", g.options.Prefix()) + g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) - g.W("return NewClient%s%s(tgt, options...)", g.options.Prefix(), iface.NameExport()) + g.W("return NewClientJSONRPC%s(tgt, options...)", iface.UcName()) g.W("}\n") } - g.W("func NewClient%s%s(tgt string", g.options.Prefix(), iface.NameExport()) + g.W("func NewClientJSONRPC%s(tgt string", iface.UcName()) g.W(" ,options ...ClientOption") g.W(") (%s, error) {\n", typeStr) g.W("opts := &clientOpts{}\n") @@ -104,7 +101,7 @@ func (g *restGoClient) Process(_ context.Context) error { g.W("}\n") for _, m := range iface.Methods() { - epName := m.LcName + "Endpoint" + epName := m.IfaceLcName + "Endpoint" mopt := g.options.MethodOption(m) httpMethod := mopt.MethodName @@ -117,8 +114,8 @@ func (g *restGoClient) Process(_ context.Context) error { pathStr = path.Join("/", strcase.ToKebab(m.Name)) } - if iface.IsNameChange() || g.options.Interfaces().Len() > 1 { - pathStr = path.Join("/", strcase.ToKebab(iface.NameUnExport()), "/", pathStr) + if iface.Namespace() != "" { + pathStr = path.Join("/", strcase.ToKebab(iface.Namespace()), "/", pathStr) } var ( @@ -261,13 +258,13 @@ func (g *restGoClient) Process(_ context.Context) error { } g.W("if statusCode := %s; statusCode != %s.StatusOK {\n", statusCode, httpPkg) - g.W("return nil, %sErrorDecode(statusCode)\n", m.LcName) + g.W("return nil, %sErrorDecode(statusCode)\n", m.IfaceLcName) g.W("}\n") if len(m.Results) > 0 { var responseType string if m.ResultsNamed { - responseType = fmt.Sprintf("%s", m.NameRequest) + responseType = m.NameRequest } else { responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) } @@ -308,14 +305,14 @@ func (g *restGoClient) Process(_ context.Context) error { g.W(",\n") - g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.LcName) + g.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", m.IfaceLcName) g.W(").Endpoint()\n") g.W( "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[2]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", - m.LcName, - m.LcName, + m.IfaceLcName, + m.IfaceLcName, ) } g.W("return c, nil\n") diff --git a/v2/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go index e385e275..c0329901 100644 --- a/v2/internal/interface/generator/rest_server.go +++ b/v2/internal/interface/generator/rest_server.go @@ -8,19 +8,16 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v2/internal/option" - "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" + "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/usecase/generator" "github.com/swipe-io/swipe/v2/internal/writer" ) type restServerOptionsGateway interface { AppID() string - Prefix() string UseFast() bool Interfaces() model.Interfaces MethodOption(m model.ServiceMethod) model.MethodOption @@ -62,15 +59,15 @@ func (g *restServer) Process(_ context.Context) error { } g.writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg) - g.W("// MakeHandler%[1]s HTTP %[1]s Transport\n", g.options.Prefix()) - g.W("func MakeHandler%s(", g.options.Prefix()) + g.W("// MakeHandler HTTP Transport\n") + g.W("func MakeHandlerREST(") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) if i > 0 { g.W(",") } - g.W("svc%s %s", iface.NameExport(), typeStr) + g.W("svc%s %s", iface.UcName(), typeStr) } g.W(", options ...ServerOption") g.W(") (") @@ -94,15 +91,15 @@ func (g *restServer) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface, g.options.Interfaces().Len()), iface.NameExport()) + g.W("%[1]s := Make%[2]sEndpointSet(svc%[2]s)\n", makeEpSetName(iface), iface.UcName()) } for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + epSetName := makeEpSetName(iface) for _, m := range iface.Methods() { g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.LcName, m.Name, epSetName, + m.IfaceLcName, m.Name, epSetName, ) } } @@ -114,16 +111,11 @@ func (g *restServer) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - - svcPrefix := "" - if g.options.Interfaces().Len() > 1 { - prefix := strcase.ToKebab(iface.Name()) - if iface.NameUnExport() != "" { - prefix = iface.NameUnExport() - } - svcPrefix = prefix + "/" + var prefix string + if iface.Namespace() != "" { + prefix = iface.Namespace() } - epSetName := makeEpSetName(iface, g.options.Interfaces().Len()) + epSetName := makeEpSetName(iface) for _, m := range iface.Methods() { mopt := g.options.MethodOption(m) if g.options.UseFast() { @@ -156,9 +148,9 @@ func (g *restServer) Process(_ context.Context) error { g.W(").") g.W("Path(") if mopt.Path != "" { - g.W(strconv.Quote(path.Join("/", svcPrefix, mopt.Path))) + g.W(strconv.Quote(path.Join("/", prefix, mopt.Path))) } else { - g.W(strconv.Quote(path.Join("/", svcPrefix, "/", stdstrings.ToLower(m.Name)))) + g.W(strconv.Quote(path.Join("/", prefix, strcase.ToKebab(m.Name)))) } g.W(").") @@ -282,7 +274,7 @@ func (g *restServer) Process(_ context.Context) error { } g.W(",\n") - g.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", m.LcName) + g.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", m.IfaceLcName) g.W(")") if g.options.UseFast() { diff --git a/v2/internal/interface/registry/processor.go b/v2/internal/interface/registry/processor.go index 4fa36ebd..7bd2f8c3 100644 --- a/v2/internal/interface/registry/processor.go +++ b/v2/internal/interface/registry/processor.go @@ -20,7 +20,7 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, externalOptions gt := git.NewGIT() switch o.Option.Name { case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, data.WorkDir, externalOptions) + sg, err := ig.NewServiceGateway(o.Pkg, data.PkgPath, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, data.WorkDir, externalOptions) if err != nil { return nil, err } diff --git a/v2/internal/usecase/gateway/service.go b/v2/internal/usecase/gateway/service.go index eda2dbcf..373ff2fb 100644 --- a/v2/internal/usecase/gateway/service.go +++ b/v2/internal/usecase/gateway/service.go @@ -14,7 +14,6 @@ type ServiceGateway interface { TransportType() model.Transport UseFast() bool MethodOption(m model.ServiceMethod) model.MethodOption - Prefix() string DefaultErrorEncoder() option.Value Errors() map[uint32]*model.HTTPError diff --git a/v2/swipe.go b/v2/swipe.go index b476bba7..1f6df437 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -116,12 +116,11 @@ func Service(opts ...ServiceOption) Option { return "implementation not generated, run swipe" } -func Interface(iface interface{}, name string) ServiceOption { +func Interface(iface interface{}, ns string) ServiceOption { return "implementation not generated, run swipe" } -// Name override service name prefix. -func ServiceNamePrefix(string) ServiceOption { +func AppName(string) ServiceOption { return "implementation not generated, run swipe" } From 0528431099dc4732a2741f50f2e6a4381cc348c5 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 16:39:51 +0300 Subject: [PATCH 179/293] chore(release): 2.0.0-rc5 --- CHANGELOG.md | 14 ++++++++++---- v2/gen_test.go | 12 +----------- v2/swipe.go | 2 +- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f909719..9ae5217f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,19 @@ - -## [v2.0.0-rc4] - 2021-03-11 + +## [v2.0.0-rc5] - 2021-03-15 ### Bug Fixes +- fixed generation of function and structure names +- defining the service package path - error when generating logging in gateway if there are identical interface names - error when generating instrumenting in gateway if there are identical interface names ### Features - added support for optional parameters in the interface +### BREAKING CHANGE + +the name specified in the Interface setting is now used only to define the scope of the API request, in REST it is /scope/service/path, in JSON RPC scope.service.methodName, the names of constructor functions for logging and instrumentation will change during generation. + ## [v2.0.0-rc3] - 2021-03-05 @@ -759,8 +765,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc4...HEAD -[v2.0.0-rc4]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc3...v2.0.0-rc4 +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc5...HEAD +[v2.0.0-rc5]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc3...v2.0.0-rc5 [v2.0.0-rc3]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc2...v2.0.0-rc3 [v2.0.0-rc2]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc1...v2.0.0-rc2 [v2.0.0-rc1]: https://github.com/swipe-io/swipe/compare/v2.0.0-beta6...v2.0.0-rc1 diff --git a/v2/gen_test.go b/v2/gen_test.go index 889185e9..ffa05da6 100644 --- a/v2/gen_test.go +++ b/v2/gen_test.go @@ -36,12 +36,7 @@ func newGeneratorExecutor(wd string, pkgs []string) ue.GenerationExecutor { } func TestSwipe(t *testing.T) { - //testRoot, err := filepath.Abs("../..") - //if err != nil { - // t.Fatal(err) - //} - testdataEnts, err := filepath.Glob("../../../../github.pie.apple.com/ISS-Tools/zeus-gateway") - //testdataEnts, err := ioutil.ReadDir(testRoot) + testdataEnts, err := filepath.Glob("../../swipe-test*") if err != nil { t.Fatal(err) } @@ -51,11 +46,6 @@ func TestSwipe(t *testing.T) { if data, err := ioutil.ReadFile(filepath.Join(name, "pkgs")); err == nil { pkgs = strings.Split(string(data), "\n") } - - //name := ent.Name() - //if !ent.IsDir() || strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") { - // continue - //} test, err := loadTestCase(name, pkgs) if err != nil { t.Error(err) diff --git a/v2/swipe.go b/v2/swipe.go index 1f6df437..64772605 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -43,7 +43,7 @@ // } package v2 -const Version = "v2.0.0-rc4" +const Version = "v2.0.0-rc5" // A Option is an option for a Swipe. type Option string From cb82798a9b4f2d2b98b18a6f80cbb5d013c7764c Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 15 Mar 2021 17:05:43 +0300 Subject: [PATCH 180/293] chore(release): 2.0.0-rc6 --- homebrew-swipe | 2 +- v2/swipe.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index ff7b8e40..b3c044a0 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit ff7b8e40d619a259a4de1ae0286603878cffac6e +Subproject commit b3c044a08093ba98da84130cc3598e3fa0690aa6 diff --git a/v2/swipe.go b/v2/swipe.go index 64772605..03ffc4aa 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -43,7 +43,7 @@ // } package v2 -const Version = "v2.0.0-rc5" +const Version = "v2.0.0-rc6" // A Option is an option for a Swipe. type Option string From a3721edd7a3d088d04cd5b7c394664444f566ced Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 16 Mar 2021 16:33:32 +0300 Subject: [PATCH 181/293] fix: filename from interface.go to interface_gen.go --- v2/internal/interface/generator/interface.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/internal/interface/generator/interface.go b/v2/internal/interface/generator/interface.go index 5deca8c6..e51f7f65 100644 --- a/v2/internal/interface/generator/interface.go +++ b/v2/internal/interface/generator/interface.go @@ -49,7 +49,7 @@ func (g *interfaceGenerator) OutputDir() string { } func (g *interfaceGenerator) Filename() string { - return "interface.go" + return "interface_gen.go" } func (g *interfaceGenerator) SetImporter(i *importer.Importer) { From 4cd21237ad7f703ce7eeed75f45dd72ab880a4ef Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 16 Mar 2021 16:41:40 +0300 Subject: [PATCH 182/293] chore(release): 2.0.0-rc7 --- CHANGELOG.md | 40 ++++++++++++++++++++++++++-------------- v2/swipe.go | 2 +- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae5217f..2dd30950 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,13 @@ + +## [v2.0.0-rc7] - 2021-03-16 +### Bug Fixes +- filename from interface.go to interface_gen.go + + + +## [v2.0.0-rc6] - 2021-03-15 + ## [v2.0.0-rc5] - 2021-03-15 ### Bug Fixes @@ -263,14 +272,14 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [v1.26.7] - 2020-09-09 - -## [vv2.0.0-alpha.15] - 2020-09-09 - ## [vv2.0.0-beta.1] - 2020-09-09 ## [vv2.0.0-alpha.16] - 2020-09-09 + + +## [vv2.0.0-alpha.15] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -449,6 +458,11 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.4] - 2020-07-28 ### Bug Fixes - Incorrect generate enum name for markdown docs. + + + +## [v1.24.3] - 2020-07-28 +### Bug Fixes - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -458,11 +472,7 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.2] - 2020-07-28 - - -## [v1.24.3] - 2020-07-28 ### Bug Fixes -- Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. ### Features @@ -765,7 +775,9 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc5...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc7...HEAD +[v2.0.0-rc7]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc6...v2.0.0-rc7 +[v2.0.0-rc6]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc5...v2.0.0-rc6 [v2.0.0-rc5]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc3...v2.0.0-rc5 [v2.0.0-rc3]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc2...v2.0.0-rc3 [v2.0.0-rc2]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc1...v2.0.0-rc2 @@ -800,10 +812,10 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 -[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 -[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.15 +[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...v1.26.7 [vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-beta.1 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-alpha.16 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.15 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 @@ -827,10 +839,10 @@ if you used the ability to use the code in the generation description file, then [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 [v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.1 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.2 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/v2/swipe.go b/v2/swipe.go index 03ffc4aa..e684666a 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -43,7 +43,7 @@ // } package v2 -const Version = "v2.0.0-rc6" +const Version = "v2.0.0-rc7" // A Option is an option for a Swipe. type Option string From 48a6378644e574a2cfaf76bfccaeff80f884cae3 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 18 Mar 2021 15:13:03 +0300 Subject: [PATCH 183/293] fix: generation of optional parameters for documentation --- .../interface/generator/jsonrpc_doc.go | 20 ++++++++++++++----- v2/internal/interface/generator/openapi.go | 11 ++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/v2/internal/interface/generator/jsonrpc_doc.go b/v2/internal/interface/generator/jsonrpc_doc.go index 777dcd47..585e2f9f 100644 --- a/v2/internal/interface/generator/jsonrpc_doc.go +++ b/v2/internal/interface/generator/jsonrpc_doc.go @@ -140,6 +140,10 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { g.W("%s", param.Name()) } + if method.ParamVariadic != nil { + g.W(", ...%s", method.ParamVariadic.Name()) + } + g.W(") ⇒") if len(method.Results) > 0 { @@ -158,20 +162,26 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { g.W("\n\n") - g.W("**Throws**:\n\n") - - for _, e := range method.Errors { - g.W("%sException\n\n", e.Named.Obj().Name()) + if len(method.Errors) > 0 { + g.W("**Throws**:\n\n") + for _, e := range method.Errors { + g.W("%sException\n\n", e.Named.Obj().Name()) + } } g.W("\n\n") - if len(method.Params) > 0 { + if len(method.Params) > 0 || method.ParamVariadic != nil { g.W("| Param | Type | Description |\n|------|------|------|\n") for _, param := range method.Params { comment := paramsComment[param.Name()] g.W("|%s|%s|%s|\n", param.Name(), g.getJSType(param.Type()), comment) } + if method.ParamVariadic != nil { + comment := paramsComment[method.ParamVariadic.Name()] + t := method.ParamVariadic.Type().(*stdtypes.Slice) + g.W("|%s|%s|%s|\n", method.ParamVariadic.Name(), g.getJSType(t.Elem()), comment) + } } } } diff --git a/v2/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go index ab0e4c06..c2ab5150 100644 --- a/v2/internal/interface/generator/openapi.go +++ b/v2/internal/interface/generator/openapi.go @@ -415,7 +415,13 @@ func (g *openapiDoc) makeJSONRPCPath( schema.Description = paramsComment[p.Name()] requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = schema } + if m.ParamVariadic != nil { + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(m.ParamVariadic.Type()) + requestSchema.Properties[strcase.ToLowerCamel(m.ParamVariadic.Name())] = schema + } } else { + requestSchema.Type = "null" requestSchema.Example = json.RawMessage("null") } @@ -588,6 +594,11 @@ func (g *openapiDoc) makeRestPath(m model.ServiceMethod, ntc ustypevisitor.Named requestSchema.Properties[strcase.ToLowerCamel(p.Name())] = schema } + if m.ParamVariadic != nil { + schema := &openapi.Schema{} + iftypevisitor.OpenapiVisitor(schema).Visit(m.ParamVariadic.Type()) + requestSchema.Properties[strcase.ToLowerCamel(m.ParamVariadic.Name())] = schema + } if len(m.Results) > 1 { for _, r := range m.Results { ntc.Visit(r.Type()) From 1c90d99872e447138b66791867dc5c813d62969b Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 18 Mar 2021 15:13:29 +0300 Subject: [PATCH 184/293] refactor: use go module from package --- homebrew-swipe | 2 +- v2/cmd/swipe/main.go | 39 +++++++++++---------- v2/gen_test.go | 2 +- v2/internal/astloader/astloader.go | 37 +++++++++---------- v2/internal/interface/registry/processor.go | 2 +- v2/internal/option/loader.go | 8 ++--- v2/swipe.go | 23 ++++++++++++ 7 files changed, 64 insertions(+), 49 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index b3c044a0..d9720a1e 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit b3c044a08093ba98da84130cc3598e3fa0690aa6 +Subproject commit d9720a1ebbeffa1d76419724e6d63f551bdf716e diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index 52b603c8..ce07a69f 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -5,7 +5,6 @@ import ( "context" "flag" "fmt" - "go/build" "io/ioutil" "log" "os" @@ -14,10 +13,11 @@ import ( "strings" "time" + "github.com/swipe-io/strcase" + "github.com/google/subcommands" "github.com/gookit/color" - "github.com/swipe-io/strcase" swipe "github.com/swipe-io/swipe/v2" "github.com/swipe-io/swipe/v2/internal/astloader" "github.com/swipe-io/swipe/v2/internal/fixcomment" @@ -143,7 +143,12 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } } - astLoader := astloader.NewLoader(wd, os.Environ(), packages(f), mod) + packages := f.Args() + if data, err := ioutil.ReadFile(filepath.Join(wd, "pkgs")); err == nil { + packages = append(packages, strings.Split(string(data), "\n")...) + } + + astLoader := astloader.NewLoader(wd, os.Environ(), packages) l := option.NewLoader(astLoader) r := registry.NewRegistry(l) i := factory.NewImporterFactory() @@ -283,21 +288,22 @@ func (cmd *genTplCmd) SetFlags(set *flag.FlagSet) { } func (cmd *genTplCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { - srcPath := filepath.Join(build.Default.GOPATH, "src") wd, err := os.Getwd() if err != nil { log.Println(colorFail("failed to get working directory: "), colorFail(err)) return subcommands.ExitFailure } - basePkgName := strings.Replace(wd, srcPath+"/", "", -1) - projectName := f.Arg(0) - if projectName == "" { - log.Println(colorFail("project name required")) + + pkgName := f.Arg(0) + if pkgName == "" { + log.Println(colorFail("package name required")) return subcommands.ExitFailure } - projectID := strcase.ToKebab(projectName) - pkgName := filepath.Join(basePkgName, projectID) + parts := strings.Split(pkgName, "/") + + projectID := parts[len(parts)-1] + projectName := strcase.ToCamel(projectID) templatePath := f.Arg(1) if templatePath == "" { log.Println(colorFail("template path required")) @@ -321,6 +327,9 @@ func (cmd *genTplCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...inte log.Println(colorFail("template path do not exists: ", templatePath)) return subcommands.ExitFailure } + + log.Println(colorAccent("config file: ", cmd.configFilepath)) + _, err = stl.Process(templatePath, cmd.configFilepath) if err != nil { log.Println(colorFail(err.Error())) @@ -354,7 +363,7 @@ func (c *fixComment) Execute(ctx context.Context, f *flag.FlagSet, args ...inter log.Println(colorFail("failed to get working directory: "), colorFail(err)) return subcommands.ExitFailure } - fixComment := fixcomment.NewFixComment(wd, os.Environ(), packages(f)) + fixComment := fixcomment.NewFixComment(wd, os.Environ(), f.Args()) fixes, err := fixComment.Execute() if err != nil { log.Println(colorFail("failed to fix comments: "), colorFail(err)) @@ -369,14 +378,6 @@ func (c *fixComment) Execute(ctx context.Context, f *flag.FlagSet, args ...inter return subcommands.ExitSuccess } -func packages(f *flag.FlagSet) []string { - pkgs := f.Args() - if len(pkgs) == 0 { - pkgs = []string{"."} - } - return pkgs -} - func logErrors(errs []error) { for _, err := range errs { log.Println(strings.Replace(err.Error(), "\n", "\n\t", -1)) diff --git a/v2/gen_test.go b/v2/gen_test.go index ffa05da6..81fcd841 100644 --- a/v2/gen_test.go +++ b/v2/gen_test.go @@ -27,7 +27,7 @@ func newGeneratorExecutor(wd string, pkgs []string) ue.GenerationExecutor { patterns := []string{"."} patterns = append(patterns, pkgs...) - astl := astloader.NewLoader(wd, os.Environ(), patterns, nil) + astl := astloader.NewLoader(wd, os.Environ(), patterns) l := option.NewLoader(astl) r := registry.NewRegistry(l) i := factory.NewImporterFactory() diff --git a/v2/internal/astloader/astloader.go b/v2/internal/astloader/astloader.go index 20b2ad14..26546619 100644 --- a/v2/internal/astloader/astloader.go +++ b/v2/internal/astloader/astloader.go @@ -3,16 +3,11 @@ package astloader import ( "context" "go/ast" - "go/build" "go/token" stdtypes "go/types" - "path/filepath" "strconv" - "strings" stdstrings "strings" - "golang.org/x/mod/modfile" - "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/graph" "github.com/swipe-io/swipe/v2/internal/types" @@ -28,7 +23,7 @@ type nodeInfo struct { type Data struct { WorkDir string - PkgPath string + Module *packages.Module CommentFuncs map[string][]string CommentFields map[string]map[string]string Pkgs []*packages.Package @@ -41,7 +36,6 @@ type Loader struct { wd string env []string patterns []string - mod *modfile.File } func (l *Loader) Patterns() []string { @@ -58,19 +52,11 @@ func (l *Loader) WorkDir() string { func (l *Loader) Process() (data *Data, errs []error) { var ( - pkgPath string - err error + err error ) - if l.mod == nil { - basePath := strings.Replace(l.wd, filepath.Join(build.Default.GOPATH, "src")+string(filepath.Separator), "", -1) - parts := strings.Split(basePath, string(filepath.Separator)) - pkgPath = strings.Join(parts[:3], string(filepath.Separator)) - } else { - pkgPath = l.mod.Module.Mod.Path - } + data = &Data{ WorkDir: l.wd, - PkgPath: pkgPath, CommentFuncs: map[string][]string{}, CommentFields: map[string]map[string]string{}, GraphTypes: graph.NewGraph(), @@ -78,11 +64,12 @@ func (l *Loader) Process() (data *Data, errs []error) { } cfg := &packages.Config{ Context: l.ctx, - Mode: packages.NeedDeps | packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypes | packages.NeedTypesSizes | packages.NeedImports | packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles, + Mode: packages.NeedDeps | packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypes | packages.NeedTypesSizes | packages.NeedImports | packages.NeedName | packages.NeedModule | packages.NeedFiles | packages.NeedCompiledGoFiles, Dir: l.wd, Env: l.env, BuildFlags: []string{"-tags=swipe"}, } + escaped := make([]string, len(l.patterns)) for i := range l.patterns { escaped[i] = "pattern=" + l.patterns[i] @@ -92,9 +79,16 @@ func (l *Loader) Process() (data *Data, errs []error) { return data, []error{err} } - var astNodes []nodeInfo + var ( + astNodes []nodeInfo + module *packages.Module + ) for _, pkg := range data.Pkgs { + if module == nil && stdstrings.Contains(l.wd, pkg.Module.Dir) { + module = pkg.Module + } + for _, syntax := range pkg.Syntax { for _, decl := range syntax.Decls { switch v := decl.(type) { @@ -182,6 +176,8 @@ func (l *Loader) Process() (data *Data, errs []error) { } } + data.Module = module + for _, ni := range astNodes { for _, obj := range ni.objects { if sig, ok := obj.Type().(*stdtypes.Signature); ok { @@ -317,11 +313,10 @@ func visitBlockStmt(p *packages.Package, stmt ast.Stmt) (values []stdtypes.TypeA return } -func NewLoader(wd string, env []string, patterns []string, mod *modfile.File) *Loader { +func NewLoader(wd string, env []string, patterns []string) *Loader { return &Loader{ wd: wd, env: env, patterns: patterns, - mod: mod, } } diff --git a/v2/internal/interface/registry/processor.go b/v2/internal/interface/registry/processor.go index 7bd2f8c3..a8166d4e 100644 --- a/v2/internal/interface/registry/processor.go +++ b/v2/internal/interface/registry/processor.go @@ -20,7 +20,7 @@ func (r *registryProcessor) NewProcessor(o *option.ResultOption, externalOptions gt := git.NewGIT() switch o.Option.Name { case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, data.PkgPath, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, data.WorkDir, externalOptions) + sg, err := ig.NewServiceGateway(o.Pkg, data.Module.Dir, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, data.WorkDir, externalOptions) if err != nil { return nil, err } diff --git a/v2/internal/option/loader.go b/v2/internal/option/loader.go index 672c9574..b1aaf65e 100644 --- a/v2/internal/option/loader.go +++ b/v2/internal/option/loader.go @@ -3,7 +3,6 @@ package option import ( "go/ast" stdtypes "go/types" - "strings" "sync" "github.com/swipe-io/swipe/v2/internal/astloader" @@ -38,7 +37,6 @@ func (l *Loader) declProcess(pkg *packages.Package, decl ast.Decl) (*ResultOptio if err != nil { return nil, err } - return &ResultOption{ Pkg: pkg, Option: opt, @@ -96,15 +94,13 @@ func (l *Loader) Load() (result *Result, errs []error) { }() for option := range optionsCh { - optRootPkg := strings.Join(strings.Split(option.Pkg.PkgPath, "/")[:3], "/") - pkgPath := strings.Join(strings.Split(data.PkgPath, "/")[:3], "/") - - if optRootPkg != pkgPath { + if data.Module.GoMod != option.Pkg.Module.GoMod { result.ExternalOptions = append(result.ExternalOptions, option) continue } result.Options = append(result.Options, option) } + return } diff --git a/v2/swipe.go b/v2/swipe.go index e684666a..98497913 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -169,6 +169,29 @@ func MethodDefaultOptions(...MethodOption) ServiceOption { return "implementation not generated, run swipe" } +func AggregateBuilder() *aggregateBuilder { + return &aggregateBuilder{} +} + +type aggregateBuilder struct { +} + +func (*aggregateBuilder) From(interface{}) *aggregateBuilder { + return nil +} + +func (*aggregateBuilder) MapField([]string) *aggregateBuilder { + return nil +} + +func (*aggregateBuilder) SelectFields([]string) *aggregateBuilder { + return nil +} + +func Aggregate(b *aggregateBuilder) MethodOption { + return "implementation not generated, run swipe" +} + // Logging a option enabled/disable logging middleware. func Logging(enable bool) MethodOption { return "implementation not generated, run swipe" From 14232c20c28f99e688c17d7cede8bd4c88ba3121 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 18 Mar 2021 15:21:04 +0300 Subject: [PATCH 185/293] fix: removed generation of EndpointFactory --- v2/internal/interface/generator/http_gateway.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/v2/internal/interface/generator/http_gateway.go b/v2/internal/interface/generator/http_gateway.go index dd838fcc..07995729 100644 --- a/v2/internal/interface/generator/http_gateway.go +++ b/v2/internal/interface/generator/http_gateway.go @@ -20,7 +20,6 @@ func (g *httpGatewayGenerator) Prepare(ctx context.Context) error { } func (g *httpGatewayGenerator) Process(ctx context.Context) error { - ioPkg := g.i.Import("io", "io") contextPkg := g.i.Import("context", "context") epPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") httpKitPkg := g.i.Import("endpoint", "github.com/go-kit/kit/transport/http") @@ -84,12 +83,6 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { transportExtPkg := g.i.Import(s.ExternalSwipePkg().Name, s.ExternalSwipePkg().PkgPath) - g.W("type %sEndpointFactory interface {\n", s.UcName()) - for _, method := range s.Methods() { - g.W("%sEndpointFactory(instance string) (%s.Endpoint, %s.Closer, error)\n", method.Name, epPkg, ioPkg) - } - g.W("}\n\n") - g.W("type %sOption struct {\n", s.UcName()) g.W("Instancer %s.Instancer \n", sdPkg) g.W("Instance string \n") From 5e18c07d666d5509d2a2761cf7c19d65875390f5 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 18 Mar 2021 15:25:19 +0300 Subject: [PATCH 186/293] chore(release): 2.0.0-rc8 --- CHANGELOG.md | 25 ++++++++++++++++--------- v2/swipe.go | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dd30950..5f3b07a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ + +## [v2.0.0-rc8] - 2021-03-18 +### Bug Fixes +- removed generation of EndpointFactory +- generation of optional parameters for documentation + + ## [v2.0.0-rc7] - 2021-03-16 ### Bug Fixes @@ -458,11 +465,6 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.4] - 2020-07-28 ### Bug Fixes - Incorrect generate enum name for markdown docs. - - - -## [v1.24.3] - 2020-07-28 -### Bug Fixes - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -472,7 +474,11 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.2] - 2020-07-28 + + +## [v1.24.3] - 2020-07-28 ### Bug Fixes +- Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. ### Features @@ -775,7 +781,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc7...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc8...HEAD +[v2.0.0-rc8]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc7...v2.0.0-rc8 [v2.0.0-rc7]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc6...v2.0.0-rc7 [v2.0.0-rc6]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc5...v2.0.0-rc6 [v2.0.0-rc5]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc3...v2.0.0-rc5 @@ -839,10 +846,10 @@ if you used the ability to use the code in the generation description file, then [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 [v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.4 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.3 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.1 -[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.2 +[v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/v2/swipe.go b/v2/swipe.go index 98497913..458ec01f 100644 --- a/v2/swipe.go +++ b/v2/swipe.go @@ -43,7 +43,7 @@ // } package v2 -const Version = "v2.0.0-rc7" +const Version = "v2.0.0-rc8" // A Option is an option for a Swipe. type Option string From ea94b1a301280fdd4002a782666a36495ea1a6a8 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 23 Mar 2021 19:52:01 +0300 Subject: [PATCH 187/293] fix: js errors name generation --- .../interface/generator/jsonrpc_doc.go | 71 +++++++++++-------- .../interface/generator/jsonrpc_js_client.go | 19 ++--- .../interface/typevisitor/js_visitor.go | 6 ++ 3 files changed, 56 insertions(+), 40 deletions(-) diff --git a/v2/internal/interface/generator/jsonrpc_doc.go b/v2/internal/interface/generator/jsonrpc_doc.go index 585e2f9f..8afb50b7 100644 --- a/v2/internal/interface/generator/jsonrpc_doc.go +++ b/v2/internal/interface/generator/jsonrpc_doc.go @@ -112,24 +112,18 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { + name := makeDocMethodName(iface, method) for _, param := range method.Params { g.appendExistsTypes(existsTypes, param.Type()) } for _, result := range method.Results { g.appendExistsTypes(existsTypes, result.Type()) } - name := method.Name - if g.options.Interfaces().Len() > 1 { - name = iface.LcName() + "." + method.Name - } g.W("%[1]s\n\n", name) } for _, method := range iface.Methods() { - name := method.Name - if g.options.Interfaces().Len() > 1 { - name = iface.LcName() + "." + method.Name - } + name := makeDocMethodName(iface, method) g.W("### %[1]s(", name) @@ -165,7 +159,11 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { if len(method.Errors) > 0 { g.W("**Throws**:\n\n") for _, e := range method.Errors { - g.W("%sException\n\n", e.Named.Obj().Name()) + if iface.External() { + g.W("%sException\n\n", makeErrorName(iface, e)) + } else { + g.W("%sException\n\n", e.Named.Obj().Name()) + } } } @@ -251,28 +249,31 @@ func (g *jsonrpcDoc) Process(ctx context.Context) error { } } - if g.options.Enums().Len() > 0 { - g.W("## Enums\n") - - g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { - if named, ok := key.(*stdtypes.Named); ok { - typeName := "" - if b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic); ok { - switch b.Info() { - default: - typeName = "string" - case stdtypes.IsUnsigned | stdtypes.IsInteger, stdtypes.IsInteger: - typeName = "number" - } - } - g.W("### %[1]sEnum %[2]s\n\n", named.Obj().Name(), typeName) - g.W("| Name | Value | Description |\n|------|------|------|\n") - for _, enum := range value.([]model.Enum) { - g.W("|%s|%s|%s|\n", enum.Name, enum.Value, "") - } - } - }) - } + //if g.options.Enums().Len() > 0 { + // g.W("## Enums\n") + // + // g.options.Enums().Iterate(func(key stdtypes.Type, value interface{}) { + // if named, ok := key.(*stdtypes.Named); ok { + // + // enumName := named.Obj().Name() + // + // typeName := "" + // if b, ok := named.Obj().Type().Underlying().(*stdtypes.Basic); ok { + // switch b.Info() { + // default: + // typeName = "string" + // case stdtypes.IsUnsigned | stdtypes.IsInteger, stdtypes.IsInteger: + // typeName = "number" + // } + // } + // g.W("### %[1]sEnum %[2]s\n\n", enumName, typeName) + // g.W("| Name | Value | Description |\n|------|------|------|\n") + // for _, enum := range value.([]model.Enum) { + // g.W("|%s|%s|%s|\n", enum.Name, enum.Value, "") + // } + // } + // }) + //} return nil } @@ -348,3 +349,11 @@ func NewJsonrpcDoc(options jsonrpcDocOptionsGateway, workDir string) generator.G workDir: workDir, } } + +func makeDocMethodName(iface *model.ServiceInterface, method model.ServiceMethod) (name string) { + name = method.Name + if iface.Namespace() != "" { + name = iface.Namespace() + "." + method.Name + } + return +} diff --git a/v2/internal/interface/generator/jsonrpc_js_client.go b/v2/internal/interface/generator/jsonrpc_js_client.go index 163614bc..82d2ee21 100644 --- a/v2/internal/interface/generator/jsonrpc_js_client.go +++ b/v2/internal/interface/generator/jsonrpc_js_client.go @@ -140,7 +140,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - mw.W("class JSONRPCClient%s {\n", iface.UcName()) + mw.W("class JSONRPCClient%s {\n", iface.ClientUcName()) mw.W("constructor(transport) {\n") mw.W("this.scheduler = new JSONRPCScheduler(transport);\n") mw.W("}\n\n") @@ -231,7 +231,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { } mw.W("}).catch(e => { throw ") - mw.W("%s%sConvertError(e)", iface.LcName(), m.Name) + mw.W("%s%sConvertError(e)", iface.ClientLcName(), m.Name) mw.W("; })\n") mw.W("}\n") @@ -252,7 +252,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("constructor(transport) {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("this.%s = new JSONRPCClient%s(transport);\n", iface.LcName(), iface.UcName()) + g.W("this.%s = new JSONRPCClient%s(transport);\n", iface.ClientLcName(), iface.ClientUcName()) } g.W("}\n") g.W("}\n") @@ -260,22 +260,21 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { g.W("export default JSONRPCClient\n\n") } else if g.options.Interfaces().Len() == 1 { iface := g.options.Interfaces().At(0) - g.W("export default JSONRPCClient%s\n\n", iface.UcName()) + g.W("export default JSONRPCClient%s\n\n", iface.ClientUcName()) } httpErrorsDub := map[string]struct{}{} - for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { for _, e := range method.Errors { - errorName := iface.UcName() + e.Named.Obj().Name() + errorName := makeErrorName(iface, e) if _, ok := httpErrorsDub[errorName]; ok { continue } httpErrorsDub[errorName] = struct{}{} g.W( - "export class %[1]sError extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]sError\", %[2]d, data);\n}\n}\n", + "export class %[1]s extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]s\", %[2]d, data);\n}\n}\n", errorName, e.Code, ) } @@ -285,13 +284,14 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) for _, method := range iface.Methods() { - g.W("function %s%sConvertError(e) {\n", iface.LcName(), method.Name) + g.W("function %s%sConvertError(e) {\n", iface.ClientLcName(), method.Name) g.W("switch(e.code) {\n") g.W("default:\n") g.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") for _, e := range method.Errors { + errorName := makeErrorName(iface, e) g.W("case %d:\n", e.Code) - g.W("return new %sError(e.message, e.data);\n", iface.UcName()+e.Named.Obj().Name()) + g.W("return new %s(e.message, e.data);\n", errorName) } g.W("}\n}\n") } @@ -303,6 +303,7 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { // if !ok { // return // } + // // g.W("export const %sEnum = Object.freeze({\n", named.Obj().IfaceUcName()) // // for _, enum := range value.([]model.Enum) { diff --git a/v2/internal/interface/typevisitor/js_visitor.go b/v2/internal/interface/typevisitor/js_visitor.go index 6dacdaaf..b7dc2371 100644 --- a/v2/internal/interface/typevisitor/js_visitor.go +++ b/v2/internal/interface/typevisitor/js_visitor.go @@ -36,6 +36,12 @@ func (v *jsTypeVisitor) VisitArray(t *stdtypes.Array, nested int) { } func (v *jsTypeVisitor) VisitSlice(t *stdtypes.Slice, nested int) { + if basic, ok := t.Elem().(*stdtypes.Basic); ok { + if basic.Kind() == stdtypes.Byte { + v.w("string") + return + } + } v.w("Array<") typevisitor.ConvertType(t.Elem()).Accept(v, nested) v.w(">") From dc6d87747fd678fcb3071a38ba527b2d994e6585 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 23 Mar 2021 19:54:46 +0300 Subject: [PATCH 188/293] feat: removed package github.com/swipe-io/swipe/v2, added its generation to the project BREAKING CHANGE: the package github.com/swipe-io/swipe/v2 is missing, you need to generate it in your project with the swipe gen --init command --- homebrew-swipe | 2 +- v2/cmd/swipe/main.go | 137 +++++--- v2/gen_test.go | 311 ++++++++--------- v2/go.mod | 1 + v2/go.sum | 3 + v2/internal/domain/model/service.go | 20 ++ v2/internal/interface/executor/generation.go | 65 ++-- v2/internal/interface/generator/utils.go | 14 + v2/internal/interface/processor/config.go | 34 +- v2/internal/interface/processor/factory.go | 39 +++ v2/internal/interface/processor/service.go | 153 ++++++--- v2/internal/interface/registry/processor.go | 45 --- v2/internal/option/loader.go | 8 +- v2/internal/types/utils.go | 17 - v2/internal/usecase/processor/factory.go | 12 + v2/internal/usecase/processor/processor.go | 4 +- v2/internal/usecase/registry/processor.go | 11 - v2/swipe.go | 334 ------------------- 18 files changed, 489 insertions(+), 721 deletions(-) create mode 100644 v2/internal/interface/processor/factory.go delete mode 100644 v2/internal/interface/registry/processor.go create mode 100644 v2/internal/usecase/processor/factory.go delete mode 100644 v2/internal/usecase/registry/processor.go delete mode 100644 v2/swipe.go diff --git a/homebrew-swipe b/homebrew-swipe index d9720a1e..17412d56 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit d9720a1ebbeffa1d76419724e6d63f551bdf716e +Subproject commit 17412d56366d8adbff8cc1234ef8f831c5237bb8 diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index ce07a69f..e2b3e142 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -5,32 +5,38 @@ import ( "context" "flag" "fmt" + "go/format" "io/ioutil" "log" "os" "path/filepath" "sort" "strings" - "time" - "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/writer" + + "github.com/swipe-io/swipe/v2/internal/interface/gateway" + + "github.com/swipe-io/swipe/v2/internal/git" + + up "github.com/swipe-io/swipe/v2/internal/usecase/processor" "github.com/google/subcommands" "github.com/gookit/color" - swipe "github.com/swipe-io/swipe/v2" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/astloader" "github.com/swipe-io/swipe/v2/internal/fixcomment" "github.com/swipe-io/swipe/v2/internal/interface/executor" "github.com/swipe-io/swipe/v2/internal/interface/factory" "github.com/swipe-io/swipe/v2/internal/interface/frame" - "github.com/swipe-io/swipe/v2/internal/interface/registry" + "github.com/swipe-io/swipe/v2/internal/interface/processor" "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/stcreator" - - "golang.org/x/mod/modfile" ) +const Version = "v2.0.0-rc8" + var ( colorSuccess = color.Green.Render colorAccent = color.Cyan.Render @@ -62,7 +68,7 @@ func main() { "fix-comment": true, } - log.Printf("%s %s", color.LightBlue.Render("Swipe"), color.Yellow.Render(swipe.Version)) + log.Printf("%s %s", color.LightBlue.Render("Swipe"), color.Yellow.Render(Version)) var code int if args := flag.Args(); len(args) == 0 || !allCmds[args[0]] { @@ -75,7 +81,9 @@ func main() { } type genCmd struct { - verbose bool + verbose bool + init bool + swipePkg string } func (*genCmd) Name() string { return "gen" } @@ -91,81 +99,111 @@ func (*genCmd) Usage() string { func (cmd *genCmd) SetFlags(f *flag.FlagSet) { f.BoolVar(&cmd.verbose, "v", false, "show verbose output") + f.BoolVar(&cmd.init, "init", false, "initial swipe project") + f.StringVar(&cmd.swipePkg, "swipe-pkg", "", "package for generating swipe options file") } func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { log.Printf("%s %s", color.Yellow.Render("Thanks for using"), color.LightBlue.Render("swipe")) log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) - startCmd := time.Now() - wd, err := os.Getwd() if err != nil { log.Println(colorFail("failed to get working directory: "), colorFail(err)) return subcommands.ExitFailure } + packages := f.Args() + if data, err := ioutil.ReadFile(filepath.Join(wd, "pkgs")); err == nil { + packages = append(packages, strings.Split(string(data), "\n")...) + } + log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), wd) - modBytes, err := ioutil.ReadFile(filepath.Join(wd, "go.mod")) - if err != nil { - log.Println(colorFail("failed read go.mod file: "), colorFail(err)) - return subcommands.ExitFailure + if cmd.swipePkg == "" { + cmd.swipePkg = "pkg/swipe" } - log.Printf("%s: %s\n", color.Yellow.Render("Read go.mod"), color.LightGreen.Render("ok")) - - mod, err := modfile.Parse("go.mod", modBytes, nil) - if err != nil { - log.Println(colorFail("failed parse go.mod file: "), colorFail(err)) + swipePkgPath := filepath.Join(wd, cmd.swipePkg) + if err := os.MkdirAll(swipePkgPath, 0755); err != nil { + log.Println(colorFail(err)) return subcommands.ExitFailure } - log.Printf("%s: %s\n", color.Yellow.Render("Parse go.mod"), color.LightGreen.Render("ok")) + parts := strings.Split(swipePkgPath, "/") + pkgName := parts[len(parts)-1] - if mod.Module.Mod.Path != "github.com/swipe-io/swipe/v2" { - foundReplace := false - for _, replace := range mod.Replace { - if replace.Old.Path == "github.com/swipe-io/swipe/v2" { - log.Printf("%s\n", color.Red.Render("You are using replace for github.com/swipe-io/swipe/v2")) + gt := git.NewGIT() - foundReplace = true - break - } + processorFactory := processor.NewFactory() + + processorFactory.Register(new(processor.Service).Name(), func(o *option.ResultOption, opr *option.Result) (up.Processor, error) { + serviceGateway, err := gateway.NewServiceGateway(o.Pkg, opr.Data.Module.Dir, o.Option, opr.Data.GraphTypes, opr.Data.CommentFuncs, opr.Data.CommentFields, opr.Data.Enums, opr.Data.WorkDir, opr.ExternalOptions) + if err != nil { + return nil, err } - if !foundReplace { - for _, require := range mod.Require { - if require.Mod.Path == "github.com/swipe-io/swipe/v2" && require.Mod.Version != swipe.Version { - log.Println(colorFail("swipe cli version (" + swipe.Version + ") does not match package version (" + require.Mod.Version + ")")) - return subcommands.ExitFailure - } + return &processor.Service{ + ServiceGateway: serviceGateway, + GIT: gt, + }, nil + }, processor.ServiceOptions) + + processorFactory.Register(new(processor.Config).Name(), func(o *option.ResultOption, opr *option.Result) (up.Processor, error) { + configGateway := gateway.NewConfigGateway(o.Option) + return &processor.Config{ + ConfigGateway: configGateway, + }, nil + }, processor.ConfigOptions) + + astLoader := astloader.NewLoader(wd, os.Environ(), packages) + optionLoader := option.NewLoader(astLoader, pkgName) + importerFactory := factory.NewImporterFactory() + frameFactory := frame.NewFrameFactory(Version) + generationExecutor := executor.NewGenerationExecutor(processorFactory, importerFactory, frameFactory, optionLoader) + + if cmd.init { + var w writer.GoLangWriter + + w.W("// Code generated by Swipe %s. DO NOT EDIT.\n\n", Version) + w.W("package %s\n\n", pkgName) + + w.W("// A Option is an option for a Swipe.\ntype Option string\n\n") + w.W("// Build the basic option for defining the generation.\nfunc Build(Option) {}\n\n") + + for _, name := range processorFactory.Names() { + f, ok := processorFactory.GetOptGen(name) + if !ok { + continue } + _, _ = w.Write(f()) } - } - packages := f.Args() - if data, err := ioutil.ReadFile(filepath.Join(wd, "pkgs")); err == nil { - packages = append(packages, strings.Split(string(data), "\n")...) + goSrc := w.Bytes() + fmtSrc, err := format.Source(goSrc) + if err != nil { + log.Println(colorFail(fmt.Sprintf("error: %w\n ***\n%s\n***\n\n", err, string(goSrc)))) + return subcommands.ExitFailure + } + if err := ioutil.WriteFile(filepath.Join(swipePkgPath, "swipe.go"), fmtSrc, 0755); err != nil { + log.Println(colorFail(err)) + return subcommands.ExitFailure + } + return subcommands.ExitSuccess } - astLoader := astloader.NewLoader(wd, os.Environ(), packages) - l := option.NewLoader(astLoader) - r := registry.NewRegistry(l) - i := factory.NewImporterFactory() - ff := frame.NewFrameFactory(swipe.Version) - ge := executor.NewGenerationExecutor(r, i, ff, l) - // clear all before generated files. _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { - if !info.IsDir() { - if strings.Contains(info.Name(), "_gen") { - _ = os.Remove(path) + if !strings.Contains(path, "/vendor/") { + if !info.IsDir() { + if strings.Contains(info.Name(), "_gen") { + _ = os.Remove(path) + } } } return nil }) - results, errs := ge.Execute() + results, errs := generationExecutor.Execute() if len(errs) > 0 { for _, err := range errs { @@ -266,7 +304,6 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } log.Println(color.LightGreen.Render("Command execution completed successfully")) - log.Printf("%s %s", color.LightBlue.Render("Time"), color.Yellow.Render(time.Since(startCmd).String())) return subcommands.ExitSuccess } diff --git a/v2/gen_test.go b/v2/gen_test.go index 81fcd841..8ae99118 100644 --- a/v2/gen_test.go +++ b/v2/gen_test.go @@ -1,157 +1,158 @@ package v2 -import ( - "bytes" - "flag" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - "testing" - - "github.com/google/go-cmp/cmp" - "github.com/swipe-io/swipe/v2/internal/astloader" - "github.com/swipe-io/swipe/v2/internal/interface/executor" - "github.com/swipe-io/swipe/v2/internal/interface/factory" - "github.com/swipe-io/swipe/v2/internal/interface/frame" - "github.com/swipe-io/swipe/v2/internal/interface/registry" - "github.com/swipe-io/swipe/v2/internal/option" - ue "github.com/swipe-io/swipe/v2/internal/usecase/executor" -) - -var record = flag.Bool("record", false, "write expected result without running tests") -var onlyDiff = flag.Bool("only-diff", false, "show only diff") - -func newGeneratorExecutor(wd string, pkgs []string) ue.GenerationExecutor { - patterns := []string{"."} - patterns = append(patterns, pkgs...) - - astl := astloader.NewLoader(wd, os.Environ(), patterns) - l := option.NewLoader(astl) - r := registry.NewRegistry(l) - i := factory.NewImporterFactory() - ff := frame.NewFrameFactory(Version) - return executor.NewGenerationExecutor(r, i, ff, l) -} - -func TestSwipe(t *testing.T) { - testdataEnts, err := filepath.Glob("../../swipe-test*") - if err != nil { - t.Fatal(err) - } - tests := make([]*testCase, 0, len(testdataEnts)) - for _, name := range testdataEnts { - var pkgs []string - if data, err := ioutil.ReadFile(filepath.Join(name, "pkgs")); err == nil { - pkgs = strings.Split(string(data), "\n") - } - test, err := loadTestCase(name, pkgs) - if err != nil { - t.Error(err) - continue - } - tests = append(tests, test) - } - for _, test := range tests { - ge := newGeneratorExecutor(test.testCasePath, test.pkgs) - - test := test - t.Run(test.name, func(t *testing.T) { - results, errs := ge.Execute() - if len(errs) > 0 { - for _, e := range errs { - t.Error(e) - } - } - - if *record { - // clear all before generated files. - _ = filepath.Walk(test.testCasePath, func(path string, info os.FileInfo, err error) error { - if !info.IsDir() { - if strings.Contains(info.Name(), "_gen") { - _ = os.Remove(path) - } - } - return nil - }) - } - - for _, result := range results { - if len(result.Errs) > 0 { - t.Fatalf("result errors: %v", result.Errs) - } - if *record { - if err := ioutil.WriteFile(result.OutputPath, result.Content, 0755); err != nil { - t.Fatal(err) - } - } else { - if expectedContent, ok := test.expectedOutput[result.OutputPath]; ok { - if !bytes.Equal(expectedContent, result.Content) { - actual, expected := string(result.Content), string(expectedContent) - diff := cmp.Diff(strings.Split(expected, "\n"), strings.Split(actual, "\n")) - buf := new(bytes.Buffer) - buf.WriteString(fmt.Sprintf("swipe output differs from expected file %s.\n", result.OutputPath)) - if !*onlyDiff { - buf.WriteString(fmt.Sprintf("*** actual:\n%s\n\n*** expected:\n%s\n\n", actual, expected)) - } - buf.WriteString(fmt.Sprintf("*** diff:\n%s", diff)) - t.Fatal(buf.String()) - } - delete(test.expectedOutput, result.OutputPath) - } - } - } - if !*record && len(test.expectedOutput) > 0 { - for _, expectedContent := range test.expectedOutput { - t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) - } - } - }) - } -} - -type testCase struct { - name string - expectedOutput map[string][]byte - expectedError bool - expectedErrorStrings []string - testCasePath string - pkgs []string -} - -func loadTestCase(root string, pkgs []string) (*testCase, error) { - name := filepath.Base(root) - testCasePath, err := filepath.Abs(filepath.Join(root, "pkg", "transport")) - if err != nil { - return nil, err - } - expectedFiles, err := ioutil.ReadDir(testCasePath) - if err != nil { - return nil, err - } - expectedOutput := make(map[string][]byte) - for _, file := range expectedFiles { - if !file.IsDir() && strings.Contains(file.Name(), "_gen") { - expectedFile, err := filepath.Abs(filepath.Join(testCasePath, file.Name())) - if err != nil { - return nil, err - } - data, err := ioutil.ReadFile(expectedFile) - if err != nil { - return nil, err - } - expectedOutput[expectedFile] = data - } - } - - return &testCase{ - name: name, - testCasePath: testCasePath, - expectedOutput: expectedOutput, - expectedError: false, - expectedErrorStrings: nil, - pkgs: pkgs, - }, nil - -} +//import ( +// "bytes" +// "flag" +// "fmt" +// "io/ioutil" +// "os" +// "path/filepath" +// "strings" +// "testing" +// +// "github.com/swipe-io/swipe/v2/internal/interface/processor" +// +// "github.com/google/go-cmp/cmp" +// "github.com/swipe-io/swipe/v2/internal/astloader" +// "github.com/swipe-io/swipe/v2/internal/interface/executor" +// "github.com/swipe-io/swipe/v2/internal/interface/factory" +// "github.com/swipe-io/swipe/v2/internal/interface/frame" +// "github.com/swipe-io/swipe/v2/internal/option" +// ue "github.com/swipe-io/swipe/v2/internal/usecase/executor" +//) +// +//var record = flag.Bool("record", false, "write expected result without running tests") +//var onlyDiff = flag.Bool("only-diff", false, "show only diff") +// +//func newGeneratorExecutor(wd string, pkgs []string) ue.GenerationExecutor { +// patterns := []string{"."} +// patterns = append(patterns, pkgs...) +// +// astl := astloader.NewLoader(wd, os.Environ(), patterns) +// l := option.NewLoader(astl, "") +// r := processor.NewFactory() +// i := factory.NewImporterFactory() +// ff := frame.NewFrameFactory("test") +// return executor.NewGenerationExecutor(r, i, ff, l) +//} +// +//func TestSwipe(t *testing.T) { +// testdataEnts, err := filepath.Glob("../../swipe-test*") +// if err != nil { +// t.Fatal(err) +// } +// tests := make([]*testCase, 0, len(testdataEnts)) +// for _, name := range testdataEnts { +// var pkgs []string +// if data, err := ioutil.ReadFile(filepath.Join(name, "pkgs")); err == nil { +// pkgs = strings.Split(string(data), "\n") +// } +// test, err := loadTestCase(name, pkgs) +// if err != nil { +// t.Error(err) +// continue +// } +// tests = append(tests, test) +// } +// for _, test := range tests { +// ge := newGeneratorExecutor(test.testCasePath, test.pkgs) +// +// test := test +// t.Run(test.name, func(t *testing.T) { +// results, errs := ge.Execute() +// if len(errs) > 0 { +// for _, e := range errs { +// t.Error(e) +// } +// } +// +// if *record { +// // clear all before generated files. +// _ = filepath.Walk(test.testCasePath, func(path string, info os.FileInfo, err error) error { +// if !info.IsDir() { +// if strings.Contains(info.Name(), "_gen") { +// _ = os.Remove(path) +// } +// } +// return nil +// }) +// } +// +// for _, result := range results { +// if len(result.Errs) > 0 { +// t.Fatalf("result errors: %v", result.Errs) +// } +// if *record { +// if err := ioutil.WriteFile(result.OutputPath, result.Content, 0755); err != nil { +// t.Fatal(err) +// } +// } else { +// if expectedContent, ok := test.expectedOutput[result.OutputPath]; ok { +// if !bytes.Equal(expectedContent, result.Content) { +// actual, expected := string(result.Content), string(expectedContent) +// diff := cmp.Diff(strings.Split(expected, "\n"), strings.Split(actual, "\n")) +// buf := new(bytes.Buffer) +// buf.WriteString(fmt.Sprintf("swipe output differs from expected file %s.\n", result.OutputPath)) +// if !*onlyDiff { +// buf.WriteString(fmt.Sprintf("*** actual:\n%s\n\n*** expected:\n%s\n\n", actual, expected)) +// } +// buf.WriteString(fmt.Sprintf("*** diff:\n%s", diff)) +// t.Fatal(buf.String()) +// } +// delete(test.expectedOutput, result.OutputPath) +// } +// } +// } +// if !*record && len(test.expectedOutput) > 0 { +// for _, expectedContent := range test.expectedOutput { +// t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) +// } +// } +// }) +// } +//} +// +//type testCase struct { +// name string +// expectedOutput map[string][]byte +// expectedError bool +// expectedErrorStrings []string +// testCasePath string +// pkgs []string +//} +// +//func loadTestCase(root string, pkgs []string) (*testCase, error) { +// name := filepath.Base(root) +// testCasePath, err := filepath.Abs(filepath.Join(root, "pkg", "transport")) +// if err != nil { +// return nil, err +// } +// expectedFiles, err := ioutil.ReadDir(testCasePath) +// if err != nil { +// return nil, err +// } +// expectedOutput := make(map[string][]byte) +// for _, file := range expectedFiles { +// if !file.IsDir() && strings.Contains(file.Name(), "_gen") { +// expectedFile, err := filepath.Abs(filepath.Join(testCasePath, file.Name())) +// if err != nil { +// return nil, err +// } +// data, err := ioutil.ReadFile(expectedFile) +// if err != nil { +// return nil, err +// } +// expectedOutput[expectedFile] = data +// } +// } +// +// return &testCase{ +// name: name, +// testCasePath: testCasePath, +// expectedOutput: expectedOutput, +// expectedError: false, +// expectedErrorStrings: nil, +// pkgs: pkgs, +// }, nil +// +//} diff --git a/v2/go.mod b/v2/go.mod index c7c07e5e..f9cec1fb 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -6,6 +6,7 @@ require ( github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structtag v1.2.0 + github.com/gertd/go-pluralize v0.1.7 // indirect github.com/google/go-cmp v0.4.0 github.com/google/subcommands v1.2.0 github.com/gookit/color v1.2.5 diff --git a/v2/go.sum b/v2/go.sum index 0fa5cd1d..5a211c1e 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -5,6 +5,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/gertd/go-pluralize v0.1.7 h1:RgvJTJ5W7olOoAks97BOwOlekBFsLEyh00W48Z6ZEZY= +github.com/gertd/go-pluralize v0.1.7/go.mod h1:O4eNeeIf91MHh1GJ2I47DNtaesm66NYvjYgAahcqSDQ= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= @@ -18,6 +20,7 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= diff --git a/v2/internal/domain/model/service.go b/v2/internal/domain/model/service.go index a92d2a5d..06e6ece3 100644 --- a/v2/internal/domain/model/service.go +++ b/v2/internal/domain/model/service.go @@ -29,6 +29,8 @@ func (i Interfaces) At(index int) *ServiceInterface { type ServiceInterface struct { ucName string lcName string + clientUcName string + clientLcName string serviceType stdtypes.Type serviceTypeName *stdtypes.Named serviceIface *stdtypes.Interface @@ -39,6 +41,14 @@ type ServiceInterface struct { ns string } +func (g *ServiceInterface) ClientLcName() string { + return g.clientLcName +} + +func (g *ServiceInterface) ClientUcName() string { + return g.clientUcName +} + func (g *ServiceInterface) Namespace() string { return g.ns } @@ -103,9 +113,19 @@ func NewServiceInterface( externalSwipePkg *packages.Package, appName, ns string, ) *ServiceInterface { + clientUcName := ucName + if ns != "" { + clientUcName = strcase.ToCamel(ns) + } + if external { + clientUcName = appName + clientUcName + } + clientLcName := strcase.ToLowerCamel(clientUcName) return &ServiceInterface{ ucName: ucName, lcName: lcName, + clientUcName: clientUcName, + clientLcName: clientLcName, serviceType: serviceType, serviceTypeName: serviceTypeName, serviceIface: serviceIface, diff --git a/v2/internal/interface/executor/generation.go b/v2/internal/interface/executor/generation.go index 07dcb5bd..76ff5e91 100644 --- a/v2/internal/interface/executor/generation.go +++ b/v2/internal/interface/executor/generation.go @@ -2,23 +2,21 @@ package executor import ( "context" + + "fmt" "path/filepath" "sync" - "github.com/swipe-io/swipe/v2/internal/types" - - "golang.org/x/tools/go/packages" - - "github.com/swipe-io/swipe/v2/internal/usecase/generator" - - "github.com/swipe-io/swipe/v2/internal/usecase/processor" - + "github.com/swipe-io/swipe/v2/internal/errors" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/option" + "github.com/swipe-io/swipe/v2/internal/types" "github.com/swipe-io/swipe/v2/internal/usecase/executor" "github.com/swipe-io/swipe/v2/internal/usecase/factory" "github.com/swipe-io/swipe/v2/internal/usecase/frame" - "github.com/swipe-io/swipe/v2/internal/usecase/registry" + "github.com/swipe-io/swipe/v2/internal/usecase/generator" + "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "golang.org/x/tools/go/packages" ) type importerer interface { @@ -26,10 +24,10 @@ type importerer interface { } type generationExecutor struct { - r registry.ProcessorRegistry - i factory.ImporterFactory - ff frame.Factory - l *option.Loader + processorFactory processor.Factory + importerFactory factory.ImporterFactory + frameFactory frame.Factory + optionLoader *option.Loader } func (e *generationExecutor) processGenerate(pkg *packages.Package, generators []generator.Generator) <-chan executor.GenerateResult { @@ -37,10 +35,8 @@ func (e *generationExecutor) processGenerate(pkg *packages.Package, generators [ go func() { var wg sync.WaitGroup - for _, g := range generators { wg.Add(1) - go func(g generator.Generator) { defer wg.Done() @@ -68,7 +64,7 @@ func (e *generationExecutor) processGenerate(pkg *packages.Package, generators [ generated.PkgPath = pkg.PkgPath generated.OutputPath = filepath.Join(outputDir, g.Filename()) - newImporter := e.i.NewImporter(generated.OutputPath, pkg) + newImporter := e.importerFactory.NewImporter(generated.OutputPath, pkg) if g, ok := g.(importerer); ok { g.SetImporter(newImporter) } @@ -77,7 +73,7 @@ func (e *generationExecutor) processGenerate(pkg *packages.Package, generators [ generated.Errs = append(generated.Errs, err) return } - fr := e.ff.NewFrame(generated.OutputPath, newImporter, pkg) + fr := e.frameFactory.NewFrame(generated.OutputPath, newImporter, pkg) content, err := fr.Frame(g.Bytes()) if err != nil { generated.Content = g.Bytes() @@ -94,43 +90,42 @@ func (e *generationExecutor) processGenerate(pkg *packages.Package, generators [ } func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs []error) { - opr, errs := e.l.Load() + opr, errs := e.optionLoader.Load() if len(errs) > 0 { return nil, errs } - var processors []processor.Processor + var wg sync.WaitGroup for _, o := range opr.Options { - p, err := e.r.NewProcessor(o, opr.ExternalOptions, opr.Data) + fn, ok := e.processorFactory.Get(o.Option.Name) + if !ok { + errs = append(errs, errors.NotePosition(o.Option.Position, + fmt.Errorf("unknown option name %s", o.Option.Name))) + continue + } + p, err := fn(o, opr) if err != nil { errs = append(errs, err) continue } - processors = append(processors, p) - } - if len(errs) > 0 { - return nil, errs - } - var wg sync.WaitGroup - for _, p := range processors { wg.Add(1) - go func(p processor.Processor) { + go func(p processor.Processor, pkg *packages.Package) { defer wg.Done() - outCh := e.processGenerate(p.Pkg(), p.Generators()) + outCh := e.processGenerate(pkg, p.Generators(pkg, opr.Data.WorkDir)) for generateResult := range outCh { results = append(results, generateResult) } - }(p) + }(p, o.Pkg) } wg.Wait() return } func NewGenerationExecutor( - r registry.ProcessorRegistry, - i factory.ImporterFactory, - ff frame.Factory, - l *option.Loader, + processorFactory processor.Factory, + importerFactory factory.ImporterFactory, + frameFactory frame.Factory, + optionLoader *option.Loader, ) executor.GenerationExecutor { - return &generationExecutor{r: r, i: i, ff: ff, l: l} + return &generationExecutor{processorFactory: processorFactory, importerFactory: importerFactory, frameFactory: frameFactory, optionLoader: optionLoader} } diff --git a/v2/internal/interface/generator/utils.go b/v2/internal/interface/generator/utils.go index 7a925733..f56cc45e 100644 --- a/v2/internal/interface/generator/utils.go +++ b/v2/internal/interface/generator/utils.go @@ -5,6 +5,8 @@ import ( "strconv" "strings" + "github.com/gertd/go-pluralize" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/domain/model" @@ -151,3 +153,15 @@ func hasMethodLogParams(named *stdtypes.Named) bool { } return false } + +func makeErrorName(iface *model.ServiceInterface, e *model.HTTPError) (errorName string) { + errorName = e.Named.Obj().Name() + strcase.ToCamel(singular(e.Named.Obj().Pkg().Name())) + if iface.External() { + errorName = iface.AppName() + errorName + } + return +} + +func singular(word string) string { + return pluralize.NewClient().Singular(word) +} diff --git a/v2/internal/interface/processor/config.go b/v2/internal/interface/processor/config.go index ff5dba52..830d12cd 100644 --- a/v2/internal/interface/processor/config.go +++ b/v2/internal/interface/processor/config.go @@ -4,30 +4,38 @@ import ( "github.com/swipe-io/swipe/v2/internal/interface/generator" uga "github.com/swipe-io/swipe/v2/internal/usecase/gateway" ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "github.com/swipe-io/swipe/v2/internal/writer" "golang.org/x/tools/go/packages" ) -type configProcessor struct { - cg uga.ConfigGateway - pkg *packages.Package - workDir string +type Config struct { + ConfigGateway uga.ConfigGateway } -func (p *configProcessor) Pkg() *packages.Package { - return p.pkg +func (p *Config) Name() string { + return "ConfigEnv" } -func (p *configProcessor) Generators() []ug.Generator { +func (p *Config) Options() []byte { + return nil +} + +func (p *Config) Generators(_ *packages.Package, wd string) []ug.Generator { generators := []ug.Generator{ - generator.NewConfig(p.cg.Struct(), p.cg.StructType(), p.cg.StructExpr(), p.cg.FuncName()), + generator.NewConfig(p.ConfigGateway.Struct(), p.ConfigGateway.StructType(), p.ConfigGateway.StructExpr(), p.ConfigGateway.FuncName()), } - if p.cg.DocEnable() { - generators = append(generators, generator.NewConfigDoc(p.cg.Struct(), p.workDir, p.cg.DocOutputDir())) + if p.ConfigGateway.DocEnable() { + generators = append(generators, generator.NewConfigDoc(p.ConfigGateway.Struct(), wd, p.ConfigGateway.DocOutputDir())) } return generators } -func NewConfig(cg uga.ConfigGateway, pkg *packages.Package, workDir string) processor.Processor { - return &configProcessor{cg: cg, pkg: pkg, workDir: workDir} +func ConfigOptions() []byte { + var w writer.GoLangWriter + w.W("// A ConfigEnvOption is an option env config.\ntype ConfigEnvOption string\n\n") + w.W("// ConfigEnv option for config generation.\n//\n// To generate a configuration loader, you can use the swipe.ConfigEnv option.\n// The optionsStruct parameter is a pointer to the configuration structure.\n//\n// The option can work with all primitives, including datetime, and an array of primitives.\n//\n// The option supports nested structures.\n//\n// To use the default value, just specify it as a value in the structure.\n//\n// Default func name is `LoadConfig`.\n//\n// You can use structure tags to control generation:\n//\n// env - name of environment var, options: `required`.\n//\n// flag - name of flag, enable as the console flag.\n//\n// desc - description for String function.\nfunc ConfigEnv(optionsStruct interface{}, opts ...ConfigEnvOption) Option {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func ConfigEnvFuncName(name string) ConfigEnvOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// ConfigEnvDocEnable enable markdown doc generate.\nfunc ConfigEnvDocEnable() ConfigEnvOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// ConfigEnvDocOutput output path markdown doc generate.\nfunc ConfigEnvDocOutput(output string) ConfigEnvOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + return w.Bytes() } diff --git a/v2/internal/interface/processor/factory.go b/v2/internal/interface/processor/factory.go new file mode 100644 index 00000000..311ed9fe --- /dev/null +++ b/v2/internal/interface/processor/factory.go @@ -0,0 +1,39 @@ +package processor + +import ( + "sort" + + up "github.com/swipe-io/swipe/v2/internal/usecase/processor" +) + +type factory struct { + factories map[string]up.FactoryFn + optFnGen map[string]func() []byte +} + +func (r *factory) Register(name string, fn up.FactoryFn, optFn func() []byte) { + r.factories[name] = fn + r.optFnGen[name] = optFn +} + +func (r *factory) Names() (names []string) { + for k, _ := range r.factories { + names = append(names, k) + } + sort.Strings(names) + return +} + +func (r *factory) GetOptGen(name string) (fn func() []byte, ok bool) { + fn, ok = r.optFnGen[name] + return +} + +func (r *factory) Get(name string) (fn up.FactoryFn, ok bool) { + fn, ok = r.factories[name] + return +} + +func NewFactory() up.Factory { + return &factory{factories: map[string]up.FactoryFn{}, optFnGen: map[string]func() []byte{}} +} diff --git a/v2/internal/interface/processor/service.go b/v2/internal/interface/processor/service.go index 03496be9..3469b779 100644 --- a/v2/internal/interface/processor/service.go +++ b/v2/internal/interface/processor/service.go @@ -6,100 +6,145 @@ import ( "github.com/swipe-io/swipe/v2/internal/interface/generator" "github.com/swipe-io/swipe/v2/internal/usecase/gateway" ug "github.com/swipe-io/swipe/v2/internal/usecase/generator" - "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "github.com/swipe-io/swipe/v2/internal/writer" "golang.org/x/tools/go/packages" ) -type serviceProcessor struct { - sg gateway.ServiceGateway - gi *git.GIT - workDir string - pkg *packages.Package +type Service struct { + ServiceGateway gateway.ServiceGateway + GIT *git.GIT } -func (p *serviceProcessor) Pkg() *packages.Package { - return p.pkg +func (p *Service) Name() string { + return "Service" } -func (p *serviceProcessor) Generators() []ug.Generator { - generators := []ug.Generator{generator.NewInterface(p.sg.Interfaces())} +func (p *Service) Generators(pkg *packages.Package, wd string) []ug.Generator { + generators := []ug.Generator{generator.NewInterface(p.ServiceGateway.Interfaces())} - if p.sg.FoundService() { - generators = append(generators, generator.NewEndpoint(p.sg)) + if p.ServiceGateway.FoundService() { + generators = append(generators, generator.NewEndpoint(p.ServiceGateway)) } - if p.sg.FoundServiceGateway() { + if p.ServiceGateway.FoundServiceGateway() { generators = append( generators, - generator.NewGatewayGenerator(p.sg.Interfaces()), + generator.NewGatewayGenerator(p.ServiceGateway.Interfaces()), ) } - if p.sg.ReadmeEnable() { - tags, _ := p.gi.GetTags() + if p.ServiceGateway.ReadmeEnable() { + tags, _ := p.GIT.GetTags() generators = append(generators, generator.NewReadme( - p.sg, - p.pkg.PkgPath, - p.workDir, + p.ServiceGateway, + pkg.PkgPath, + wd, tags, ), ) } - if p.sg.TransportType() == model.HTTPTransport { - generators = append(generators, generator.NewHttpTransport(p.sg)) - if p.sg.LoggingEnable() { - generators = append(generators, generator.NewLogging(p.sg)) + if p.ServiceGateway.TransportType() == model.HTTPTransport { + generators = append(generators, generator.NewHttpTransport(p.ServiceGateway)) + if p.ServiceGateway.LoggingEnable() { + generators = append(generators, generator.NewLogging(p.ServiceGateway)) } - if p.sg.InstrumentingEnable() { - generators = append(generators, generator.NewInstrumenting(p.sg)) + if p.ServiceGateway.InstrumentingEnable() { + generators = append(generators, generator.NewInstrumenting(p.ServiceGateway)) } - if p.sg.JSONRPCEnable() { - if p.sg.JSONRPCDocEnable() { - generators = append(generators, generator.NewJsonrpcDoc(p.sg, p.workDir)) + if p.ServiceGateway.JSONRPCEnable() { + if p.ServiceGateway.JSONRPCDocEnable() { + generators = append(generators, generator.NewJsonrpcDoc(p.ServiceGateway, wd)) } - generators = append(generators, generator.NewJsonRPCServer(p.sg)) + generators = append(generators, generator.NewJsonRPCServer(p.ServiceGateway)) } else { - generators = append(generators, generator.NewRestServer(p.sg)) + generators = append(generators, generator.NewRestServer(p.ServiceGateway)) } } - if p.sg.ClientEnable() { - if p.sg.GoClientEnable() { + if p.ServiceGateway.ClientEnable() { + if p.ServiceGateway.GoClientEnable() { generators = append(generators, - generator.NewClientStruct(p.sg), + generator.NewClientStruct(p.ServiceGateway), ) } - if p.sg.JSONRPCEnable() { - if p.sg.GoClientEnable() { + if p.ServiceGateway.JSONRPCEnable() { + if p.ServiceGateway.GoClientEnable() { generators = append( generators, - generator.NewJsonRPCGoClient(p.sg), + generator.NewJsonRPCGoClient(p.ServiceGateway), ) } - if p.sg.JSClientEnable() { + if p.ServiceGateway.JSClientEnable() { generators = append( generators, - generator.NewJsonRPCJSClient(p.sg), + generator.NewJsonRPCJSClient(p.ServiceGateway), ) } - } else if p.sg.GoClientEnable() { - generators = append(generators, generator.NewRestGoClient(p.sg)) + } else if p.ServiceGateway.GoClientEnable() { + generators = append(generators, generator.NewRestGoClient(p.ServiceGateway)) } } - if p.sg.OpenapiEnable() { - generators = append(generators, generator.NewOpenapi(p.sg, p.workDir)) + if p.ServiceGateway.OpenapiEnable() { + generators = append(generators, generator.NewOpenapi(p.ServiceGateway, wd)) } return generators } -func NewService( - sg gateway.ServiceGateway, - gi *git.GIT, - workDir string, - pkg *packages.Package, -) processor.Processor { - return &serviceProcessor{ - sg: sg, - gi: gi, - workDir: workDir, - pkg: pkg, - } +func ServiceOptions() []byte { + var w writer.GoLangWriter + w.W("// A ServiceOption is an option service.\ntype ServiceOption string\n\n") + w.W("// A MethodOption is an option method.\ntype MethodOption string\n\n") + w.W("// A OpenapiServersOption is an openapi servers option.\ntype OpenapiServersOption string\n\n") + w.W("// A OpenapiServerOption is an openapi concrete server option.\ntype OpenapiServerOption string\n\n") + + w.W("// Service a option that defines the generation of transport, metrics, tracing, and logging for gokit.\n// Given iface is nil pointer interface, for example:\n// (*pkg.Iface)(nil)\nfunc Service(opts ...ServiceOption) Option {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func Interface(iface interface{}, ns string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func AppName(string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// ReadmeEnable enable for generate readme markdown for service.\nfunc ReadmeEnable() ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func ReadmeOutput(string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func ReadmeTemplatePath(string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// JSONRPCEnable enabled use JSON RPC instead of REST.\nfunc JSONRPCEnable() ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// JSONRPCPath sets the end point for transport.\nfunc JSONRPCPath(string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// JSONRPCDocEnable enable for generate markdown JSON RPC doc.\nfunc JSONRPCDocEnable() ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// JSONRPCDocOutput change output dir for generate markdown JSON RPC doc.\nfunc JSONRPCDocOutput(output string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// MethodOptions option for defining method settings.\n// Given signature is interface method, for example:\n// pkg.Iface.Create\nfunc MethodOptions(signature interface{}, opts ...MethodOption) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// MethodDefaultOptions option for defining for all methods default settings.\nfunc MethodDefaultOptions(...MethodOption) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// Logging a option enabled/disable logging middleware.\nfunc Logging(enable bool) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func Exclude(enable bool) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func LoggingParams(includes []string, excludes []string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("func LoggingContext(key interface{}, name string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// InstrumentingEnable a option enabled/disable instrumenting (collect metrics) middleware.\nfunc Instrumenting(enable bool) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// InstrumentingDisable a option disable instrumenting (collect metrics) middleware.\nfunc InstrumentingDisable() MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// RESTMethod sets http method, default is GET.\nfunc RESTMethod(string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// WrapResponse wrap the response from the server to an object, for example if you want to return as:\n// {data: { you response data }}\n// need to add option:\n// ...code here...\n// WrapResponse(\"data\")\n// ... code here ...\nfunc RESTWrapResponse(string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// Path sets http path, default is lowecase method name with the prefix \"/\",\n// for example: the Get method will look like \" /get\".\nfunc RESTPath(string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// HeaderVars sets the key/value array to get method values from headers,\n// where the key is the name of the method parameter,\n// and the value is the name of the header.\nfunc RESTHeaderVars([]string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// QueryVars sets the key/value array to get method values from query args,\n// where the key is the name of the method parameter,\n// and the value is the name of the query args.\nfunc RESTQueryVars([]string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// DefaultErrorEncoder is responsible for encoding the server error.\nfunc DefaultErrorEncoder(f interface{}) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// ServerEncodeResponseFunc sets the encoding function of the passed\n// response object to the response writer.\nfunc ServerEncodeResponseFunc(interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// ServerDecodeRequestFunc sets a function to extract the user's domain\n// request object from the request object.\nfunc ServerDecodeRequestFunc(interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// ClientEncodeRequestFunc sets the function to encode the passed\n// request object into an object.\nfunc ClientEncodeRequestFunc(interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// ClientDecodeResponseFunc sets a function to extract the user's domain\n// response object from the response object.\nfunc ClientDecodeResponseFunc(interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// ClientsEnable enable generate Golang, JavaScript client.\nfunc ClientsEnable(langs []string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// HTTPServer enable generate http server.\nfunc HTTPServer() ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// HTTPFast enable generate fast http server.\nfunc HTTPFast() ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + + w.W("// OpenapiEnable enabled generate openapi documentation.\nfunc OpenapiEnable() ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// OpenapiTags sets docs tags for method.\nfunc OpenapiTags(methods []interface{}, tags []string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// OpenapiOutput sets output directory, path relative to the file, default is \"./\".\nfunc OpenapiOutput(string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// OpenapiInfo sets info.\nfunc OpenapiInfo(title, description, version string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// OpenapiContact sets openapi contact.\nfunc OpenapiContact(name, email, url string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// OpenapiLicence sets openapi licence.\nfunc OpenapiLicence(name, url string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("// OpenapiServer sets openapi server.\nfunc OpenapiServer(description, url string) ServiceOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n") + w.W("\n\n") + return w.Bytes() } diff --git a/v2/internal/interface/registry/processor.go b/v2/internal/interface/registry/processor.go deleted file mode 100644 index a8166d4e..00000000 --- a/v2/internal/interface/registry/processor.go +++ /dev/null @@ -1,45 +0,0 @@ -package registry - -import ( - "errors" - - "github.com/swipe-io/swipe/v2/internal/astloader" - "github.com/swipe-io/swipe/v2/internal/git" - ig "github.com/swipe-io/swipe/v2/internal/interface/gateway" - "github.com/swipe-io/swipe/v2/internal/interface/processor" - "github.com/swipe-io/swipe/v2/internal/option" - up "github.com/swipe-io/swipe/v2/internal/usecase/processor" - "github.com/swipe-io/swipe/v2/internal/usecase/registry" -) - -type registryProcessor struct { - l *option.Loader -} - -func (r *registryProcessor) NewProcessor(o *option.ResultOption, externalOptions []*option.ResultOption, data *astloader.Data) (up.Processor, error) { - gt := git.NewGIT() - switch o.Option.Name { - case "Service": - sg, err := ig.NewServiceGateway(o.Pkg, data.Module.Dir, o.Option, data.GraphTypes, data.CommentFuncs, data.CommentFields, data.Enums, data.WorkDir, externalOptions) - if err != nil { - return nil, err - } - return processor.NewService( - sg, - gt, - data.WorkDir, - o.Pkg, - ), nil - case "ConfigEnv": - return processor.NewConfig( - ig.NewConfigGateway(o.Option), - o.Pkg, - data.WorkDir, - ), nil - } - return nil, errors.New("unexpected processor: " + o.Option.Name) -} - -func NewRegistry(l *option.Loader) registry.ProcessorRegistry { - return ®istryProcessor{l: l} -} diff --git a/v2/internal/option/loader.go b/v2/internal/option/loader.go index b1aaf65e..be6300eb 100644 --- a/v2/internal/option/loader.go +++ b/v2/internal/option/loader.go @@ -23,6 +23,7 @@ type Result struct { type Loader struct { astLoader *astloader.Loader + pkgName string } func (l *Loader) declProcess(pkg *packages.Package, decl ast.Decl) (*ResultOption, error) { @@ -100,7 +101,6 @@ func (l *Loader) Load() (result *Result, errs []error) { } result.Options = append(result.Options, option) } - return } @@ -119,7 +119,7 @@ func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallE if obj == nil || obj.Pkg() == nil { continue } - if obj.Name() != "Build" { + if obj.Pkg().Name() == l.pkgName && obj.Name() != "Build" { continue } return call, nil @@ -131,6 +131,6 @@ func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallE return nil, nil } -func NewLoader(astLoader *astloader.Loader) *Loader { - return &Loader{astLoader: astLoader} +func NewLoader(astLoader *astloader.Loader, pkgName string) *Loader { + return &Loader{astLoader: astLoader, pkgName: pkgName} } diff --git a/v2/internal/types/utils.go b/v2/internal/types/utils.go index 43b21327..b25aab1d 100644 --- a/v2/internal/types/utils.go +++ b/v2/internal/types/utils.go @@ -33,23 +33,6 @@ func NameType(vars []*types.Var, qf types.Qualifier, filterFn FilterFn) (results }, filterFn) } -//func DetectAppPath(pkg *packages.Package) (string, error) { -// basePath, err := DetectBasePath(pkg) -// if err != nil { -// return "", err -// } -// -// srcPath := filepath.Join(build.Default.GOPATH, "src") + "/" -// index := strings.Index(basePath, srcPath) -// -// fmt.Println(basePath, srcPath, pkg.PkgPath) -// -// if index != -1 { -// return basePath[index+len(srcPath):], nil -// } -// return "", errors.New("fail detected app path") -//} -// func DetectBasePath(pkg *packages.Package) (string, error) { paths := pkg.GoFiles if len(paths) == 0 { diff --git a/v2/internal/usecase/processor/factory.go b/v2/internal/usecase/processor/factory.go new file mode 100644 index 00000000..e0bee104 --- /dev/null +++ b/v2/internal/usecase/processor/factory.go @@ -0,0 +1,12 @@ +package processor + +import "github.com/swipe-io/swipe/v2/internal/option" + +type FactoryFn func(o *option.ResultOption, opr *option.Result) (Processor, error) + +type Factory interface { + Register(name string, fn FactoryFn, optFn func() []byte) + Get(name string) (FactoryFn, bool) + GetOptGen(name string) (fn func() []byte, ok bool) + Names() []string +} diff --git a/v2/internal/usecase/processor/processor.go b/v2/internal/usecase/processor/processor.go index a6716160..aecf5a2c 100644 --- a/v2/internal/usecase/processor/processor.go +++ b/v2/internal/usecase/processor/processor.go @@ -6,6 +6,6 @@ import ( ) type Processor interface { - Generators() []generator.Generator - Pkg() *packages.Package + Name() string + Generators(pkg *packages.Package, wd string) []generator.Generator } diff --git a/v2/internal/usecase/registry/processor.go b/v2/internal/usecase/registry/processor.go deleted file mode 100644 index b6aff34d..00000000 --- a/v2/internal/usecase/registry/processor.go +++ /dev/null @@ -1,11 +0,0 @@ -package registry - -import ( - "github.com/swipe-io/swipe/v2/internal/astloader" - "github.com/swipe-io/swipe/v2/internal/option" - up "github.com/swipe-io/swipe/v2/internal/usecase/processor" -) - -type ProcessorRegistry interface { - NewProcessor(o *option.ResultOption, externalOptions []*option.ResultOption, data *astloader.Data) (up.Processor, error) -} diff --git a/v2/swipe.go b/v2/swipe.go deleted file mode 100644 index 458ec01f..00000000 --- a/v2/swipe.go +++ /dev/null @@ -1,334 +0,0 @@ -// Package swipe is a code generation tool that automates the creation of repetitively used code. -// Configuration parameters are presented in Swipe as parameters of the Golang function, using explicit initialization instead of -// global variables or reflections. -// -// Swipe generates code using an option: a function that calls functions that define the generation parameters. -// Using Swipe, you describe the generation parameters in the option, and then Swipe generates the code. -// -// 1. The "function as an option" approach is used to configure generation. -// -// 2. All code that is not associated with the generation parameters will not be copied to the generated file. -// -// 3. Function with a `swipe.Build` option inserted in the body. `swipe.Build` will not be transferred to the generated code. -// -// If you want the generate code, you can run: -// swipe ./pkg/... -// -// Full example: -// // +build swipe -// -// package jsonrpc -// -// import ( -// "github.com/swipe-io/swipe/v2/fixtures/service" -// -// . "github.com/swipe-io/swipe/v2/pkg/swipe" -// ) -// -// func Swipe() { -// Build( -// Service( -// (*service.Interface)(nil), -// Transport("http", -// ClientEnable(), -// Openapi( -// OpenapiOutput("/../../docs"), -// OpenapiVersion("1.0.0"), -// ), -// ), -// Logging(), -// Instrumenting(), -// ), -// ) -// } -package v2 - -const Version = "v2.0.0-rc8" - -// A Option is an option for a Swipe. -type Option string - -// A ServiceOption is an option service. -type ServiceOption string - -// A MethodOption is an option method. -type MethodOption string - -// A ConfigEnvOption is an option env config. -type ConfigEnvOption string - -// A OpenapiServersOption is an openapi servers option. -type OpenapiServersOption string - -// A OpenapiServerOption is an openapi concrete server option. -type OpenapiServerOption string - -type ReadmeOption string - -type InterfaceOption string - -// Build the basic option for defining the generation. -func Build(Option) { -} - -// ConfigEnv option for config generation. -// -// To generate a configuration loader, you can use the swipe.ConfigEnv option. -// The optionsStruct parameter is a pointer to the configuration structure. -// -// The option can work with all primitives, including datetime, and an array of primitives. -// -// The option supports nested structures. -// -// To use the default value, just specify it as a value in the structure. -// -// Default func name is `LoadConfig`. -// -// You can use structure tags to control generation: -// -// env - name of environment var, options: `required`. -// -// flag - name of flag, enable as the console flag. -// -// desc - description for String function. -func ConfigEnv(optionsStruct interface{}, opts ...ConfigEnvOption) Option { - return "implementation not generated, run swipe" -} - -func ConfigEnvFuncName(name string) ConfigEnvOption { - return "implementation not generated, run swipe" -} - -// ConfigEnvDocEnable enable markdown doc generate. -func ConfigEnvDocEnable() ConfigEnvOption { - return "implementation not generated, run swipe" -} - -// ConfigEnvDocOutput output path markdown doc generate. -func ConfigEnvDocOutput(output string) ConfigEnvOption { - return "implementation not generated, run swipe" -} - -// Service a option that defines the generation of transport, metrics, tracing, and logging for gokit. -// Given iface is nil pointer interface, for example: -// (*pkg.Iface)(nil) -func Service(opts ...ServiceOption) Option { - return "implementation not generated, run swipe" -} - -func Interface(iface interface{}, ns string) ServiceOption { - return "implementation not generated, run swipe" -} - -func AppName(string) ServiceOption { - return "implementation not generated, run swipe" -} - -// ReadmeEnable enable for generate readme markdown for service. -func ReadmeEnable() ServiceOption { - return "implementation not generated, run swipe" -} - -func ReadmeOutput(string) ServiceOption { - return "implementation not generated, run swipe" -} - -func ReadmeTemplatePath(string) ServiceOption { - return "implementation not generated, run swipe" -} - -// JSONRPCEnable enabled use JSON RPC instead of REST. -func JSONRPCEnable() ServiceOption { - return "implementation not generated, run swipe" -} - -// JSONRPCPath sets the end point for transport. -func JSONRPCPath(string) ServiceOption { - return "implementation not generated, run swipe" -} - -// JSONRPCDocEnable enable for generate markdown JSON RPC doc. -func JSONRPCDocEnable() ServiceOption { - return "implementation not generated, run swipe" -} - -// JSONRPCDocOutput change output dir for generate markdown JSON RPC doc. -func JSONRPCDocOutput(output string) ServiceOption { - return "implementation not generated, run swipe" -} - -// MethodOptions option for defining method settings. -// Given signature is interface method, for example: -// pkg.Iface.Create -func MethodOptions(signature interface{}, opts ...MethodOption) ServiceOption { - return "implementation not generated, run swipe" -} - -// MethodDefaultOptions option for defining for all methods default settings. -func MethodDefaultOptions(...MethodOption) ServiceOption { - return "implementation not generated, run swipe" -} - -func AggregateBuilder() *aggregateBuilder { - return &aggregateBuilder{} -} - -type aggregateBuilder struct { -} - -func (*aggregateBuilder) From(interface{}) *aggregateBuilder { - return nil -} - -func (*aggregateBuilder) MapField([]string) *aggregateBuilder { - return nil -} - -func (*aggregateBuilder) SelectFields([]string) *aggregateBuilder { - return nil -} - -func Aggregate(b *aggregateBuilder) MethodOption { - return "implementation not generated, run swipe" -} - -// Logging a option enabled/disable logging middleware. -func Logging(enable bool) MethodOption { - return "implementation not generated, run swipe" -} - -func Exclude(enable bool) MethodOption { - return "implementation not generated, run swipe" -} - -func LoggingParams(includes []string, excludes []string) MethodOption { - return "implementation not generated, run swipe" -} - -func LoggingContext(key interface{}, name string) MethodOption { - return "implementation not generated, run swipe" -} - -// InstrumentingEnable a option enabled/disable instrumenting (collect metrics) middleware. -func Instrumenting(enable bool) MethodOption { - return "implementation not generated, run swipe" -} - -// InstrumentingDisable a option disable instrumenting (collect metrics) middleware. -func InstrumentingDisable() MethodOption { - return "implementation not generated, run swipe" -} - -// RESTMethod sets http method, default is GET. -func RESTMethod(string) MethodOption { - return "implementation not generated, run swipe" -} - -// WrapResponse wrap the response from the server to an object, for example if you want to return as: -// {data: { you response data }} -// need to add option: -// ...code here... -// WrapResponse("data") -// ... code here ... -func RESTWrapResponse(string) MethodOption { - return "implementation not generated, run swipe" -} - -// Path sets http path, default is lowecase method name with the prefix "/", -// for example: the Get method will look like " /get". -func RESTPath(string) MethodOption { - return "implementation not generated, run swipe" -} - -// HeaderVars sets the key/value array to get method values from headers, -// where the key is the name of the method parameter, -// and the value is the name of the header. -func RESTHeaderVars([]string) MethodOption { - return "implementation not generated, run swipe" -} - -// QueryVars sets the key/value array to get method values from query args, -// where the key is the name of the method parameter, -// and the value is the name of the query args. -func RESTQueryVars([]string) MethodOption { - return "implementation not generated, run swipe" -} - -// DefaultErrorEncoder is responsible for encoding the server error. -func DefaultErrorEncoder(f interface{}) ServiceOption { - return "implementation not generated, run swipe" -} - -// ServerEncodeResponseFunc sets the encoding function of the passed -// response object to the response writer. -func ServerEncodeResponseFunc(interface{}) MethodOption { - return "implementation not generated, run swipe" -} - -// ServerDecodeRequestFunc sets a function to extract the user's domain -// request object from the request object. -func ServerDecodeRequestFunc(interface{}) MethodOption { - return "implementation not generated, run swipe" -} - -// ClientEncodeRequestFunc sets the function to encode the passed -// request object into an object. -func ClientEncodeRequestFunc(interface{}) MethodOption { - return "implementation not generated, run swipe" -} - -// ClientDecodeResponseFunc sets a function to extract the user's domain -// response object from the response object. -func ClientDecodeResponseFunc(interface{}) MethodOption { - return "implementation not generated, run swipe" -} - -// ClientsEnable enable generate Golang, JavaScript client. -func ClientsEnable(langs []string) ServiceOption { - return "implementation not generated, run swipe" -} - -// ServerDisabled enable generate http server. -func HTTPServer() ServiceOption { - return "implementation not generated, run swipe" -} - -// HTTPFast enable generate fast http server. -func HTTPFast() ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiEnable enabled generate openapi documentation. -func OpenapiEnable() ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiTags sets docs tags for method. -func OpenapiTags(methods []interface{}, tags []string) ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiOutput sets output directory, path relative to the file, default is "./". -func OpenapiOutput(string) ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiInfo sets info. -func OpenapiInfo(title, description, version string) ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiContact sets openapi contact. -func OpenapiContact(name, email, url string) ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiLicence sets openapi licence. -func OpenapiLicence(name, url string) ServiceOption { - return "implementation not generated, run swipe" -} - -// OpenapiServer sets openapi server. -func OpenapiServer(description, url string) ServiceOption { - return "implementation not generated, run swipe" -} From 5c1dabfdaae41f61b526c527f44d945c142f483a Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 23 Mar 2021 19:57:43 +0300 Subject: [PATCH 189/293] chore(release): 2.0.0-rc9 --- CHANGELOG.md | 28 +++++++++++++++++++++------- v2/cmd/swipe/main.go | 14 +++++--------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f3b07a7..18016a9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,17 @@ + +## [v2.0.0-rc9] - 2021-03-23 +### Bug Fixes +- js errors name generation + +### Features +- removed package github.com/swipe-io/swipe/v2, added its generation to the project + +### BREAKING CHANGE + +the package github.com/swipe-io/swipe/v2 is missing, you need to generate it in your project with the swipe gen --init command + + ## [v2.0.0-rc8] - 2021-03-18 ### Bug Fixes @@ -282,11 +295,11 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [vv2.0.0-beta.1] - 2020-09-09 - -## [vv2.0.0-alpha.16] - 2020-09-09 - ## [vv2.0.0-alpha.15] - 2020-09-09 + + +## [vv2.0.0-alpha.16] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -781,7 +794,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc8...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc9...HEAD +[v2.0.0-rc9]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc8...v2.0.0-rc9 [v2.0.0-rc8]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc7...v2.0.0-rc8 [v2.0.0-rc7]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc6...v2.0.0-rc7 [v2.0.0-rc6]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc5...v2.0.0-rc6 @@ -820,9 +834,9 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 [v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...v1.26.7 -[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-beta.1 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-alpha.16 -[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.15 +[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-beta.1 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-alpha.15 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index e2b3e142..6c79e701 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -13,29 +13,25 @@ import ( "sort" "strings" - "github.com/swipe-io/swipe/v2/internal/writer" - - "github.com/swipe-io/swipe/v2/internal/interface/gateway" - - "github.com/swipe-io/swipe/v2/internal/git" - - up "github.com/swipe-io/swipe/v2/internal/usecase/processor" - "github.com/google/subcommands" "github.com/gookit/color" "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v2/internal/astloader" "github.com/swipe-io/swipe/v2/internal/fixcomment" + "github.com/swipe-io/swipe/v2/internal/git" "github.com/swipe-io/swipe/v2/internal/interface/executor" "github.com/swipe-io/swipe/v2/internal/interface/factory" "github.com/swipe-io/swipe/v2/internal/interface/frame" + "github.com/swipe-io/swipe/v2/internal/interface/gateway" "github.com/swipe-io/swipe/v2/internal/interface/processor" "github.com/swipe-io/swipe/v2/internal/option" "github.com/swipe-io/swipe/v2/internal/stcreator" + up "github.com/swipe-io/swipe/v2/internal/usecase/processor" + "github.com/swipe-io/swipe/v2/internal/writer" ) -const Version = "v2.0.0-rc8" +const Version = "v2.0.0-rc9" var ( colorSuccess = color.Green.Render From 102f8e250be665cc436fc6d049801ecd2524e3f9 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 23 Mar 2021 20:00:29 +0300 Subject: [PATCH 190/293] chore(release): 2.0.0-rc9 --- v2/cmd/swipe/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index 6c79e701..b1b39144 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -177,7 +177,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa goSrc := w.Bytes() fmtSrc, err := format.Source(goSrc) if err != nil { - log.Println(colorFail(fmt.Sprintf("error: %w\n ***\n%s\n***\n\n", err, string(goSrc)))) + log.Println(colorFail(fmt.Sprintf("error: %s\n ***\n%s\n***\n\n", err, string(goSrc)))) return subcommands.ExitFailure } if err := ioutil.WriteFile(filepath.Join(swipePkgPath, "swipe.go"), fmtSrc, 0755); err != nil { From 9f6a5b421fc589ddab8305b4c65c1480b96bae08 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 23 Mar 2021 20:21:10 +0300 Subject: [PATCH 191/293] fix: invalid swipe package path check --- v2/internal/option/loader.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/v2/internal/option/loader.go b/v2/internal/option/loader.go index be6300eb..bbfa4daf 100644 --- a/v2/internal/option/loader.go +++ b/v2/internal/option/loader.go @@ -119,12 +119,14 @@ func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallE if obj == nil || obj.Pkg() == nil { continue } - if obj.Pkg().Name() == l.pkgName && obj.Name() != "Build" { + if obj.Pkg().Name() != l.pkgName { + continue + } + if obj.Name() != "Build" { continue } return call, nil case *ast.EmptyStmt: - return nil, nil } } From 9ac880d7ce6e9f2c92834e1fb121d3fad2de8cef Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 23 Mar 2021 20:21:58 +0300 Subject: [PATCH 192/293] chore(release): v2.0.0-rc10 --- CHANGELOG.md | 42 ++++++++++++++++++++++++------------------ homebrew-swipe | 2 +- v2/cmd/swipe/main.go | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18016a9e..fc00c181 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ + +## [v2.0.0-rc10] - 2021-03-23 +### Bug Fixes +- invalid swipe package path check + + ## [v2.0.0-rc9] - 2021-03-23 ### Bug Fixes @@ -292,14 +298,14 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [v1.26.7] - 2020-09-09 - -## [vv2.0.0-beta.1] - 2020-09-09 - ## [vv2.0.0-alpha.15] - 2020-09-09 ## [vv2.0.0-alpha.16] - 2020-09-09 + + +## [vv2.0.0-beta.1] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -469,18 +475,13 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee - Added annotation for encoding/json.RawMessage in markdown JS client documentation. - Added annotation for encoding/json.RawMessage in JS client. - Invalid path definition for JSON RPC client documentation. - -### Features -- Added command for generate CRUD service structure. - - - -## [v1.24.4] - 2020-07-28 -### Bug Fixes - Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. +### Features +- Added command for generate CRUD service structure. + ## [v1.24.1] - 2020-07-28 @@ -490,7 +491,11 @@ Now all requests are not asynchronous, to enable an asynchronous request you nee ## [v1.24.3] - 2020-07-28 + + +## [v1.24.4] - 2020-07-28 ### Bug Fixes +- Incorrect generate enum name for markdown docs. - Change enums JSON RPC client generate format. - Added generate enum constants for JSON RPC client. @@ -794,7 +799,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc9...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc10...HEAD +[v2.0.0-rc10]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc9...v2.0.0-rc10 [v2.0.0-rc9]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc8...v2.0.0-rc9 [v2.0.0-rc8]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc7...v2.0.0-rc8 [v2.0.0-rc7]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc6...v2.0.0-rc7 @@ -833,10 +839,10 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 -[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...v1.26.7 -[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-beta.1 +[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 [vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-alpha.15 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.16 +[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-beta.1 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 @@ -859,11 +865,11 @@ if you used the ability to use the code in the generation description file, then [v1.25.0]: https://github.com/swipe-io/swipe/compare/v1.24.7...v1.25.0 [v1.24.7]: https://github.com/swipe-io/swipe/compare/v1.24.6...v1.24.7 [v1.24.6]: https://github.com/swipe-io/swipe/compare/v1.24.5...v1.24.6 -[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.5 -[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.4 +[v1.24.5]: https://github.com/swipe-io/swipe/compare/v1.24.1...v1.24.5 [v1.24.1]: https://github.com/swipe-io/swipe/compare/v1.24.2...v1.24.1 [v1.24.2]: https://github.com/swipe-io/swipe/compare/v1.24.3...v1.24.2 -[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.3 +[v1.24.3]: https://github.com/swipe-io/swipe/compare/v1.24.4...v1.24.3 +[v1.24.4]: https://github.com/swipe-io/swipe/compare/v1.24.0...v1.24.4 [v1.24.0]: https://github.com/swipe-io/swipe/compare/v1.23.0...v1.24.0 [v1.23.0]: https://github.com/swipe-io/swipe/compare/v1.22.4...v1.23.0 [v1.22.4]: https://github.com/swipe-io/swipe/compare/v1.22.3...v1.22.4 diff --git a/homebrew-swipe b/homebrew-swipe index 17412d56..e70a065a 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 17412d56366d8adbff8cc1234ef8f831c5237bb8 +Subproject commit e70a065a33654cec46fd4ddd6c3ab3e26a98328d diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index b1b39144..b691d72d 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -31,7 +31,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/writer" ) -const Version = "v2.0.0-rc9" +const Version = "v2.0.0-rc10" var ( colorSuccess = color.Green.Render From 0fe6a6ae7773d6fb51db66675fb9fd8442e31f4f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 25 Mar 2021 13:42:15 +0300 Subject: [PATCH 193/293] fix: generating structure names for gateway --- homebrew-swipe | 2 +- v2/cmd/swipe/main.go | 24 +++++++++---- v2/internal/interface/executor/generation.go | 3 ++ .../interface/generator/client_struct.go | 36 +++++++++++++++---- v2/internal/interface/generator/endpoint.go | 4 +-- .../interface/generator/http_gateway.go | 4 +-- .../interface/generator/http_transport.go | 14 ++++++-- .../interface/generator/instrumenting.go | 2 +- v2/internal/interface/generator/interface.go | 2 +- .../interface/generator/jsonrpc_go_client.go | 18 ++++++---- .../interface/generator/jsonrpc_server.go | 6 ++-- v2/internal/interface/generator/logging.go | 4 +-- .../interface/generator/rest_go_client.go | 16 +++++---- v2/internal/option/loader.go | 8 ++--- 14 files changed, 96 insertions(+), 47 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index e70a065a..a949df1c 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit e70a065a33654cec46fd4ddd6c3ab3e26a98328d +Subproject commit a949df1cc322999f7f2637f6224f20d19b0a7294 diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index b691d72d..42bd0861 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -114,6 +114,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa packages = append(packages, strings.Split(string(data), "\n")...) } + log.Printf("%s: %s\n", color.Yellow.Render("Packages"), strings.Join(packages, ", ")) log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), wd) if cmd.swipePkg == "" { @@ -121,11 +122,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa } swipePkgPath := filepath.Join(wd, cmd.swipePkg) - if err := os.MkdirAll(swipePkgPath, 0755); err != nil { - log.Println(colorFail(err)) - return subcommands.ExitFailure - } - + swipePkgFilePath := filepath.Join(swipePkgPath, "swipe.go") parts := strings.Split(swipePkgPath, "/") pkgName := parts[len(parts)-1] @@ -152,12 +149,17 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa }, processor.ConfigOptions) astLoader := astloader.NewLoader(wd, os.Environ(), packages) - optionLoader := option.NewLoader(astLoader, pkgName) + optionLoader := option.NewLoader(astLoader) importerFactory := factory.NewImporterFactory() frameFactory := frame.NewFrameFactory(Version) generationExecutor := executor.NewGenerationExecutor(processorFactory, importerFactory, frameFactory, optionLoader) if cmd.init { + if err := os.MkdirAll(swipePkgPath, 0755); err != nil { + log.Println(colorFail(err)) + return subcommands.ExitFailure + } + var w writer.GoLangWriter w.W("// Code generated by Swipe %s. DO NOT EDIT.\n\n", Version) @@ -180,13 +182,21 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa log.Println(colorFail(fmt.Sprintf("error: %s\n ***\n%s\n***\n\n", err, string(goSrc)))) return subcommands.ExitFailure } - if err := ioutil.WriteFile(filepath.Join(swipePkgPath, "swipe.go"), fmtSrc, 0755); err != nil { + if err := ioutil.WriteFile(swipePkgFilePath, fmtSrc, 0755); err != nil { log.Println(colorFail(err)) return subcommands.ExitFailure } + + fmt.Printf("%s: %s", colorSuccess("swipe options generate success"), colorAccent(swipePkgFilePath)) + return subcommands.ExitSuccess } + if _, err := os.Stat(swipePkgFilePath); err != nil { + log.Printf("%s %s\n", colorFail("swipe options file \""+swipePkgFilePath+"\" not found, run:"), color.Yellow.Render("swipe gen --init")) + return subcommands.ExitFailure + } + // clear all before generated files. _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { if !strings.Contains(path, "/vendor/") { diff --git a/v2/internal/interface/executor/generation.go b/v2/internal/interface/executor/generation.go index 76ff5e91..535153be 100644 --- a/v2/internal/interface/executor/generation.go +++ b/v2/internal/interface/executor/generation.go @@ -94,6 +94,9 @@ func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs if len(errs) > 0 { return nil, errs } + if len(opr.Options) == 0 { + return nil, []error{fmt.Errorf("swipe options not found")} + } var wg sync.WaitGroup for _, o := range opr.Options { fn, ok := e.processorFactory.Get(o.Option.Name) diff --git a/v2/internal/interface/generator/client_struct.go b/v2/internal/interface/generator/client_struct.go index 831e9983..63312e91 100644 --- a/v2/internal/interface/generator/client_struct.go +++ b/v2/internal/interface/generator/client_struct.go @@ -57,8 +57,15 @@ func (g *clientStruct) Process(ctx context.Context) error { g.W("type AppClient struct {\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - typeStr := iface.UcName() + "Interface" - g.W("%sClient %s\n", iface.UcName(), typeStr) + + name := iface.UcName() + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } + + clientType := name + "Client" + + g.W("%s *%s\n", name, clientType) } g.W("}\n\n") @@ -74,10 +81,16 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) + name := iface.UcName() + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } + lcName := strcase.ToLowerCamel(name) + if g.options.JSONRPCEnable() { - g.W("%sClient, err := NewClientJSONRPC%s(tgt, opts...)\n", iface.LcName(), iface.UcName()) + g.W("%s, err := NewClientJSONRPC%s(tgt, opts...)\n", lcName, name) } else { - g.W("%sClient, err := NewClientREST%s(tgt, opts...)\n", iface.LcName(), iface.UcName()) + g.W("%s, err := NewClientREST%s(tgt, opts...)\n", lcName, name) } g.WriteCheckErr(func() { @@ -88,7 +101,13 @@ func (g *clientStruct) Process(ctx context.Context) error { g.W("return &AppClient{\n") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - g.W("%[1]sClient: %[2]sClient,\n", iface.UcName(), iface.LcName()) + name := iface.UcName() + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } + lcName := strcase.ToLowerCamel(name) + + g.W("%[1]s: %[2]s,\n", name, lcName) } g.W("}, nil\n") g.W("}\n\n") @@ -152,7 +171,12 @@ func (g *clientStruct) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - clientType := fmt.Sprintf("client%s", iface.UcName()) + name := iface.UcName() + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } + + clientType := fmt.Sprintf("%sClient", name) contextPkg = g.i.Import("context", "context") diff --git a/v2/internal/interface/generator/endpoint.go b/v2/internal/interface/generator/endpoint.go index 915e81cb..cf511a3d 100644 --- a/v2/internal/interface/generator/endpoint.go +++ b/v2/internal/interface/generator/endpoint.go @@ -39,7 +39,7 @@ func (g *endpoint) Process(ctx context.Context) error { continue } - typeStr := iface.UcName() + "Interface" + typeStr := iface.LcName() + "Interface" epSetName := iface.UcName() + "EndpointSet" g.W("type %s struct {\n", epSetName) @@ -109,7 +109,7 @@ func (g *endpoint) writeEndpointMake() { contextPkg := g.i.Import("context", "context") kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") - typeStr := iface.UcName() + "Interface" + typeStr := iface.LcName() + "Interface" for _, m := range iface.Methods() { g.W("func Make%sEndpoint(s %s) %s.Endpoint {\n", m.IfaceUcName, typeStr, kitEndpointPkg) diff --git a/v2/internal/interface/generator/http_gateway.go b/v2/internal/interface/generator/http_gateway.go index 07995729..be0a9696 100644 --- a/v2/internal/interface/generator/http_gateway.go +++ b/v2/internal/interface/generator/http_gateway.go @@ -68,7 +68,7 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { if !s.External() { continue } - g.W("%s struct {\n", s.UcName()) + g.W("%s struct {\n", s.UcNameWithPrefix()) for _, method := range s.Methods() { g.W("%sEndpoint %s.Endpoint\n", method.Name, epPkg) } @@ -83,7 +83,7 @@ func (g *httpGatewayGenerator) Process(ctx context.Context) error { transportExtPkg := g.i.Import(s.ExternalSwipePkg().Name, s.ExternalSwipePkg().PkgPath) - g.W("type %sOption struct {\n", s.UcName()) + g.W("type %sOption struct {\n", s.UcNameWithPrefix()) g.W("Instancer %s.Instancer \n", sdPkg) g.W("Instance string \n") g.W("ClientOptions []%s.ClientOption\n", transportExtPkg) diff --git a/v2/internal/interface/generator/http_transport.go b/v2/internal/interface/generator/http_transport.go index 6a71b7ba..bf7a338d 100644 --- a/v2/internal/interface/generator/http_transport.go +++ b/v2/internal/interface/generator/http_transport.go @@ -165,10 +165,13 @@ func (g *httpTransport) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - for _, m := range iface.Methods() { - g.W("%sServerOption []%s\n", m.IfaceLcName, kitHTTPServerOption) - g.W("%sEndpointMiddleware []%s\n", m.IfaceLcName, endpointMiddlewareOption) + name := m.IfaceLcName + if iface.External() { + name = iface.LcNameWithPrefix() + m.Name + } + g.W("%sServerOption []%s\n", name, kitHTTPServerOption) + g.W("%sEndpointMiddleware []%s\n", name, endpointMiddlewareOption) } } g.W("}\n") @@ -179,6 +182,11 @@ func (g *httpTransport) Process(ctx context.Context) error { fnPrefix := m.IfaceUcName paramPrefix := m.IfaceLcName + if iface.External() { + fnPrefix = iface.UcNameWithPrefix() + m.Name + paramPrefix = iface.LcNameWithPrefix() + m.Name + } + g.WriteFunc( fmt.Sprintf("%sServerOptions", fnPrefix), "", diff --git a/v2/internal/interface/generator/instrumenting.go b/v2/internal/interface/generator/instrumenting.go index e2ae4c25..67c07c25 100644 --- a/v2/internal/interface/generator/instrumenting.go +++ b/v2/internal/interface/generator/instrumenting.go @@ -50,7 +50,7 @@ func (g *instrumentingGenerator) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - nextName := iface.UcNameWithPrefix() + "Interface" + nextName := iface.LcNameWithPrefix() + "Interface" timePkg := g.i.Import("time", "time") stdPrometheusPkg := g.i.Import("prometheus", "github.com/prometheus/client_golang/prometheus") diff --git a/v2/internal/interface/generator/interface.go b/v2/internal/interface/generator/interface.go index e51f7f65..6a439461 100644 --- a/v2/internal/interface/generator/interface.go +++ b/v2/internal/interface/generator/interface.go @@ -25,7 +25,7 @@ func (g *interfaceGenerator) Process(ctx context.Context) (err error) { for i := 0; i < g.interfaces.Len(); i++ { iface := g.interfaces.At(i) - interfaceType := iface.UcNameWithPrefix() + "Interface" + interfaceType := iface.LcNameWithPrefix() + "Interface" g.W("type %s interface {\n", interfaceType) for _, m := range iface.Methods() { diff --git a/v2/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go index a19dc162..a2e0a800 100644 --- a/v2/internal/interface/generator/jsonrpc_go_client.go +++ b/v2/internal/interface/generator/jsonrpc_go_client.go @@ -5,6 +5,8 @@ import ( stdtypes "go/types" "strconv" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v2/internal/domain/model" "github.com/swipe-io/swipe/v2/internal/importer" "github.com/swipe-io/swipe/v2/internal/usecase/generator" @@ -42,21 +44,23 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { iface := g.options.Interfaces().At(i) - clientType := "client" + iface.UcName() - - typeStr := iface.UcName() + "Interface" + name := iface.UcName() + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } + clientType := name + "Client" if g.options.Interfaces().Len() == 1 { g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") g.W(" ,options ...ClientOption") - g.W(") (%s, error) {\n", typeStr) - g.W("return NewClientJSONRPC%s(tgt, options...)", iface.UcName()) + g.W(") (*%s, error) {\n", clientType) + g.W("return NewClientJSONRPC%s(tgt, options...)", name) g.W("}\n") } - g.W("func NewClientJSONRPC%s(tgt string", iface.UcName()) + g.W("func NewClientJSONRPC%s(tgt string", name) g.W(" ,options ...ClientOption") - g.W(") (%s, error) {\n", typeStr) + g.W(") (*%s, error) {\n", clientType) g.W("opts := &clientOpts{}\n") g.W("c := &%s{}\n", clientType) g.W("for _, o := range options {\n") diff --git a/v2/internal/interface/generator/jsonrpc_server.go b/v2/internal/interface/generator/jsonrpc_server.go index 220fe1e9..7078957e 100644 --- a/v2/internal/interface/generator/jsonrpc_server.go +++ b/v2/internal/interface/generator/jsonrpc_server.go @@ -143,7 +143,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { if iface.External() { external = true - g.W("%s %sOption", iface.LcName(), iface.UcName()) + g.W("%s %sOption", iface.LcNameWithPrefix(), iface.UcNameWithPrefix()) } else { g.W("svc%s %s", iface.UcName(), typeStr) } @@ -183,7 +183,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { } for _, m := range iface.Methods() { - optName := iface.LcName() + optName := iface.LcNameWithPrefix() epFactoryName := "endpointFactory" kitEndpointPkg := g.i.Import("endpoint", "github.com/go-kit/kit/endpoint") transportExtPkg := g.i.Import(iface.ExternalSwipePkg().Name, iface.ExternalSwipePkg().PkgPath) @@ -230,7 +230,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { ) g.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - m.IfaceLcName, m.Name, epSetName, + iface.LcNameWithPrefix()+m.Name, m.Name, epSetName, ) g.W("}\n") } diff --git a/v2/internal/interface/generator/logging.go b/v2/internal/interface/generator/logging.go index 370b532e..ebd0efe9 100644 --- a/v2/internal/interface/generator/logging.go +++ b/v2/internal/interface/generator/logging.go @@ -36,12 +36,12 @@ func (g *logging) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - interfaceType := iface.UcNameWithPrefix() + "Interface" + interfaceType := iface.LcNameWithPrefix() + "Interface" timePkg := g.i.Import("time", "time") loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") - name := iface.UcNameWithPrefix() + "LoggingMiddleware" + name := iface.LcNameWithPrefix() + "LoggingMiddleware" constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.UcNameWithPrefix()) g.WriteTypeStruct( diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index 4dcd4967..e033a050 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -44,8 +44,12 @@ func (g *restGoClient) Process(_ context.Context) error { pkgIO string ) iface := g.options.Interfaces().At(i) - clientType := "client" + iface.UcName() - typeStr := iface.UcName() + "Interface" + + name := iface.UcName() + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } + clientType := name + "Client" if g.options.UseFast() { kitHTTPPkg = g.i.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") @@ -68,14 +72,14 @@ func (g *restGoClient) Process(_ context.Context) error { if g.options.Interfaces().Len() == 1 { g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") g.W(" ,options ...ClientOption") - g.W(") (%s, error) {\n", typeStr) - g.W("return NewClientJSONRPC%s(tgt, options...)", iface.UcName()) + g.W(") (*%s, error) {\n", name) + g.W("return NewClientJSONRPC%s(tgt, options...)", name) g.W("}\n") } - g.W("func NewClientJSONRPC%s(tgt string", iface.UcName()) + g.W("func NewClientJSONRPC%s(tgt string", name) g.W(" ,options ...ClientOption") - g.W(") (%s, error) {\n", typeStr) + g.W(") (*%s, error) {\n", name) g.W("opts := &clientOpts{}\n") g.W("c := &%s{}\n", clientType) g.W("for _, o := range options {\n") diff --git a/v2/internal/option/loader.go b/v2/internal/option/loader.go index bbfa4daf..298cd5eb 100644 --- a/v2/internal/option/loader.go +++ b/v2/internal/option/loader.go @@ -23,7 +23,6 @@ type Result struct { type Loader struct { astLoader *astloader.Loader - pkgName string } func (l *Loader) declProcess(pkg *packages.Package, decl ast.Decl) (*ResultOption, error) { @@ -119,9 +118,6 @@ func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallE if obj == nil || obj.Pkg() == nil { continue } - if obj.Pkg().Name() != l.pkgName { - continue - } if obj.Name() != "Build" { continue } @@ -133,6 +129,6 @@ func (l *Loader) findInjector(info *stdtypes.Info, fn *ast.FuncDecl) (*ast.CallE return nil, nil } -func NewLoader(astLoader *astloader.Loader, pkgName string) *Loader { - return &Loader{astLoader: astLoader, pkgName: pkgName} +func NewLoader(astLoader *astloader.Loader) *Loader { + return &Loader{astLoader: astLoader} } From c0314245b58be3fbd2b9816c8b387e6e35dfdf9a Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 25 Mar 2021 13:44:17 +0300 Subject: [PATCH 194/293] chore(release): 2.0.0-rc11 --- CHANGELOG.md | 21 ++++++++++++++------- v2/cmd/swipe/main.go | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc00c181..2cbad8cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ + +## [v2.0.0-rc11] - 2021-03-25 +### Bug Fixes +- generating structure names for gateway + + ## [v2.0.0-rc10] - 2021-03-23 ### Bug Fixes @@ -298,14 +304,14 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [v1.26.7] - 2020-09-09 - -## [vv2.0.0-alpha.15] - 2020-09-09 - ## [vv2.0.0-alpha.16] - 2020-09-09 ## [vv2.0.0-beta.1] - 2020-09-09 + + +## [vv2.0.0-alpha.15] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -799,7 +805,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc10...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc11...HEAD +[v2.0.0-rc11]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc10...v2.0.0-rc11 [v2.0.0-rc10]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc9...v2.0.0-rc10 [v2.0.0-rc9]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc8...v2.0.0-rc9 [v2.0.0-rc8]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc7...v2.0.0-rc8 @@ -839,10 +846,10 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 -[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 -[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-alpha.15 +[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...v1.26.7 [vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.16 -[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-beta.1 +[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-beta.1 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.15 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index 42bd0861..cb0ab0fd 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -31,7 +31,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/writer" ) -const Version = "v2.0.0-rc10" +const Version = "v2.0.0-rc11" var ( colorSuccess = color.Green.Render From d1bce713d1a7c25849408f01f31f317b5c47e11f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 25 Mar 2021 13:55:37 +0300 Subject: [PATCH 195/293] fix: generating non-exportable structure for logging --- v2/internal/interface/generator/logging.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/internal/interface/generator/logging.go b/v2/internal/interface/generator/logging.go index ebd0efe9..e35cfe32 100644 --- a/v2/internal/interface/generator/logging.go +++ b/v2/internal/interface/generator/logging.go @@ -41,7 +41,7 @@ func (g *logging) Process(ctx context.Context) error { timePkg := g.i.Import("time", "time") loggerPkg := g.i.Import("log", "github.com/go-kit/kit/log") - name := iface.LcNameWithPrefix() + "LoggingMiddleware" + name := iface.UcNameWithPrefix() + "LoggingMiddleware" constructName := fmt.Sprintf("NewLogging%sMiddleware", iface.UcNameWithPrefix()) g.WriteTypeStruct( From 38103193c32a015f1aad7540585ec6a7af97333f Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 25 Mar 2021 13:56:39 +0300 Subject: [PATCH 196/293] chore(release): 2.0.0-rc12 --- CHANGELOG.md | 25 ++++++++++++++++--------- homebrew-swipe | 2 +- v2/cmd/swipe/main.go | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cbad8cd..c46ddfb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ + +## [v2.0.0-rc12] - 2021-03-25 +### Bug Fixes +- generating non-exportable structure for logging + + ## [v2.0.0-rc11] - 2021-03-25 ### Bug Fixes @@ -304,14 +310,14 @@ The swipe functions are no longer available in the github.com/swipe-io/swipe/pkg ## [v1.26.7] - 2020-09-09 - -## [vv2.0.0-alpha.16] - 2020-09-09 + +## [vv2.0.0-alpha.15] - 2020-09-09 ## [vv2.0.0-beta.1] - 2020-09-09 - -## [vv2.0.0-alpha.15] - 2020-09-09 + +## [vv2.0.0-alpha.16] - 2020-09-09 ### Features - Added Path property to EndpointFactory for concatenated to server URL. @@ -805,7 +811,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc11...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc12...HEAD +[v2.0.0-rc12]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc11...v2.0.0-rc12 [v2.0.0-rc11]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc10...v2.0.0-rc11 [v2.0.0-rc10]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc9...v2.0.0-rc10 [v2.0.0-rc9]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc8...v2.0.0-rc9 @@ -846,10 +853,10 @@ if you used the ability to use the code in the generation description file, then [v2.0.0-alpha.3]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 [v2.0.0-alpha.2]: https://github.com/swipe-io/swipe/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 [v2.0.0-alpha.1]: https://github.com/swipe-io/swipe/compare/v1.26.7...v2.0.0-alpha.1 -[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...v1.26.7 -[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.16 -[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...vv2.0.0-beta.1 -[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.15 +[v1.26.7]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.15...v1.26.7 +[vv2.0.0-alpha.15]: https://github.com/swipe-io/swipe/compare/vv2.0.0-beta.1...vv2.0.0-alpha.15 +[vv2.0.0-beta.1]: https://github.com/swipe-io/swipe/compare/vv2.0.0-alpha.16...vv2.0.0-beta.1 +[vv2.0.0-alpha.16]: https://github.com/swipe-io/swipe/compare/v1.26.6...vv2.0.0-alpha.16 [v1.26.6]: https://github.com/swipe-io/swipe/compare/v1.26.5...v1.26.6 [v1.26.5]: https://github.com/swipe-io/swipe/compare/v1.26.4...v1.26.5 [v1.26.4]: https://github.com/swipe-io/swipe/compare/v1.26.3...v1.26.4 diff --git a/homebrew-swipe b/homebrew-swipe index a949df1c..70ff8477 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit a949df1cc322999f7f2637f6224f20d19b0a7294 +Subproject commit 70ff8477342334aab131f71afeb4a2bc5bd10e2b diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index cb0ab0fd..30aacb2b 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -31,7 +31,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/writer" ) -const Version = "v2.0.0-rc11" +const Version = "v2.0.0-rc12" var ( colorSuccess = color.Green.Render From 4dea3b49dd3318530f93dd8ad53f1f7f3ae49a85 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 25 Mar 2021 14:07:07 +0300 Subject: [PATCH 197/293] feat: using the generated interface in the handler constructor --- v2/internal/interface/generator/jsonrpc_server.go | 3 +-- v2/internal/interface/generator/rest_server.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/v2/internal/interface/generator/jsonrpc_server.go b/v2/internal/interface/generator/jsonrpc_server.go index 7078957e..e9fa16a3 100644 --- a/v2/internal/interface/generator/jsonrpc_server.go +++ b/v2/internal/interface/generator/jsonrpc_server.go @@ -2,7 +2,6 @@ package generator import ( "context" - stdtypes "go/types" "strconv" stdstrings "strings" @@ -136,7 +135,7 @@ func (g *jsonRPCServer) Process(ctx context.Context) error { for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + typeStr := iface.LcNameWithPrefix() + "Interface" if i > 0 { g.W(",") } diff --git a/v2/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go index c0329901..de703b17 100644 --- a/v2/internal/interface/generator/rest_server.go +++ b/v2/internal/interface/generator/rest_server.go @@ -3,7 +3,6 @@ package generator import ( "context" "fmt" - stdtypes "go/types" "path" "strconv" stdstrings "strings" @@ -63,7 +62,7 @@ func (g *restServer) Process(_ context.Context) error { g.W("func MakeHandlerREST(") for i := 0; i < g.options.Interfaces().Len(); i++ { iface := g.options.Interfaces().At(i) - typeStr := stdtypes.TypeString(iface.Type(), g.i.QualifyPkg) + typeStr := iface.LcNameWithPrefix() + "Interface" if i > 0 { g.W(",") } From 07f425ff2d85c25628b5ac9e149ecaab36e7dd4d Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 25 Mar 2021 14:07:58 +0300 Subject: [PATCH 198/293] chore(release): 2.0.0-rc13 --- CHANGELOG.md | 9 ++++++++- homebrew-swipe | 2 +- v2/cmd/swipe/main.go | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c46ddfb0..89075ed0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ + +## [v2.0.0-rc13] - 2021-03-25 +### Features +- using the generated interface in the handler constructor + + ## [v2.0.0-rc12] - 2021-03-25 ### Bug Fixes @@ -811,7 +817,8 @@ if you used the ability to use the code in the generation description file, then ## v1.0.0 - 2020-05-19 -[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc12...HEAD +[Unreleased]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc13...HEAD +[v2.0.0-rc13]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc12...v2.0.0-rc13 [v2.0.0-rc12]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc11...v2.0.0-rc12 [v2.0.0-rc11]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc10...v2.0.0-rc11 [v2.0.0-rc10]: https://github.com/swipe-io/swipe/compare/v2.0.0-rc9...v2.0.0-rc10 diff --git a/homebrew-swipe b/homebrew-swipe index 70ff8477..9d94d2f3 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 70ff8477342334aab131f71afeb4a2bc5bd10e2b +Subproject commit 9d94d2f3d89f821945c19fdb79fb03a9babbd1be diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index 30aacb2b..3b2ae602 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -31,7 +31,7 @@ import ( "github.com/swipe-io/swipe/v2/internal/writer" ) -const Version = "v2.0.0-rc12" +const Version = "v2.0.0-rc13" var ( colorSuccess = color.Green.Render From 7f19743b6fe1a3fa4ca17479bf80247b556598c4 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 26 Mar 2021 16:48:06 +0300 Subject: [PATCH 199/293] fix: used null type instead of nullable --- homebrew-swipe | 2 +- v2/internal/interface/generator/openapi.go | 3 ++- v2/internal/openapi/openapi.go | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/homebrew-swipe b/homebrew-swipe index 9d94d2f3..abc1f73c 160000 --- a/homebrew-swipe +++ b/homebrew-swipe @@ -1 +1 @@ -Subproject commit 9d94d2f3d89f821945c19fdb79fb03a9babbd1be +Subproject commit abc1f73cd061be183179ea9f948209b4682045b7 diff --git a/v2/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go index c2ab5150..6a23137c 100644 --- a/v2/internal/interface/generator/openapi.go +++ b/v2/internal/interface/generator/openapi.go @@ -421,7 +421,8 @@ func (g *openapiDoc) makeJSONRPCPath( requestSchema.Properties[strcase.ToLowerCamel(m.ParamVariadic.Name())] = schema } } else { - requestSchema.Type = "null" + requestSchema.Type = "object" + requestSchema.Nullable = true requestSchema.Example = json.RawMessage("null") } diff --git a/v2/internal/openapi/openapi.go b/v2/internal/openapi/openapi.go index d977a96a..6d9df026 100644 --- a/v2/internal/openapi/openapi.go +++ b/v2/internal/openapi/openapi.go @@ -37,6 +37,7 @@ type Schema struct { Description string `yaml:"description,omitempty" json:"description,omitempty"` Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` Type string `yaml:"type,omitempty" json:"type,omitempty"` + Nullable bool `yaml:"nullable,omitempty" json:"nullable,omitempty"` Format string `yaml:"format,omitempty" json:"format,omitempty"` Properties Properties `yaml:"properties,omitempty" json:"properties,omitempty"` Items *Schema `yaml:"items,omitempty" json:"items,omitempty"` From 4ca6336956463e8f95133fb9191974ecb4bab614 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 29 Mar 2021 11:32:07 +0300 Subject: [PATCH 200/293] fix: generating openapi tag name --- v2/internal/interface/generator/openapi.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/v2/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go index 6a23137c..591ded58 100644 --- a/v2/internal/interface/generator/openapi.go +++ b/v2/internal/interface/generator/openapi.go @@ -331,13 +331,11 @@ func (g *openapiDoc) Process(ctx context.Context) error { } } - if g.options.Interfaces().Len() > 1 { - ifaceTag := strcase.ToLowerCamel(iface.UcName()) - if iface.UcName() != "" { - ifaceTag = iface.UcName() - } - tags = append(tags, ifaceTag) + ifaceTag := strcase.ToLowerCamel(iface.UcName()) + if iface.Namespace() != "" { + ifaceTag = iface.Namespace() } + tags = append(tags, ifaceTag) o.Description = methodComment o.Tags = tags From 4ad81a3c284f91a0ad408f2c3f9d233da9ad340d Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Sun, 4 Apr 2021 11:47:11 +0300 Subject: [PATCH 201/293] fix: client construct name --- v2/internal/interface/generator/client_struct.go | 4 ++-- v2/internal/interface/generator/jsonrpc_go_client.go | 4 ++-- v2/internal/interface/generator/rest_go_client.go | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/v2/internal/interface/generator/client_struct.go b/v2/internal/interface/generator/client_struct.go index 63312e91..99ab7058 100644 --- a/v2/internal/interface/generator/client_struct.go +++ b/v2/internal/interface/generator/client_struct.go @@ -88,9 +88,9 @@ func (g *clientStruct) Process(ctx context.Context) error { lcName := strcase.ToLowerCamel(name) if g.options.JSONRPCEnable() { - g.W("%s, err := NewClientJSONRPC%s(tgt, opts...)\n", lcName, name) + g.W("%s, err := NewClientJSONRPC%s(tgt, opts...)\n", lcName, iface.UcName()) } else { - g.W("%s, err := NewClientREST%s(tgt, opts...)\n", lcName, name) + g.W("%s, err := NewClientREST%s(tgt, opts...)\n", lcName, iface.UcName()) } g.WriteCheckErr(func() { diff --git a/v2/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go index a2e0a800..f64904bb 100644 --- a/v2/internal/interface/generator/jsonrpc_go_client.go +++ b/v2/internal/interface/generator/jsonrpc_go_client.go @@ -54,11 +54,11 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") g.W(" ,options ...ClientOption") g.W(") (*%s, error) {\n", clientType) - g.W("return NewClientJSONRPC%s(tgt, options...)", name) + g.W("return NewClientJSONRP`C%s(tgt, options...)", iface.UcName()) g.W("}\n") } - g.W("func NewClientJSONRPC%s(tgt string", name) + g.W("func NewClientJSONRPC%s(tgt string", iface.UcName()) g.W(" ,options ...ClientOption") g.W(") (*%s, error) {\n", clientType) g.W("opts := &clientOpts{}\n") diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index e033a050..88e6eedc 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -46,9 +46,9 @@ func (g *restGoClient) Process(_ context.Context) error { iface := g.options.Interfaces().At(i) name := iface.UcName() - if iface.Namespace() != "" { - name = strcase.ToCamel(iface.Namespace()) - } + //if iface.Namespace() != "" { + // name = strcase.ToCamel(iface.Namespace()) + //} clientType := name + "Client" if g.options.UseFast() { @@ -70,14 +70,14 @@ func (g *restGoClient) Process(_ context.Context) error { stringsPkg = g.i.Import("strings", "strings") if g.options.Interfaces().Len() == 1 { - g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") + g.W("// Deprecated\nfunc NewClientREST(tgt string") g.W(" ,options ...ClientOption") g.W(") (*%s, error) {\n", name) - g.W("return NewClientJSONRPC%s(tgt, options...)", name) + g.W("return NewClientREST%s(tgt, options...)", name) g.W("}\n") } - g.W("func NewClientJSONRPC%s(tgt string", name) + g.W("func NewClientREST%s(tgt string", name) g.W(" ,options ...ClientOption") g.W(") (*%s, error) {\n", name) g.W("opts := &clientOpts{}\n") From 25c0d3ecf802fe0ba903b1d7dc535e364636d29e Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 5 Apr 2021 22:28:26 +0300 Subject: [PATCH 202/293] fix: not the correct type returned by the client REST constructor --- v2/internal/interface/generator/jsonrpc_go_client.go | 2 +- v2/internal/interface/generator/rest_go_client.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v2/internal/interface/generator/jsonrpc_go_client.go b/v2/internal/interface/generator/jsonrpc_go_client.go index f64904bb..33802305 100644 --- a/v2/internal/interface/generator/jsonrpc_go_client.go +++ b/v2/internal/interface/generator/jsonrpc_go_client.go @@ -54,7 +54,7 @@ func (g *jsonRPCGoClient) Process(ctx context.Context) error { g.W("// Deprecated\nfunc NewClientJSONRPC(tgt string") g.W(" ,options ...ClientOption") g.W(") (*%s, error) {\n", clientType) - g.W("return NewClientJSONRP`C%s(tgt, options...)", iface.UcName()) + g.W("return NewClientJSONRPC%s(tgt, options...)", iface.UcName()) g.W("}\n") } diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index 88e6eedc..282e3b94 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -72,14 +72,14 @@ func (g *restGoClient) Process(_ context.Context) error { if g.options.Interfaces().Len() == 1 { g.W("// Deprecated\nfunc NewClientREST(tgt string") g.W(" ,options ...ClientOption") - g.W(") (*%s, error) {\n", name) + g.W(") (*%s, error) {\n", clientType) g.W("return NewClientREST%s(tgt, options...)", name) g.W("}\n") } g.W("func NewClientREST%s(tgt string", name) g.W(" ,options ...ClientOption") - g.W(") (*%s, error) {\n", name) + g.W(") (*%s, error) {\n", clientType) g.W("opts := &clientOpts{}\n") g.W("c := &%s{}\n", clientType) g.W("for _, o := range options {\n") From 2ea40a1bc709dc9b07b135919507a2dc9074c9dd Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 6 Apr 2021 22:55:59 +0300 Subject: [PATCH 203/293] fix: generate js client jsdoc param type for variadic arg --- v2/internal/interface/generator/jsonrpc_js_client.go | 8 +++++++- v2/internal/interface/typevisitor/js_def_visitor.go | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/v2/internal/interface/generator/jsonrpc_js_client.go b/v2/internal/interface/generator/jsonrpc_js_client.go index 82d2ee21..1363b2ad 100644 --- a/v2/internal/interface/generator/jsonrpc_js_client.go +++ b/v2/internal/interface/generator/jsonrpc_js_client.go @@ -167,9 +167,15 @@ func (g *jsonRPCJSClient) Process(_ context.Context) error { if t, ok := vt.(*stdtypes.Slice); ok { vt = t.Elem() } + if t, ok := vt.(*stdtypes.Pointer); ok { + vt = t.Elem() + } + tdc.Visit(vt) - mw.W("* @param {...%s} %s\n", stdtypes.TypeString(vt, g.i.QualifyPkg), m.ParamVariadic.Name()) + mw.W("* @param {...%s} %s\n", stdtypes.TypeString(vt, func(p *stdtypes.Package) string { + return "" + }), m.ParamVariadic.Name()) } if len(m.Results) > 0 { diff --git a/v2/internal/interface/typevisitor/js_def_visitor.go b/v2/internal/interface/typevisitor/js_def_visitor.go index 4e051f2c..3f9d1c91 100644 --- a/v2/internal/interface/typevisitor/js_def_visitor.go +++ b/v2/internal/interface/typevisitor/js_def_visitor.go @@ -53,6 +53,14 @@ func (v *jsTypeDefVisitor) VisitNamed(t *stdtypes.Named, nested int) { return } switch tp := t.Obj().Type().Underlying().(type) { + case *stdtypes.Interface: + if nested == 0 { + v.buf.W("/**\n") + v.buf.W("* @typedef {Object} %s\n", t.Obj().Name()) + v.buf.W("*/\n\n") + } else { + v.buf.W(t.Obj().Name()) + } case *stdtypes.Struct: if nested == 0 { v.buf.W("/**\n") From 4f85d0d93a7bb4ceab4836914f8d78a17837f732 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 20 Apr 2021 21:25:16 +0300 Subject: [PATCH 204/293] refactor: update go mod --- v2/go.sum | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/v2/go.sum b/v2/go.sum index 5a211c1e..59dccc19 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -15,33 +15,40 @@ github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -50,6 +57,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210314195730-07df6a141424 h1:+39ahH47SWi1PhMRAHfIrm8f69HRZ5K2koXH6dmO8TQ= golang.org/x/sys v0.0.0-20210314195730-07df6a141424/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= From 12a9dde12fc60553d77f624674ef42bb5a446685 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 5 May 2021 11:10:24 +0300 Subject: [PATCH 205/293] refactor: fixed generate defaultErrorEncoder for fasthttp --- v2/internal/interface/generator/rest_server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go index de703b17..ab3b8dad 100644 --- a/v2/internal/interface/generator/rest_server.go +++ b/v2/internal/interface/generator/rest_server.go @@ -299,7 +299,7 @@ func (g *restServer) writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, j g.W("func defaultErrorEncoder(ctx %s.Context, err error, ", contextPkg) if g.options.UseFast() { - g.W("w %s.RequestCtx) {\n", httpPkg) + g.W("w *%s.RequestCtx) {\n", httpPkg) } else { g.W("w %s.ResponseWriter) {\n", httpPkg) } From bc10e64a100b4e1d74c396bd75c79e75abcfc8a8 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 12 May 2021 11:16:38 +0300 Subject: [PATCH 206/293] refactor: fixed name go client --- v2/internal/interface/generator/rest_go_client.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index 282e3b94..bb01e36b 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -46,9 +46,9 @@ func (g *restGoClient) Process(_ context.Context) error { iface := g.options.Interfaces().At(i) name := iface.UcName() - //if iface.Namespace() != "" { - // name = strcase.ToCamel(iface.Namespace()) - //} + if iface.Namespace() != "" { + name = strcase.ToCamel(iface.Namespace()) + } clientType := name + "Client" if g.options.UseFast() { From c55e3c88ad4724204117d9a70f957dbe2153cdb0 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 12 May 2021 20:35:16 +0300 Subject: [PATCH 207/293] refactor: fixed async --- v2/internal/interface/executor/generation.go | 121 +++++++++---------- 1 file changed, 54 insertions(+), 67 deletions(-) diff --git a/v2/internal/interface/executor/generation.go b/v2/internal/interface/executor/generation.go index 535153be..09b7d60c 100644 --- a/v2/internal/interface/executor/generation.go +++ b/v2/internal/interface/executor/generation.go @@ -5,7 +5,6 @@ import ( "fmt" "path/filepath" - "sync" "github.com/swipe-io/swipe/v2/internal/errors" "github.com/swipe-io/swipe/v2/internal/importer" @@ -30,63 +29,56 @@ type generationExecutor struct { optionLoader *option.Loader } -func (e *generationExecutor) processGenerate(pkg *packages.Package, generators []generator.Generator) <-chan executor.GenerateResult { - outCh := make(chan executor.GenerateResult) - - go func() { - var wg sync.WaitGroup - for _, g := range generators { - wg.Add(1) - go func(g generator.Generator) { - defer wg.Done() - - generated := executor.GenerateResult{} - - defer func() { - outCh <- generated - }() - - if err := g.Prepare(context.TODO()); err != nil { - generated.Errs = append(generated.Errs, err) - return - } - - outputDir := g.OutputDir() - if outputDir == "" { - basePath, err := types.DetectBasePath(pkg) - if err != nil { - generated.Errs = append(generated.Errs, err) - return - } - outputDir = basePath - } - - generated.PkgPath = pkg.PkgPath - generated.OutputPath = filepath.Join(outputDir, g.Filename()) - - newImporter := e.importerFactory.NewImporter(generated.OutputPath, pkg) - if g, ok := g.(importerer); ok { - g.SetImporter(newImporter) - } - - if err := g.Process(context.TODO()); err != nil { - generated.Errs = append(generated.Errs, err) - return - } - fr := e.frameFactory.NewFrame(generated.OutputPath, newImporter, pkg) - content, err := fr.Frame(g.Bytes()) - if err != nil { - generated.Content = g.Bytes() - generated.Errs = append(generated.Errs, err) - return - } - generated.Content = content - }(g) +func (e *generationExecutor) processGenerate(pkg *packages.Package, generators []generator.Generator) (result []executor.GenerateResult) { + + for _, g := range generators { + + generated := executor.GenerateResult{} + + if err := g.Prepare(context.TODO()); err != nil { + generated.Errs = append(generated.Errs, err) + result = append(result, generated) + continue + } + + outputDir := g.OutputDir() + if outputDir == "" { + basePath, err := types.DetectBasePath(pkg) + if err != nil { + generated.Errs = append(generated.Errs, err) + result = append(result, generated) + continue + } + outputDir = basePath + } + + generated.PkgPath = pkg.PkgPath + generated.OutputPath = filepath.Join(outputDir, g.Filename()) + + newImporter := e.importerFactory.NewImporter(generated.OutputPath, pkg) + if g, ok := g.(importerer); ok { + g.SetImporter(newImporter) + } + + if err := g.Process(context.TODO()); err != nil { + generated.Errs = append(generated.Errs, err) + result = append(result, generated) + continue + } + fr := e.frameFactory.NewFrame(generated.OutputPath, newImporter, pkg) + content, err := fr.Frame(g.Bytes()) + if err != nil { + generated.Content = g.Bytes() + generated.Errs = append(generated.Errs, err) + result = append(result, generated) + continue } - wg.Wait() - close(outCh) - }() - return outCh + generated.Content = content + + result = append(result, generated) + } + + return } func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs []error) { @@ -97,7 +89,7 @@ func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs if len(opr.Options) == 0 { return nil, []error{fmt.Errorf("swipe options not found")} } - var wg sync.WaitGroup + for _, o := range opr.Options { fn, ok := e.processorFactory.Get(o.Option.Name) if !ok { @@ -110,16 +102,11 @@ func (e *generationExecutor) Execute() (results []executor.GenerateResult, errs errs = append(errs, err) continue } - wg.Add(1) - go func(p processor.Processor, pkg *packages.Package) { - defer wg.Done() - outCh := e.processGenerate(pkg, p.Generators(pkg, opr.Data.WorkDir)) - for generateResult := range outCh { - results = append(results, generateResult) - } - }(p, o.Pkg) + processResults := e.processGenerate(o.Pkg, p.Generators(o.Pkg, opr.Data.WorkDir)) + + results = append(results, processResults...) + } - wg.Wait() return } From 95f0a5b3906b91c7453653e490748b1c9b97e9a0 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 12 May 2021 20:35:54 +0300 Subject: [PATCH 208/293] refactor: fixed path and wrapper feature nested path --- v2/internal/interface/generator/openapi.go | 2 +- .../interface/generator/rest_go_client.go | 38 ++++++++++++++++++- .../interface/generator/rest_server.go | 38 +++++++++++++++++-- 3 files changed, 71 insertions(+), 7 deletions(-) diff --git a/v2/internal/interface/generator/openapi.go b/v2/internal/interface/generator/openapi.go index 591ded58..5a1226cb 100644 --- a/v2/internal/interface/generator/openapi.go +++ b/v2/internal/interface/generator/openapi.go @@ -305,7 +305,7 @@ func (g *openapiDoc) Process(ctx context.Context) error { o = g.makeRestPath(m, ntc, paramsComment) pathStr = strcase.ToKebab(m.Name) if mopt.Path != "" { - pathStr = mopt.Path + pathStr = stdstrings.TrimLeft(mopt.Path, "/") } for _, p := range m.Params { if regexp, ok := mopt.PathVars[p.Name()]; ok { diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index bb01e36b..5c5937ea 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -1,7 +1,9 @@ package generator import ( + "container/list" "context" + "fmt" stdtypes "go/types" "path" "strconv" @@ -272,8 +274,40 @@ func (g *restGoClient) Process(_ context.Context) error { } else { responseType = stdtypes.TypeString(m.Results[0].Type(), g.i.QualifyPkg) } + + var structPath string + if mopt.WrapResponse.Enable { - g.W("var resp struct {\nData %s `json:\"%s\"`\n}\n", responseType, mopt.WrapResponse.Name) + parts := stdstrings.Split(mopt.WrapResponse.Name, ".") + + var fn func(e *list.Element) string + fn = func(e *list.Element) (out string) { + if next := e.Next(); next != nil { + out += " struct { " + out += strcase.ToCamel(e.Value.(string)) + out += fn(next) + out += "}" + } else { + out += fmt.Sprintf(" struct {\nData %s `json:\"%s\"`\n}", responseType, e.Value) + } + if prev := e.Prev(); prev != nil { + out += " `json:\"" + prev.Value.(string) + "\"`" + } + return out + } + + l := list.New() + if len(parts) > 0 { + structPath = strcase.ToCamel(parts[0]) + e := l.PushFront(parts[0]) + for i := 1; i < len(parts); i++ { + if i != len(parts)-1 { + structPath += strcase.ToCamel(parts[i]) + } + e = l.InsertAfter(parts[i], e) + } + } + g.W("var resp %s\n", fn(l.Front())) } else { g.W("var resp %s\n", responseType) } @@ -296,7 +330,7 @@ func (g *restGoClient) Process(_ context.Context) error { g.W("}\n") if mopt.WrapResponse.Enable { - g.W("return resp.Data, nil\n") + g.W("return resp.%s.Data, nil\n", structPath) } else { g.W("return resp, nil\n") } diff --git a/v2/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go index ab3b8dad..e57a1b24 100644 --- a/v2/internal/interface/generator/rest_server.go +++ b/v2/internal/interface/generator/rest_server.go @@ -1,6 +1,7 @@ package generator import ( + "container/list" "context" "fmt" "path" @@ -128,14 +129,19 @@ func (g *restServer) Process(_ context.Context) error { g.W(", ") + var urlPath string + if mopt.Path != "" { // replace brace indices for fasthttp router - urlPath := stdstrings.ReplaceAll(mopt.Path, "{", "<") + urlPath = stdstrings.ReplaceAll(mopt.Path, "{", "<") urlPath = stdstrings.ReplaceAll(urlPath, "}", ">") - g.W(strconv.Quote(urlPath)) } else { - g.W(strconv.Quote("/" + strcase.ToKebab(m.Name))) + urlPath = "/" + strcase.ToKebab(m.Name) + } + if prefix != "" { + urlPath = prefix + urlPath } + g.W(strconv.Quote(stdstrings.TrimRight(urlPath, "/"))) g.W(", ") } else { g.W("r.Methods(") @@ -263,8 +269,32 @@ func (g *restServer) Process(_ context.Context) error { } else { responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) } + + parts := stdstrings.Split(mopt.WrapResponse.Name, ".") + + var fn func(e *list.Element) string + fn = func(e *list.Element) (out string) { + if next := e.Next(); next != nil { + out += " map[string]interface{}{" + out += strconv.Quote(e.Value.(string)) + ": " + out += fn(next) + out += "}" + } else { + out += "map[string]interface{}{" + strconv.Quote(e.Value.(string)) + ": response }" + } + return out + } + + l := list.New() + if len(parts) > 0 { + e := l.PushFront(parts[0]) + for i := 1; i < len(parts); i++ { + e = l.InsertAfter(parts[i], e) + } + } + g.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.W("return encodeResponseHTTP(ctx, w, map[string]interface{}{\"%s\": response})\n", mopt.WrapResponse.Name) + g.W("return encodeResponseHTTP(ctx, w, %s)\n", fn(l.Front())) g.W("}") } else { g.W("encodeResponseHTTP") From cec8faaad8c3fa8746efb7ccb4e764124d161fcb Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 12 May 2021 23:31:29 +0300 Subject: [PATCH 209/293] refactor: fixed fasthttp set header --- v2/internal/interface/generator/rest_server.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/v2/internal/interface/generator/rest_server.go b/v2/internal/interface/generator/rest_server.go index e57a1b24..a74a412b 100644 --- a/v2/internal/interface/generator/rest_server.go +++ b/v2/internal/interface/generator/rest_server.go @@ -397,11 +397,7 @@ func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string g.W(", response interface{}) (err error) {\n") g.W("contentType := \"application/json; charset=utf-8\"\n") g.W("statusCode := 200\n") - if g.options.UseFast() { - g.W("h := w.Header\n") - } else { - g.W("h := w.Header()\n") - } + g.W("var data []byte\n") g.W("if response != nil {\n") g.W("data, err = %s.Marshal(response)\n", jsonPkg) @@ -412,7 +408,13 @@ func (g *restServer) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string g.W("contentType = \"text/plain; charset=utf-8\"\n") g.W("statusCode = 201\n") g.W("}\n") - g.W("h.Set(\"Content-Type\", contentType)\n") + + if g.options.UseFast() { + g.W("w.Header.Set(\"Content-Type\", contentType)\n") + } else { + g.W("w.Header().Set(\"Content-Type\", contentType)\n") + } + if g.options.UseFast() { g.W("w.SetStatusCode(statusCode)\n") } else { From d74a7988cf54c95e018b35c959fbc4ab0b95639a Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 17 May 2021 13:17:09 +0300 Subject: [PATCH 210/293] fix: added Content-Type: application/json for rest request --- v2/internal/interface/generator/rest_go_client.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v2/internal/interface/generator/rest_go_client.go b/v2/internal/interface/generator/rest_go_client.go index 5c5937ea..f7667f0e 100644 --- a/v2/internal/interface/generator/rest_go_client.go +++ b/v2/internal/interface/generator/rest_go_client.go @@ -182,6 +182,12 @@ func (g *restGoClient) Process(_ context.Context) error { } g.W("\n") + if g.options.UseFast() && remainingParams > 0 { + g.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") + } else if remainingParams > 0 { + g.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") + } + pathVarNames := make([]string, 0, len(pathVars)) for _, p := range pathVars { name := p.Name() + "Str" From 8bceeb81da56b94a9a9e9de9bff4bf4e78c61281 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 2 Jul 2021 17:02:30 +0300 Subject: [PATCH 211/293] refactor: remove homebrew submodule --- homebrew-swipe | 1 - 1 file changed, 1 deletion(-) delete mode 160000 homebrew-swipe diff --git a/homebrew-swipe b/homebrew-swipe deleted file mode 160000 index abc1f73c..00000000 --- a/homebrew-swipe +++ /dev/null @@ -1 +0,0 @@ -Subproject commit abc1f73cd061be183179ea9f948209b4682045b7 From 6fe9b8c901eb1920605f16efdd647fdcf0932bcc Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 7 Jul 2021 20:46:30 +0300 Subject: [PATCH 212/293] refactor: v3 --- .gitignore | 4 +- v3/LICENSE | 202 + v3/Makefile | 22 + v3/cmd/gen.go | 142 + v3/cmd/init.go | 66 + v3/cmd/options.go | 290 + v3/cmd/root.go | 79 + v3/cmd/swipe/main.go | 7 + v3/errors/errors.go | 59 + v3/gen_test.go | 158 + v3/go.mod | 19 + v3/go.sum | 611 ++ v3/internal/annotation/parser.go | 133 + v3/internal/ast/copy.go | 468 ++ v3/internal/ast/finder.go | 28 + v3/internal/ast/loader.go | 179 + v3/internal/format/fomrat.go | 35 + v3/internal/frame/bytes_frame.go | 13 + v3/internal/frame/factory.go | 24 + v3/internal/frame/golang_frame.go | 45 + v3/internal/frame/js_frame.go | 36 + v3/internal/gitattributes/gitattributes.go | 61 + v3/internal/importer/importer.go | 167 + v3/internal/importer/utils.go | 24 + v3/internal/plugin/config/config_gen.go | 5 + v3/internal/plugin/config/generator.go | 171 + v3/internal/plugin/config/plugin.go | 64 + v3/internal/plugin/config/utils.go | 127 + v3/internal/plugin/gokit/config/config.go | 164 + v3/internal/plugin/gokit/config/config_gen.go | 5 + .../plugin/gokit/generator/client_struct.go | 208 + .../plugin/gokit/generator/endpoint.go | 160 + v3/internal/plugin/gokit/generator/gateway.go | 88 + v3/internal/plugin/gokit/generator/helpers.go | 199 + .../plugin/gokit/generator/instrumenting.go | 137 + .../plugin/gokit/generator/interface.go | 41 + .../plugin/gokit/generator/jsonrpc_client.go | 149 + .../plugin/gokit/generator/jsonrpc_doc.go | 160 + .../gokit/generator/jsonrpc_js_client.go | 203 + .../plugin/gokit/generator/jsonrpc_server.go | 298 + v3/internal/plugin/gokit/generator/logging.go | 138 + v3/internal/plugin/gokit/generator/openapi.go | 691 ++ .../plugin/gokit/generator/rest_client.go | 405 + .../plugin/gokit/generator/rest_server.go | 479 ++ v3/internal/plugin/gokit/generator/utils.go | 671 ++ v3/internal/plugin/gokit/openapi/openapi.go | 126 + .../plugin/gokit/openapi/openapi_ffjson.go | 7164 +++++++++++++++++ v3/internal/plugin/gokit/plugin.go | 321 + v3/internal/plugin/gokit/utils.go | 223 + v3/internal/stcreator/config.go | 6 + v3/internal/stcreator/loader.go | 55 + v3/internal/stcreator/mongo_loader.go | 13 + v3/internal/stcreator/postgres_loader.go | 281 + v3/internal/stcreator/project.go | 295 + v3/internal/types/types.go | 17 + v3/main.go | 11 + v3/main2.go | 502 ++ v3/option/decoder.go | 497 ++ v3/option/decoder_test.go.bak | 84 + v3/option/fixtures/service.go | 25 + v3/option/fixtures/swipe.go | 265 + v3/option/fixtures/transport.go | 40 + v3/option/types.go | 268 + v3/option/utils.go | 132 + v3/swipe/config.go | 82 + v3/swipe/generator.go | 9 + v3/swipe/plugin.go | 23 + v3/swipe/swipe.go | 101 + v3/writer/base_writer.go | 18 + v3/writer/golang_writer.go | 353 + 70 files changed, 18345 insertions(+), 1 deletion(-) create mode 100644 v3/LICENSE create mode 100644 v3/Makefile create mode 100644 v3/cmd/gen.go create mode 100644 v3/cmd/init.go create mode 100644 v3/cmd/options.go create mode 100644 v3/cmd/root.go create mode 100644 v3/cmd/swipe/main.go create mode 100644 v3/errors/errors.go create mode 100644 v3/gen_test.go create mode 100644 v3/go.mod create mode 100644 v3/go.sum create mode 100644 v3/internal/annotation/parser.go create mode 100644 v3/internal/ast/copy.go create mode 100644 v3/internal/ast/finder.go create mode 100644 v3/internal/ast/loader.go create mode 100644 v3/internal/format/fomrat.go create mode 100644 v3/internal/frame/bytes_frame.go create mode 100644 v3/internal/frame/factory.go create mode 100644 v3/internal/frame/golang_frame.go create mode 100644 v3/internal/frame/js_frame.go create mode 100644 v3/internal/gitattributes/gitattributes.go create mode 100644 v3/internal/importer/importer.go create mode 100644 v3/internal/importer/utils.go create mode 100644 v3/internal/plugin/config/config_gen.go create mode 100644 v3/internal/plugin/config/generator.go create mode 100644 v3/internal/plugin/config/plugin.go create mode 100644 v3/internal/plugin/config/utils.go create mode 100644 v3/internal/plugin/gokit/config/config.go create mode 100644 v3/internal/plugin/gokit/config/config_gen.go create mode 100644 v3/internal/plugin/gokit/generator/client_struct.go create mode 100644 v3/internal/plugin/gokit/generator/endpoint.go create mode 100644 v3/internal/plugin/gokit/generator/gateway.go create mode 100644 v3/internal/plugin/gokit/generator/helpers.go create mode 100644 v3/internal/plugin/gokit/generator/instrumenting.go create mode 100644 v3/internal/plugin/gokit/generator/interface.go create mode 100644 v3/internal/plugin/gokit/generator/jsonrpc_client.go create mode 100644 v3/internal/plugin/gokit/generator/jsonrpc_doc.go create mode 100644 v3/internal/plugin/gokit/generator/jsonrpc_js_client.go create mode 100644 v3/internal/plugin/gokit/generator/jsonrpc_server.go create mode 100644 v3/internal/plugin/gokit/generator/logging.go create mode 100644 v3/internal/plugin/gokit/generator/openapi.go create mode 100644 v3/internal/plugin/gokit/generator/rest_client.go create mode 100644 v3/internal/plugin/gokit/generator/rest_server.go create mode 100644 v3/internal/plugin/gokit/generator/utils.go create mode 100644 v3/internal/plugin/gokit/openapi/openapi.go create mode 100644 v3/internal/plugin/gokit/openapi/openapi_ffjson.go create mode 100644 v3/internal/plugin/gokit/plugin.go create mode 100644 v3/internal/plugin/gokit/utils.go create mode 100644 v3/internal/stcreator/config.go create mode 100644 v3/internal/stcreator/loader.go create mode 100644 v3/internal/stcreator/mongo_loader.go create mode 100644 v3/internal/stcreator/postgres_loader.go create mode 100644 v3/internal/stcreator/project.go create mode 100644 v3/internal/types/types.go create mode 100644 v3/main.go create mode 100644 v3/main2.go create mode 100644 v3/option/decoder.go create mode 100644 v3/option/decoder_test.go.bak create mode 100644 v3/option/fixtures/service.go create mode 100755 v3/option/fixtures/swipe.go create mode 100644 v3/option/fixtures/transport.go create mode 100644 v3/option/types.go create mode 100644 v3/option/utils.go create mode 100644 v3/swipe/config.go create mode 100644 v3/swipe/generator.go create mode 100644 v3/swipe/plugin.go create mode 100644 v3/swipe/swipe.go create mode 100644 v3/writer/base_writer.go create mode 100644 v3/writer/golang_writer.go diff --git a/.gitignore b/.gitignore index 50fb19f1..9f62eb23 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ .DS_Store v2/fixtures/*/app/*_gen.go -releases \ No newline at end of file +releases + +*.go-e \ No newline at end of file diff --git a/v3/LICENSE b/v3/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/v3/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/v3/Makefile b/v3/Makefile new file mode 100644 index 00000000..078b80dc --- /dev/null +++ b/v3/Makefile @@ -0,0 +1,22 @@ +VERSION = snapshot +GHRFLAGS = + +.PHONY: build release + +default: build + +fgo-build: + fgo -p releases -b ./../homebrew-swipe build ${NEXT_TAG} + +build: + goxc -d=releases -bc="linux,386 darwin,windows" -arch="amd64 arm" -pv=$(VERSION) + +release: + ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) + +chglog: + git-chglog -o CHANGELOG.md + +check: + go vet ./... + go test -v ./... \ No newline at end of file diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go new file mode 100644 index 00000000..6c960f62 --- /dev/null +++ b/v3/cmd/gen.go @@ -0,0 +1,142 @@ +package cmd + +import ( + "errors" + "io/ioutil" + "log" + "os" + "path/filepath" + "strings" + + "github.com/spf13/cobra" + "github.com/spf13/viper" + + "github.com/swipe-io/swipe/v3/internal/ast" + "github.com/swipe-io/swipe/v3/internal/gitattributes" + "github.com/swipe-io/swipe/v3/swipe" +) + +// genCmd represents the gen command +var genCmd = &cobra.Command{ + Use: "gen", + Short: "Generate code", + Long: ``, + Args: func(cmd *cobra.Command, packages []string) error { + if len(viper.GetStringSlice("packages")) == 0 && len(packages) < 1 { + return errors.New("requires a packages argument") + } + return nil + }, + Run: func(cmd *cobra.Command, packages []string) { + var err error + + cmd.Println("Please wait the command is running, it may take some time") + + if len(packages) == 0 { + packages = viper.GetStringSlice("packages") + } + + wd := viper.GetString("work-dir") + if wd == "" { + wd, _ = cmd.Flags().GetString("work-dir") + } + verbose, _ := cmd.Flags().GetBool("verbose") + + if wd == "" { + wd, err = os.Getwd() + if err != nil { + cmd.PrintErrf("failed to get working directory: ", err) + os.Exit(1) + } + } + + cmd.Printf("Workdir: %s\n", wd) + + if data, err := ioutil.ReadFile(filepath.Join(wd, "pkgs")); err == nil { + packages = append(packages, strings.Split(string(data), "\n")...) + } + cmd.Printf("Packages: %s\n", strings.Join(packages, ", ")) + + loader, errs := ast.NewLoader(wd, os.Environ(), packages) + if len(errs) > 0 { + for _, err := range errs { + cmd.PrintErrln(err) + } + os.Exit(1) + } + cfg, err := swipe.GetConfig(loader) + if err != nil { + cmd.PrintErrln(err) + os.Exit(1) + } + + // clear all before generated files. + _ = filepath.Walk(loader.WorkDir(), func(path string, info os.FileInfo, err error) error { + if !strings.Contains(path, "/vendor/") { + if !info.IsDir() { + if strings.Contains(info.Name(), "swipe_gen_") { + _ = os.Remove(path) + } + } + } + return nil + }) + + result, errs := swipe.Generate(cfg) + success := true + + if len(errs) > 0 { + for _, err := range errs { + cmd.PrintErrln(err) + } + success = false + } + + diffExcludes := make([]string, 0, len(result)) + + for _, g := range result { + if len(g.Errs) > 0 { + for _, err := range g.Errs { + cmd.PrintErrln(err) + } + success = false + continue + } + if len(g.Content) == 0 { + continue + } + + diffExcludes = append(diffExcludes, strings.Replace(g.OutputPath, cfg.WorkDir+"/", "", -1)) + + dirPath := filepath.Dir(g.OutputPath) + if err := os.MkdirAll(dirPath, 0755); err != nil { + cmd.PrintErrf("%s: failed to create dir %s: %v\n", g.PkgPath, dirPath, err) + os.Exit(1) + } + err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) + if err == nil { + if verbose { + log.Printf("%s: wrote %s\n", g.PkgPath, g.OutputPath) + } + } else { + log.Printf("%s: failed to write %s: %v\n", g.PkgPath, g.OutputPath, err) + success = false + } + } + if !success { + os.Exit(1) + } + if err := gitattributes.Generate(cfg.WorkDir, diffExcludes); err != nil { + cmd.PrintErrln(err) + + os.Exit(1) + } + cmd.Println("Command execution completed successfully") + }, +} + +func init() { + rootCmd.AddCommand(genCmd) + genCmd.Flags().StringP("work-dir", "w", "", "Workdir") + genCmd.Flags().BoolP("verbose", "v", false, "Verbose output") +} diff --git a/v3/cmd/init.go b/v3/cmd/init.go new file mode 100644 index 00000000..be5449ef --- /dev/null +++ b/v3/cmd/init.go @@ -0,0 +1,66 @@ +package cmd + +import ( + "bytes" + "os" + "path/filepath" + + "github.com/spf13/cobra" + "github.com/spf13/viper" + + "github.com/swipe-io/swipe/v3/swipe" +) + +// initCmd represents the init command +var initCmd = &cobra.Command{ + Use: "init", + Short: "Initialize a swipe config file", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + var err error + wd := viper.GetString("work-dir") + if wd == "" { + wd, _ = cmd.Flags().GetString("work-dir") + } + if wd == "" { + wd, err = os.Getwd() + if err != nil { + cmd.PrintErrf("failed to get working directory: %s", err) + os.Exit(1) + } + } + cmd.Printf("Workdir: %s\n", wd) + for name, data := range swipe.Options() { + buf := bytes.NewBuffer(nil) + path := filepath.Join(wd, "pkg", "swipe", name) + if err := os.MkdirAll(path, 0775); err != nil { + cmd.PrintErrf("Error: %s", err) + os.Exit(1) + } + + buf.WriteString("package " + name + "\n\n") + buf.Write(data) + + filename := filepath.Join(path, "swipe.go") + + if _, err := os.Stat(filename); err == nil { + if err := os.Remove(filename); err != nil { + cmd.PrintErrf("Error: %s", err) + os.Exit(1) + } + } else if !os.IsNotExist(err) { + cmd.PrintErrf("Error: %s", err) + os.Exit(1) + } + if err := os.WriteFile(filename, buf.Bytes(), 0755); err != nil { + cmd.PrintErrf("Error: %s", err) + os.Exit(1) + } + } + }, +} + +func init() { + rootCmd.AddCommand(initCmd) + initCmd.Flags().StringP("work-dir", "w", "", "Workdir") +} diff --git a/v3/cmd/options.go b/v3/cmd/options.go new file mode 100644 index 00000000..829e68fe --- /dev/null +++ b/v3/cmd/options.go @@ -0,0 +1,290 @@ +/* +Copyright © 2021 NAME HERE + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package cmd + +import ( + "bytes" + "errors" + "fmt" + goast "go/ast" + "go/doc" + "go/format" + "go/parser" + "go/token" + "os" + "path/filepath" + "strconv" + "strings" + + "github.com/fatih/structtag" + "github.com/spf13/cobra" + "github.com/spf13/viper" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/annotation" + "golang.org/x/tools/go/ast/astutil" +) + +// optionsCmd represents the options command +var optionsCmd = &cobra.Command{ + Use: "options", + Short: "", + Long: ``, + Args: func(cmd *cobra.Command, args []string) error { + if len(args) < 1 { + return errors.New("requires a directory options argument") + } + return nil + }, + Run: func(cmd *cobra.Command, args []string) { + var err error + wd := viper.GetString("work-dir") + if wd == "" { + wd, _ = cmd.Flags().GetString("work-dir") + } + if wd == "" { + wd, err = os.Getwd() + if err != nil { + cmd.PrintErrf("failed to get working directory: %s", err) + os.Exit(1) + } + } + + wd, _ = filepath.Abs(filepath.Join(wd, args[0])) + + cmd.Printf("Workdir: %s\n", wd) + + fset := token.NewFileSet() + d, err := parser.ParseDir(fset, wd, nil, parser.ParseComments) + if err != nil { + cmd.PrintErrln(err) + os.Exit(1) + } + for _, file := range d { + p := doc.New(file, "./", 0) + for _, t := range p.Types { + if annotations, err := annotation.Parse(t.Doc); err == nil { + if len(t.Decl.Specs) > 0 { + if ts, ok := t.Decl.Specs[0].(*goast.TypeSpec); ok { + if s, ok := ts.Type.(*goast.StructType); ok { + buf := bytes.NewBuffer(nil) + if a, err := annotations.Get("swipe"); err == nil { + baseTypeName := a.Value() + "Option" + + buf.WriteString(fmt.Sprintf("// %s\n", a.Value())) + buf.WriteString(fmt.Sprintf("func %s(opts ...%s) {}\n", a.Value(), baseTypeName)) + + opts := getOpts(baseTypeName, s) + optExists := map[string]struct{}{} + optTypeExists := map[string]struct{}{} + for _, opt := range opts { + typeName := opt.typeName + + if !strings.HasSuffix(typeName, "Option") { + typeName += "Option" + } + + key := opt.name + ":" + typeName + if _, ok := optTypeExists[typeName]; !ok { + optTypeExists[typeName] = struct{}{} + buf.WriteString(fmt.Sprintf("// %s ...\n", typeName)) + buf.WriteString(fmt.Sprintf("type %s string\n", typeName)) + } + if _, ok := optExists[key]; !ok { + optExists[key] = struct{}{} + buf.WriteString(fmt.Sprintf("// %s ...\n", opt.name)) + if opt.isRepeat { + buf.WriteString("// @type:\"repeat\"\n") + } + paramsStr := strings.Join(opt.params, ",") + + optsType := opt.optsType + if optsType != "" { + if !strings.HasSuffix(optsType, "Option") { + optsType += "Option" + } + paramsStr += ",opts ..." + optsType + } + + buf.WriteString(fmt.Sprintf("func %s(%s) %s { return \"implementation not generated, run swipe\" }\n", opt.name, paramsStr, typeName)) + } + } + + data, err := format.Source(buf.Bytes()) + if err != nil { + cmd.PrintErrf("failed generate: %s", err) + os.Exit(1) + } + + f, err := os.Create(filepath.Join(wd, file.Name+"_gen.go")) + if err != nil { + cmd.PrintErrf("failed generate: %s", err) + os.Exit(1) + } + _, _ = f.WriteString("package " + p.Name + "\n") + _, _ = f.WriteString(fmt.Sprintf("func (*%s) Options() []byte { return []byte(%s)}\n", ts.Name.Name, strconv.Quote(string(data)))) + _ = f.Close() + } + } + } + } + } + } + } + }, +} + +func init() { + rootCmd.AddCommand(optionsCmd) +} + +func getFieldType(f *goast.Field) string { + if i, ok := f.Type.(*goast.Ident); ok { + if i.Obj != nil { + if ts, ok := i.Obj.Decl.(*goast.TypeSpec); ok { + return getExprType(ts.Type) + } + } + } + return getExprType(f.Type) +} + +func getExprType(e goast.Expr) string { + switch t := e.(type) { + case *goast.Ident: + return t.Name + case *goast.ArrayType: + lenStr := "" + if t.Len != nil { + lenStr = t.Len.(*goast.Ident).Name + } + return fmt.Sprintf("[%s]%s", lenStr, getExprType(t.Elt)) + case *goast.StarExpr: + return getExprType(t.X) + default: + return "interface{}" + } +} + +func getOpt(optionName string, f *goast.Field, e goast.Expr, isRepeat bool) (result []optionFunc) { + name, ok := getOptName(f) + if !ok { + return nil + } + switch t := e.(type) { + case *goast.ArrayType: + return getOpt(optionName, f, t.Elt, true) + case *goast.StarExpr: + return getOpt(optionName, f, t.X, isRepeat) + case *goast.StructType: + for _, ident := range f.Names { + result = append(result, optionFunc{ + typeName: optionName, + name: ident.Name, + }) + } + case *goast.Ident: + of := optionFunc{ + typeName: optionName, + name: name, + isRepeat: isRepeat, + } + if ts, ok := t.Obj.Decl.(*goast.TypeSpec); ok { + if s, ok := ts.Type.(*goast.StructType); ok { + var hasOpts bool + if s.Fields != nil { + for _, f := range s.Fields.List { + name, ok := getOptName(f) + if !ok { + continue + } + if isFiledOpt(f) { + hasOpts = true + expr := astutil.Unparen(f.Type) + if e, ok := expr.(*goast.StarExpr); ok { + expr = e.X + } + result = append(result, getOpt(ts.Name.Name, f, expr, false)...) + continue + } + of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) + } + } + if hasOpts { + of.optsType = ts.Name.Name + } + } + } + result = append(result, of) + } + return +} + +type optionFunc struct { + params []string + typeName string + name string + isRepeat bool + optsType string +} + +func getOpts(optionName string, s *goast.StructType) []optionFunc { + if s.Fields == nil { + return nil + } + var result []optionFunc + for _, f := range s.Fields.List { + expr := astutil.Unparen(f.Type) + if e, ok := expr.(*goast.StarExpr); ok { + expr = e.X + } + if opts := getOpt(optionName, f, expr, false); len(opts) > 0 { + result = append(result, opts...) + } + + } + return result +} + +func isFiledOpt(f *goast.Field) bool { + if f.Tag != nil { + if tags, err := structtag.Parse(strings.Trim(f.Tag.Value, "`")); err == nil { + if t, err := tags.Get("swipe"); err == nil { + if t.Value() == "option" { + return true + } + } + } + } + return false +} + +func getOptName(f *goast.Field) (name string, ok bool) { + name = f.Names[0].Name + ok = true + if f.Tag != nil { + tags, err := structtag.Parse(strings.Trim(f.Tag.Value, "`")) + if err == nil { + if tag, err := tags.Get("mapstructure"); err == nil { + if tag.Value() == "-" { + ok = false + } + name = tag.Value() + } + } + } + return +} diff --git a/v3/cmd/root.go b/v3/cmd/root.go new file mode 100644 index 00000000..4800a714 --- /dev/null +++ b/v3/cmd/root.go @@ -0,0 +1,79 @@ +/* +Copyright © 2021 NAME HERE + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package cmd + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/spf13/viper" + + "github.com/swipe-io/swipe/v3/swipe" +) + +var cfgFile string + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "v3", + Short: "Swipe a generation tool " + swipe.Version, + Long: ``, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + cobra.CheckErr(rootCmd.Execute()) +} + +func init() { + cobra.OnInitialize(initConfig) + + // Here you will define your flags and configuration settings. + // Cobra supports persistent flags, which, if defined here, + // will be global for your application. + + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/swipe3.yaml)") + + // Cobra also supports local flags, which will only run + // when this action is called directly. + rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} + +// initConfig reads in config file and ENV variables if set. +func initConfig() { + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + // Find home directory. + home, err := os.UserHomeDir() + cobra.CheckErr(err) + + // Search config in home directory with name ".v3" (without extension). + viper.AddConfigPath(home) + viper.SetConfigType("yaml") + viper.SetConfigName("swipe3") + } + + viper.AutomaticEnv() // read in environment variables that match + + // If a config file is found, read it in. + if err := viper.ReadInConfig(); err == nil { + fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed()) + } +} diff --git a/v3/cmd/swipe/main.go b/v3/cmd/swipe/main.go new file mode 100644 index 00000000..2ff89b71 --- /dev/null +++ b/v3/cmd/swipe/main.go @@ -0,0 +1,7 @@ +package main + +import "github.com/swipe-io/swipe/v3" + +func main() { + v3.Main() +} diff --git a/v3/errors/errors.go b/v3/errors/errors.go new file mode 100644 index 00000000..9bb693f0 --- /dev/null +++ b/v3/errors/errors.go @@ -0,0 +1,59 @@ +package errors + +import "go/token" + +type ErrorCollector struct { + errors []error +} + +func (ec *ErrorCollector) Errors() []error { + return ec.errors +} + +func (ec *ErrorCollector) Add(errs ...error) { + for _, e := range errs { + if e != nil { + ec.errors = append(ec.errors, e) + } + } +} + +func MapErrors(errs []error, f func(error) error) []error { + if len(errs) == 0 { + return nil + } + newErrs := make([]error, len(errs)) + for i := range errs { + newErrs[i] = f(errs[i]) + } + return newErrs +} + +type GenErr struct { + error error + position token.Position +} + +func (w *GenErr) Error() string { + if !w.position.IsValid() { + return w.error.Error() + } + return w.position.String() + ": " + w.error.Error() +} + +func NotePosition(p token.Position, e error) error { + switch e.(type) { + case nil: + return nil + case *GenErr: + return e + default: + return &GenErr{error: e, position: p} + } +} + +func NotePositionAll(p token.Position, errs []error) []error { + return MapErrors(errs, func(e error) error { + return NotePosition(p, e) + }) +} diff --git a/v3/gen_test.go b/v3/gen_test.go new file mode 100644 index 00000000..c6f67461 --- /dev/null +++ b/v3/gen_test.go @@ -0,0 +1,158 @@ +package v3 + +//import ( +// "bytes" +// "flag" +// "fmt" +// "io/ioutil" +// "os" +// "path/filepath" +// "strings" +// "testing" +// +// "github.com/swipe-io/swipe/v3/internal/interface/processor" +// +// "github.com/google/go-cmp/cmp" +// "github.com/swipe-io/swipe/v3/internal/astloader" +// "github.com/swipe-io/swipe/v3/internal/interface/executor" +// "github.com/swipe-io/swipe/v3/internal/interface/factory" +// "github.com/swipe-io/swipe/v3/internal/interface/frame" +// "github.com/swipe-io/swipe/v3/internal/option" +// ue "github.com/swipe-io/swipe/v3/internal/usecase/executor" +//) +// +//var record = flag.Bool("record", false, "write expected result without running tests") +//var onlyDiff = flag.Bool("only-diff", false, "show only diff") +// +//func newGeneratorExecutor(wd string, pkgs []string) ue.GenerationExecutor { +// patterns := []string{"."} +// patterns = append(patterns, pkgs...) +// +// astl := astloader.NewLoader(wd, os.Environ(), patterns) +// l := option.NewLoader(astl, "") +// r := processor.NewFactory() +// i := factory.NewImporterFactory() +// ff := frame.NewFrameFactory("test") +// return executor.NewGenerationExecutor(r, i, ff, l) +//} +// +//func TestSwipe(t *testing.T) { +// testdataEnts, err := filepath.Glob("../../swipe-test*") +// if err != nil { +// t.Fatal(err) +// } +// tests := make([]*testCase, 0, len(testdataEnts)) +// for _, name := range testdataEnts { +// var pkgs []string +// if data, err := ioutil.ReadFile(filepath.Join(name, "pkgs")); err == nil { +// pkgs = strings.Split(string(data), "\n") +// } +// test, err := loadTestCase(name, pkgs) +// if err != nil { +// t.Error(err) +// continue +// } +// tests = append(tests, test) +// } +// for _, test := range tests { +// ge := newGeneratorExecutor(test.testCasePath, test.pkgs) +// +// test := test +// t.Run(test.name, func(t *testing.T) { +// results, errs := ge.Execute() +// if len(errs) > 0 { +// for _, e := range errs { +// t.Error(e) +// } +// } +// +// if *record { +// // clear all before generated files. +// _ = filepath.Walk(test.testCasePath, func(path string, info os.FileInfo, err error) error { +// if !info.IsDir() { +// if strings.Contains(info.Name(), "_gen") { +// _ = os.Remove(path) +// } +// } +// return nil +// }) +// } +// +// for _, result := range results { +// if len(result.Errs) > 0 { +// t.Fatalf("result errors: %v", result.Errs) +// } +// if *record { +// if err := ioutil.WriteFile(result.OutputPath, result.Content, 0755); err != nil { +// t.Fatal(err) +// } +// } else { +// if expectedContent, ok := test.expectedOutput[result.OutputPath]; ok { +// if !bytes.Equal(expectedContent, result.Content) { +// actual, expected := string(result.Content), string(expectedContent) +// diff := cmp.Diff(strings.Split(expected, "\n"), strings.Split(actual, "\n")) +// buf := new(bytes.Buffer) +// buf.WriteString(fmt.Sprintf("swipe output differs from expected file %s.\n", result.OutputPath)) +// if !*onlyDiff { +// buf.WriteString(fmt.Sprintf("*** actual:\n%s\n\n*** expected:\n%s\n\n", actual, expected)) +// } +// buf.WriteString(fmt.Sprintf("*** diff:\n%s", diff)) +// t.Fatal(buf.String()) +// } +// delete(test.expectedOutput, result.OutputPath) +// } +// } +// } +// if !*record && len(test.expectedOutput) > 0 { +// for _, expectedContent := range test.expectedOutput { +// t.Errorf("there are expected results which are not.\n*** expected:\n%s\n\n***", string(expectedContent)) +// } +// } +// }) +// } +//} +// +//type testCase struct { +// name string +// expectedOutput map[string][]byte +// expectedError bool +// expectedErrorStrings []string +// testCasePath string +// pkgs []string +//} +// +//func loadTestCase(root string, pkgs []string) (*testCase, error) { +// name := filepath.Base(root) +// testCasePath, err := filepath.Abs(filepath.Join(root, "pkg", "transport")) +// if err != nil { +// return nil, err +// } +// expectedFiles, err := ioutil.ReadDir(testCasePath) +// if err != nil { +// return nil, err +// } +// expectedOutput := make(map[string][]byte) +// for _, file := range expectedFiles { +// if !file.IsDir() && strings.Contains(file.Name(), "_gen") { +// expectedFile, err := filepath.Abs(filepath.Join(testCasePath, file.Name())) +// if err != nil { +// return nil, err +// } +// data, err := ioutil.ReadFile(expectedFile) +// if err != nil { +// return nil, err +// } +// expectedOutput[expectedFile] = data +// } +// } +// +// return &testCase{ +// name: name, +// testCasePath: testCasePath, +// expectedOutput: expectedOutput, +// expectedError: false, +// expectedErrorStrings: nil, +// pkgs: pkgs, +// }, nil +// +//} diff --git a/v3/go.mod b/v3/go.mod new file mode 100644 index 00000000..3f84035e --- /dev/null +++ b/v3/go.mod @@ -0,0 +1,19 @@ +module github.com/swipe-io/swipe/v3 + +go 1.16 + +require ( + github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee + github.com/fatih/structtag v1.2.0 + github.com/gertd/go-pluralize v0.1.7 + github.com/imdario/mergo v0.3.12 + github.com/lib/pq v1.8.0 + github.com/mitchellh/mapstructure v1.4.1 + github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 + github.com/spf13/cobra v1.2.0 + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/viper v1.8.1 + github.com/swipe-io/strcase v0.1.5 + golang.org/x/tools v0.1.2 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b +) diff --git a/v3/go.sum b/v3/go.sum new file mode 100644 index 00000000..f68280cc --- /dev/null +++ b/v3/go.sum @@ -0,0 +1,611 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= +github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gertd/go-pluralize v0.1.7 h1:RgvJTJ5W7olOoAks97BOwOlekBFsLEyh00W48Z6ZEZY= +github.com/gertd/go-pluralize v0.1.7/go.mod h1:O4eNeeIf91MHh1GJ2I47DNtaesm66NYvjYgAahcqSDQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= +github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.2.0 h1:IHGo93KUJjih0Gz449MCBDKuaWPqcKcbuUM7GXWFnlw= +github.com/spf13/cobra v1.2.0/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= +github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/v3/internal/annotation/parser.go b/v3/internal/annotation/parser.go new file mode 100644 index 00000000..500ebc8c --- /dev/null +++ b/v3/internal/annotation/parser.go @@ -0,0 +1,133 @@ +package annotation + +import ( + "errors" + "fmt" + "strconv" + "strings" +) + +var ( + errAnnotationSyntax = errors.New("bad syntax for struct annotation pair") + errAnnotationKeySyntax = errors.New("bad syntax for struct annotation key") + errAnnotationValueSyntax = errors.New("bad syntax for struct annotation value") + + errKeyNotSet = errors.New("annotation key does not exist") + errAnnotationNotExist = errors.New("annotation does not exist") + errAnnotationKeyMismatch = errors.New("mismatch between key and annotation.key") +) + +type Annotation struct { + Key string + Name string + Options []string +} + +func (a *Annotation) HasOption(opt string) bool { + for _, annotationOpt := range a.Options { + if annotationOpt == opt { + return true + } + } + return false +} + +func (a *Annotation) Value() string { + options := strings.Join(a.Options, ",") + if options != "" { + return fmt.Sprintf(`%s,%s`, a.Name, options) + } + return a.Name +} + +type Annotations struct { + annotations []*Annotation +} + +func (a *Annotations) Get(key string) (*Annotation, error) { + for _, annotation := range a.annotations { + if annotation.Key == key { + return annotation, nil + } + } + return nil, errAnnotationNotExist +} + +func Parse(v string) (*Annotations, error) { + var annotations []*Annotation + + annotationParts := strings.Split(v, "\n") + + for _, annotation := range annotationParts { + annotation = strings.TrimSpace(annotation) + for annotation != "" { + i := 0 + for i < len(annotation) && annotation[i] == ' ' { + i++ + } + annotation = annotation[i:] + if annotation == "" { + break + } + + if annotation[0] != '@' { + break + } + + annotation = annotation[1:] + + i = 0 + for i < len(annotation) && annotation[i] > ' ' && annotation[i] != ':' && annotation[i] != '"' && annotation[i] != 0x7f { + i++ + } + if i == 0 { + return nil, errAnnotationKeySyntax + } + if i+1 >= len(annotation) || annotation[i] != ':' { + return nil, errAnnotationSyntax + } + if annotation[i+1] != '"' { + return nil, errAnnotationValueSyntax + } + key := annotation[:i] + annotation = annotation[i+1:] + + i = 1 + for i < len(annotation) && annotation[i] != '"' { + if annotation[i] == '\\' { + i++ + } + i++ + } + if i >= len(annotation) { + return nil, errAnnotationValueSyntax + } + + lvalue := annotation[:i+1] + annotation = annotation[i+1:] + + value, err := strconv.Unquote(lvalue) + if err != nil { + return nil, errAnnotationValueSyntax + } + + res := strings.Split(value, ",") + name := res[0] + options := res[1:] + if len(options) == 0 { + options = nil + } + + annotations = append(annotations, &Annotation{ + Key: key, + Name: name, + Options: options, + }) + } + } + + //if hasAnnotation && len(annotations) == 0 { + // return nil, nil + //} + return &Annotations{annotations: annotations}, nil +} diff --git a/v3/internal/ast/copy.go b/v3/internal/ast/copy.go new file mode 100644 index 00000000..6225b5fe --- /dev/null +++ b/v3/internal/ast/copy.go @@ -0,0 +1,468 @@ +package ast + +//import ( +// "fmt" +// "go/ast" +// +// "golang.org/x/tools/go/ast/astutil" +//) +// +//func Copy(original ast.Node) ast.Node { +// m := make(map[ast.Node]ast.Node) +// astutil.Apply(original, nil, func(c *astutil.Cursor) bool { +// switch node := c.Node().(type) { +// case nil: +// case *ast.ArrayType: +// m[node] = &ast.ArrayType{ +// Lbrack: node.Lbrack, +// Len: exprFromMap(m, node.Len), +// Elt: exprFromMap(m, node.Elt), +// } +// case *ast.AssignStmt: +// m[node] = &ast.AssignStmt{ +// Lhs: copyExprList(m, node.Lhs), +// TokPos: node.TokPos, +// Tok: node.Tok, +// Rhs: copyExprList(m, node.Rhs), +// } +// case *ast.BadDecl: +// m[node] = &ast.BadDecl{ +// From: node.From, +// To: node.To, +// } +// case *ast.BadExpr: +// m[node] = &ast.BadExpr{ +// From: node.From, +// To: node.To, +// } +// case *ast.BadStmt: +// m[node] = &ast.BadStmt{ +// From: node.From, +// To: node.To, +// } +// case *ast.BasicLit: +// m[node] = &ast.BasicLit{ +// ValuePos: node.ValuePos, +// Kind: node.Kind, +// Value: node.Value, +// } +// case *ast.BinaryExpr: +// m[node] = &ast.BinaryExpr{ +// X: exprFromMap(m, node.X), +// OpPos: node.OpPos, +// Op: node.Op, +// Y: exprFromMap(m, node.Y), +// } +// case *ast.BlockStmt: +// m[node] = &ast.BlockStmt{ +// Lbrace: node.Lbrace, +// List: copyStmtList(m, node.List), +// Rbrace: node.Rbrace, +// } +// case *ast.BranchStmt: +// m[node] = &ast.BranchStmt{ +// TokPos: node.TokPos, +// Tok: node.Tok, +// Label: identFromMap(m, node.Label), +// } +// case *ast.CallExpr: +// m[node] = &ast.CallExpr{ +// Fun: exprFromMap(m, node.Fun), +// Lparen: node.Lparen, +// Args: copyExprList(m, node.Args), +// Ellipsis: node.Ellipsis, +// Rparen: node.Rparen, +// } +// case *ast.CaseClause: +// m[node] = &ast.CaseClause{ +// Case: node.Case, +// List: copyExprList(m, node.List), +// Colon: node.Colon, +// Body: copyStmtList(m, node.Body), +// } +// case *ast.ChanType: +// m[node] = &ast.ChanType{ +// Begin: node.Begin, +// Arrow: node.Arrow, +// Dir: node.Dir, +// Value: exprFromMap(m, node.Value), +// } +// case *ast.CommClause: +// m[node] = &ast.CommClause{ +// Case: node.Case, +// Comm: stmtFromMap(m, node.Comm), +// Colon: node.Colon, +// Body: copyStmtList(m, node.Body), +// } +// case *ast.Comment: +// m[node] = &ast.Comment{ +// Slash: node.Slash, +// Text: node.Text, +// } +// case *ast.CommentGroup: +// cg := new(ast.CommentGroup) +// if node.List != nil { +// cg.List = make([]*ast.Comment, len(node.List)) +// for i := range node.List { +// cg.List[i] = m[node.List[i]].(*ast.Comment) +// } +// } +// m[node] = cg +// case *ast.CompositeLit: +// m[node] = &ast.CompositeLit{ +// Type: exprFromMap(m, node.Type), +// Lbrace: node.Lbrace, +// Elts: copyExprList(m, node.Elts), +// Rbrace: node.Rbrace, +// } +// case *ast.DeclStmt: +// m[node] = &ast.DeclStmt{ +// Decl: m[node.Decl].(ast.Decl), +// } +// case *ast.DeferStmt: +// m[node] = &ast.DeferStmt{ +// Defer: node.Defer, +// Call: callExprFromMap(m, node.Call), +// } +// case *ast.Ellipsis: +// m[node] = &ast.Ellipsis{ +// Ellipsis: node.Ellipsis, +// Elt: exprFromMap(m, node.Elt), +// } +// case *ast.EmptyStmt: +// m[node] = &ast.EmptyStmt{ +// Semicolon: node.Semicolon, +// Implicit: node.Implicit, +// } +// case *ast.ExprStmt: +// m[node] = &ast.ExprStmt{ +// X: exprFromMap(m, node.X), +// } +// case *ast.Field: +// m[node] = &ast.Field{ +// Doc: commentGroupFromMap(m, node.Doc), +// Names: copyIdentList(m, node.Names), +// Type: exprFromMap(m, node.Type), +// Tag: basicLitFromMap(m, node.Tag), +// Comment: commentGroupFromMap(m, node.Comment), +// } +// case *ast.FieldList: +// fl := &ast.FieldList{ +// Opening: node.Opening, +// Closing: node.Closing, +// } +// if node.List != nil { +// fl.List = make([]*ast.Field, len(node.List)) +// for i := range node.List { +// fl.List[i] = m[node.List[i]].(*ast.Field) +// } +// } +// m[node] = fl +// case *ast.ForStmt: +// m[node] = &ast.ForStmt{ +// For: node.For, +// Init: stmtFromMap(m, node.Init), +// Cond: exprFromMap(m, node.Cond), +// Post: stmtFromMap(m, node.Post), +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.FuncDecl: +// m[node] = &ast.FuncDecl{ +// Doc: commentGroupFromMap(m, node.Doc), +// Recv: fieldListFromMap(m, node.Recv), +// Name: identFromMap(m, node.Name), +// Type: funcTypeFromMap(m, node.Type), +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.FuncLit: +// m[node] = &ast.FuncLit{ +// Type: funcTypeFromMap(m, node.Type), +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.FuncType: +// m[node] = &ast.FuncType{ +// Func: node.Func, +// Params: fieldListFromMap(m, node.Params), +// Results: fieldListFromMap(m, node.Results), +// } +// case *ast.GenDecl: +// decl := &ast.GenDecl{ +// Doc: commentGroupFromMap(m, node.Doc), +// TokPos: node.TokPos, +// Tok: node.Tok, +// Lparen: node.Lparen, +// Rparen: node.Rparen, +// } +// if node.Specs != nil { +// decl.Specs = make([]ast.Spec, len(node.Specs)) +// for i := range node.Specs { +// decl.Specs[i] = m[node.Specs[i]].(ast.Spec) +// } +// } +// m[node] = decl +// case *ast.GoStmt: +// m[node] = &ast.GoStmt{ +// Go: node.Go, +// Call: callExprFromMap(m, node.Call), +// } +// case *ast.Ident: +// // Keep identifiers the same identity so they can be conveniently +// // used with the original *types.Info. +// m[node] = node +// case *ast.IfStmt: +// m[node] = &ast.IfStmt{ +// If: node.If, +// Init: stmtFromMap(m, node.Init), +// Cond: exprFromMap(m, node.Cond), +// Body: blockStmtFromMap(m, node.Body), +// Else: stmtFromMap(m, node.Else), +// } +// case *ast.ImportSpec: +// m[node] = &ast.ImportSpec{ +// Doc: commentGroupFromMap(m, node.Doc), +// Name: identFromMap(m, node.Name), +// Path: basicLitFromMap(m, node.Path), +// Comment: commentGroupFromMap(m, node.Comment), +// EndPos: node.EndPos, +// } +// case *ast.IncDecStmt: +// m[node] = &ast.IncDecStmt{ +// X: exprFromMap(m, node.X), +// TokPos: node.TokPos, +// Tok: node.Tok, +// } +// case *ast.IndexExpr: +// m[node] = &ast.IndexExpr{ +// X: exprFromMap(m, node.X), +// Lbrack: node.Lbrack, +// Index: exprFromMap(m, node.Index), +// Rbrack: node.Rbrack, +// } +// case *ast.InterfaceType: +// m[node] = &ast.InterfaceType{ +// Interface: node.Interface, +// Methods: fieldListFromMap(m, node.Methods), +// Incomplete: node.Incomplete, +// } +// case *ast.KeyValueExpr: +// m[node] = &ast.KeyValueExpr{ +// Key: exprFromMap(m, node.Key), +// Colon: node.Colon, +// Value: exprFromMap(m, node.Value), +// } +// case *ast.LabeledStmt: +// m[node] = &ast.LabeledStmt{ +// Label: identFromMap(m, node.Label), +// Colon: node.Colon, +// Stmt: stmtFromMap(m, node.Stmt), +// } +// case *ast.MapType: +// m[node] = &ast.MapType{ +// Map: node.Map, +// Key: exprFromMap(m, node.Key), +// Value: exprFromMap(m, node.Value), +// } +// case *ast.ParenExpr: +// m[node] = &ast.ParenExpr{ +// Lparen: node.Lparen, +// X: exprFromMap(m, node.X), +// Rparen: node.Rparen, +// } +// case *ast.RangeStmt: +// m[node] = &ast.RangeStmt{ +// For: node.For, +// Key: exprFromMap(m, node.Key), +// Value: exprFromMap(m, node.Value), +// TokPos: node.TokPos, +// Tok: node.Tok, +// X: exprFromMap(m, node.X), +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.ReturnStmt: +// m[node] = &ast.ReturnStmt{ +// Return: node.Return, +// Results: copyExprList(m, node.Results), +// } +// case *ast.SelectStmt: +// m[node] = &ast.SelectStmt{ +// Select: node.Select, +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.SelectorExpr: +// m[node] = &ast.SelectorExpr{ +// X: exprFromMap(m, node.X), +// Sel: identFromMap(m, node.Sel), +// } +// case *ast.SendStmt: +// m[node] = &ast.SendStmt{ +// Chan: exprFromMap(m, node.Chan), +// Arrow: node.Arrow, +// Value: exprFromMap(m, node.Value), +// } +// case *ast.SliceExpr: +// m[node] = &ast.SliceExpr{ +// X: exprFromMap(m, node.X), +// Lbrack: node.Lbrack, +// Low: exprFromMap(m, node.Low), +// High: exprFromMap(m, node.High), +// Max: exprFromMap(m, node.Max), +// Slice3: node.Slice3, +// Rbrack: node.Rbrack, +// } +// case *ast.StarExpr: +// m[node] = &ast.StarExpr{ +// Star: node.Star, +// X: exprFromMap(m, node.X), +// } +// case *ast.StructType: +// m[node] = &ast.StructType{ +// Struct: node.Struct, +// Fields: fieldListFromMap(m, node.Fields), +// Incomplete: node.Incomplete, +// } +// case *ast.SwitchStmt: +// m[node] = &ast.SwitchStmt{ +// Switch: node.Switch, +// Init: stmtFromMap(m, node.Init), +// Tag: exprFromMap(m, node.Tag), +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.TypeAssertExpr: +// m[node] = &ast.TypeAssertExpr{ +// X: exprFromMap(m, node.X), +// Lparen: node.Lparen, +// Type: exprFromMap(m, node.Type), +// Rparen: node.Rparen, +// } +// case *ast.TypeSpec: +// m[node] = &ast.TypeSpec{ +// Doc: commentGroupFromMap(m, node.Doc), +// Name: identFromMap(m, node.Name), +// Assign: node.Assign, +// Type: exprFromMap(m, node.Type), +// Comment: commentGroupFromMap(m, node.Comment), +// } +// case *ast.TypeSwitchStmt: +// m[node] = &ast.TypeSwitchStmt{ +// Switch: node.Switch, +// Init: stmtFromMap(m, node.Init), +// Assign: stmtFromMap(m, node.Assign), +// Body: blockStmtFromMap(m, node.Body), +// } +// case *ast.UnaryExpr: +// m[node] = &ast.UnaryExpr{ +// OpPos: node.OpPos, +// Op: node.Op, +// X: exprFromMap(m, node.X), +// } +// case *ast.ValueSpec: +// m[node] = &ast.ValueSpec{ +// Doc: commentGroupFromMap(m, node.Doc), +// Names: copyIdentList(m, node.Names), +// Type: exprFromMap(m, node.Type), +// Values: copyExprList(m, node.Values), +// Comment: commentGroupFromMap(m, node.Comment), +// } +// default: +// panic(fmt.Sprintf("unhandled AST node: %T", node)) +// } +// return true +// }) +// return m[original] +//} +// +//func commentGroupFromMap(m map[ast.Node]ast.Node, key *ast.CommentGroup) *ast.CommentGroup { +// if key == nil { +// return nil +// } +// return m[key].(*ast.CommentGroup) +//} +// +//func exprFromMap(m map[ast.Node]ast.Node, key ast.Expr) ast.Expr { +// if key == nil { +// return nil +// } +// return m[key].(ast.Expr) +//} +// +//func stmtFromMap(m map[ast.Node]ast.Node, key ast.Stmt) ast.Stmt { +// if key == nil { +// return nil +// } +// return m[key].(ast.Stmt) +//} +// +//func identFromMap(m map[ast.Node]ast.Node, key *ast.Ident) *ast.Ident { +// if key == nil { +// return nil +// } +// return m[key].(*ast.Ident) +//} +// +//func blockStmtFromMap(m map[ast.Node]ast.Node, key *ast.BlockStmt) *ast.BlockStmt { +// if key == nil { +// return nil +// } +// return m[key].(*ast.BlockStmt) +//} +// +//func fieldListFromMap(m map[ast.Node]ast.Node, key *ast.FieldList) *ast.FieldList { +// if key == nil { +// return nil +// } +// return m[key].(*ast.FieldList) +//} +// +//func callExprFromMap(m map[ast.Node]ast.Node, key *ast.CallExpr) *ast.CallExpr { +// if key == nil { +// return nil +// } +// return m[key].(*ast.CallExpr) +//} +// +//func basicLitFromMap(m map[ast.Node]ast.Node, key *ast.BasicLit) *ast.BasicLit { +// if key == nil { +// return nil +// } +// return m[key].(*ast.BasicLit) +//} +// +//func funcTypeFromMap(m map[ast.Node]ast.Node, key *ast.FuncType) *ast.FuncType { +// if key == nil { +// return nil +// } +// return m[key].(*ast.FuncType) +//} +// +//func copyExprList(m map[ast.Node]ast.Node, exprs []ast.Expr) []ast.Expr { +// if exprs == nil { +// return nil +// } +// newExprs := make([]ast.Expr, len(exprs)) +// for i := range exprs { +// newExprs[i] = m[exprs[i]].(ast.Expr) +// } +// return newExprs +//} +// +//func copyStmtList(m map[ast.Node]ast.Node, stmts []ast.Stmt) []ast.Stmt { +// if stmts == nil { +// return nil +// } +// newStmts := make([]ast.Stmt, len(stmts)) +// for i := range stmts { +// newStmts[i] = m[stmts[i]].(ast.Stmt) +// } +// return newStmts +//} +// +//func copyIdentList(m map[ast.Node]ast.Node, idents []*ast.Ident) []*ast.Ident { +// if idents == nil { +// return nil +// } +// newIdents := make([]*ast.Ident, len(idents)) +// for i := range idents { +// newIdents[i] = m[idents[i]].(*ast.Ident) +// } +// return newIdents +//} diff --git a/v3/internal/ast/finder.go b/v3/internal/ast/finder.go new file mode 100644 index 00000000..0fd59148 --- /dev/null +++ b/v3/internal/ast/finder.go @@ -0,0 +1,28 @@ +package ast + +import ( + "fmt" + + "github.com/swipe-io/swipe/v3/option" + + "golang.org/x/tools/go/packages" +) + +type Finder struct { + packages []*packages.Package +} + +func (f *Finder) FindImplIface(ifaceType option.IfaceType) { + for _, p := range f.packages { + for _, syntax := range p.Syntax { + for _, decl := range syntax.Decls { + fmt.Println(decl) + //stdtypes.Implements() + } + } + } +} + +func NewFinder(packages []*packages.Package) *Finder { + return &Finder{packages: packages} +} diff --git a/v3/internal/ast/loader.go b/v3/internal/ast/loader.go new file mode 100644 index 00000000..a4f9cea7 --- /dev/null +++ b/v3/internal/ast/loader.go @@ -0,0 +1,179 @@ +package ast + +import ( + "context" + "errors" + "go/ast" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/internal/types" + "golang.org/x/tools/go/packages" + "golang.org/x/tools/go/types/typeutil" +) + +type Loader struct { + ctx context.Context + wd string + env []string + patterns []string + pkg *packages.Package + commentFuncs map[string][]string + commentFields map[string]map[string]string + pkgs []*packages.Package + enums *typeutil.Map +} + +func (l *Loader) CommentFields() map[string]map[string]string { + return l.commentFields +} + +func (l *Loader) CommentFuncs() map[string][]string { + return l.commentFuncs +} + +func (l *Loader) Pkg() *packages.Package { + return l.pkg +} + +func (l *Loader) Pkgs() []*packages.Package { + return l.pkgs +} + +func (l *Loader) Patterns() []string { + return l.patterns +} + +func (l *Loader) Env() []string { + return l.env +} + +func (l *Loader) WorkDir() string { + return l.wd +} + +func (l *Loader) run() (errs []error) { + var ( + err error + ) + + l.commentFuncs = map[string][]string{} + l.commentFields = map[string]map[string]string{} + l.enums = new(typeutil.Map) + + cfg := &packages.Config{ + Context: l.ctx, + Mode: packages.NeedDeps | + packages.NeedSyntax | + packages.NeedTypesInfo | + packages.NeedTypes | + packages.NeedTypesSizes | + packages.NeedImports | + packages.NeedName | + packages.NeedModule | + packages.NeedFiles | + packages.NeedCompiledGoFiles, + Dir: l.wd, + Env: l.env, + BuildFlags: []string{"-tags=swipe"}, + } + escaped := make([]string, len(l.patterns)) + for i := range l.patterns { + escaped[i] = "pattern=" + l.patterns[i] + } + l.pkgs, err = packages.Load(cfg, escaped...) + if err != nil { + return []error{err} + } + for _, p := range l.pkgs { + for _, e := range p.Errors { + errs = append(errs, e) + } + } + + if len(errs) > 0 { + return errs + } + for _, pkg := range l.pkgs { + if pkg.Module == nil { + continue + } + if l.pkg == nil && stdstrings.Contains(l.wd, pkg.Module.Dir) { + l.pkg = pkg + break + } + } + if l.pkg == nil { + errs = append(errs, errors.New("go mod not found, run go mod init")) + return + } + types.Inspect(l.pkgs, func(p *packages.Package, n ast.Node) bool { + if ts, ok := n.(*ast.TypeSpec); ok { + obj := p.TypesInfo.ObjectOf(ts.Name) + if st, ok := ts.Type.(*ast.StructType); ok { + comments := map[string]string{} + for _, field := range st.Fields.List { + if field.Comment != nil { + if len(field.Comment.List) > 0 { + for _, name := range field.Names { + comments[name.Name] = stdstrings.TrimLeft(field.Comment.List[0].Text, "/") + } + } + } + } + if len(comments) > 0 { + l.commentFields[obj.String()] = comments + } + } + } else if spec, ok := n.(*ast.Field); ok { + t := p.TypesInfo.TypeOf(spec.Type) + if t != nil { + var comments []string + if spec.Doc != nil { + for _, comment := range spec.Doc.List { + comments = append(comments, stdstrings.TrimLeft(comment.Text, "/")) + } + } + if spec.Comment != nil { + for _, comment := range spec.Comment.List { + comments = append(comments, stdstrings.TrimLeft(comment.Text, "/")) + } + } + if len(comments) > 0 { + for _, name := range spec.Names { + if obj := p.TypesInfo.ObjectOf(name); obj != nil { + l.commentFuncs[obj.String()] = comments + } + } + } + } + } else if spec, ok := n.(*ast.FuncDecl); ok { + obj := p.TypesInfo.ObjectOf(spec.Name) + if obj != nil { + var comments []string + if spec.Doc != nil { + for _, comment := range spec.Doc.List { + comments = append(comments, stdstrings.TrimLeft(comment.Text, "/")) + } + } + if len(comments) > 0 { + l.commentFuncs[obj.String()] = comments + } + } + } + return true + }) + return +} + +func NewLoader(wd string, env []string, patterns []string) (*Loader, []error) { + l := &Loader{ + wd: wd, + env: env, + patterns: patterns, + } + errs := l.run() + if len(errs) > 0 { + return nil, errs + } + return l, nil +} diff --git a/v3/internal/format/fomrat.go b/v3/internal/format/fomrat.go new file mode 100644 index 00000000..bb6a2402 --- /dev/null +++ b/v3/internal/format/fomrat.go @@ -0,0 +1,35 @@ +package format + +import ( + "fmt" + "go/format" + "os/exec" +) + +func Source(src []byte) ([]byte, error) { + var useGoImports bool + _, err := exec.LookPath("goimports") + if err == nil { + useGoImports = true + } + if useGoImports { + cmd := exec.Command("goimports") + stdin, err := cmd.StdinPipe() + if err != nil { + return nil, err + } + go func() { + defer stdin.Close() + _, _ = stdin.Write(src) + }() + out, err := cmd.Output() + if err != nil { + if err, ok := err.(*exec.ExitError); ok { + return nil, fmt.Errorf("error: %s %w", string(err.Stderr), err) + } + return nil, err + } + return out, nil + } + return format.Source(src) +} diff --git a/v3/internal/frame/bytes_frame.go b/v3/internal/frame/bytes_frame.go new file mode 100644 index 00000000..635788e1 --- /dev/null +++ b/v3/internal/frame/bytes_frame.go @@ -0,0 +1,13 @@ +package frame + +type BasicFrame struct { +} + +func (f *BasicFrame) Frame(data []byte) ([]byte, error) { + return data, nil +} + +func NewBytesFrame() *BasicFrame { + return &BasicFrame{} + +} diff --git a/v3/internal/frame/factory.go b/v3/internal/frame/factory.go new file mode 100644 index 00000000..4273372d --- /dev/null +++ b/v3/internal/frame/factory.go @@ -0,0 +1,24 @@ +package frame + +import ( + "path/filepath" + + "github.com/swipe-io/swipe/v3/internal/importer" + "github.com/swipe-io/swipe/v3/option" +) + +type Framer interface { + Frame(data []byte) ([]byte, error) +} + +func NewFrame(version string, filename string, importer *importer.Importer, pkg *option.PackageType) Framer { + ext := filepath.Ext(filename) + switch ext { + default: + return NewBytesFrame() + case ".go": + return NewGolangFrame(importer, version, pkg.Name) + case ".js": + return NewJSFrame(version) + } +} diff --git a/v3/internal/frame/golang_frame.go b/v3/internal/frame/golang_frame.go new file mode 100644 index 00000000..48bde774 --- /dev/null +++ b/v3/internal/frame/golang_frame.go @@ -0,0 +1,45 @@ +package frame + +import ( + "bytes" + "fmt" + + "github.com/swipe-io/swipe/v3/internal/format" + "github.com/swipe-io/swipe/v3/internal/importer" +) + +type GolangFrame struct { + importer *importer.Importer + pkgName string + version string +} + +func (f *GolangFrame) Frame(data []byte) ([]byte, error) { + var buf bytes.Buffer + buf.WriteString("//+build !swipe\n\n") + buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") + buf.WriteString("package ") + buf.WriteString(f.pkgName) + buf.WriteString("\n\n") + + if f.importer.HasImports() { + buf.WriteString("import (\n") + for _, imp := range f.importer.SortedImports() { + _, _ = fmt.Fprint(&buf, imp) + } + buf.WriteString(")\n\n") + } + buf.Write(data) + + goSrc := buf.Bytes() + fmtSrc, err := format.Source(goSrc) + if err != nil { + return nil, fmt.Errorf("error: %w\n ***\n%s\n***\n\n", err, string(goSrc)) + } + return fmtSrc, nil +} + +func NewGolangFrame(importer *importer.Importer, version, pkgName string) *GolangFrame { + return &GolangFrame{importer: importer, version: version, pkgName: pkgName} + +} diff --git a/v3/internal/frame/js_frame.go b/v3/internal/frame/js_frame.go new file mode 100644 index 00000000..7c9a2385 --- /dev/null +++ b/v3/internal/frame/js_frame.go @@ -0,0 +1,36 @@ +package frame + +import ( + "bytes" + "fmt" + "os/exec" +) + +type JSFrame struct { + version string +} + +func (f *JSFrame) Frame(data []byte) ([]byte, error) { + buf := new(bytes.Buffer) + buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") + buf.Write(data) + cmd := exec.Command("prettier", "--stdin-filepath", "prettier.js", "--trailing-comma", "none", "--no-config") + stdin, err := cmd.StdinPipe() + if err != nil { + return nil, err + } + go func() { + defer stdin.Close() + _, _ = stdin.Write(buf.Bytes()) + }() + out, err := cmd.CombinedOutput() + if err != nil { + return nil, fmt.Errorf("error: %w\n ***\n%s\n***\n\n***%s***\n\n", err, string(out), string(data)) + } + return out, nil +} + +func NewJSFrame(version string) *JSFrame { + return &JSFrame{version: version} + +} diff --git a/v3/internal/gitattributes/gitattributes.go b/v3/internal/gitattributes/gitattributes.go new file mode 100644 index 00000000..b1f6399b --- /dev/null +++ b/v3/internal/gitattributes/gitattributes.go @@ -0,0 +1,61 @@ +package gitattributes + +import ( + "bytes" + "io/ioutil" + "os" + "path/filepath" + "sort" +) + +var startGitAttrPattern = []byte("\n# /swipe gen\n") +var endGitAttrPattern = []byte("# swipe gen/\n") + +func Generate(wd string, diffExcludes []string) error { + gitAttributesPath := filepath.Join(wd, ".gitattributes") + var ( + f *os.File + err error + ) + if _, err = os.Stat(gitAttributesPath); os.IsNotExist(err) { + f, err = os.Create(gitAttributesPath) + if err != nil { + return err + } + f.Close() + } + data, err := ioutil.ReadFile(gitAttributesPath) + if err != nil { + return err + } + + buf := new(bytes.Buffer) + + start := bytes.Index(data, startGitAttrPattern) + end := bytes.Index(data, endGitAttrPattern) + + if start == -1 && end != -1 { + return err + } + if start != -1 && end == -1 { + return err + } + + if start != -1 && end != -1 { + buf.Write(data[:start]) + buf.Write(data[end+len(endGitAttrPattern):]) + } + + sort.Strings(diffExcludes) + + buf.Write(startGitAttrPattern) + for _, exclude := range diffExcludes { + buf.WriteString(exclude + " -diff\n") + } + buf.Write(endGitAttrPattern) + + if err := ioutil.WriteFile(gitAttributesPath, buf.Bytes(), 0755); err != nil { + return err + } + return nil +} diff --git a/v3/internal/importer/importer.go b/v3/internal/importer/importer.go new file mode 100644 index 00000000..b2de5e26 --- /dev/null +++ b/v3/internal/importer/importer.go @@ -0,0 +1,167 @@ +package importer + +import ( + "bytes" + "fmt" + "sort" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/option" +) + +type ImportInfo struct { + Name string + Differs bool +} + +type Importer struct { + pkg *option.PackageType + imports map[string]ImportInfo +} + +func (i *Importer) Import(name, path string) string { + if path == i.pkg.Path { + return "" + } + const vendorPart = "vendor/" + unVendor := path + if i := stdstrings.LastIndex(path, vendorPart); i != -1 && (i == 0 || path[i-1] == '/') { + unVendor = path[i+len(vendorPart):] + } + if info, ok := i.imports[unVendor]; ok { + return info.Name + } + newName := disambiguate(name, func(n string) bool { + return n == "err" || i.nameInFileScope(n) + }) + i.imports[unVendor] = ImportInfo{ + Name: newName, + Differs: newName != name, + } + return newName +} + +func (i *Importer) nameInFileScope(name string) bool { + for _, other := range i.imports { + if other.Name == name { + return true + } + } + return false +} + +func (i *Importer) HasImports() bool { + return len(i.imports) > 0 +} + +func (i *Importer) SortedImports() (result []string) { + imps := make([]string, 0, len(i.imports)) + for impPath := range i.imports { + imps = append(imps, impPath) + } + sort.Strings(imps) + result = make([]string, len(imps)) + for j, impPath := range imps { + info := i.imports[impPath] + if info.Differs { + result[j] = fmt.Sprintf("\t%s %q\n", info.Name, impPath) + } else { + result[j] = fmt.Sprintf("\t%q\n", impPath) + } + } + return + +} + +func (i *Importer) TypeString(v interface{}) string { + return i.typeString(v, false) +} + +func (i *Importer) TypeSigString(v interface{}) string { + return i.typeString(v, true) +} + +func (i *Importer) typeString(v interface{}, onlySign bool) string { + switch t := v.(type) { + case *option.IfaceType: + return "interface{}" + case *option.MapType: + return pointerPrefix(t.IsPointer) + fmt.Sprintf("map[%s]%s", i.typeString(t.Key, onlySign), i.typeString(t.Value, onlySign)) + case *option.ArrayType: + return pointerPrefix(t.IsPointer) + fmt.Sprintf("[%d]%s", t.Len, i.typeString(t.Value, onlySign)) + case *option.SliceType: + return pointerPrefix(t.IsPointer) + "[]" + i.typeString(t.Value, onlySign) + case *option.BasicType: + return pointerPrefix(t.IsPointer) + t.Name + case *option.VarType: + return t.Name.Value + " " + i.typeString(t.Type, onlySign) + case option.VarsType: + var buf bytes.Buffer + buf.WriteByte('(') + for j, param := range t { + typ := param.Type + if j > 0 { + buf.WriteString(", ") + } + if !onlySign && param.Name.Value != "" { + buf.WriteString(param.Name.Value) + buf.WriteByte(' ') + } + if param.IsVariadic { + buf.WriteString("...") + if s, ok := typ.(*option.SliceType); ok { + typ = s.Value + } + } + buf.WriteString(i.typeString(typ, onlySign)) + } + buf.WriteByte(')') + return buf.String() + case *option.SignType: + var buf bytes.Buffer + buf.WriteString(i.typeString(t.Params, onlySign)) + n := len(t.Results) + if n == 0 { + return buf.String() + } + buf.WriteByte(' ') + if n == 1 && t.Results[0].Name.Value == "" { + buf.WriteString(i.typeString(t.Results[0].Type, onlySign)) + return buf.String() + } + buf.WriteString(i.typeString(t.Results, onlySign)) + return buf.String() + case *option.FuncType: + var buf bytes.Buffer + buf.WriteString(t.Name.Value) + buf.WriteString(i.typeString(t.Sig, onlySign)) + return buf.String() + case *option.NamedType: + if t.Pkg == nil { + return pointerPrefix(t.IsPointer) + t.Name.Value + } + pkg := t.Pkg.Name + if !onlySign { + pkg = i.Import(t.Pkg.Name, t.Pkg.Path) + } + if pkg != "" { + pkg = pkg + "." + } + return pointerPrefix(t.IsPointer) + pkg + t.Name.Value + } + return "" +} + +func NewImporter(pkg *option.PackageType) *Importer { + return &Importer{ + pkg: pkg, + imports: map[string]ImportInfo{}, + } +} + +func pointerPrefix(isPointer bool) string { + if isPointer { + return "*" + } + return "" +} diff --git a/v3/internal/importer/utils.go b/v3/internal/importer/utils.go new file mode 100644 index 00000000..78ed5e81 --- /dev/null +++ b/v3/internal/importer/utils.go @@ -0,0 +1,24 @@ +package importer + +import ( + "go/token" + "strconv" +) + +func disambiguate(name string, collides func(string) bool) string { + if !token.Lookup(name).IsKeyword() && !collides(name) { + return name + } + buf := []byte(name) + if len(buf) > 0 && buf[len(buf)-1] >= '0' && buf[len(buf)-1] <= '9' { + buf = append(buf, '_') + } + base := len(buf) + for n := 2; ; n++ { + buf = strconv.AppendInt(buf[:base], int64(n), 10) + sbuf := string(buf) + if !token.Lookup(sbuf).IsKeyword() && !collides(sbuf) { + return sbuf + } + } +} diff --git a/v3/internal/plugin/config/config_gen.go b/v3/internal/plugin/config/config_gen.go new file mode 100644 index 00000000..dc00647b --- /dev/null +++ b/v3/internal/plugin/config/config_gen.go @@ -0,0 +1,5 @@ +package config + +func (*Config) Options() []byte { + return []byte("// Config\nfunc Config(opts ...ConfigOption) {}\n\n// EnvironmentOption ...\ntype EnvironmentOption string\n\n// FuncName ...\nfunc FuncName(value string) EnvironmentOption { return \"implementation not generated, run swipe\" }\n\n// ConfigOption ...\ntype ConfigOption string\n\n// Environment ...\nfunc Environment(structType interface{}, opts ...EnvironmentOption) ConfigOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") +} diff --git a/v3/internal/plugin/config/generator.go b/v3/internal/plugin/config/generator.go new file mode 100644 index 00000000..a8b5c8fb --- /dev/null +++ b/v3/internal/plugin/config/generator.go @@ -0,0 +1,171 @@ +package config + +import ( + "context" + "fmt" + "strconv" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Generator struct { + writer.GoWriter + Struct *option.NamedType + FuncName string +} + +func (g *Generator) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + typeName := importer.TypeString(g.Struct) + + g.W("func %s() (cfg *%s, errs []error) {\n", g.FuncName, typeName) + g.W("cfg = &%s{}\n", typeName) + + var ( + foundFlags bool + envs []fldOpts + requiredFlags []struct { + f *option.VarType + opts fldOpts + } + ) + + walk(g.Struct, func(f, parent *option.VarType, opts fldOpts) { + if opts.isFlag { + foundFlags = true + } + envs = append(envs, opts) + switch f.Type.(type) { + case *option.NamedType: + g.writeEnv(importer, f, opts) + case *option.BasicType, *option.SliceType, *option.ArrayType, *option.MapType: + if opts.isFlag { + g.writeFlag(importer, f, opts) + if opts.required { + requiredFlags = append(requiredFlags, struct { + f *option.VarType + opts fldOpts + }{f: f, opts: opts}) + } + } else { + g.writeEnv(importer, f, opts) + } + } + }) + + if foundFlags { + flagPkg := importer.Import("flag", "flag") + + g.W("%s.Parse()\n", flagPkg) + + g.W("seen := map[string]struct{}{}\n") + g.W("%[1]s.Visit(func(f *%[1]s.Flag) { seen[f.Name] = struct{}{} })\n", flagPkg) + + for _, o := range requiredFlags { + g.W("if _, ok := seen[\"%s\"]; !ok {\n", o.opts.name) + g.writeAppendErr(importer, o.opts) + g.W("}") + if !bool(o.opts.useZero) && bool(o.opts.required) { + g.W(" else {\n") + g.writeCheckZero(importer, o.f, o.opts) + g.W("}\n") + } else { + g.W("\n") + } + } + } + + g.W("return\n") + g.W("}\n\n") + + g.W("func (cfg %s) String() string {\n", typeName) + g.W("out := `\n") + if len(envs) > 0 { + fmtPkg := importer.Import("fmt", "fmt") + for _, env := range envs { + if env.isFlag { + g.W("--%s ", env.name) + } else { + g.W("%s=", env.name) + } + g.W("`+%s.Sprintf(\"%%v\", %s)+`", fmtPkg, "cfg."+env.fieldPath) + if env.desc != "" { + g.W(" ; %s", env.desc) + } + g.Line() + } + } + g.W("`\n") + g.W("return out\n") + g.W("}\n\n") + + return g.Bytes() +} + +func (g *Generator) OutputDir() string { + return "" +} + +func (g *Generator) Filename() string { + return "config.go" +} + +func (g *Generator) writeEnv(importer swipe.Importer, f *option.VarType, opts fldOpts) { + tmpVar := strcase.ToLowerCamel(opts.fieldPath) + "Tmp" + pkgOS := importer.Import("os", "os") + g.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, pkgOS, strconv.Quote(opts.name)) + g.W("if ok {\n") + + g.WriteConvertType(importer, "cfg."+opts.fieldPath, tmpVar, f, nil, "errs", false, "convert "+opts.name+" error") + g.writeCheckZero(importer, f, opts) + + g.W("}") + if opts.required { + g.W(" else {\n") + g.writeAppendErr(importer, opts) + g.W("}\n") + } else { + g.W("\n") + } +} + +func (g *Generator) writeFlag(i swipe.Importer, f *option.VarType, opts fldOpts) { + if t, ok := f.Type.(*option.BasicType); ok { + flagPkg := i.Import("flag", "flag") + if t.IsString() { + g.W("%[1]s.StringVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + } + if t.IsInt64() { + g.W("%[1]s.Int64Var(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + } + if t.IsInt() { + g.W("%[1]s.IntVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + } + if t.IsFloat64() { + g.W("%[1]s.Float64Var(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + } + if t.IsBool() { + g.W("%[1]s.BoolVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + } + } +} + +func (g *Generator) writeCheckZero(i swipe.Importer, f *option.VarType, opts fldOpts) { + if !bool(opts.useZero) && bool(opts.required) { + if f.Zero != "" { + g.W("if %s == %s {\n", "cfg."+opts.fieldPath, f.Zero) + g.writeAppendErr(i, opts) + g.W("}\n") + } + } +} + +func (g *Generator) writeAppendErr(i swipe.Importer, opts fldOpts) { + errorsPkg := i.Import("errors", "errors") + requiredMsg := strconv.Quote(fmt.Sprintf("%s %s required", opts.tagName(), opts.name)) + g.W("errs = append(errs, %s.New(%s))\n ", errorsPkg, requiredMsg) +} diff --git a/v3/internal/plugin/config/plugin.go b/v3/internal/plugin/config/plugin.go new file mode 100644 index 00000000..dc929f68 --- /dev/null +++ b/v3/internal/plugin/config/plugin.go @@ -0,0 +1,64 @@ +package config + +import ( + "github.com/mitchellh/mapstructure" + + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" +) + +const defaultFuncName = "LoadConfig" + +func init() { + swipe.RegisterPlugin(&Plugin{}) +} + +type Func struct { + Value string +} + +type Environment struct { + StructType *option.NamedType + FuncName *Func `swipe:"option"` +} + +// Config +// @swipe:"Config" +type Config struct { + Environment Environment +} + +type Plugin struct { + config Config +} + +func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { + funcName := defaultFuncName + if p.config.Environment.FuncName != nil { + funcName = p.config.Environment.FuncName.Value + } + generators = append(generators, &Generator{ + Struct: p.config.Environment.StructType, + FuncName: funcName, + }) + return +} + +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *option.Build, options map[string]interface{}) []error { + if err := mapstructure.Decode(options, &p.config); err != nil { + return []error{err} + } + return nil +} + +func (p *Plugin) Options() []byte { + var cfg interface{} = &Config{} + if o, ok := cfg.(interface{ Options() []byte }); ok { + return o.Options() + } + return nil +} + +func (p *Plugin) ID() string { + return "Config" +} diff --git a/v3/internal/plugin/config/utils.go b/v3/internal/plugin/config/utils.go new file mode 100644 index 00000000..ffc4678b --- /dev/null +++ b/v3/internal/plugin/config/utils.go @@ -0,0 +1,127 @@ +package config + +import ( + stdstrings "strings" + + "github.com/fatih/structtag" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/option" +) + +type Bool bool + +func (r Bool) String() string { + if r { + return "yes" + } + return "no" +} + +type fldOpts struct { + desc string + name string + fieldPath string + required Bool + useZero Bool + isFlag bool + typeStr string +} + +func (o fldOpts) tagName() string { + if o.isFlag { + return "flag" + } + return "env" +} + +func getFieldOpts(f *option.VarType, tags *structtag.Tags) (result fldOpts) { + result.name = strcase.ToScreamingSnake(f.Name.Upper()) + result.fieldPath = f.Name.Value + + if tag, err := tags.Get("env"); err == nil { + for _, o := range tag.Options { + switch o { + case "use_zero": + result.useZero = true + case "required": + result.required = true + case "use_flag": + result.name = strcase.ToKebab(f.Name.Upper()) + result.isFlag = true + default: + if stdstrings.HasPrefix(o, "desc:") { + descParts := stdstrings.Split(o, "desc:") + if len(descParts) == 2 { + result.desc = descParts[1] + } + } + } + } + if tag.Name != "" { + result.name = tag.Name + } + } + + return +} + +type callbackFn func(f, parent *option.VarType, opts fldOpts) + +func walkStructRecursive(st *option.StructType, parent *option.VarType, fPOpts fldOpts, fn callbackFn) { + for _, field := range st.Fields { + fOpts := getFieldOpts(field.Var, field.Tags) + if fPOpts.name != "" && parent != nil { + fOpts.name = fPOpts.name + "_" + fOpts.name + fOpts.fieldPath = fPOpts.fieldPath + "." + fOpts.fieldPath + } + + if !isExclusionStructType(field.Var) { + walkRecursive(field.Var.Type, field.Var, fOpts, fn) + continue + } + + fn(field.Var, parent, fOpts) + } +} + +func walk(t interface{}, fn callbackFn) { + walkRecursive(t, nil, fldOpts{}, fn) +} + +func walkRecursive(t interface{}, parent *option.VarType, fPOpts fldOpts, fn callbackFn) { + switch t := t.(type) { + case *option.StructType: + walkStructRecursive(t, parent, fPOpts, fn) + case *option.NamedType: + walkRecursive(t.Type, parent, fPOpts, fn) + } +} + +func isExclusionStructType(v *option.VarType) bool { + switch t := v.Type.(type) { + case *option.SliceType, *option.ArrayType, *option.MapType: + return true + case *option.BasicType: + return true + case *option.NamedType: + switch t.Pkg.Path { + case "github.com/google/uuid": + switch t.Name.Value { + case "UUID": + return true + } + case "time": + switch t.Name.Value { + case "Time", "Duration": + return true + } + case "net/url": + switch t.Name.Value { + case "URL": + return true + } + } + } + return false +} diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go new file mode 100644 index 00000000..75698eb0 --- /dev/null +++ b/v3/internal/plugin/gokit/config/config.go @@ -0,0 +1,164 @@ +package config + +import ( + "github.com/swipe-io/swipe/v3/option" +) + +type ErrorType string + +const ( + RESTErrorType ErrorType = "rest" + JRPCErrorType ErrorType = "jrpc" +) + +type Error struct { + PkgName string + PkgPath string + IsPointer bool + Name string + Type ErrorType + Code int64 +} + +type FuncTypeValue struct { + Value *option.FuncType +} + +type SliceStringValue struct { + Value []string +} + +type StringValue struct { + Value string +} + +type IntValue struct { + Value int +} + +type BoolValue struct { + Value bool +} + +type ExternalInterface struct { + Iface *Interface + Config *Config + Build *option.Build +} + +type Interface struct { + Named *option.NamedType `mapstructure:"iface"` + Namespace string `mapstructure:"ns"` + ClientName StringValue `swipe:"option"` + External *ExternalInterface `mapstructure:"-"` +} + +type OpenapiTag struct { + Methods []option.NamedType `mapstructure:"methods"` + Tags []string `mapstructure:"tags"` +} + +type LoggingParams struct { + Includes []string + Excludes []string +} + +type LoggingContext struct { + Key interface{} + Name string +} + +type RESTMultipart struct { + MaxMemory int64 +} + +type MethodOption struct { + Signature *option.NamedType + Instrumenting BoolValue `swipe:"option"` + Logging BoolValue `swipe:"option"` + Exclude BoolValue `swipe:"option"` + LoggingParams LoggingParams `swipe:"option"` + LoggingContext []LoggingContext `swipe:"option"` + RESTMethod StringValue `swipe:"option"` + RESTWrapResponse StringValue `swipe:"option"` + RESTPath *StringValue `swipe:"option"` + RESTMultipart *RESTMultipart `swipe:"option"` + RESTHeaderVars SliceStringValue `swipe:"option"` + RESTQueryVars SliceStringValue `swipe:"option"` + RESTQueryValues SliceStringValue `swipe:"option"` + RESTPathVars map[string]string `swipe:"option"` + ServerEncodeResponse FuncTypeValue `swipe:"option"` + ServerDecodeRequest FuncTypeValue `swipe:"option"` + ClientEncodeRequest FuncTypeValue `swipe:"option"` + ClientDecodeResponse FuncTypeValue `swipe:"option"` +} + +type OpenapiInfo struct { + Title string + Description string + Version string +} + +type OpenapiContact struct { + Name string + Email string + Url string +} + +type OpenapiLicence struct { + Name string + Url string +} + +type OpenapiServer struct { + Description string + Url string +} + +type Langs []string + +type ClientsEnable struct { + Langs Langs +} + +func (a Langs) Contains(v string) bool { + for _, n := range a { + if v == n { + return true + } + } + return false +} + +// Config +// @swipe:"Gokit" +type Config struct { + HTTPServer *struct{} + HTTPFast *struct{} + ClientsEnable ClientsEnable + JSONRPCEnable *struct{} + JSONRPCPath StringValue + JSONRPCDocEnable *struct{} + JSONRPCDocOutput StringValue + Interfaces []*Interface `mapstructure:"Interface"` + OpenapiEnable *struct{} + OpenapiTags []OpenapiTag + OpenapiOutput StringValue + OpenapiInfo OpenapiInfo + OpenapiContact OpenapiContact + OpenapiLicence OpenapiLicence + OpenapiServers []OpenapiServer `mapstructure:"OpenapiServer"` + MethodOptions []MethodOption + MethodDefaultOptions MethodOption + DefaultErrorEncoder FuncTypeValue + + // non options params + LoggingEnable bool `mapstructure:"-"` + InstrumentingEnable bool `mapstructure:"-"` + MethodOptionsMap map[string]MethodOption `mapstructure:"-"` + OpenapiMethodTags map[string][]string `mapstructure:"-"` + IfaceErrors map[string]map[string][]Error `mapstructure:"-"` + JSPkgImportPath string `mapstructure:"-"` + AppName string `mapstructure:"-"` + HasExternal bool `mapstructure:"-"` +} diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go new file mode 100644 index 00000000..8e7fffbc --- /dev/null +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -0,0 +1,5 @@ +package config + +func (*Config) Options() []byte { + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOption ...\ntype MethodOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// Exclude ...\nfunc Exclude(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTPath ...\nfunc RESTPath(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipart ...\nfunc RESTMultipart(maxMemory int64) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") +} diff --git a/v3/internal/plugin/gokit/generator/client_struct.go b/v3/internal/plugin/gokit/generator/client_struct.go new file mode 100644 index 00000000..4bbe6440 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/client_struct.go @@ -0,0 +1,208 @@ +package generator + +import ( + "context" + "fmt" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type ClientStruct struct { + w writer.GoWriter + UseFast bool + JSONRPCEnable bool + Interfaces []*config.Interface +} + +func (g *ClientStruct) Generate(ctx context.Context) []byte { + var ( + kitHTTPPkg string + endpointPkg string + ) + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + if g.JSONRPCEnable { + if g.UseFast { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + } else { + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + } + endpointPkg = importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + clientOptionType := "ClientOption" + + if len(g.Interfaces) > 1 { + g.w.W("type AppClient struct {\n") + + for _, iface := range g.Interfaces { + g.w.W("%s *%s\n", UcNameWithAppPrefix(iface), ClientType(iface)) + } + g.w.W("}\n\n") + + if g.JSONRPCEnable { + g.w.W("func NewClientJSONRPC(tgt string") + } else { + g.w.W("func NewClientREST(tgt string") + } + + g.w.W(" ,opts ...ClientOption") + g.w.W(") (*AppClient, error) {\n") + + for _, iface := range g.Interfaces { + name := UcNameWithAppPrefix(iface) + lcName := LcNameWithAppPrefix(iface) + + if g.JSONRPCEnable { + g.w.W("%s, err := NewClientJSONRPC%s(tgt, opts...)\n", lcName, name) + } else { + g.w.W("%s, err := NewClientREST%s(tgt, opts...)\n", lcName, name) + } + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err") + }) + } + + g.w.W("return &AppClient{\n") + for _, iface := range g.Interfaces { + g.w.W("%[1]s: %[2]s,\n", UcNameWithAppPrefix(iface), LcNameWithAppPrefix(iface)) + } + g.w.W("}, nil\n") + g.w.W("}\n\n") + } + + g.w.W("type %s func(*clientOpts)\n", clientOptionType) + g.w.W("type clientOpts struct {\n") + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + g.w.W("%sClientOption []%s.ClientOption\n", LcNameWithAppPrefix(iface)+m.Name.Value, kitHTTPPkg) + g.w.W("%sEndpointMiddleware []%s.Middleware\n", LcNameWithAppPrefix(iface)+m.Name.Value, endpointPkg) + } + } + g.w.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) + g.w.W("genericEndpointMiddleware []%s.Middleware\n", endpointPkg) + g.w.W("}\n\n") + + g.w.W("func GenericClientOptions(opt ...%s) %s {\n", kitHTTPPkg+".ClientOption", clientOptionType) + g.w.W("return func(c *clientOpts) { c.genericClientOption = opt }\n") + g.w.W("}\n") + + g.w.W("func GenericClientEndpointMiddlewares(opt ...%s) %s {\n", endpointPkg+".Middleware", clientOptionType) + g.w.W("return func(c *clientOpts) { c.genericEndpointMiddleware = opt }\n") + g.w.W("}\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + ucName := UcNameWithAppPrefix(iface) + m.Name.Value + lcName := LcNameWithAppPrefix(iface) + m.Name.Value + + g.w.W("func %sClientOptions(opt ...%s) %s {\n", ucName, kitHTTPPkg+".ClientOption", clientOptionType) + g.w.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", lcName) + g.w.W("}\n") + + g.w.W("func %sClientEndpointMiddlewares(opt ...%s) %s {\n", ucName, endpointPkg+".Middleware", clientOptionType) + g.w.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", lcName) + g.w.W("}\n") + } + } + + if len(g.Interfaces) > 0 { + contextPkg := importer.Import("context", "context") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + clientType := ClientType(iface) + g.w.W("type %s struct {\n", clientType) + for _, m := range ifaceType.Methods { + g.w.W("%sEndpoint %s.Endpoint\n", LcNameWithAppPrefix(iface)+m.Name.Value, endpointPkg) + } + g.w.W("}\n\n") + + for _, m := range ifaceType.Methods { + var ( + ctxVarName = fmt.Sprintf("%s.TODO()", contextPkg) + errVarName = "err" + assignResult = ":" + responseVarName = "response" + ) + + ctxVar := findContextVar(m.Sig.Params) + errVar := findErrorVar(m.Sig.Results) + + if ctxVar != nil { + ctxVarName = ctxVar.Name.Value + } + if errVar != nil { + errVarName = errVar.Name.Value + assignResult = "" + } + + if LenWithoutErrors(m.Sig.Results) == 0 { + responseVarName = "_" + } + + g.w.W("func (c *%s) %s %s {\n", clientType, m.Name.Value, importer.TypeString(m.Sig)) + if responseVarName != "_" { + g.w.W("var %s interface{}\n", responseVarName) + } + g.w.W("%s, %s %s= c.%sEndpoint(%s,", responseVarName, errVarName, assignResult, LcNameWithAppPrefix(iface)+m.Name.Value, ctxVarName) + + if len(m.Sig.Params) > 0 { + g.w.W("%s{", NameRequest(m, iface)) + for _, param := range m.Sig.Params { + if IsContext(param) { + continue + } + g.w.W("%s: %s,", param.Name.Upper(), param.Name.Value) + } + g.w.W("}") + } else { + g.w.W("nil") + } + + g.w.W(")\n") + + g.w.WriteCheckErr(errVarName, func() { + g.w.W("return\n") + }) + + lenResults := LenWithoutErrors(m.Sig.Results) + if lenResults > 0 { + for _, result := range m.Sig.Results { + if IsError(result) { + continue + } + if lenResults == 1 { + g.w.W("%s = %s.(%s)\n", result.Name.Value, responseVarName, importer.TypeString(result.Type)) + } else { + g.w.W("%s = %s.(%s).%s\n", result.Name.Value, responseVarName, NameResponse(m, iface), result.Name.Upper()) + } + } + } + g.w.W("return\n") + g.w.W("}\n") + } + } + } + + return g.w.Bytes() +} + +func (g *ClientStruct) OutputDir() string { + return "" +} + +func (g *ClientStruct) Filename() string { + return "client_struct.go" +} diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go new file mode 100644 index 00000000..66b12c76 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -0,0 +1,160 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Endpoint struct { + w writer.GoWriter + Interfaces []*config.Interface + HTTPServerEnable bool +} + +func (g *Endpoint) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + if g.HTTPServerEnable { + g.writeEndpointMake(importer) + } + g.writeReqResp(importer) + return g.w.Bytes() +} + +func (g *Endpoint) OutputDir() string { + return "" +} + +func (g *Endpoint) Filename() string { + return "endpoint.go" +} + +func (g *Endpoint) writeReqResp(importer swipe.Importer) { + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + if len(m.Sig.Params) > 0 { + g.w.W("type %s struct {\n", NameRequest(m, iface)) + for _, param := range m.Sig.Params { + if IsContext(param) { + continue + } + g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), importer.TypeString(param.Type), param.Name) + } + g.w.W("}\n") + } + if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 0 { + g.w.W("type %s struct {\n", NameResponse(m, iface)) + for _, param := range m.Sig.Results { + if IsError(param) { + continue + } + g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), importer.TypeString(param.Type), param.Name) + } + g.w.W("}\n") + } + } + } +} + +func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + contextPkg := importer.Import("context", "context") + kitEndpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + typeStr := NameInterface(iface) + epSetName := NameEndpointSetName(iface) + + g.w.W("type %s struct {\n", epSetName) + + for _, m := range ifaceType.Methods { + g.w.W("%sEndpoint %s.Endpoint\n", m.Name, kitEndpointPkg) + } + g.w.W("}\n") + + g.w.W("func Make%[1]s(svc %[2]s) %[1]s {\n", epSetName, typeStr) + g.w.W("return %s{\n", epSetName) + for _, m := range ifaceType.Methods { + g.w.W("%sEndpoint: %s(svc),\n", m.Name, NameMakeEndpoint(m, iface)) + } + g.w.W("}\n") + g.w.W("}\n") + + for _, m := range ifaceType.Methods { + g.w.W("func %s(s %s) %s.Endpoint {\n", NameMakeEndpoint(m, iface), typeStr, kitEndpointPkg) + g.w.W("return func (ctx %s.Context, request interface{}) (interface{}, error) {\n", contextPkg) + + var callParams []string + for _, param := range m.Sig.Params { + if IsContext(param) { + callParams = append(callParams, "ctx") + continue + } + if param.IsVariadic { + callParams = append(callParams, "req."+param.Name.Upper()+"...") + continue + } + callParams = append(callParams, "req."+param.Name.Upper()) + } + if LenWithoutContexts(m.Sig.Params) > 0 { + g.w.W("req := request.(%s)\n", NameRequest(m, iface)) + } + + if len(m.Sig.Results) > 0 { + for i, p := range m.Sig.Results { + if i > 0 { + g.w.W(", ") + } + g.w.W(p.Name.Value) + } + } + + if len(m.Sig.Results) > 0 { + g.w.W(" := ") + } + + g.w.WriteFuncCall("s", m.Name.Value, callParams) + + if len(m.Sig.Results) > 0 { + for _, result := range m.Sig.Results { + if IsError(result) { + g.w.WriteCheckErr(result.Name.Value, func() { + g.w.W("return nil, %s\n", result.Name.Value) + }) + } + } + } + g.w.W("return ") + + resultLen := LenWithoutErrors(m.Sig.Results) + if resultLen > 1 { + g.w.W("%s", NameResponse(m, iface)) + var resultKeyVal []string + for _, result := range m.Sig.Results { + if IsError(result) { + continue + } + resultKeyVal = append(resultKeyVal, result.Name.Upper(), result.Name.Value) + } + g.w.WriteStructAssign(resultKeyVal) + } else if resultLen == 1 { + for _, result := range m.Sig.Results { + if IsError(result) { + continue + } + g.w.W("%s", result.Name.Value) + } + } else { + g.w.W("nil") + } + g.w.W(" ,nil\n") + g.w.W("}\n") + g.w.W("}\n\n") + } + } +} diff --git a/v3/internal/plugin/gokit/generator/gateway.go b/v3/internal/plugin/gokit/generator/gateway.go new file mode 100644 index 00000000..6d9c3201 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/gateway.go @@ -0,0 +1,88 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/option" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type GatewayGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface +} + +func (g *GatewayGenerator) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + contextPkg := importer.Import("context", "context") + epPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + httpKitPkg := importer.Import("endpoint", "github.com/go-kit/kit/transport/http") + jsonRPCKitPkg := importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + sdPkg := importer.Import("sd", "github.com/go-kit/kit/sd") + lbPkg := importer.Import("sd", "github.com/go-kit/kit/sd/lb") + timePkg := importer.Import("time", "time") + + g.w.W("const (\nDefaultRetryMax = 99\nDefaultRetryTimeout = time.Second * 600\n)\n\n") + + g.w.W("type BalancerFactory func(iface %s.Endpointer) %s.Balancer\n\n", sdPkg, lbPkg) + + g.w.W("func RetryErrorExtractor() %s.Middleware {\n", epPkg) + g.w.W("return func(next %[1]s.Endpoint) %[1]s.Endpoint {\n", epPkg) + g.w.W("return func(ctx %s.Context, request interface{}) (response interface{}, err error) {\n", contextPkg) + g.w.W("response, err = next(ctx, request)\n") + g.w.W("if err != nil {\n") + g.w.W("if re, ok := err.(sd2.RetryError); ok {\n") + g.w.W("return nil, re.Final\n") + g.w.W("}\n}\n") + g.w.W("return\n") + g.w.W("}\n}\n}\n") + + g.w.W("type EndpointOption struct{\n") + g.w.W("Balancer BalancerFactory\n") + g.w.W("RetryMax int\n") + g.w.W("RetryTimeout %s.Duration\n", timePkg) + g.w.W("}\n") + + g.w.W("func retryMax(max int) %s.Callback {\n", lbPkg) + g.w.W("return func(n int, received error) (keepTrying bool, replacement error) {\n") + g.w.W("keepTrying = n < max\n") + g.w.W("replacement = received\n") + g.w.W("if _, ok := received.(%s.StatusCoder); ok {\n", httpKitPkg) + g.w.W("keepTrying = false\n") + g.w.W("} else if _, ok := received.(%s.ErrorCoder); ok {\n", jsonRPCKitPkg) + g.w.W("keepTrying = false\n") + g.w.W("}\n") + + g.w.W("return\n") + g.w.W("}\n") + g.w.W("}\n\n") + + for _, iface := range g.Interfaces { + if !iface.Named.Pkg.Module.External { + continue + } + ifaceType := iface.Named.Type.(*option.IfaceType) + + g.w.W("type %sOption struct {\n", UcNameWithAppPrefix(iface)) + g.w.W("Instancer %s.Instancer \n", sdPkg) + g.w.W("Factory func(string) (interface{}, error) \n") + + for _, method := range ifaceType.Methods { + g.w.W("%s EndpointOption\n", method.Name) + } + g.w.W("}\n\n") + } + return g.w.Bytes() +} + +func (g *GatewayGenerator) OutputDir() string { + return "" +} + +func (g *GatewayGenerator) Filename() string { + return "gateway.go" +} diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go new file mode 100644 index 00000000..55070899 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -0,0 +1,199 @@ +package generator + +import ( + "context" + "fmt" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Helpers struct { + w writer.GoWriter + Interfaces []*config.Interface + JSONRPCEnable bool + GoClientEnable bool + HTTPServerEnable bool + UseFast bool + IfaceErrors map[string]map[string][]config.Error +} + +func (g *Helpers) Generate(ctx context.Context) []byte { + var ( + kitHTTPPkg string + ) + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + if g.JSONRPCEnable { + if g.UseFast { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + } else { + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + } + endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + + g.writeFuncMiddlewareChain(endpointPkg) + + if g.HTTPServerEnable { + serverOptType := "serverOpts" + serverOptionType := "ServerOption" + kitHTTPServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) + endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) + + g.w.W("type %s func (*%s)\n", serverOptionType, serverOptType) + + g.w.W("type %s struct {\n", serverOptType) + g.w.W("genericServerOption []%s\n", kitHTTPServerOption) + g.w.W("genericEndpointMiddleware []%s\n", endpointMiddlewareOption) + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + name := LcNameWithAppPrefix(iface) + m.Name.Value + g.w.W("%sServerOption []%s\n", name, kitHTTPServerOption) + g.w.W("%sEndpointMiddleware []%s\n", name, endpointMiddlewareOption) + } + } + g.w.W("}\n") + + g.w.W("func GenericServerOptions(v ...%s) %s {\n", kitHTTPServerOption, serverOptionType) + g.w.W("return func(o *%s) { o.genericServerOption = v }\n", serverOptType) + g.w.W("}\n") + + g.w.W("func GenericServerEndpointMiddlewares(v ...%s) %s {\n", endpointMiddlewareOption, serverOptionType) + g.w.W("return func(o *%s) { o.genericEndpointMiddleware = v }\n", serverOptType) + g.w.W("}\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + fnPrefix := UcNameWithAppPrefix(iface) + m.Name.Value + paramPrefix := LcNameWithAppPrefix(iface) + m.Name.Value + + g.w.W("func %sServerOptions(opt ...%s) %s {\n", fnPrefix, kitHTTPServerOption, serverOptionType) + g.w.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, paramPrefix) + g.w.W("}\n") + + g.w.W("func %sServerEndpointMiddlewares(opt ...%s) %s {\n", fnPrefix, endpointMiddlewareOption, serverOptionType) + g.w.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, paramPrefix) + g.w.W("}\n") + } + } + } + + if g.GoClientEnable { + g.w.W("type httpError struct {\n") + g.w.W("code int\n") + if g.JSONRPCEnable { + g.w.W("data interface{}\n") + g.w.W("message string\n") + } + g.w.W("}\n") + + if g.JSONRPCEnable { + g.w.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") + } else { + if g.UseFast { + httpPkg := importer.Import("fasthttp", "github.com/valyala/fasthttp") + g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) + } else { + httpPkg := importer.Import("http", "net/http") + g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) + } + } + + g.w.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") + + errorDecodeParams := []string{"code", "int"} + if g.JSONRPCEnable { + g.w.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") + g.w.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") + g.w.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") + + errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") + } + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] + + for _, m := range ifaceType.Methods { + methodErrors := ifaceErrors[m.Name.Value] + + g.w.W("func %sErrorDecode(", LcNameIfaceMethod(iface, m)) + + for i := 0; i < len(errorDecodeParams); i += 2 { + if i > 0 { + g.w.W(",") + } + g.w.W("%s %s", errorDecodeParams[i], errorDecodeParams[i+1]) + } + + g.w.W(") (err error) {\n") + + g.w.W("switch code {\n") + g.w.W("default:\nerr = &httpError{code: code}\n") + if g.JSONRPCEnable { + for _, e := range methodErrors { + g.w.W("case %d:\n", e.Code) + pkgName := importer.Import(e.PkgName, e.PkgPath) + if pkgName != "" { + pkgName += "." + } + newPrefix := "" + if e.IsPointer { + newPrefix = "&" + } + g.w.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Name) + } + } + g.w.W("}\n") + if g.JSONRPCEnable { + g.w.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") + g.w.W("err.SetErrorData(data)\n") + g.w.W("}\n") + + g.w.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") + g.w.W("err.SetErrorMessage(message)\n") + g.w.W("}\n") + } + g.w.W("return\n") + g.w.W("}\n") + } + } + } + + return g.w.Bytes() +} + +func (g *Helpers) writeFuncMiddlewareChain(endpointPkg string) { + g.w.W("func middlewareChain(middlewares []%[1]s.Middleware) %[1]s.Middleware {\n", endpointPkg) + g.w.W("return func(next %[1]s.Endpoint) %[1]s.Endpoint {\n", endpointPkg) + g.w.W("if len(middlewares) == 0 {\n") + g.w.W("return next\n") + g.w.W("}\n") + g.w.W("outer := middlewares[0]\n") + g.w.W("others := middlewares[1:]\n") + g.w.W("for i := len(others) - 1; i >= 0; i-- {\n") + g.w.W("next = others[i](next)\n") + g.w.W("}\n") + g.w.W("return outer(next)\n") + g.w.W("}\n") + g.w.W("}\n") +} + +func (g *Helpers) OutputDir() string { + return "" +} + +func (g *Helpers) Filename() string { + return "helpers.go" +} diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go new file mode 100644 index 00000000..c11abc45 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -0,0 +1,137 @@ +package generator + +import ( + "context" + "fmt" + "strconv" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Instrumenting struct { + w writer.GoWriter + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOption +} + +func (g *Instrumenting) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + metricsPkg := importer.Import("metrics", "github.com/go-kit/kit/metrics") + + g.w.W("type instrumentingOpts struct {\n") + g.w.W("requestCount %s.Counter\n", metricsPkg) + g.w.W("requestLatency %s.Histogram\n", metricsPkg) + g.w.W("namespace string\n") + g.w.W("subsystem string\n") + g.w.W("}\n\n") + + g.w.W("type InstrumentingOption func(*instrumentingOpts)\n\n") + + g.w.W("func Namespace(v string) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.namespace = v\n}\n}\n\n") + g.w.W("func Subsystem(v string) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.subsystem = v\n}\n}\n\n") + + g.w.W("func RequestLatency(requestLatency %s.Histogram) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) + g.w.W("func RequestCount(requestCount %s.Counter) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestCount = requestCount\n}\n}\n\n", metricsPkg) + + if len(g.Interfaces) > 0 { + timePkg := importer.Import("time", "time") + stdPrometheusPkg := importer.Import("prometheus", "github.com/prometheus/client_golang/prometheus") + kitPrometheusPkg := importer.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + ifaceName := NameInterface(iface) + name := NameInstrumentingMiddleware(iface) + + constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", UcNameWithAppPrefix(iface)) + + g.w.W("type %s struct {\n", name) + g.w.W("next %s\n", ifaceName) + g.w.W("opts *instrumentingOpts\n") + g.w.W("}\n\n") + + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) + if mopt.Instrumenting.Value { + g.w.WriteDefer( + []string{"begin " + timePkg + ".Time"}, + []string{timePkg + ".Now()"}, + func() { + g.w.W("s.opts.requestCount.With(\"method\", \"%s\").Add(1)\n", m.Name) + g.w.W("s.opts.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", m.Name, timePkg) + }, + ) + } + + if len(m.Sig.Results) > 0 { + for i, result := range m.Sig.Results { + if i > 0 { + g.w.W(",") + } + g.w.W(result.Name.Value) + } + g.w.W(" = ") + } + + g.w.W("s.next.%s(", m.Name) + for i, param := range m.Sig.Params { + if i > 0 { + g.w.W(",") + } + var variadic string + if param.IsVariadic { + variadic = "..." + } + g.w.W(param.Name.Value + variadic) + } + g.w.W(")\n") + + g.w.W("return\n") + + g.w.W("}\n") + } + + g.w.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) *%[3]s {\n", constructName, ifaceName, name) + g.w.W("i := &%s{next: s, opts: &instrumentingOpts{}}\n", name) + + g.w.W("for _, o := range opts {\no(i.opts)\n}\n") + + g.w.W("if i.opts.requestCount == nil {\n") + g.w.W("i.opts.requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + g.w.W("Namespace: i.opts.namespace,\n") + g.w.W("Subsystem: i.opts.subsystem,\n") + g.w.W("Name: %s,\n", strconv.Quote("request_count")) + g.w.W("Help: %s,\n", strconv.Quote("Number of requests received.")) + g.w.W("}, []string{\"method\"})\n") + g.w.W("\n}\n") + + g.w.W("if i.opts.requestLatency == nil {\n") + g.w.W("i.opts.requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + g.w.W("Namespace: i.opts.namespace,\n") + g.w.W("Subsystem: i.opts.subsystem,\n") + g.w.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) + g.w.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) + g.w.W("}, []string{\"method\"})\n") + g.w.W("\n}\n") + + g.w.W("return i\n}\n") + } + } + + return g.w.Bytes() +} + +func (g *Instrumenting) OutputDir() string { + return "" +} + +func (g *Instrumenting) Filename() string { + return "instrumenting.go" +} diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go new file mode 100644 index 00000000..c54cf79d --- /dev/null +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -0,0 +1,41 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type InterfaceGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface +} + +func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + ifaceTypeName := NameInterface(iface) + + g.w.W("type %s interface {\n", ifaceTypeName) + for _, m := range ifaceType.Methods { + g.w.W(m.Name.Value) + g.w.W(importer.TypeString(m.Sig)) + g.w.W("\n") + } + g.w.W("}\n") + } + return g.w.Bytes() +} + +func (g *InterfaceGenerator) OutputDir() string { + return "" +} + +func (g *InterfaceGenerator) Filename() string { + return "interface.go" +} diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go new file mode 100644 index 00000000..59582b35 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -0,0 +1,149 @@ +package generator + +import ( + "context" + "strconv" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type JSONRPCClientGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface + UseFast bool +} + +func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { + var ( + jsonrpcPkg string + contextPkg string + ffJSONPkg string + jsonPkg string + fmtPkg string + urlPkg string + netPkg string + stringsPkg string + ) + + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + clientType := ClientType(iface) + + g.w.W("func NewClientJSONRPC%s(tgt string", UcNameWithAppPrefix(iface)) + g.w.W(" ,options ...ClientOption") + g.w.W(") (*%s, error) {\n", clientType) + g.w.W("opts := &clientOpts{}\n") + g.w.W("c := &%s{}\n", clientType) + g.w.W("for _, o := range options {\n") + g.w.W("o(opts)\n") + g.w.W("}\n") + + if g.UseFast { + jsonrpcPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + jsonrpcPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + urlPkg = importer.Import("url", "net/url") + contextPkg = importer.Import("context", "context") + ffJSONPkg = importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + jsonPkg = importer.Import("json", "encoding/json") + fmtPkg = importer.Import("fmt", "fmt") + netPkg = importer.Import("net", "net") + stringsPkg = importer.Import("strings", "strings") + + g.w.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.w.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err") + }) + g.w.W("tgt = host + \":\" + port\n") + g.w.W("}\n") + + g.w.W("u, err := %s.Parse(tgt)\n", urlPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err") + }) + g.w.W("if u.Scheme == \"\" {\n") + g.w.W("u.Scheme = \"https\"") + g.w.W("}\n") + + for _, m := range ifaceType.Methods { + g.w.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", LcNameIfaceMethod(iface, m)) + g.w.W("%s.ClientRequestEncoder(", jsonrpcPkg) + g.w.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) + + requestName := NameRequest(m, iface) + + if len(m.Sig.Params) > 0 { + g.w.W("req, ok := obj.(%s)\n", requestName) + g.w.W("if !ok {\n") + g.w.W("return nil, %s.Errorf(\"couldn't assert request as %s, got %%T\", obj)\n", fmtPkg, requestName) + g.w.W("}\n") + g.w.W("b, err := %s.Marshal(req)\n", ffJSONPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, %s.Errorf(\"couldn't marshal request %%T: %%s\", obj, err)\n", fmtPkg) + g.w.W("}\n") + g.w.W("return b, nil\n") + } else { + g.w.W("return nil, nil\n") + } + g.w.W("}),\n") + + g.w.W("%s.ClientResponseDecoder(", jsonrpcPkg) + g.w.W("func(_ %s.Context, response %s.Response) (interface{}, error) {\n", contextPkg, jsonrpcPkg) + g.w.W("if response.Error != nil {\n") + g.w.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", LcNameIfaceMethod(iface, m)) + g.w.W("}\n") + + if len(m.Sig.Results) > 0 { + var responseType string + responseName := NameResponse(m, iface) + if m.Sig.IsNamed { + responseType = responseName + } else { + responseType = importer.TypeString(m.Sig.Results[0].Type) + } + g.w.W("var resp %s\n", responseType) + g.w.W("err := %s.Unmarshal(response.Result, &resp)\n", ffJSONPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, responseName) + g.w.W("}\n") + g.w.W("return resp, nil\n") + } else { + g.w.W("return nil, nil\n") + } + g.w.W("}),\n") + g.w.W(")\n") + methodName := m.Name.Lower() + + g.w.W("c.%sEndpoint = %s.NewClient(\n", LcNameIfaceMethod(iface, m), jsonrpcPkg) + g.w.W("u,\n") + g.w.W("%s,\n", strconv.Quote(methodName)) + g.w.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", LcNameIfaceMethod(iface, m)) + g.w.W(").Endpoint()\n") + + g.w.W( + "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", + LcNameIfaceMethod(iface, m), + ) + } + + g.w.W("return c, nil\n") + g.w.W("}\n") + } + return g.w.Bytes() +} + +func (g *JSONRPCClientGenerator) OutputDir() string { + return "" +} + +func (g *JSONRPCClientGenerator) Filename() string { + return "jsonrpc_client.go" +} diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go new file mode 100644 index 00000000..32e5c8f7 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -0,0 +1,160 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/writer" +) + +type JSONRPCDocGenerator struct { + w writer.BaseWriter + AppName string + JSPkgImportPath string + Interfaces []*config.Interface + IfaceErrors map[string]map[string][]config.Error +} + +func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { + g.w.W("# %s JSONRPC Client\n\n", g.AppName) + + if g.JSPkgImportPath != "" { + g.w.W("## Getting Started\n\n") + g.w.W("You can install this with:\n\n```shell script\nnpm install --save-dev %s\n```\n\n", g.JSPkgImportPath) + g.w.W("Import the package with the client:\n\n") + g.w.W("```javascript\nimport API from \"%s\"\n```\n\n", g.JSPkgImportPath) + g.w.W("Create a transport, only one method needs to be implemented: `doRequest(Array.) PromiseLike`.\n\n") + g.w.W("For example:\n\n```javascript\nclass FetchTransport {\n constructor(url) {\n this.url = url;\n }\n\n doRequest(requests) {\n return fetch(this.url, {method: \"POST\", body: JSON.stringify(requests)})\n }\n}\n```\n\n") + g.w.W("Now for a complete example:\n\n```javascript\nimport API from \"%s\"\nimport Transport from \"transport\"\n\nconst api = new API(new Transport(\"http://127.0.0.1\"))\n\n// call method here.\n```\n\n", g.JSPkgImportPath) + g.w.W("## API\n## Methods\n\n") + } + + visitedTypes := map[string]*option.NamedType{} + responseTypes := map[string]option.VarsType{} + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + name := docMethodName(iface, m) + g.w.W("%[1]s\n\n", name) + } + + methodErrors := g.IfaceErrors[iface.Named.Name.Value] + + for _, m := range ifaceType.Methods { + name := docMethodName(iface, m) + + errors := methodErrors[m.Name.Value] + + g.w.W("### %[1]s(", name) + for i, p := range m.Sig.Params { + if IsContext(p) { + continue + } + fillType(p.Type, visitedTypes) + if p.IsVariadic { + g.w.W(", ...%s", p.Name.Value) + } else { + g.w.W("%s", p.Name.Value) + } + if i > 0 && i != len(m.Sig.Params)-1 { + g.w.W(", ") + } + } + g.w.W(") ⇒") + + resultRen := LenWithoutErrors(m.Sig.Results) + + if resultRen == 0 { + g.w.W("void") + } else if resultRen > 0 { + if resultRen == 1 { + fillType(m.Sig.Results[0].Type, visitedTypes) + g.w.W("%s", jsDocType(m.Sig.Results[0].Type)) + } else if resultRen > 1 { + responseName := m.Name.Value + "Response" + g.w.W("%s", responseName) + _, ok := responseTypes[responseName] + if !ok { + responseTypes[responseName] = m.Sig.Results + } + for _, p := range m.Sig.Results { + if IsError(p) { + continue + } + fillType(p.Type, visitedTypes) + } + } + } + + g.w.W("\n\n") + + if m.Comment != "" { + g.w.W("%s\n", m.Comment) + g.w.W("\n") + } + + if len(errors) > 0 { + g.w.W("**Throws**:\n\n") + for _, e := range errors { + g.w.W("%sException\n\n", jsErrorName(iface, e)) + } + g.w.W("\n\n") + } + + if LenWithoutContexts(m.Sig.Params) > 0 { + g.w.W("| Param | Type | Description |\n|------|------|------|\n") + for _, p := range m.Sig.Params { + g.w.W("|%s|%s|%s|\n", p.Name.Value, jsDocType(p.Type), p.Comment) + } + g.w.W("\n") + } + } + } + + g.w.W("\n") + + if len(visitedTypes) > 0 || len(responseTypes) > 0 { + g.w.W("## Members\n\n") + } + + for name, results := range responseTypes { + g.w.W("### %s\n\n", name) + g.w.W("| Field | Type | Description |\n|------|------|------|\n") + for _, p := range results { + if IsError(p) { + continue + } + g.w.W("|%s|%s|%s|\n", p.Name.Value, jsDocType(p.Type), p.Comment) + } + } + + g.w.W("\n") + + for _, named := range visitedTypes { + st := named.Type.(*option.StructType) + + g.w.W("### %s\n\n", named.Name) + g.w.W("| Field | Type | Description |\n|------|------|------|\n") + for _, f := range st.Fields { + if tag, err := f.Tags.Get("json"); err == nil { + if tag.Value() == "-" { + continue + } + } + g.w.W("|%s|%s|%s|\n", f.Var.Name.Value, jsDocType(f.Var.Type), f.Var.Comment) + } + } + + return g.w.Bytes() +} + +func (g *JSONRPCDocGenerator) OutputDir() string { + return "" +} + +func (g *JSONRPCDocGenerator) Filename() string { + return "jsonrpc_doc.md" +} diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go new file mode 100644 index 00000000..2d7b8e5d --- /dev/null +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -0,0 +1,203 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/writer" +) + +type JSONRPCJSClientGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface + IfaceErrors map[string]map[string][]config.Error +} + +func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { + g.w.W(jsonRPCClientBase) + + mw := writer.BaseWriter{} + + defTypes := map[string]*option.NamedType{} + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + mw.W("class JSONRPCClient%s {\n", UcNameJS(iface)) + mw.W("constructor(transport) {\n") + mw.W("this.scheduler = new JSONRPCScheduler(transport);\n") + mw.W("}\n\n") + + for _, m := range ifaceType.Methods { + resultLen := LenWithoutErrors(m.Sig.Results) + paramLen := LenWithoutContexts(m.Sig.Params) + + mw.W("/**\n") + if m.Comment != "" { + mw.W("* %s\n", m.Comment) + mw.W("*\n") + } + for _, p := range m.Sig.Params { + if IsContext(p) { + continue + } + if t, ok := p.Type.(*option.NamedType); ok { + key := t.ID() + if _, ok := defTypes[key]; !ok { + defTypes[key] = t + } + } + if p.IsVariadic { + mw.W("* @param {...%s} %s\n", jsDocType(p.Type), p.Name) + } else { + mw.W("* @param {%s} %s\n", jsDocType(p.Type), p.Name) + } + } + if len(m.Sig.Results) > 0 { + mw.W("* @return {PromiseLike<") + if m.Sig.IsNamed { + mw.W("{") + } + for i, p := range m.Sig.Results { + if IsError(p) { + continue + } + if t, ok := p.Type.(*option.NamedType); ok { + key := t.ID() + if _, ok := defTypes[key]; !ok { + defTypes[key] = t + } + } + if i != resultLen-1 { + mw.W(", ") + } + if m.Sig.IsNamed { + mw.W("%s: ", p.Name) + } + mw.W(jsDocType(p.Type)) + } + if m.Sig.IsNamed { + mw.W("}") + } + mw.W(">}\n") + + } + + mw.W("**/\n") + mw.W("%s(", m.Name.Lower()) + + for i, p := range m.Sig.Params { + if IsContext(p) { + continue + } + if p.IsVariadic { + mw.W("...") + } + mw.W(p.Name.Value) + + if i != paramLen { + mw.W(",") + } + } + + var prefix string + if iface.Namespace != "" { + prefix = iface.Namespace + "." + } + + mw.W(") {\n") + mw.W("return this.scheduler.__scheduleRequest(\"%s\", {", prefix+m.Name.Lower()) + + for i, p := range m.Sig.Params { + if IsContext(p) { + continue + } + mw.W("%[1]s:%[1]s", p.Name) + if i != paramLen { + mw.W(",") + } + } + + mw.W("}).catch(e => { throw ") + mw.W("%s%sConvertError(e)", LcNameWithAppPrefix(iface), m.Name) + mw.W("; })\n") + + mw.W("}\n") + } + mw.W("}\n\n") + } + + g.w.W(mw.String()) + + if len(g.Interfaces) > 1 { + g.w.W("class JSONRPCClient {\n") + g.w.W("constructor(transport) {\n") + + for _, iface := range g.Interfaces { + g.w.W("this.%s = new JSONRPCClient%s(transport);\n", LcNameJS(iface), UcNameJS(iface)) + } + g.w.W("}\n") + g.w.W("}\n") + + g.w.W("export default JSONRPCClient\n\n") + } else if len(g.Interfaces) == 1 { + g.w.W("export default JSONRPCClient%s\n\n", UcNameJS(g.Interfaces[0])) + } + + httpErrorsDub := map[string]struct{}{} + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] + + for _, method := range ifaceType.Methods { + methodErrors := ifaceErrors[method.Name.Value] + for _, e := range methodErrors { + if _, ok := httpErrorsDub[e.Name]; ok { + continue + } + httpErrorsDub[e.Name] = struct{}{} + g.w.W( + "export class %[1]s extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]s\", %[2]d, data);\n}\n}\n", + e.Name, e.Code, + ) + } + } + } + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] + + for _, method := range ifaceType.Methods { + methodErrors := ifaceErrors[method.Name.Value] + + g.w.W("function %s%sConvertError(e) {\n", LcNameWithAppPrefix(iface), method.Name) + g.w.W("switch(e.code) {\n") + g.w.W("default:\n") + g.w.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") + for _, e := range methodErrors { + g.w.W("case %d:\n", e.Code) + g.w.W("return new %s(e.message, e.data);\n", e.Name) + } + g.w.W("}\n}\n") + } + } + for _, t := range defTypes { + switch t.Pkg.Path { + case "github.com/google/uuid", "github.com/pborman/uuid", "encoding/json", "time": + continue + } + g.w.W(jsTypeDef(t)) + } + return g.w.Bytes() +} + +func (g *JSONRPCJSClientGenerator) OutputDir() string { + return "" +} + +func (g *JSONRPCJSClientGenerator) Filename() string { + return "jsonrpc_client.js" +} diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go new file mode 100644 index 00000000..b0f4396f --- /dev/null +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -0,0 +1,298 @@ +package generator + +import ( + "context" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type JSONRPCServerGenerator struct { + w writer.GoWriter + UseFast bool + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOption + DefaultErrorEncoder *option.FuncType + JSONRPCPath string +} + +func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { + + var ( + routerPkg string + jsonrpcPkg string + ) + + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + ffJSONPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + jsonPkg := importer.Import("json", "encoding/json") + contextPkg := importer.Import("context", "context") + + if g.UseFast { + jsonrpcPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + routerPkg = importer.Import("routing", "github.com/qiangxue/fasthttp-routing") + } else { + jsonrpcPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + routerPkg = importer.Import("mux", "github.com/gorilla/mux") + } + + g.w.W("func MergeEndpointCodecMaps(ecms ...jsonrpc.EndpointCodecMap) jsonrpc.EndpointCodecMap {\n") + g.w.W("mergedECM := make(jsonrpc.EndpointCodecMap, 512)\n") + g.w.W("for _, ecm := range ecms {\nfor key, codec := range ecm {\nmergedECM[key] = codec\n}\n}\n") + g.w.W("return mergedECM\n}\n") + + g.w.W("func encodeResponseJSONRPC(_ %s.Context, result interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) + g.w.W("b, err := %s.Marshal(result)\n", ffJSONPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, err\n") + g.w.W("}\n") + g.w.W("return b, nil\n") + g.w.W("}\n\n") + + stringsPkg := importer.Import("strings", "strings") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + epSetName := NameEndpointSetName(iface) + + g.w.W("func Make%sEndpointCodecMap(ep %s", UcNameWithAppPrefix(iface), epSetName) + g.w.W(",ns ...string) %s.EndpointCodecMap {\n", jsonrpcPkg) + + g.w.W("var namespace string\n") + + g.w.W("if len(ns) > 0 {\n") + g.w.W("namespace = %s.Join(ns, \".\") + \".\"\n", stringsPkg) + g.w.W("}\n") + + g.w.W("ecm := %[1]s.EndpointCodecMap{}\n", jsonrpcPkg) + + for _, m := range ifaceType.Methods { + nameRequest := NameRequest(m, iface) + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + g.w.W("if ep.%sEndpoint != nil {\n", m.Name) + + g.w.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.Name.Lower(), jsonrpcPkg) + g.w.W("Endpoint: ep.%sEndpoint,\n", m.Name) + g.w.W("Decode: ") + + if mopt.ServerDecodeRequest.Value != nil { + g.w.W(importer.TypeString(mopt.ServerDecodeRequest.Value)) + } else { + g.w.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) + + if len(m.Sig.Params) > 0 { + fmtPkg := importer.Import("fmt", "fmt") + g.w.W("var req %s\n", nameRequest) + g.w.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, nameRequest) + g.w.W("}\n") + g.w.W("return req, nil\n") + } else { + g.w.W("return nil, nil\n") + } + g.w.W("}") + } + g.w.W(",\n") + g.w.W("Encode: encodeResponseJSONRPC,\n") + g.w.W("}\n}\n") + } + g.w.W("return ecm\n") + g.w.W("}\n\n") + } + + g.w.W("// MakeHandlerJSONRPC make HTTP JSONRPC handler.\n") + g.w.W("func MakeHandlerJSONRPC(") + + var external bool + + for i, iface := range g.Interfaces { + typeStr := NameInterface(iface) + + if i > 0 { + g.w.W(",") + } + + if iface.Named.Pkg.Module.External { + external = true + g.w.W("%s %sOption", LcNameWithAppPrefix(iface), UcNameWithAppPrefix(iface)) + } else { + g.w.W("svc%s %s", iface.Named.Name.Upper(), typeStr) + } + } + + if external { + g.w.W(", logger %s.Logger", importer.Import("log", "github.com/go-kit/kit/log")) + } + + g.w.W(", options ...ServerOption") + g.w.W(") (") + if g.UseFast { + g.w.W("%s.RequestHandler", importer.Import("fasthttp", "github.com/valyala/fasthttp")) + } else { + g.w.W("%s.Handler", importer.Import("http", "net/http")) + } + + g.w.W(", error) {\n") + + g.w.W("opts := &serverOpts{}\n") + g.w.W("for _, o := range options {\n o(opts)\n }\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + epSetName := NameEndpointSetNameVar(iface) + + if iface.Named.Pkg.Module.External { + epEndpointSetName := NameEndpointSetName(iface) + //transportExtPkg := importer.Import(iface.External.Build.Pkg.Name, iface.External.Build.Pkg.Path) + + sdPkg := importer.Import("sd", "github.com/go-kit/kit/sd") + lbPkg := importer.Import("sd", "github.com/go-kit/kit/sd/lb") + + g.w.W("%s := %s{}\n", epSetName, epEndpointSetName) + + for _, m := range ifaceType.Methods { + optName := LcNameWithAppPrefix(iface) + epFactoryName := "endpointFactory" + kitEndpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + stdLogPkg := importer.Import("log", "log") + + //var clientType = "JSONRPC" + //if iface.External.Config.JSONRPCEnable == nil { + // clientType = "REST" + //} + + ioPkg := importer.Import("io", "io") + + g.w.W("{\n") + + g.w.W("if %s.%s.Balancer == nil {\n", optName, m.Name) + g.w.W("%s.%s.Balancer = %s.NewRoundRobin\n", optName, m.Name, lbPkg) + g.w.W("}\n") + + g.w.W("if %s.%s.RetryMax == 0 {\n", optName, m.Name) + g.w.W("%s.%s.RetryMax = DefaultRetryMax\n", optName, m.Name) + g.w.W("}\n") + + g.w.W("if %s.%s.RetryTimeout == 0 {\n", optName, m.Name) + g.w.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name) + g.w.W("}\n") + + g.w.W("%s := func (instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, kitEndpointPkg, ioPkg) + //g.w.W("if %s.Instance != \"\"{\n", optName) + //g.w.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(%[2]s.Instance, \"/\")", stringsPkg, optName) + //g.w.W("}\n") + g.w.W("c, err := %s.Factory(instance)\n", optName) + //g.w.W("c, err := %s.NewClient%s%s(instance, %s.ClientOptions...)\n", transportExtPkg, clientType, UcNameWithAppPrefix(iface, true), optName) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, nil, err\n") + }) + + g.w.W("cc, ok := c.(%s)\n", NameInterface(iface)) + g.w.W("if !ok {\n") + g.w.W("%s.Panicf(\"client %%v is not implemented interface\", c)\n", stdLogPkg) + g.w.W("}\n") + + g.w.W("return ") + g.w.W("Make%sEndpoint(cc), nil, nil\n", UcNameWithAppPrefix(iface)+m.Name.Upper()) + g.w.W("\n}\n\n") + + g.w.W("endpointer := %s.NewEndpointer(%s.Instancer, %s, logger)\n", sdPkg, optName, epFactoryName) + g.w.W( + "%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", + lbPkg, optName, m.Name, epSetName, + ) + g.w.W( + "%[2]s.%[1]sEndpoint = RetryErrorExtractor()(%[2]s.%[1]sEndpoint)\n", + m.Name, epSetName, + ) + g.w.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, + ) + g.w.W("}\n") + } + } else { + g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) + for _, m := range ifaceType.Methods { + g.w.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, + ) + } + } + } + + if g.UseFast { + g.w.W("r := %s.New()\n", routerPkg) + } else { + g.w.W("r := %s.NewRouter()\n", routerPkg) + } + + g.w.W("handler := %s.NewServer(", jsonrpcPkg) + + if len(g.Interfaces) > 1 { + g.w.W("MergeEndpointCodecMaps(") + } + + for i, iface := range g.Interfaces { + epSetName := NameEndpointSetNameVar(iface) + + if i > 0 { + g.w.W(",") + } + //if iface.Named.Pkg.Module.External { + // pkgExtTransport := importer.Import(iface.ExternalConfig.Build.Pkg.Name, iface.ExternalConfig.Build.Pkg.Path) + // g.w.W("%s.Make%sEndpointCodecMap(%s", pkgExtTransport, iface.Named.Name.Upper(), epSetName) + //} else { + g.w.W("Make%sEndpointCodecMap(%s", UcNameWithAppPrefix(iface), epSetName) + //} + if iface.Namespace != "" { + g.w.W(",%s", strconv.Quote(iface.Namespace)) + } + g.w.W(")") + } + + if len(g.Interfaces) > 1 { + g.w.W(")") + } + + g.w.W(", opts.genericServerOption...)\n") + + jsonRPCPath := g.JSONRPCPath + if g.UseFast { + r := stdstrings.NewReplacer("{", "<", "}", ">") + jsonRPCPath = r.Replace(jsonRPCPath) + + g.w.W("r.Post(\"%s\", func(c *routing.Context) error {\nhandler.ServeFastHTTP(c.RequestCtx)\nreturn nil\n})\n", jsonRPCPath) + } else { + g.w.W("r.Methods(\"POST\").") + if jsonRPCPath != "" { + g.w.W(".Path(\"%s\").", jsonRPCPath) + } + g.w.W("Handler(handler)\n") + } + if g.UseFast { + g.w.W("return r.HandleRequest, nil") + } else { + g.w.W("return r, nil") + } + g.w.W("}\n\n") + return g.w.Bytes() +} + +func (g *JSONRPCServerGenerator) OutputDir() string { + return "" +} + +func (g *JSONRPCServerGenerator) Filename() string { + return "jsonrpc_server.go" +} diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go new file mode 100644 index 00000000..a10eb242 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -0,0 +1,138 @@ +package generator + +import ( + "context" + "fmt" + "strconv" + "strings" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Logging struct { + w writer.GoWriter + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOption +} + +func (g *Logging) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + loggerPkg := importer.Import("log", "github.com/go-kit/kit/log") + + ifaceTypeName := NameInterface(iface) + name := NameLoggingMiddleware(iface) + constructName := fmt.Sprintf("NewLogging%sMiddleware", UcNameWithAppPrefix(iface)) + + g.w.WriteTypeStruct( + name, + []string{ + "next", ifaceTypeName, + "logger", loggerPkg + ".Logger", + }, + ) + + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + includes := map[string]struct{}{} + excludes := map[string]struct{}{} + + for _, v := range mopt.LoggingParams.Includes { + includes[v] = struct{}{} + } + for _, v := range mopt.LoggingParams.Excludes { + excludes[v] = struct{}{} + } + + logParams := makeLogParams(includes, excludes, m.Sig.Params...) + + if len(mopt.LoggingContext) > 0 { + for _, lc := range mopt.LoggingContext { + logParams = append(logParams, strconv.Quote(lc.Name), "ctx.Value("+importer.TypeString(lc.Key)+")") + } + } + + var params, results []string + + for _, param := range m.Sig.Params { + var prefix string + if param.IsVariadic { + prefix = "..." + } + params = append(params, prefix+importer.TypeString(param)) + } + + for _, result := range m.Sig.Results { + if IsError(result) { + logParams = append(logParams, strconv.Quote("err"), result.Name.Value) + continue + } + results = append(results, result.Name.Value, importer.TypeString(result)) + } + + g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) + + if mopt.Logging.Value && len(logParams) > 0 { + timePkg := importer.Import("time", "time") + + g.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + for _, result := range m.Sig.Results { + if IsError(result) { + g.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name.Value) + g.w.W("%s = logErr.LogError()\n", result.Name.Value) + g.w.W("}\n") + } + } + + g.w.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, iface.Named.Name.Lower()+"."+m.Name.Value, timePkg) + + g.w.W("logger.Log(%s)\n", strings.Join(logParams, ",")) + }) + } + + if len(m.Sig.Results) > 0 { + for i, result := range m.Sig.Results { + if i > 0 { + g.w.W(",") + } + g.w.W(result.Name.Value) + } + g.w.W(" = ") + } + + g.w.W("s.next.%s(", m.Name) + for i, param := range m.Sig.Params { + if i > 0 { + g.w.W(",") + } + var variadic string + if param.IsVariadic { + variadic = "..." + } + g.w.W(param.Name.Value + variadic) + } + g.w.W(")\n") + + g.w.W("return") + + g.w.W("}\n") + } + g.w.W("func %[1]s(s %[2]s, logger %[4]s.Logger) *%[3]s {\n return &%[3]s{next: s, logger: logger}\n}\n", constructName, ifaceTypeName, name, loggerPkg) + } + return g.w.Bytes() +} + +func (g *Logging) OutputDir() string { + return "" +} + +func (g *Logging) Filename() string { + return "logging.go" +} diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go new file mode 100644 index 00000000..c8842a20 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -0,0 +1,691 @@ +package generator + +import ( + "context" + "encoding/json" + "net/http" + "path" + "strconv" + stdstrings "strings" + + "github.com/pquerna/ffjson/ffjson" + "github.com/swipe-io/strcase" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/openapi" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/writer" +) + +type Openapi struct { + w writer.BaseWriter + JSONRPCEnable bool + Contact config.OpenapiContact + Info config.OpenapiInfo + MethodTags map[string][]string + Servers []config.OpenapiServer + Licence config.OpenapiLicence + Output string + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOption + IfaceErrors map[string]map[string][]config.Error + defTypes map[string]*option.NamedType +} + +func (g *Openapi) Generate(ctx context.Context) []byte { + g.defTypes = make(map[string]*option.NamedType, 1024) + + o := openapi.OpenAPI{ + OpenAPI: "3.0.0", + Info: openapi.Info{ + Title: g.Info.Title, + Description: g.Info.Description, + TermsOfService: "", + Contact: &openapi.Contact{ + Name: g.Contact.Name, + URL: g.Contact.Url, + Email: g.Contact.Email, + }, + License: &openapi.License{ + Name: g.Licence.Name, + URL: g.Licence.Url, + }, + Version: g.Info.Version, + }, + Paths: map[string]*openapi.Path{}, + Components: openapi.Components{ + Schemas: openapi.Schemas{}, + }, + } + if g.JSONRPCEnable { + o.Components.Schemas = getOpenapiJSONRPCErrorSchemas() + } else { + o.Components.Schemas["Error"] = getOpenapiRESTErrorSchema() + } + for _, s := range g.Servers { + o.Servers = append(o.Servers, openapi.Server{ + URL: s.Url, + Description: s.Description, + Variables: nil, + }) + } + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + var ( + pathStr string + op *openapi.Operation + httpMethodName = mopt.RESTMethod.Value + ) + tags := g.MethodTags[iface.Named.Name.Value+m.Name.Value] + + if g.JSONRPCEnable { + op = g.makeJSONRPCPath(m, iface.Namespace, mopt) + pathStr = "/" + m.Name.Lower() + if iface.Namespace != "" { + pathStr = "/" + iface.Namespace + "." + m.Name.Lower() + } + httpMethodName = "POST" + } else { + op = g.makeRestPath(m, mopt) + + if mopt.RESTPath != nil { + pathStr = mopt.RESTPath.Value + } else { + pathStr = strcase.ToKebab(m.Name.Value) + } + for _, p := range m.Sig.Params { + if IsContext(p) { + continue + } + if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { + pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) + } + } + if iface.Namespace != "" { + pathStr = path.Join(iface.Namespace, pathStr) + } + } + + errType := config.RESTErrorType + if g.JSONRPCEnable { + errType = config.JRPCErrorType + } + if methodErrors, ok := g.IfaceErrors[iface.Named.Name.Value]; ok { + for _, errors := range methodErrors { + for _, e := range errors { + if e.Type != errType { + continue + } + codeStr := strconv.FormatInt(e.Code, 10) + errResponse := &openapi.Response{ + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/" + e.Name, + }, + }, + }, + } + if e.Type == config.JRPCErrorType { + codeStr = "x-" + codeStr + o.Components.Schemas[e.Name] = makeOpenapiSchemaJRPCError(e.Code) + errResponse.Description = e.Name + } else { + errResponse.Description = http.StatusText(int(e.Code)) + o.Components.Schemas[e.Name] = makeOpenapiSchemaRESTError() + } + + op.Responses[codeStr] = errResponse + } + } + } + + ifaceTag := iface.Named.Name.Upper() + if iface.Namespace != "" { + ifaceTag = iface.Namespace + } + tags = append(tags, ifaceTag) + + op.Description = m.Comment + op.Tags = tags + + if _, ok := o.Paths[pathStr]; !ok { + o.Paths[pathStr] = &openapi.Path{} + } + + switch httpMethodName { + default: + o.Paths[pathStr].Get = op + case "POST": + o.Paths[pathStr].Post = op + case "PUT": + o.Paths[pathStr].Put = op + case "PATCH": + o.Paths[pathStr].Patch = op + case "DELETE": + o.Paths[pathStr].Delete = op + } + } + } + + for _, namedType := range g.defTypes { + o.Components.Schemas[namedType.Name.Value] = g.schemaByType(namedType.Type) + } + + data, _ := ffjson.Marshal(o) + return data +} + +func makeOpenapiSchemaRESTError() *openapi.Schema { + return &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "error": &openapi.Schema{ + Type: "string", + }, + }, + } +} + +func makeOpenapiSchemaJRPCError(code int64) *openapi.Schema { + return &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: code, + }, + "message": &openapi.Schema{ + Type: "string", + }, + }, + }, + }, + } +} + +func (g *Openapi) makeRef(named *option.NamedType) string { + return "#/components/schemas/" + named.Name.Upper() +} + +func (g *Openapi) fillTypeDefRecursive(t interface{}) { + switch t := t.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(t.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(t.Value) + case *option.MapType: + g.fillTypeDefRecursive(t.Value) + case *option.NamedType: + switch t.Pkg.Path { + case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid": + return + } + if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { + g.defTypes[t.Pkg.Path+t.Name.Value] = t + } + if st, ok := t.Type.(*option.StructType); ok { + for _, field := range st.Fields { + g.fillTypeDefRecursive(field.Var.Type) + } + } + } +} + +func (g *Openapi) fillTypeDef(t interface{}) { + g.fillTypeDefRecursive(t) +} + +func (g *Openapi) schemaByTypeRecursive(schema *openapi.Schema, t interface{}) { + switch t := t.(type) { + case *option.NamedType: + switch t.Pkg.Path { + default: + schema.Ref = g.makeRef(t) + return + case "encoding/json": + schema.Type = "object" + schema.Properties = openapi.Properties{} + return + case "time": + switch t.Name.Value { + case "Duration": + schema.Type = "string" + schema.Example = "1h3m30s" + case "Time": + schema.Type = "string" + schema.Format = "date-time" + schema.Example = "1985-04-02T01:30:00.00Z" + } + return + case "github.com/pborman/uuid", "github.com/google/uuid": + schema.Type = "string" + schema.Format = "uuid" + schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" + return + } + case *option.StructType: + for _, field := range t.Fields { + name := field.Var.Name.Value + if tag, err := field.Tags.Get("json"); err == nil { + name = tag.Value() + } + if name == "-" { + continue + } + filedSchema := &openapi.Schema{ + Properties: openapi.Properties{}, + } + schema.Properties[name] = filedSchema + g.schemaByTypeRecursive(filedSchema, field.Var.Type) + } + case *option.MapType: + mapSchema := &openapi.Schema{ + Properties: openapi.Properties{}, + } + schema.Properties = openapi.Properties{"key": mapSchema} + g.schemaByTypeRecursive(mapSchema, t.Value) + return + case *option.ArrayType: + schema.Type = "array" + schema.Items = &openapi.Schema{ + Properties: openapi.Properties{}, + } + g.schemaByTypeRecursive(schema.Items, t.Value) + return + case *option.SliceType: + if b, ok := t.Value.(*option.BasicType); ok && b.IsByte() { + schema.Type = "string" + schema.Format = "byte" + schema.Example = "U3dhZ2dlciByb2Nrcw==" + } else { + schema.Type = "array" + schema.Items = &openapi.Schema{ + Properties: openapi.Properties{}, + } + g.schemaByTypeRecursive(schema.Items, t.Value) + } + return + case *option.IfaceType: + schema.Type = "object" + schema.Description = "Can be any value - string, number, boolean, array or object." + schema.Properties = openapi.Properties{} + schema.Example = json.RawMessage("null") + schema.AnyOf = []openapi.Schema{ + {Type: "string", Example: "abc"}, + {Type: "integer", Example: 1}, + {Type: "number", Format: "float", Example: 1.11}, + {Type: "boolean", Example: true}, + {Type: "array"}, + {Type: "object"}, + } + return + case *option.BasicType: + if t.IsString() { + schema.Type = "string" + schema.Format = "string" + schema.Example = "abc" + return + } + if t.IsNumeric() { + if t.IsInt32() || t.IsUint32() { + schema.Type = "integer" + schema.Format = "int32" + schema.Example = 1 + return + } + if t.IsInt64() || t.IsUint64() { + schema.Type = "integer" + schema.Format = "int64" + schema.Example = 1 + return + } + if t.IsFloat32() || t.IsFloat64() { + schema.Type = "number" + schema.Format = "float" + schema.Example = 1.11 + return + } + schema.Type = "integer" + schema.Example = 1 + return + } + } +} + +func (g *Openapi) schemaByType(t interface{}) (schema *openapi.Schema) { + schema = &openapi.Schema{ + Properties: openapi.Properties{}, + } + g.schemaByTypeRecursive(schema, t) + return +} + +func (g *Openapi) makeJSONRPCPath( + m *option.FuncType, prefix string, mopt config.MethodOption, +) *openapi.Operation { + responseSchema := &openapi.Schema{ + Type: "object", + Properties: map[string]*openapi.Schema{}, + } + requestSchema := &openapi.Schema{ + Type: "object", + Properties: map[string]*openapi.Schema{}, + } + + if LenWithoutErrors(m.Sig.Params) > 0 { + for _, p := range m.Sig.Params { + if IsContext(p) { + continue + } + g.fillTypeDef(p.Type) + + schema := g.schemaByType(p.Type) + schema.Description = p.Comment + requestSchema.Properties[p.Name.Lower()] = schema + } + } else { + requestSchema.Type = "object" + requestSchema.Nullable = true + requestSchema.Example = json.RawMessage("null") + } + + lenResults := LenWithoutErrors(m.Sig.Results) + + if lenResults > 1 { + for _, r := range m.Sig.Results { + if IsError(r) { + continue + } + g.fillTypeDef(r.Type) + schema := g.schemaByType(r.Type) + responseSchema.Properties[r.Name.Lower()] = schema + } + } else if lenResults == 1 { + responseSchema = g.schemaByType(m.Sig.Results[0].Type) + } else { + responseSchema.Example = json.RawMessage("null") + } + + if mopt.RESTWrapResponse.Value != "" { + properties := openapi.Properties{} + properties[mopt.RESTWrapResponse.Value] = responseSchema + responseSchema = &openapi.Schema{ + Properties: properties, + } + } + + response := &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", + }, + "result": responseSchema, + }, + } + + restMethod := m.Name.Lower() + if prefix != "" { + restMethod = prefix + "." + restMethod + } + + request := &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", + }, + "method": &openapi.Schema{ + Type: "string", + Enum: []string{restMethod}, + }, + "params": requestSchema, + }, + } + + return &openapi.Operation{ + RequestBody: &openapi.RequestBody{ + Required: true, + Content: map[string]openapi.Media{ + "application/json": { + Schema: request, + }, + }, + }, + Responses: map[string]*openapi.Response{ + "200": { + Description: "OK", + Content: openapi.Content{ + "application/json": { + Schema: response, + }, + }, + }, + "x-32700": { + Description: "Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.", + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/ParseError", + }, + }, + }, + }, + "x-32600": { + Description: "Invalid Request. The JSON sent is not a valid Request object.", + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/InvalidRequestError", + }, + }, + }, + }, + "x-32601": { + Description: "Method not found. The method does not exist / is not available.", + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/MethodNotFoundError", + }, + }, + }, + }, + "x-32602": { + Description: "Invalid params. Invalid method parameters.", + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/InvalidParamsError", + }, + }, + }, + }, + "x-32603": { + Description: "Internal error. Internal JSON-RPC error.", + Content: openapi.Content{ + "application/json": { + Schema: &openapi.Schema{ + Ref: "#/components/schemas/InternalError", + }, + }, + }, + }, + }, + } +} + +func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOption) *openapi.Operation { + responseSchema := &openapi.Schema{ + Type: "object", + Properties: map[string]*openapi.Schema{}, + } + + requestSchema := &openapi.Schema{ + Type: "object", + Properties: map[string]*openapi.Schema{}, + } + + queryVars := make(map[string]queryVar, len(mopt.RESTQueryVars.Value)) + for i := 0; i < len(mopt.RESTQueryVars.Value); i += 2 { + queryName := mopt.RESTQueryVars.Value[i] + fieldName := mopt.RESTQueryVars.Value[i+1] + var required bool + if stdstrings.HasPrefix(queryName, "!") { + queryName = queryName[1:] + required = true + } + queryVars[fieldName] = queryVar{ + name: queryName, + required: required, + } + } + + queryValues := make(map[string]string, len(mopt.RESTQueryValues.Value)) + for i := 0; i < len(mopt.RESTQueryValues.Value); i += 2 { + queryName := mopt.RESTQueryValues.Value[i] + value := mopt.RESTQueryValues.Value[i+1] + queryValues[queryName] = value + } + + headerVars := make(map[string]string, len(mopt.RESTHeaderVars.Value)) + for i := 0; i < len(mopt.RESTHeaderVars.Value); i += 2 { + headerVars[mopt.RESTHeaderVars.Value[i]] = mopt.RESTHeaderVars.Value[i+1] + } + + for _, p := range m.Sig.Params { + if IsContext(p) { + continue + } + if _, ok := mopt.RESTPathVars[p.Name.Value]; ok { + continue + } + if _, ok := queryVars[p.Name.Value]; ok { + continue + } + if _, ok := headerVars[p.Name.Value]; ok { + continue + } + + g.fillTypeDef(p.Type) + schema := g.schemaByType(p.Type) + schema.Description = p.Comment + requestSchema.Properties[p.Name.Lower()] = schema + } + + lenResults := LenWithoutErrors(m.Sig.Results) + if lenResults > 1 { + for _, r := range m.Sig.Results { + if IsError(r) { + continue + } + + g.fillTypeDef(r.Type) + responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) + } + } else if lenResults == 1 { + responseSchema = g.schemaByType(m.Sig.Results[0].Type) + } + if mopt.RESTWrapResponse.Value != "" { + properties := openapi.Properties{} + properties[mopt.RESTWrapResponse.Value] = responseSchema + responseSchema = &openapi.Schema{ + Properties: properties, + } + } + responses := map[string]*openapi.Response{} + if lenResults == 0 { + responses["201"] = &openapi.Response{ + Description: "Created", + Content: openapi.Content{ + "text/plain": {}, + }, + } + } else { + responses["200"] = &openapi.Response{ + Description: "OK", + Content: openapi.Content{ + "application/json": { + Schema: responseSchema, + }, + }, + } + } + + o := &openapi.Operation{ + Summary: m.Name.Value, + Responses: responses, + } + for _, p := range m.Sig.Params { + if name, ok := mopt.RESTPathVars[p.Name.Value]; ok { + o.Parameters = append(o.Parameters, openapi.Parameter{ + In: "path", + Name: name, + Description: p.Comment, + //Required: true, + Schema: g.schemaByType(p.Type), + }) + } else if name, ok := headerVars[p.Name.Value]; ok { + o.Parameters = append(o.Parameters, openapi.Parameter{ + In: "header", + Name: name, + Description: p.Comment, + //Required: true, + Schema: g.schemaByType(p.Type), + }) + } else if queryVar, ok := queryVars[p.Name.Value]; ok { + o.Parameters = append(o.Parameters, openapi.Parameter{ + In: "query", + Name: queryVar.name, + Description: p.Comment, + Required: queryVar.required, + Schema: g.schemaByType(p.Type), + }) + } + } + switch mopt.RESTMethod.Value { + case "POST", "PUT", "PATCH": + o.RequestBody = &openapi.RequestBody{ + Required: true, + Content: map[string]openapi.Media{ + "application/json": { + Schema: requestSchema, + }, + }, + } + } + return o +} + +func (g *Openapi) OutputDir() string { + return g.Output +} + +func (g *Openapi) Filename() string { + return "openapi.json" +} diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go new file mode 100644 index 00000000..e4a728e5 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -0,0 +1,405 @@ +package generator + +import ( + "context" + "path" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type queryVar struct { + name string + required bool +} + +type RESTClientGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface + UseFast bool + MethodOptions map[string]config.MethodOption +} + +func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { + var ( + kitHTTPPkg string + httpPkg string + ) + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + fmtPkg := importer.Import("fmt", "fmt") + contextPkg := importer.Import("context", "context") + urlPkg := importer.Import("url", "net/url") + netPkg := importer.Import("net", "net") + stringsPkg := importer.Import("strings", "strings") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + name := UcNameWithAppPrefix(iface) + clientType := ClientType(iface) + + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + if g.UseFast { + httpPkg = importer.Import("fasthttp", "github.com/valyala/fasthttp") + } else { + httpPkg = importer.Import("http", "net/http") + } + + g.w.W("func NewClientREST%s(tgt string", name) + g.w.W(" ,options ...ClientOption") + g.w.W(") (*%s, error) {\n", clientType) + g.w.W("opts := &clientOpts{}\n") + g.w.W("c := &%s{}\n", clientType) + g.w.W("for _, o := range options {\n") + g.w.W("o(opts)\n") + g.w.W("}\n") + + g.w.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.w.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("tgt = host + \":\" + port\n") + g.w.W("}\n") + + g.w.W("u, err := %s.Parse(tgt)\n", urlPkg) + + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err") + }) + + g.w.W("if u.Scheme == \"\" {\n") + g.w.W("u.Scheme = \"https\"\n") + g.w.W("}\n") + + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + epName := LcNameEndpoint(iface, m) + + httpMethod := mopt.RESTMethod.Value + if httpMethod == "" { + httpMethod = "GET" + } + + var pathStr string + if mopt.RESTPath != nil { + pathStr = mopt.RESTPath.Value + } else { + pathStr = path.Join("/", strcase.ToKebab(m.Name.Value)) + } + + if iface.Namespace != "" { + pathStr = path.Join("/", strcase.ToKebab(iface.Namespace), "/", pathStr) + } + + var ( + pathVars []*option.VarType + queryVars []*option.VarType + headerVars []*option.VarType + multipartVars []*option.VarType + ) + + methodQueryVars := make(map[string]queryVar, len(mopt.RESTQueryVars.Value)) + for i := 0; i < len(mopt.RESTQueryVars.Value); i += 2 { + queryName := mopt.RESTQueryVars.Value[i] + fieldName := mopt.RESTQueryVars.Value[i+1] + var required bool + if stdstrings.HasPrefix(queryName, "!") { + queryName = queryName[1:] + required = true + } + methodQueryVars[fieldName] = queryVar{ + name: queryName, + required: required, + } + } + + methodQueryValues := make(map[string]string, len(mopt.RESTQueryValues.Value)) + for i := 0; i < len(mopt.RESTQueryValues.Value); i += 2 { + queryName := mopt.RESTQueryValues.Value[i] + value := mopt.RESTQueryValues.Value[i+1] + methodQueryValues[queryName] = value + } + + methodHeaderVars := make(map[string]string, len(mopt.RESTHeaderVars.Value)) + for i := 0; i < len(mopt.RESTHeaderVars.Value); i += 2 { + methodHeaderVars[mopt.RESTHeaderVars.Value[i]] = mopt.RESTHeaderVars.Value[i+1] + } + + for _, p := range m.Sig.Params { + if IsContext(p) { + continue + } + if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { + if regexp != "" { + regexp = ":" + regexp + } + pathStr = stdstrings.Replace(pathStr, "{"+p.Name.Value+regexp+"}", "%s", -1) + pathVars = append(pathVars, p) + } else if _, ok := methodQueryVars[p.Name.Value]; ok { + queryVars = append(queryVars, p) + } else if _, ok := methodHeaderVars[p.Name.Value]; ok { + headerVars = append(headerVars, p) + } else if mopt.RESTMultipart != nil { + multipartVars = append(multipartVars, p) + } + } + + remainingParams := len(m.Sig.Params) - (len(pathVars) + len(queryVars) + len(headerVars) + len(multipartVars)) + + g.w.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) + g.w.W(strconv.Quote(httpMethod)) + g.w.W(",\n") + g.w.W("u,\n") + + if mopt.ClientEncodeRequest.Value != nil { + g.w.W(importer.TypeString(mopt.ClientEncodeRequest.Value)) + } else { + g.w.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) + + paramsLen := LenWithoutContexts(m.Sig.Params) + if paramsLen > 0 { + nameRequest := NameRequest(m, iface) + + g.w.W("req, ok := request.(%s)\n", nameRequest) + g.w.W("if !ok {\n") + g.w.W("return %s.Errorf(\"couldn't assert request as %s, got %%T\", request)\n", fmtPkg, nameRequest) + g.w.W("}\n") + } + + if g.UseFast { + g.w.W("r.Header.SetMethod(") + } else { + g.w.W("r.Method = ") + } + g.w.W(strconv.Quote(httpMethod)) + + if g.UseFast { + g.w.W(")") + } + g.w.W("\n") + + pathVarNames := make([]string, 0, len(pathVars)) + for _, p := range pathVars { + name := p.Name.Value + "Str" + pathVarNames = append(pathVarNames, name) + g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) + } + if g.UseFast { + g.w.W("r.URI().SetPath(") + } else { + g.w.W("r.URL.Path += ") + } + if len(pathVars) > 0 { + g.w.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) + } else { + g.w.W(strconv.Quote(pathStr)) + } + if g.UseFast { + g.w.W(")") + } + g.w.W("\n") + + if len(queryVars) > 0 || len(methodQueryValues) > 0 { + if g.UseFast { + g.w.W("q := r.URI().QueryArgs()\n") + } else { + g.w.W("q := r.URL.Query()\n") + } + for _, p := range queryVars { + var isPointer bool + valueID := "req." + strcase.ToCamel(p.Name.Value) + name := p.Name.Value + "Str" + if t, ok := p.Type.(*option.BasicType); ok { + if t.IsPointer { + isPointer = true + } + } + if isPointer { + g.w.W("if %s != nil {\n", valueID) + } + g.w.WriteFormatType(importer, name, valueID, p) + g.w.W("q.Add(%s, %s)\n", strconv.Quote(methodQueryVars[p.Name.Value].name), name) + + if isPointer { + g.w.W("}\n") + } + } + + if len(methodQueryValues) > 0 { + for k, v := range methodQueryValues { + g.w.W("q.Add(%s, %s)\n", strconv.Quote(k), strconv.Quote(v)) + } + } + + if len(multipartVars) > 0 { + bytesPkg := importer.Import("bytes", "bytes") + multipartPkg := importer.Import("multipart", "mime/multipart") + ioutilPkg := importer.Import("ioutil", "io/ioutil") + + g.w.W("body := new(%s.Buffer)\n", bytesPkg) + g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) + + for _, p := range multipartVars { + if isFileType(p.Type, importer) { + g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("part.Write(data)\n") + continue + } + name := p.Name.Value + "Str" + g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) + g.w.W("_ = writer.WriteField(%s, %s)\n", strconv.Quote(p.Name.Value), name) + } + g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") + + if g.UseFast { + g.w.W("r.SetBody(body.Bytes())\n") + } else { + g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) + } + g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") + } else { + if remainingParams > 0 { + g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") + } + } + + if g.UseFast { + g.w.W("r.URI().SetQueryString(q.String())\n") + } else { + g.w.W("r.URL.RawQuery = q.Encode()\n") + } + } + + for _, p := range headerVars { + name := p.Name.Value + "Str" + g.w.WriteFormatType(importer, name, "req."+strcase.ToCamel(p.Name.Value), p) + g.w.W("r.Header.Add(%s, %s)\n", strconv.Quote(methodHeaderVars[p.Name.Value]), name) + } + switch stdstrings.ToUpper(httpMethod) { + case "POST", "PUT", "PATCH": + if len(multipartVars) == 0 && remainingParams > 0 { + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + + g.w.W("data, err := %s.Marshal(req)\n", jsonPkg) + g.w.W("if err != nil {\n") + g.w.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) + g.w.W("}\n") + + if g.UseFast { + g.w.W("r.SetBody(data)\n") + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + bytesPkg := importer.Import("bytes", "bytes") + + g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + } + } + } + g.w.W("return nil\n") + g.w.W("}") + } + + g.w.W(",\n") + + if mopt.ClientDecodeResponse.Value != nil { + g.w.W(importer.TypeString(mopt.ClientDecodeResponse.Value)) + } else { + g.w.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) + statusCode := "r.StatusCode" + if g.UseFast { + statusCode = "r.StatusCode()" + } + g.w.W("if %s > 299 {\n", statusCode) + g.w.W("return nil, %sErrorDecode(%s)\n", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) + g.w.W("}\n") + + resultLen := LenWithoutErrors(m.Sig.Results) + + if resultLen > 0 { + var responseType string + if m.Sig.IsNamed { + responseType = NameResponse(m, iface) + } else { + responseType = importer.TypeString(m.Sig.Results[0].Type) + } + if mopt.RESTWrapResponse.Value != "" { + g.w.W("var resp struct {\nData %s `json:\"%s\"`\n}\n", responseType, mopt.RESTWrapResponse.Value) + } else { + g.w.W("var resp %s\n", responseType) + } + + g.w.W("var b []byte\n") + + if g.UseFast { + g.w.W("b = r.Body()\n") + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + g.w.W("b, err = %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + } + + g.w.W("if len(b) == 0 {\nreturn nil, nil\n}\n") + + g.w.W("err = %s.Unmarshal(b, &resp)\n", jsonPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, responseType) + g.w.W("}\n") + + if mopt.RESTWrapResponse.Value != "" { + g.w.W("return resp.Data, nil\n") + } else { + g.w.W("return resp, nil\n") + } + } else { + g.w.W("return nil, nil\n") + } + + g.w.W("}") + } + + g.w.W(",\n") + + g.w.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", LcNameWithAppPrefix(iface)+m.Name.Value) + + g.w.W(").Endpoint()\n") + + g.w.W( + "c.%[1]s = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sMiddleware...))(c.%[1]s)\n", + epName, + ) + } + g.w.W("return c, nil\n") + g.w.W("}\n\n") + } + + return g.w.Bytes() +} + +func (g *RESTClientGenerator) OutputDir() string { + return "" +} + +func (g *RESTClientGenerator) Filename() string { + return "rest_client.go" +} diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go new file mode 100644 index 00000000..88a8abf3 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -0,0 +1,479 @@ +package generator + +import ( + "context" + "fmt" + "path" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type RESTServerGenerator struct { + w writer.GoWriter + UseFast bool + JSONRPCEnable bool + DefaultErrorEncoder *option.FuncType + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOption +} + +func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { + var ( + routerPkg string + httpPkg string + kitHTTPPkg string + ) + + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + contextPkg := importer.Import("context", "context") + + if g.UseFast { + httpPkg = importer.Import("fasthttp", "github.com/valyala/fasthttp") + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + routerPkg = importer.Import("routing", "github.com/qiangxue/fasthttp-routing") + } else { + routerPkg = importer.Import("mux", "github.com/gorilla/mux") + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + httpPkg = importer.Import("http", "net/http") + } + if g.DefaultErrorEncoder == nil { + g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) + } + g.writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg) + + g.w.W("// MakeHandlerREST make REST HTTP transport\n") + g.w.W("func MakeHandlerREST(") + for i, iface := range g.Interfaces { + typeStr := NameInterface(iface) + if i > 0 { + g.w.W(",") + } + g.w.W("svc%s %s", iface.Named.Name.Value, typeStr) + } + g.w.W(", options ...ServerOption") + g.w.W(") (") + if g.UseFast { + g.w.W("%s.RequestHandler", importer.Import("fasthttp", "github.com/valyala/fasthttp")) + } else { + g.w.W("%s.Handler", importer.Import("http", "net/http")) + } + g.w.W(", error) {\n") + + g.w.W("opts := &serverOpts{}\n") + g.w.W("for _, o := range options {\n o(opts)\n }\n") + if g.DefaultErrorEncoder != nil { + g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(", kitHTTPPkg) + g.w.W(importer.TypeString(g.DefaultErrorEncoder)) + g.w.W("))\n") + } else { + g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) + } + + for _, iface := range g.Interfaces { + g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) + } + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + epSetName := NameEndpointSetNameVar(iface) + for _, m := range ifaceType.Methods { + g.w.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameWithAppPrefix(iface)+m.Name.Value, m.Name, epSetName, + ) + } + } + if g.UseFast { + g.w.W("r := %s.New()\n", routerPkg) + } else { + g.w.W("r := %s.NewRouter()\n", routerPkg) + } + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + epSetName := NameEndpointSetNameVar(iface) + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + queryVars := make(map[string]queryVar, len(mopt.RESTQueryVars.Value)) + for i := 0; i < len(mopt.RESTQueryVars.Value); i += 2 { + queryName := mopt.RESTQueryVars.Value[i] + fieldName := mopt.RESTQueryVars.Value[i+1] + var required bool + if stdstrings.HasPrefix(queryName, "!") { + queryName = queryName[1:] + required = true + } + queryVars[fieldName] = queryVar{ + name: queryName, + required: required, + } + } + + headerVars := make(map[string]string, len(mopt.RESTHeaderVars.Value)) + for i := 0; i < len(mopt.RESTHeaderVars.Value); i += 2 { + headerVars[mopt.RESTHeaderVars.Value[i]] = mopt.RESTHeaderVars.Value[i+1] + } + + var urlPath string + if mopt.RESTPath != nil { + urlPath = mopt.RESTPath.Value + } else { + urlPath = strcase.ToKebab(m.Name.Value) + } + if iface.Namespace != "" { + urlPath = path.Join(iface.Namespace, urlPath) + } + if !stdstrings.HasPrefix(urlPath, "/") { + urlPath = "/" + urlPath + } + + remainingParams := len(m.Sig.Params) - (len(mopt.RESTPathVars) + len(queryVars) + len(headerVars)) + + if g.UseFast { + g.w.W("r.To(") + if mopt.RESTMethod.Value != "" { + g.w.W(strconv.Quote(mopt.RESTMethod.Value)) + } else { + g.w.W(strconv.Quote("GET")) + } + + g.w.W(", ") + + // replace brace indices for fasthttp router + urlPath = stdstrings.ReplaceAll(urlPath, "{", "<") + urlPath = stdstrings.ReplaceAll(urlPath, "}", ">") + + g.w.W(strconv.Quote(urlPath)) + + g.w.W(", ") + } else { + g.w.W("r.Methods(") + if mopt.RESTMethod.Value != "" { + g.w.W(strconv.Quote(mopt.RESTMethod.Value)) + } else { + g.w.W(strconv.Quote("GET")) + } + g.w.W(").") + g.w.W("Path(") + + g.w.W(strconv.Quote(urlPath)) + + g.w.W(").") + g.w.W("Handler(") + } + g.w.W( + "%s.NewServer(\n%s.%sEndpoint,\n", + kitHTTPPkg, + epSetName, + m.Name, + ) + if mopt.ServerDecodeRequest.Value != nil { + g.w.W(importer.TypeString(mopt.ServerDecodeRequest.Value)) + } else { + g.w.W("func(ctx %s.Context, r *%s.Request) (_ interface{}, err error) {\n", contextPkg, httpPkg) + + nameRequest := NameRequest(m, iface) + + if len(m.Sig.Params) > 0 { + g.w.W("var req %s\n", nameRequest) + switch stdstrings.ToUpper(mopt.RESTMethod.Value) { + case "POST", "PUT", "PATCH": + if remainingParams > 0 { + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + fmtPkg := importer.Import("fmt", "fmt") + pkgIO := importer.Import("io", "io") + if g.UseFast { + g.w.W("err = %s.Unmarshal(r.Body(), &req)\n", jsonPkg) + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + + g.w.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) + }) + g.w.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) + } + g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) + g.w.W("}\n") + } + } + if len(mopt.RESTPathVars) > 0 { + if g.UseFast { + fmtPkg := importer.Import("fmt", "fmt") + + g.w.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kitHTTPPkg, routerPkg) + g.w.W("if !ok {\n") + g.w.W("return nil, %s.Errorf(\"couldn't assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kitHTTPPkg, routerPkg) + g.w.W("}\n") + } else { + g.w.W("vars := %s.Vars(r)\n", routerPkg) + } + } + if len(mopt.RESTQueryVars.Value) > 0 { + if g.UseFast { + g.w.W("q := r.URI().QueryArgs()\n") + } else { + g.w.W("q := r.URL.Query()\n") + } + } + + if mopt.RESTMultipart != nil { + var multipartMaxMemory int64 = 67108864 + if mopt.RESTMultipart.MaxMemory > 0 { + multipartMaxMemory = mopt.RESTMultipart.MaxMemory + } + if g.UseFast { + g.w.W("form, err := r.MultipartForm()\n") + } else { + g.w.W("err = r.ParseMultipartForm(%d)\n", multipartMaxMemory) + } + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + } + + for _, p := range m.Sig.Params { + if _, ok := mopt.RESTPathVars[p.Name.Value]; ok { + var valueID string + if g.UseFast { + valueID = "vars.Param(" + strconv.Quote(p.Name.Value) + ")" + } else { + valueID = "vars[" + strconv.Quote(p.Name.Value) + "]" + } + g.w.WriteConvertType(importer, "req."+strcase.ToCamel(p.Name.Value), valueID, p, []string{"nil"}, "", false, "") + } else if queryVar, ok := queryVars[p.Name.Value]; ok { + var valueID string + if g.UseFast { + valueID = "string(q.Peek(" + strconv.Quote(queryVar.name) + "))" + } else { + valueID = "q.Get(" + strconv.Quote(queryVar.name) + ")" + } + if queryVar.required { + fmtPkg := importer.Import("fmt", "fmt") + if g.UseFast { + g.w.W("if !q.Has(\"%[1]s\") {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.name, fmtPkg) + } else { + g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.name, fmtPkg) + } + } + + tmpID := "tmp" + p.Name.Value + g.w.W("%s := %s\n", tmpID, valueID) + + g.w.W("if %s != \"\" {\n", tmpID) + g.w.WriteConvertType(importer, "req."+p.Name.Upper(), tmpID, p, []string{"nil"}, "", false, "") + g.w.W("}\n") + + } else if headerName, ok := headerVars[p.Name.Value]; ok { + var valueID string + if g.UseFast { + valueID = "string(r.Header.Peek(" + strconv.Quote(headerName) + "))" + } else { + valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" + } + g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") + } else if mopt.RESTMultipart != nil { + if isFileType(p.Type, importer) { + osPkg := importer.Import("os", "os") + + if g.UseFast { + g.w.W("parts := form.File[%s]\n", strconv.Quote(p.Name.Value)) + g.w.W("var (\nf *%s.File\n)\n", osPkg) + g.w.W("if len(parts) > 0 {\n") + g.w.W("f, err = %s.Open(parts[0].Filename)\n", osPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("}\n") + } else { + g.w.W("_, h, err := r.FormFile(%s)\n", strconv.Quote(p.Name.Value)) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("f, err := %s.Open(h.Filename)\n", osPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + } + g.w.W("req.%s = f\n", p.Name.Upper()) + continue + } + var valueID string + if g.UseFast { + valueID = "form" + p.Name.Upper() + g.w.W("var %s string\n", valueID) + g.w.W("if fv, ok := form.Value[%s]; ok && len(fv) > 0 {\n", strconv.Quote(p.Name.Value)) + g.w.W("%s = fv[0]\n", valueID) + g.w.W("}\n") + } else { + valueID = "r.FormValue(" + strconv.Quote(p.Name.Value) + ")" + } + g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") + } + } + g.w.W("return req, nil\n") + } else { + g.w.W("return nil, nil\n") + } + g.w.W("}") + } + g.w.W(",\n") + + if mopt.ServerEncodeResponse.Value != nil { + g.w.W(importer.TypeString(mopt.ServerEncodeResponse.Value)) + } else { + if g.JSONRPCEnable { + g.w.W("encodeResponseJSONRPC") + } else { + if mopt.RESTWrapResponse.Value != "" { + var responseWriterType string + if g.UseFast { + responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) + } else { + responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) + } + g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) + g.w.W("return encodeResponseHTTP(ctx, w, map[string]interface{}{\"%s\": response})\n", mopt.RESTWrapResponse.Value) + g.w.W("}") + } else { + g.w.W("encodeResponseHTTP") + } + } + } + g.w.W(",\n") + + g.w.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", LcNameWithAppPrefix(iface)+m.Name.Value) + g.w.W(")") + + if g.UseFast { + g.w.W(".RouterHandle()") + } + g.w.W(")\n") + } + } + if g.UseFast { + g.w.W("return r.HandleRequest, nil\n") + } else { + g.w.W("return r, nil\n") + } + g.w.W("}\n\n") + + return g.w.Bytes() +} + +func (g *RESTServerGenerator) OutputDir() string { + return "" +} + +func (g *RESTServerGenerator) Filename() string { + return "rest_server.go" +} + +func (g *RESTServerGenerator) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string) { + g.w.W("func encodeResponseHTTP(ctx %s.Context, ", contextPkg) + if g.UseFast { + g.w.W("w *%s.Response", httpPkg) + } else { + g.w.W("w %s.ResponseWriter", httpPkg) + } + g.w.W(", response interface{}) (err error) {\n") + g.w.W("contentType := \"application/json; charset=utf-8\"\n") + g.w.W("statusCode := 200\n") + g.w.W("var data []byte\n") + g.w.W("if response != nil {\n") + g.w.W("data, err = %s.Marshal(response)\n", jsonPkg) + g.w.W("if err != nil {\n") + g.w.W("return err\n") + g.w.W("}\n") + g.w.W("} else {\n") + g.w.W("contentType = \"text/plain; charset=utf-8\"\n") + g.w.W("statusCode = 201\n") + g.w.W("}\n") + + if g.UseFast { + g.w.W("w.Header.Set(\"Content-Type\", contentType)\n") + g.w.W("w.SetStatusCode(statusCode)\n") + g.w.W("w.SetBody(data)\n") + } else { + g.w.W("w.Header().Set(\"Content-Type\", contentType)\n") + g.w.W("w.WriteHeader(statusCode)\n") + g.w.W("w.Write(data)\n") + } + + g.w.W("return nil\n") + g.w.W("}\n\n") +} + +func (g *RESTServerGenerator) writeDefaultErrorEncoder(contextPkg string, httpPkg string, kitHTTPPkg string, jsonPkg string) { + g.w.W("type errorWrapper struct {\n") + g.w.W("Error string `json:\"error\"`\n") + g.w.W("Data interface{} `json:\"data,omitempty\"`\n") + g.w.W("}\n") + + g.w.W("func defaultErrorEncoder(ctx %s.Context, err error, ", contextPkg) + if g.UseFast { + g.w.W("w *%s.RequestCtx) {\n", httpPkg) + } else { + g.w.W("w %s.ResponseWriter) {\n", httpPkg) + } + + g.w.W("var errData interface{}\n") + g.w.W("if e, ok := err.(interface{ ErrorData() interface{} }); ok {\n") + g.w.W("errData = e.ErrorData()\n") + g.w.W("}\n") + + g.w.W("data, merr := %s.Marshal(errorWrapper{Error: err.Error(), Data: errData})\n", jsonPkg) + g.w.W("if merr != nil {\n") + if g.UseFast { + g.w.W("w.SetBody([]byte(") + } else { + g.w.W("_, _ = w.Write([]byte(") + } + g.w.W("%s))\n", strconv.Quote("unexpected error")) + g.w.W("return\n") + g.w.W("}\n") + + if g.UseFast { + g.w.W("w.Response.Header") + } else { + g.w.W("w.Header()") + } + g.w.W(".Set(\"Content-Type\", \"application/json; charset=utf-8\")\n") + + g.w.W("if headerer, ok := err.(%s.Headerer); ok {\n", kitHTTPPkg) + + if g.UseFast { + g.w.W("for k, v := range headerer.Headers() {\n") + g.w.W("w.Response.Header.Add(k, v)") + g.w.W("}\n") + } else { + g.w.W("for k, values := range headerer.Headers() {\n") + g.w.W("for _, v := range values {\n") + g.w.W("w.Header().Add(k, v)") + g.w.W("}\n}\n") + } + g.w.W("}\n") + g.w.W("code := %s.StatusInternalServerError\n", httpPkg) + g.w.W("if sc, ok := err.(%s.StatusCoder); ok {\n", kitHTTPPkg) + g.w.W("code = sc.StatusCode()\n") + g.w.W("}\n") + + if g.UseFast { + g.w.W("w.SetStatusCode(code)\n") + g.w.W("w.SetBody(data)\n") + } else { + g.w.W("w.WriteHeader(code)\n") + g.w.W("_, _ = w.Write(data)\n") + } + g.w.W("}\n\n") +} diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go new file mode 100644 index 00000000..c40fb494 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -0,0 +1,671 @@ +package generator + +import ( + "fmt" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/swipe" + + "github.com/gertd/go-pluralize" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/openapi" + "github.com/swipe-io/swipe/v3/option" +) + +const jsonRPCClientBase = ` +export class JSONRPCError extends Error { + constructor(message, name, code, data) { + super(message); + this.name = name; + this.code = code; + this.data = data; + } +} + +class JSONRPCScheduler { + /** + * + * @param {*} transport + */ + constructor(transport) { + this._transport = transport; + this._requestID = 0; + this._scheduleRequests = {}; + this._commitTimerID = null; + this._beforeRequest = null; + } + beforeRequest(fn) { + this._beforeRequest = fn; + } + __scheduleCommit() { + if (this._commitTimerID) { + clearTimeout(this._commitTimerID); + } + this._commitTimerID = setTimeout(() => { + this._commitTimerID = null; + const scheduleRequests = { ...this._scheduleRequests }; + this._scheduleRequests = {}; + let requests = []; + for (let key in scheduleRequests) { + requests.push(scheduleRequests[key].request); + } + this.__doRequest(requests) + .then((responses) => { + for (let i = 0; i < responses.length; i++) { + const schedule = scheduleRequests[responses[i].id]; + if (responses[i].error) { + schedule.reject(responses[i].error); + continue; + } + schedule.resolve(responses[i].result); + } + }) + .catch((e) => { + for (let key in requests) { + if (!requests.hasOwnProperty(key)) { + continue; + } + if (scheduleRequests.hasOwnProperty(requests[key].id)) { + scheduleRequests[requests[key].id].reject(e) + } + } + }); + }, 0); + } + makeJSONRPCRequest(id, method, params) { + return { + jsonrpc: "2.0", + id: id, + method: method, + params: params, + }; + } + /** + * @param {string} method + * @param {Object} params + * @returns {Promise<*>} + */ + __scheduleRequest(method, params) { + const p = new Promise((resolve, reject) => { + const request = this.makeJSONRPCRequest( + this.__requestIDGenerate(), + method, + params + ); + this._scheduleRequests[request.id] = { + request, + resolve, + reject, + }; + }); + this.__scheduleCommit(); + return p; + } + __doRequest(request) { + return this._transport.doRequest(request); + } + __requestIDGenerate() { + return ++this._requestID; + } + } +` + +func NameRequest(m *option.FuncType, iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + m.Name.Upper() + "Request" +} + +func NameResponse(m *option.FuncType, iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + m.Name.Upper() + "Response" +} + +func NameMakeEndpoint(m *option.FuncType, iface *config.Interface) string { + return fmt.Sprintf("Make%s%sEndpoint", UcNameWithAppPrefix(iface), m.Name.Upper()) +} + +func LcNameWithAppPrefix(iface *config.Interface, notInternal ...bool) string { + return strcase.ToLowerCamel(UcNameWithAppPrefix(iface, notInternal...)) +} + +func UcNameWithAppPrefix(iface *config.Interface, notInternal ...bool) string { + var isNotInternal bool + if len(notInternal) > 0 { + isNotInternal = notInternal[0] + } + if isNotInternal && iface.Named.Pkg.Module.External { + if iface.External.Iface.ClientName.Value != "" { + return strcase.ToCamel(iface.External.Iface.ClientName.Value) + } + } + if iface.ClientName.Value != "" { + return strcase.ToCamel(iface.ClientName.Value) + } + return iface.Named.Name.Upper() +} + +func UcAppName(iface *config.Interface) string { + return strcase.ToCamel(stdstrings.Split(iface.Named.Pkg.Path, "/")[:3][2]) +} + +func LcAppName(iface *config.Interface) string { + return strcase.ToLowerCamel(stdstrings.Split(iface.Named.Pkg.Path, "/")[:3][2]) +} + +func UcNameJS(iface *config.Interface) string { + if iface.ClientName.Value != "" { + return strcase.ToCamel(iface.ClientName.Value) + } + return iface.Named.Name.Upper() +} + +func LcNameJS(iface *config.Interface) string { + if iface.ClientName.Value != "" { + return strcase.ToLowerCamel(iface.ClientName.Value) + } + return iface.Named.Name.Lower() +} + +func NameInterface(iface *config.Interface) string { + return LcNameWithAppPrefix(iface) + "Interface" +} + +func NameLoggingMiddleware(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "LoggingMiddleware" +} + +func NameInstrumentingMiddleware(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "InstrumentingMiddleware" +} + +func NameEndpointSetNameVar(iface *config.Interface) string { + return LcNameWithAppPrefix(iface) + "EpSet" +} + +func NameEndpointSetName(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "EndpointSet" +} + +func LcNameEndpoint(iface *config.Interface, fn *option.FuncType) string { + return LcNameWithAppPrefix(iface) + fn.Name.Value + "Endpoint" +} + +func UcNameIfaceMethod(iface *config.Interface, fn *option.FuncType) string { + return UcNameWithAppPrefix(iface) + fn.Name.Upper() +} + +func LcNameIfaceMethod(iface *config.Interface, fn *option.FuncType) string { + return LcNameWithAppPrefix(iface) + fn.Name.Upper() +} + +func ClientType(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "Client" +} + +func IsContext(v *option.VarType) bool { + if named, ok := v.Type.(*option.NamedType); ok { + if _, ok := named.Type.(*option.IfaceType); ok { + return named.Name.Value == "Context" && named.Pkg.Path == "context" + } + } + return false +} + +func IsError(v *option.VarType) bool { + if named, ok := v.Type.(*option.NamedType); ok { + if _, ok := named.Type.(*option.IfaceType); ok && named.Name.Value == "error" { + return true + } + } + return false +} + +func Errors(vars option.VarsType) (result []*option.VarType) { + for _, v := range vars { + if IsError(v) { + result = append(result, v) + } + } + return +} + +func Contexts(vars option.VarsType) (result []*option.VarType) { + for _, v := range vars { + if IsContext(v) { + result = append(result, v) + } + } + return +} + +func LenWithoutErrors(vars option.VarsType) int { + return len(vars) - len(Errors(vars)) +} + +func LenWithoutContexts(vars option.VarsType) int { + return len(vars) - len(Contexts(vars)) +} + +func makeLogParams(include, exclude map[string]struct{}, data ...*option.VarType) (result []string) { + return makeLogParamsRecursive(include, exclude, "", data...) +} + +func makeLogParamsRecursive(include, exclude map[string]struct{}, parentName string, data ...*option.VarType) (result []string) { + for _, v := range data { + if IsContext(v) { + continue + } + if len(include) > 0 { + if _, ok := include[v.Name.Value]; !ok { + continue + } + } + if len(exclude) > 0 { + if _, ok := exclude[v.Name.Value]; ok { + continue + } + } + if logParam := makeLogParam(parentName+v.Name.Value, v.Type); len(logParam) > 0 { + result = append(result, logParam...) + } + } + return +} + +func makeLogParam(name string, t interface{}) []string { + quoteName := strconv.Quote(name) + switch t := t.(type) { + default: + return []string{quoteName, name} + case *option.NamedType: + if hasMethodString(t) { + return []string{quoteName, name + ".String()"} + } + return nil + case *option.StructType: + return nil + case *option.BasicType: + return []string{quoteName, name} + case *option.SliceType, *option.ArrayType, *option.MapType: + return []string{quoteName, "len(" + name + ")"} + } +} + +func hasMethodString(v *option.NamedType) bool { + for _, method := range v.Methods { + if method.Name.Value != "String" { + continue + } + if len(method.Sig.Params) == 0 && len(method.Sig.Results) == 1 { + if t, ok := method.Sig.Results[0].Type.(*option.BasicType); ok { + return t.IsString() + } + } + } + return false +} + +func findContextVar(vars option.VarsType) (v *option.VarType) { + for _, p := range vars { + if IsContext(p) { + v = p + break + } + } + return +} + +func findErrorVar(vars option.VarsType) (v *option.VarType) { + for _, p := range vars { + if IsError(p) { + v = p + break + } + } + return +} + +func getOpenapiJSONRPCErrorSchemas() openapi.Schemas { + return openapi.Schemas{ + "ParseError": { + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: -32700, + }, + "message": &openapi.Schema{ + Type: "string", + Example: "Parse error", + }, + }, + }, + }, + }, + "InvalidRequestError": { + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: -32600, + }, + "message": &openapi.Schema{ + Type: "string", + Example: "Invalid Request", + }, + }, + }, + }, + }, + "MethodNotFoundError": { + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: -32601, + }, + "message": &openapi.Schema{ + Type: "string", + Example: "Method not found", + }, + }, + }, + }, + }, + "InvalidParamsError": { + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: -32602, + }, + "message": &openapi.Schema{ + Type: "string", + Example: "Invalid params", + }, + }, + }, + }, + }, + "InternalError": { + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: -32603, + }, + "message": &openapi.Schema{ + Type: "string", + Example: "Internal error", + }, + }, + }, + }, + }, + } +} + +func getOpenapiRESTErrorSchema() *openapi.Schema { + return &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "error": &openapi.Schema{ + Type: "string", + }, + }, + } +} + +func jsTypeDef(i interface{}) string { + return jsTypeDefRecursive(i, 0, map[string]struct{}{}) +} + +func jsTypeDefRecursive(i interface{}, nested int, visited map[string]struct{}) string { + switch t := i.(type) { + case *option.NamedType: + + result := "/**\n" + result += "* @typedef " + + switch t.Pkg.Path { + default: + result += "{Object} " + t.Name.Value + "\n" + result += jsTypeDefRecursive(t.Type, nested, visited) + + case "github.com/google/uuid", "github.com/pborman/uuid": + switch t.Name.Value { + case "UUID": + result += "string\n" + } + case "encoding/json": + switch t.Name.Value { + case "RawMessage": + result += "*\n" + } + case "time": + switch t.Name.Value { + case "Time": + result += "string\n" + } + } + result += "**/\n" + return result + case *option.StructType: + out := "" + for _, f := range t.Fields { + if jsonTag, err := f.Tags.Get("json"); err == nil { + if jsonTag.Name == "-" { + continue + } + } + if em, ok := f.Var.Type.(*option.StructType); ok && f.Var.Embedded { + out += jsTypeDefRecursive(em, nested, visited) + continue + } + out += "* @property {" + jsDocType(f.Var.Type) + "} " + f.Var.Name.Lower() + out += "\n" + } + return out + } + return "" +} + +func jsDocType(i interface{}) string { + return jsDocTypeRecursive(i, 0) +} + +func jsDocTypeRecursive(i interface{}, nested int) string { + switch t := i.(type) { + case *option.StructType: + out := "" + for _, f := range t.Fields { + if jsonTag, err := f.Tags.Get("json"); err == nil { + if jsonTag.Name == "-" { + continue + } + } + if em, ok := f.Var.Type.(*option.StructType); ok && f.Var.Embedded { + out += jsDocTypeRecursive(em, nested) + continue + } + out += stdstrings.Repeat(" ", nested) + f.Var.Name.Lower() + ": " + jsDocTypeRecursive(f.Var.Type, nested+1) + out += "\n" + } + return out + case *option.IfaceType: + return "object" + case *option.MapType: + return "Object" + case *option.SliceType: + if b, ok := t.Value.(*option.BasicType); ok { + if b.IsByte() { + return "string" + } + } + return "Array<" + jsDocTypeRecursive(t.Value, nested) + ">" + case *option.ArrayType: + return "Array<" + jsDocTypeRecursive(t.Value, nested) + ">" + case *option.NamedType: + if b, ok := t.Type.(*option.BasicType); ok { + return jsDocTypeRecursive(b, nested) + } + if t.Pkg != nil { + switch t.Pkg.Path { + case "github.com/google/uuid", "github.com/pborman/uuid": + switch t.Name.Value { + case "UUID": + return "string" + } + case "encoding/json": + switch t.Name.Value { + case "RawMessage": + return "*" + } + case "time": + switch t.Name.Value { + case "Time": + return "string" + } + } + } + return t.Name.Value + case *option.BasicType: + if t.IsString() { + return "string" + } + if t.IsNumeric() { + return "number" + } + if t.IsBool() { + return "boolean" + } + return t.Name + } + return "" +} + +func docMethodName(iface *config.Interface, method *option.FuncType) string { + if iface.ClientName.Value != "" { + return "JSONRPCClient" + strcase.ToCamel(iface.ClientName.Value) + "." + method.Name.Lower() + } + return "JSONRPCClient" + iface.Named.Name.Upper() + "." + method.Name.Lower() +} + +func jsErrorName(iface *config.Interface, e config.Error) (errorName string) { + return UcNameWithAppPrefix(iface) + singular(e.Name) +} + +func singular(word string) string { + return pluralize.NewClient().Singular(word) +} + +func isGolangNamedType(t *option.NamedType) bool { + switch t.Pkg.Path { + case "time": + switch t.Name.Value { + case "Time", "Location": + return true + } + case "sql": + switch t.Name.Value { + case "NullBool", "NullFloat64", "NullInt32", "NullInt64", "NullString", "NullTime": + return true + } + } + return false +} + +func fillType(i interface{}, visited map[string]*option.NamedType) { + switch t := i.(type) { + case *option.NamedType: + if _, ok := t.Type.(*option.StructType); ok { + key := t.Pkg.Path + t.Name.Value + _, ok := visited[key] + if !ok { + visited[key] = t + fillType(t.Type, visited) + } + } + case *option.SliceType: + fillType(t.Value, visited) + case *option.ArrayType: + fillType(t.Value, visited) + case *option.MapType: + fillType(t.Value, visited) + } +} + +func isFileType(i interface{}, importer swipe.Importer) bool { + if n, ok := i.(*option.NamedType); ok { + if iface, ok := n.Type.(*option.IfaceType); ok { + var done int + for _, method := range iface.Methods { + sigStr := importer.TypeSigString(method) + switch sigStr { + case "Close() (error)", "Name() (string)", "Read([]byte) (int, error)": + done++ + } + } + if done == 3 { + return true + } + } + } + return false +} diff --git a/v3/internal/plugin/gokit/openapi/openapi.go b/v3/internal/plugin/gokit/openapi/openapi.go new file mode 100644 index 00000000..4a804a82 --- /dev/null +++ b/v3/internal/plugin/gokit/openapi/openapi.go @@ -0,0 +1,126 @@ +package openapi + +type Contact struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` + Email string `yaml:"email,omitempty" json:"email,omitempty"` +} + +type License struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` +} + +type Info struct { + Title string `yaml:"title,omitempty" json:"title,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + TermsOfService string `yaml:"termsOfService,omitempty" json:"termsOfService,omitempty"` + Contact *Contact `yaml:"contact,omitempty" json:"contact,omitempty"` + License *License `yaml:"license,omitempty" json:"license,omitempty"` + Version string `yaml:"version,omitempty" json:"version,omitempty"` +} + +type ExternalDocs struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` +} + +type Tag struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + ExternalDocs ExternalDocs `yaml:"externalDocs,omitempty" json:"externalDocs,omitempty"` +} + +type Properties map[string]*Schema + +type Schema struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + Type string `yaml:"type,omitempty" json:"type,omitempty"` + Nullable bool `yaml:"nullable,omitempty" json:"nullable,omitempty"` + Format string `yaml:"format,omitempty" json:"format,omitempty"` + Properties Properties `yaml:"properties,omitempty" json:"properties,omitempty"` + Items *Schema `yaml:"items,omitempty" json:"items,omitempty"` + AnyOf []Schema `yaml:"anyOf,omitempty" json:"anyOf,omitempty"` + Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` + Example interface{} `yaml:"example,omitempty" json:"example,omitempty"` +} + +type Parameter struct { + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + In string `yaml:"in,omitempty" json:"in,omitempty"` + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Required bool `yaml:"required,omitempty" json:"required,omitempty"` + Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +} + +type Media struct { + Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +} + +type Content map[string]Media + +type Response struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Content Content `yaml:"content,omitempty" json:"content,omitempty"` +} + +type Responses map[string]*Response + +type RequestBody struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Content Content `yaml:"content,omitempty" json:"content,omitempty"` + Required bool `yaml:"required,omitempty" json:"required,omitempty"` +} + +type Operation struct { + Tags []string `yaml:"tags,omitempty" json:"tags,omitempty"` + Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + OperationID string `yaml:"operationId,omitempty" json:"operationId,omitempty"` + Consumes []string `yaml:"consumes,omitempty" json:"consumes,omitempty"` + Produces []string `yaml:"produces,omitempty" json:"produces,omitempty"` + Parameters []Parameter `yaml:"parameters,omitempty" json:"parameters,omitempty"` + RequestBody *RequestBody `yaml:"requestBody,omitempty" json:"requestBody,omitempty"` + Responses Responses `yaml:"responses,omitempty" json:"responses,omitempty"` +} + +type Path struct { + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Get *Operation `yaml:"get,omitempty" json:"get,omitempty"` + Post *Operation `yaml:"post,omitempty" json:"post,omitempty"` + Patch *Operation `yaml:"patch,omitempty" json:"patch,omitempty"` + Put *Operation `yaml:"put,omitempty" json:"put,omitempty"` + Delete *Operation `yaml:"delete,omitempty" json:"delete,omitempty"` +} + +type Variable struct { + Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` + Default string `yaml:"default,omitempty" json:"default,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` +} + +type Server struct { + URL string `yaml:"url,omitempty" json:"url,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Variables map[string]Variable `yaml:"variables,omitempty" json:"variables,omitempty"` +} + +type Schemas map[string]*Schema + +type Components struct { + Schemas Schemas `yaml:"schemas,omitempty" json:"schemas,omitempty"` +} + +type OpenAPI struct { + OpenAPI string `yaml:"openapi" json:"openapi"` + Info Info `yaml:"info,omitempty" json:"info,omitempty"` + Servers []Server `yaml:"servers,omitempty" json:"servers,omitempty"` + Tags []Tag `yaml:"tags,omitempty" json:"tags,omitempty"` + Schemes []string `yaml:"schemes,omitempty" json:"schemes,omitempty"` + Paths map[string]*Path `yaml:"paths,omitempty" json:"paths,omitempty"` + Components Components `yaml:"components,omitempty" json:"components,omitempty"` +} diff --git a/v3/internal/plugin/gokit/openapi/openapi_ffjson.go b/v3/internal/plugin/gokit/openapi/openapi_ffjson.go new file mode 100644 index 00000000..108ee55c --- /dev/null +++ b/v3/internal/plugin/gokit/openapi/openapi_ffjson.go @@ -0,0 +1,7164 @@ +// Code generated by ffjson . DO NOT EDIT. +// source: pkg/openapi/openapi.go + +package openapi + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + + fflib "github.com/pquerna/ffjson/fflib/v1" +) + +// MarshalJSON marshal bytes to json - template +func (j *Components) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Components) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Schemas) != 0 { + buf.WriteString(`"schemas":`) + /* Falling back. type=openapi.Schemas kind=map */ + err = buf.Encode(j.Schemas) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtComponentsbase = iota + ffjtComponentsnosuchkey + + ffjtComponentsSchemas +) + +var ffjKeyComponentsSchemas = []byte("schemas") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Components) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Components) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtComponentsbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtComponentsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 's': + + if bytes.Equal(ffjKeyComponentsSchemas, kn) { + currentKey = ffjtComponentsSchemas + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyComponentsSchemas, kn) { + currentKey = ffjtComponentsSchemas + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtComponentsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtComponentsSchemas: + goto handle_Schemas + + case ffjtComponentsnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Schemas: + + /* handler: j.Schemas type=openapi.Schemas kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Schemas", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Schemas = nil + } else { + + j.Schemas = make(map[string]*Schema, 0) + + wantVal := true + + for { + + var k string + + var tmpJSchemas *Schema + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJSchemas type=*openapi.Schema kind=ptr quoted=false*/ + + { + if tok == fflib.FFTok_null { + + tmpJSchemas = nil + + } else { + + if tmpJSchemas == nil { + tmpJSchemas = new(Schema) + } + + err = tmpJSchemas.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Schemas[k] = tmpJSchemas + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Contact) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Contact) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + if len(j.Email) != 0 { + buf.WriteString(`"email":`) + fflib.WriteJsonString(buf, string(j.Email)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtContactbase = iota + ffjtContactnosuchkey + + ffjtContactName + + ffjtContactURL + + ffjtContactEmail +) + +var ffjKeyContactName = []byte("name") + +var ffjKeyContactURL = []byte("url") + +var ffjKeyContactEmail = []byte("email") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Contact) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Contact) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtContactbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtContactnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'e': + + if bytes.Equal(ffjKeyContactEmail, kn) { + currentKey = ffjtContactEmail + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'n': + + if bytes.Equal(ffjKeyContactName, kn) { + currentKey = ffjtContactName + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyContactURL, kn) { + currentKey = ffjtContactURL + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyContactEmail, kn) { + currentKey = ffjtContactEmail + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyContactURL, kn) { + currentKey = ffjtContactURL + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyContactName, kn) { + currentKey = ffjtContactName + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtContactnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtContactName: + goto handle_Name + + case ffjtContactURL: + goto handle_URL + + case ffjtContactEmail: + goto handle_Email + + case ffjtContactnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Email: + + /* handler: j.Email type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Email = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *ExternalDocs) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *ExternalDocs) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtExternalDocsbase = iota + ffjtExternalDocsnosuchkey + + ffjtExternalDocsDescription + + ffjtExternalDocsURL +) + +var ffjKeyExternalDocsDescription = []byte("description") + +var ffjKeyExternalDocsURL = []byte("url") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *ExternalDocs) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *ExternalDocs) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtExternalDocsbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtExternalDocsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyExternalDocsDescription, kn) { + currentKey = ffjtExternalDocsDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyExternalDocsURL, kn) { + currentKey = ffjtExternalDocsURL + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyExternalDocsURL, kn) { + currentKey = ffjtExternalDocsURL + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyExternalDocsDescription, kn) { + currentKey = ffjtExternalDocsDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtExternalDocsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtExternalDocsDescription: + goto handle_Description + + case ffjtExternalDocsURL: + goto handle_URL + + case ffjtExternalDocsnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Info) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Info) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Title) != 0 { + buf.WriteString(`"title":`) + fflib.WriteJsonString(buf, string(j.Title)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.TermsOfService) != 0 { + buf.WriteString(`"termsOfService":`) + fflib.WriteJsonString(buf, string(j.TermsOfService)) + buf.WriteByte(',') + } + if j.Contact != nil { + if true { + buf.WriteString(`"contact":`) + + { + + err = j.Contact.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.License != nil { + if true { + buf.WriteString(`"license":`) + + { + + err = j.License.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if len(j.Version) != 0 { + buf.WriteString(`"version":`) + fflib.WriteJsonString(buf, string(j.Version)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtInfobase = iota + ffjtInfonosuchkey + + ffjtInfoTitle + + ffjtInfoDescription + + ffjtInfoTermsOfService + + ffjtInfoContact + + ffjtInfoLicense + + ffjtInfoVersion +) + +var ffjKeyInfoTitle = []byte("title") + +var ffjKeyInfoDescription = []byte("description") + +var ffjKeyInfoTermsOfService = []byte("termsOfService") + +var ffjKeyInfoContact = []byte("contact") + +var ffjKeyInfoLicense = []byte("license") + +var ffjKeyInfoVersion = []byte("version") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Info) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Info) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtInfobase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtInfonosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyInfoContact, kn) { + currentKey = ffjtInfoContact + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyInfoDescription, kn) { + currentKey = ffjtInfoDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'l': + + if bytes.Equal(ffjKeyInfoLicense, kn) { + currentKey = ffjtInfoLicense + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeyInfoTitle, kn) { + currentKey = ffjtInfoTitle + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyInfoTermsOfService, kn) { + currentKey = ffjtInfoTermsOfService + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'v': + + if bytes.Equal(ffjKeyInfoVersion, kn) { + currentKey = ffjtInfoVersion + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyInfoVersion, kn) { + currentKey = ffjtInfoVersion + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyInfoLicense, kn) { + currentKey = ffjtInfoLicense + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyInfoContact, kn) { + currentKey = ffjtInfoContact + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyInfoTermsOfService, kn) { + currentKey = ffjtInfoTermsOfService + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyInfoDescription, kn) { + currentKey = ffjtInfoDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyInfoTitle, kn) { + currentKey = ffjtInfoTitle + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtInfonosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtInfoTitle: + goto handle_Title + + case ffjtInfoDescription: + goto handle_Description + + case ffjtInfoTermsOfService: + goto handle_TermsOfService + + case ffjtInfoContact: + goto handle_Contact + + case ffjtInfoLicense: + goto handle_License + + case ffjtInfoVersion: + goto handle_Version + + case ffjtInfonosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Title: + + /* handler: j.Title type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Title = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_TermsOfService: + + /* handler: j.TermsOfService type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.TermsOfService = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Contact: + + /* handler: j.Contact type=openapi.Contact kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Contact = nil + + } else { + + if j.Contact == nil { + j.Contact = new(Contact) + } + + err = j.Contact.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_License: + + /* handler: j.License type=openapi.License kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.License = nil + + } else { + + if j.License == nil { + j.License = new(License) + } + + err = j.License.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Version: + + /* handler: j.Version type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Version = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *License) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *License) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtLicensebase = iota + ffjtLicensenosuchkey + + ffjtLicenseName + + ffjtLicenseURL +) + +var ffjKeyLicenseName = []byte("name") + +var ffjKeyLicenseURL = []byte("url") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *License) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *License) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtLicensebase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtLicensenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'n': + + if bytes.Equal(ffjKeyLicenseName, kn) { + currentKey = ffjtLicenseName + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyLicenseURL, kn) { + currentKey = ffjtLicenseURL + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyLicenseURL, kn) { + currentKey = ffjtLicenseURL + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyLicenseName, kn) { + currentKey = ffjtLicenseName + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtLicensenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtLicenseName: + goto handle_Name + + case ffjtLicenseURL: + goto handle_URL + + case ffjtLicensenosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Media) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Media) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if j.Schema != nil { + if true { + buf.WriteString(`"schema":`) + + { + + err = j.Schema.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtMediabase = iota + ffjtMedianosuchkey + + ffjtMediaSchema +) + +var ffjKeyMediaSchema = []byte("schema") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Media) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Media) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtMediabase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtMedianosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 's': + + if bytes.Equal(ffjKeyMediaSchema, kn) { + currentKey = ffjtMediaSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyMediaSchema, kn) { + currentKey = ffjtMediaSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtMedianosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtMediaSchema: + goto handle_Schema + + case ffjtMedianosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Schema: + + /* handler: j.Schema type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Schema = nil + + } else { + + if j.Schema == nil { + j.Schema = new(Schema) + } + + err = j.Schema.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *OpenAPI) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *OpenAPI) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ "openapi":`) + fflib.WriteJsonString(buf, string(j.OpenAPI)) + buf.WriteByte(',') + if true { + buf.WriteString(`"info":`) + + { + + err = j.Info.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + if len(j.Servers) != 0 { + buf.WriteString(`"servers":`) + if j.Servers != nil { + buf.WriteString(`[`) + for i, v := range j.Servers { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Tags) != 0 { + buf.WriteString(`"tags":`) + if j.Tags != nil { + buf.WriteString(`[`) + for i, v := range j.Tags { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Schemes) != 0 { + buf.WriteString(`"schemes":`) + if j.Schemes != nil { + buf.WriteString(`[`) + for i, v := range j.Schemes { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Paths) != 0 { + buf.WriteString(`"paths":`) + /* Falling back. type=map[string]*openapi.Path kind=map */ + err = buf.Encode(j.Paths) + if err != nil { + return err + } + buf.WriteByte(',') + } + if true { + buf.WriteString(`"components":`) + + { + + err = j.Components.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtOpenAPIbase = iota + ffjtOpenAPInosuchkey + + ffjtOpenAPIOpenAPI + + ffjtOpenAPIInfo + + ffjtOpenAPIServers + + ffjtOpenAPITags + + ffjtOpenAPISchemes + + ffjtOpenAPIPaths + + ffjtOpenAPIComponents +) + +var ffjKeyOpenAPIOpenAPI = []byte("openapi") + +var ffjKeyOpenAPIInfo = []byte("info") + +var ffjKeyOpenAPIServers = []byte("servers") + +var ffjKeyOpenAPITags = []byte("tags") + +var ffjKeyOpenAPISchemes = []byte("schemes") + +var ffjKeyOpenAPIPaths = []byte("paths") + +var ffjKeyOpenAPIComponents = []byte("components") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *OpenAPI) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *OpenAPI) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtOpenAPIbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtOpenAPInosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyOpenAPIComponents, kn) { + currentKey = ffjtOpenAPIComponents + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'i': + + if bytes.Equal(ffjKeyOpenAPIInfo, kn) { + currentKey = ffjtOpenAPIInfo + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'o': + + if bytes.Equal(ffjKeyOpenAPIOpenAPI, kn) { + currentKey = ffjtOpenAPIOpenAPI + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeyOpenAPIPaths, kn) { + currentKey = ffjtOpenAPIPaths + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyOpenAPIServers, kn) { + currentKey = ffjtOpenAPIServers + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyOpenAPISchemes, kn) { + currentKey = ffjtOpenAPISchemes + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeyOpenAPITags, kn) { + currentKey = ffjtOpenAPITags + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyOpenAPIComponents, kn) { + currentKey = ffjtOpenAPIComponents + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPIPaths, kn) { + currentKey = ffjtOpenAPIPaths + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPISchemes, kn) { + currentKey = ffjtOpenAPISchemes + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPITags, kn) { + currentKey = ffjtOpenAPITags + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPIServers, kn) { + currentKey = ffjtOpenAPIServers + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyOpenAPIInfo, kn) { + currentKey = ffjtOpenAPIInfo + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyOpenAPIOpenAPI, kn) { + currentKey = ffjtOpenAPIOpenAPI + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtOpenAPInosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtOpenAPIOpenAPI: + goto handle_OpenAPI + + case ffjtOpenAPIInfo: + goto handle_Info + + case ffjtOpenAPIServers: + goto handle_Servers + + case ffjtOpenAPITags: + goto handle_Tags + + case ffjtOpenAPISchemes: + goto handle_Schemes + + case ffjtOpenAPIPaths: + goto handle_Paths + + case ffjtOpenAPIComponents: + goto handle_Components + + case ffjtOpenAPInosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_OpenAPI: + + /* handler: j.OpenAPI type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.OpenAPI = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Info: + + /* handler: j.Info type=openapi.Info kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = j.Info.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Servers: + + /* handler: j.Servers type=[]openapi.Server kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Servers = nil + } else { + + j.Servers = []Server{} + + wantVal := true + + for { + + var tmpJServers Server + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJServers type=openapi.Server kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJServers.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Servers = append(j.Servers, tmpJServers) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Tags: + + /* handler: j.Tags type=[]openapi.Tag kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Tags = nil + } else { + + j.Tags = []Tag{} + + wantVal := true + + for { + + var tmpJTags Tag + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJTags type=openapi.Tag kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJTags.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Tags = append(j.Tags, tmpJTags) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Schemes: + + /* handler: j.Schemes type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Schemes = nil + } else { + + j.Schemes = []string{} + + wantVal := true + + for { + + var tmpJSchemes string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJSchemes type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJSchemes = string(string(outBuf)) + + } + } + + j.Schemes = append(j.Schemes, tmpJSchemes) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Paths: + + /* handler: j.Paths type=map[string]*openapi.Path kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Paths = nil + } else { + + j.Paths = make(map[string]*Path, 0) + + wantVal := true + + for { + + var k string + + var tmpJPaths *Path + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJPaths type=*openapi.Path kind=ptr quoted=false*/ + + { + if tok == fflib.FFTok_null { + + tmpJPaths = nil + + } else { + + if tmpJPaths == nil { + tmpJPaths = new(Path) + } + + err = tmpJPaths.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Paths[k] = tmpJPaths + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Components: + + /* handler: j.Components type=openapi.Components kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = j.Components.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Operation) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Operation) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Tags) != 0 { + buf.WriteString(`"tags":`) + if j.Tags != nil { + buf.WriteString(`[`) + for i, v := range j.Tags { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Summary) != 0 { + buf.WriteString(`"summary":`) + fflib.WriteJsonString(buf, string(j.Summary)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.OperationID) != 0 { + buf.WriteString(`"operationId":`) + fflib.WriteJsonString(buf, string(j.OperationID)) + buf.WriteByte(',') + } + if len(j.Consumes) != 0 { + buf.WriteString(`"consumes":`) + if j.Consumes != nil { + buf.WriteString(`[`) + for i, v := range j.Consumes { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Produces) != 0 { + buf.WriteString(`"produces":`) + if j.Produces != nil { + buf.WriteString(`[`) + for i, v := range j.Produces { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Parameters) != 0 { + buf.WriteString(`"parameters":`) + if j.Parameters != nil { + buf.WriteString(`[`) + for i, v := range j.Parameters { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if j.RequestBody != nil { + if true { + buf.WriteString(`"requestBody":`) + + { + + err = j.RequestBody.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if len(j.Responses) != 0 { + buf.WriteString(`"responses":`) + /* Falling back. type=openapi.Responses kind=map */ + err = buf.Encode(j.Responses) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtOperationbase = iota + ffjtOperationnosuchkey + + ffjtOperationTags + + ffjtOperationSummary + + ffjtOperationDescription + + ffjtOperationOperationID + + ffjtOperationConsumes + + ffjtOperationProduces + + ffjtOperationParameters + + ffjtOperationRequestBody + + ffjtOperationResponses +) + +var ffjKeyOperationTags = []byte("tags") + +var ffjKeyOperationSummary = []byte("summary") + +var ffjKeyOperationDescription = []byte("description") + +var ffjKeyOperationOperationID = []byte("operationId") + +var ffjKeyOperationConsumes = []byte("consumes") + +var ffjKeyOperationProduces = []byte("produces") + +var ffjKeyOperationParameters = []byte("parameters") + +var ffjKeyOperationRequestBody = []byte("requestBody") + +var ffjKeyOperationResponses = []byte("responses") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Operation) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Operation) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtOperationbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtOperationnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyOperationConsumes, kn) { + currentKey = ffjtOperationConsumes + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyOperationDescription, kn) { + currentKey = ffjtOperationDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'o': + + if bytes.Equal(ffjKeyOperationOperationID, kn) { + currentKey = ffjtOperationOperationID + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeyOperationProduces, kn) { + currentKey = ffjtOperationProduces + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyOperationParameters, kn) { + currentKey = ffjtOperationParameters + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'r': + + if bytes.Equal(ffjKeyOperationRequestBody, kn) { + currentKey = ffjtOperationRequestBody + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyOperationResponses, kn) { + currentKey = ffjtOperationResponses + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyOperationSummary, kn) { + currentKey = ffjtOperationSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeyOperationTags, kn) { + currentKey = ffjtOperationTags + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyOperationResponses, kn) { + currentKey = ffjtOperationResponses + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationRequestBody, kn) { + currentKey = ffjtOperationRequestBody + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationParameters, kn) { + currentKey = ffjtOperationParameters + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationProduces, kn) { + currentKey = ffjtOperationProduces + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationConsumes, kn) { + currentKey = ffjtOperationConsumes + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyOperationOperationID, kn) { + currentKey = ffjtOperationOperationID + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationDescription, kn) { + currentKey = ffjtOperationDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationSummary, kn) { + currentKey = ffjtOperationSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationTags, kn) { + currentKey = ffjtOperationTags + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtOperationnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtOperationTags: + goto handle_Tags + + case ffjtOperationSummary: + goto handle_Summary + + case ffjtOperationDescription: + goto handle_Description + + case ffjtOperationOperationID: + goto handle_OperationID + + case ffjtOperationConsumes: + goto handle_Consumes + + case ffjtOperationProduces: + goto handle_Produces + + case ffjtOperationParameters: + goto handle_Parameters + + case ffjtOperationRequestBody: + goto handle_RequestBody + + case ffjtOperationResponses: + goto handle_Responses + + case ffjtOperationnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Tags: + + /* handler: j.Tags type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Tags = nil + } else { + + j.Tags = []string{} + + wantVal := true + + for { + + var tmpJTags string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJTags type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJTags = string(string(outBuf)) + + } + } + + j.Tags = append(j.Tags, tmpJTags) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Summary: + + /* handler: j.Summary type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Summary = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_OperationID: + + /* handler: j.OperationID type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.OperationID = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Consumes: + + /* handler: j.Consumes type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Consumes = nil + } else { + + j.Consumes = []string{} + + wantVal := true + + for { + + var tmpJConsumes string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJConsumes type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJConsumes = string(string(outBuf)) + + } + } + + j.Consumes = append(j.Consumes, tmpJConsumes) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Produces: + + /* handler: j.Produces type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Produces = nil + } else { + + j.Produces = []string{} + + wantVal := true + + for { + + var tmpJProduces string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJProduces type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJProduces = string(string(outBuf)) + + } + } + + j.Produces = append(j.Produces, tmpJProduces) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Parameters: + + /* handler: j.Parameters type=[]openapi.Parameter kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Parameters = nil + } else { + + j.Parameters = []Parameter{} + + wantVal := true + + for { + + var tmpJParameters Parameter + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJParameters type=openapi.Parameter kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJParameters.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Parameters = append(j.Parameters, tmpJParameters) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_RequestBody: + + /* handler: j.RequestBody type=openapi.RequestBody kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.RequestBody = nil + + } else { + + if j.RequestBody == nil { + j.RequestBody = new(RequestBody) + } + + err = j.RequestBody.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Responses: + + /* handler: j.Responses type=openapi.Responses kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Responses", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Responses = nil + } else { + + j.Responses = make(map[string]*Response, 0) + + wantVal := true + + for { + + var k string + + var tmpJResponses *Response + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJResponses type=openapi.Response kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJResponses.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Responses[k] = tmpJResponses + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Parameter) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Parameter) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Ref) != 0 { + buf.WriteString(`"$ref":`) + fflib.WriteJsonString(buf, string(j.Ref)) + buf.WriteByte(',') + } + if len(j.In) != 0 { + buf.WriteString(`"in":`) + fflib.WriteJsonString(buf, string(j.In)) + buf.WriteByte(',') + } + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if j.Required != false { + if j.Required { + buf.WriteString(`"required":true`) + } else { + buf.WriteString(`"required":false`) + } + buf.WriteByte(',') + } + if j.Schema != nil { + if true { + buf.WriteString(`"schema":`) + + { + + err = j.Schema.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtParameterbase = iota + ffjtParameternosuchkey + + ffjtParameterRef + + ffjtParameterIn + + ffjtParameterName + + ffjtParameterDescription + + ffjtParameterRequired + + ffjtParameterSchema +) + +var ffjKeyParameterRef = []byte("$ref") + +var ffjKeyParameterIn = []byte("in") + +var ffjKeyParameterName = []byte("name") + +var ffjKeyParameterDescription = []byte("description") + +var ffjKeyParameterRequired = []byte("required") + +var ffjKeyParameterSchema = []byte("schema") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Parameter) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Parameter) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtParameterbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtParameternosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case '$': + + if bytes.Equal(ffjKeyParameterRef, kn) { + currentKey = ffjtParameterRef + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyParameterDescription, kn) { + currentKey = ffjtParameterDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'i': + + if bytes.Equal(ffjKeyParameterIn, kn) { + currentKey = ffjtParameterIn + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'n': + + if bytes.Equal(ffjKeyParameterName, kn) { + currentKey = ffjtParameterName + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'r': + + if bytes.Equal(ffjKeyParameterRequired, kn) { + currentKey = ffjtParameterRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyParameterSchema, kn) { + currentKey = ffjtParameterSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyParameterSchema, kn) { + currentKey = ffjtParameterSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyParameterRequired, kn) { + currentKey = ffjtParameterRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyParameterDescription, kn) { + currentKey = ffjtParameterDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyParameterName, kn) { + currentKey = ffjtParameterName + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyParameterIn, kn) { + currentKey = ffjtParameterIn + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.AsciiEqualFold(ffjKeyParameterRef, kn) { + currentKey = ffjtParameterRef + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtParameternosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtParameterRef: + goto handle_Ref + + case ffjtParameterIn: + goto handle_In + + case ffjtParameterName: + goto handle_Name + + case ffjtParameterDescription: + goto handle_Description + + case ffjtParameterRequired: + goto handle_Required + + case ffjtParameterSchema: + goto handle_Schema + + case ffjtParameternosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Ref: + + /* handler: j.Ref type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Ref = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_In: + + /* handler: j.In type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.In = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Required: + + /* handler: j.Required type=bool kind=bool quoted=false*/ + + { + if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) + } + } + + { + if tok == fflib.FFTok_null { + + } else { + tmpb := fs.Output.Bytes() + + if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { + + j.Required = true + + } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { + + j.Required = false + + } else { + err = errors.New("unexpected bytes for true/false value") + return fs.WrapErr(err) + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Schema: + + /* handler: j.Schema type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Schema = nil + + } else { + + if j.Schema == nil { + j.Schema = new(Schema) + } + + err = j.Schema.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Path) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Path) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Ref) != 0 { + buf.WriteString(`"$ref":`) + fflib.WriteJsonString(buf, string(j.Ref)) + buf.WriteByte(',') + } + if len(j.Summary) != 0 { + buf.WriteString(`"summary":`) + fflib.WriteJsonString(buf, string(j.Summary)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if j.Get != nil { + if true { + buf.WriteString(`"get":`) + + { + + err = j.Get.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Post != nil { + if true { + buf.WriteString(`"post":`) + + { + + err = j.Post.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Patch != nil { + if true { + buf.WriteString(`"patch":`) + + { + + err = j.Patch.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Put != nil { + if true { + buf.WriteString(`"put":`) + + { + + err = j.Put.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Delete != nil { + if true { + buf.WriteString(`"delete":`) + + { + + err = j.Delete.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtPathbase = iota + ffjtPathnosuchkey + + ffjtPathRef + + ffjtPathSummary + + ffjtPathDescription + + ffjtPathGet + + ffjtPathPost + + ffjtPathPatch + + ffjtPathPut + + ffjtPathDelete +) + +var ffjKeyPathRef = []byte("$ref") + +var ffjKeyPathSummary = []byte("summary") + +var ffjKeyPathDescription = []byte("description") + +var ffjKeyPathGet = []byte("get") + +var ffjKeyPathPost = []byte("post") + +var ffjKeyPathPatch = []byte("patch") + +var ffjKeyPathPut = []byte("put") + +var ffjKeyPathDelete = []byte("delete") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Path) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Path) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtPathbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtPathnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case '$': + + if bytes.Equal(ffjKeyPathRef, kn) { + currentKey = ffjtPathRef + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyPathDescription, kn) { + currentKey = ffjtPathDescription + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyPathDelete, kn) { + currentKey = ffjtPathDelete + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'g': + + if bytes.Equal(ffjKeyPathGet, kn) { + currentKey = ffjtPathGet + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeyPathPost, kn) { + currentKey = ffjtPathPost + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyPathPatch, kn) { + currentKey = ffjtPathPatch + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyPathPut, kn) { + currentKey = ffjtPathPut + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyPathSummary, kn) { + currentKey = ffjtPathSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathDelete, kn) { + currentKey = ffjtPathDelete + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathPut, kn) { + currentKey = ffjtPathPut + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathPatch, kn) { + currentKey = ffjtPathPatch + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyPathPost, kn) { + currentKey = ffjtPathPost + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathGet, kn) { + currentKey = ffjtPathGet + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyPathDescription, kn) { + currentKey = ffjtPathDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyPathSummary, kn) { + currentKey = ffjtPathSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.AsciiEqualFold(ffjKeyPathRef, kn) { + currentKey = ffjtPathRef + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtPathnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtPathRef: + goto handle_Ref + + case ffjtPathSummary: + goto handle_Summary + + case ffjtPathDescription: + goto handle_Description + + case ffjtPathGet: + goto handle_Get + + case ffjtPathPost: + goto handle_Post + + case ffjtPathPatch: + goto handle_Patch + + case ffjtPathPut: + goto handle_Put + + case ffjtPathDelete: + goto handle_Delete + + case ffjtPathnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Ref: + + /* handler: j.Ref type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Ref = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Summary: + + /* handler: j.Summary type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Summary = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Get: + + /* handler: j.Get type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Get = nil + + } else { + + if j.Get == nil { + j.Get = new(Operation) + } + + err = j.Get.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Post: + + /* handler: j.Post type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Post = nil + + } else { + + if j.Post == nil { + j.Post = new(Operation) + } + + err = j.Post.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Patch: + + /* handler: j.Patch type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Patch = nil + + } else { + + if j.Patch == nil { + j.Patch = new(Operation) + } + + err = j.Patch.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Put: + + /* handler: j.Put type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Put = nil + + } else { + + if j.Put == nil { + j.Put = new(Operation) + } + + err = j.Put.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Delete: + + /* handler: j.Delete type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Delete = nil + + } else { + + if j.Delete == nil { + j.Delete = new(Operation) + } + + err = j.Delete.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *RequestBody) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *RequestBody) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Content) != 0 { + buf.WriteString(`"content":`) + /* Falling back. type=openapi.Content kind=map */ + err = buf.Encode(j.Content) + if err != nil { + return err + } + buf.WriteByte(',') + } + if j.Required != false { + if j.Required { + buf.WriteString(`"required":true`) + } else { + buf.WriteString(`"required":false`) + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtRequestBodybase = iota + ffjtRequestBodynosuchkey + + ffjtRequestBodyDescription + + ffjtRequestBodyContent + + ffjtRequestBodyRequired +) + +var ffjKeyRequestBodyDescription = []byte("description") + +var ffjKeyRequestBodyContent = []byte("content") + +var ffjKeyRequestBodyRequired = []byte("required") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *RequestBody) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *RequestBody) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtRequestBodybase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtRequestBodynosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyRequestBodyContent, kn) { + currentKey = ffjtRequestBodyContent + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyRequestBodyDescription, kn) { + currentKey = ffjtRequestBodyDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'r': + + if bytes.Equal(ffjKeyRequestBodyRequired, kn) { + currentKey = ffjtRequestBodyRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyRequestBodyRequired, kn) { + currentKey = ffjtRequestBodyRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyRequestBodyContent, kn) { + currentKey = ffjtRequestBodyContent + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyRequestBodyDescription, kn) { + currentKey = ffjtRequestBodyDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtRequestBodynosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtRequestBodyDescription: + goto handle_Description + + case ffjtRequestBodyContent: + goto handle_Content + + case ffjtRequestBodyRequired: + goto handle_Required + + case ffjtRequestBodynosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Content: + + /* handler: j.Content type=openapi.Content kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Content", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Content = nil + } else { + + j.Content = make(map[string]Media, 0) + + wantVal := true + + for { + + var k string + + var tmpJContent Media + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJContent type=openapi.Media kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJContent.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Content[k] = tmpJContent + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Required: + + /* handler: j.Required type=bool kind=bool quoted=false*/ + + { + if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) + } + } + + { + if tok == fflib.FFTok_null { + + } else { + tmpb := fs.Output.Bytes() + + if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { + + j.Required = true + + } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { + + j.Required = false + + } else { + err = errors.New("unexpected bytes for true/false value") + return fs.WrapErr(err) + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Response) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Response) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Content) != 0 { + buf.WriteString(`"content":`) + /* Falling back. type=openapi.Content kind=map */ + err = buf.Encode(j.Content) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtResponsebase = iota + ffjtResponsenosuchkey + + ffjtResponseDescription + + ffjtResponseContent +) + +var ffjKeyResponseDescription = []byte("description") + +var ffjKeyResponseContent = []byte("content") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Response) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Response) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtResponsebase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtResponsenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyResponseContent, kn) { + currentKey = ffjtResponseContent + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyResponseDescription, kn) { + currentKey = ffjtResponseDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyResponseContent, kn) { + currentKey = ffjtResponseContent + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyResponseDescription, kn) { + currentKey = ffjtResponseDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtResponsenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtResponseDescription: + goto handle_Description + + case ffjtResponseContent: + goto handle_Content + + case ffjtResponsenosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Content: + + /* handler: j.Content type=openapi.Content kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Content", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Content = nil + } else { + + j.Content = make(map[string]Media, 0) + + wantVal := true + + for { + + var k string + + var tmpJContent Media + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJContent type=openapi.Media kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJContent.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Content[k] = tmpJContent + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Schema) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Schema) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Ref) != 0 { + buf.WriteString(`"$ref":`) + fflib.WriteJsonString(buf, string(j.Ref)) + buf.WriteByte(',') + } + if len(j.Type) != 0 { + buf.WriteString(`"type":`) + fflib.WriteJsonString(buf, string(j.Type)) + buf.WriteByte(',') + } + if len(j.Format) != 0 { + buf.WriteString(`"format":`) + fflib.WriteJsonString(buf, string(j.Format)) + buf.WriteByte(',') + } + if len(j.Properties) != 0 { + buf.WriteString(`"properties":`) + /* Falling back. type=openapi.Properties kind=map */ + err = buf.Encode(j.Properties) + if err != nil { + return err + } + buf.WriteByte(',') + } + if j.Items != nil { + if true { + buf.WriteString(`"items":`) + + { + + err = j.Items.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if len(j.AnyOf) != 0 { + buf.WriteString(`"anyOf":`) + if j.AnyOf != nil { + buf.WriteString(`[`) + for i, v := range j.AnyOf { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Enum) != 0 { + buf.WriteString(`"enum":`) + if j.Enum != nil { + buf.WriteString(`[`) + for i, v := range j.Enum { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if j.Example != nil { + buf.WriteString(`"example":`) + /* Interface types must use runtime reflection. type=interface {} kind=interface */ + err = buf.Encode(j.Example) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtSchemabase = iota + ffjtSchemanosuchkey + + ffjtSchemaDescription + + ffjtSchemaRef + + ffjtSchemaType + + ffjtSchemaFormat + + ffjtSchemaProperties + + ffjtSchemaItems + + ffjtSchemaAnyOf + + ffjtSchemaEnum + + ffjtSchemaExample +) + +var ffjKeySchemaDescription = []byte("description") + +var ffjKeySchemaRef = []byte("$ref") + +var ffjKeySchemaType = []byte("type") + +var ffjKeySchemaFormat = []byte("format") + +var ffjKeySchemaProperties = []byte("properties") + +var ffjKeySchemaItems = []byte("items") + +var ffjKeySchemaAnyOf = []byte("anyOf") + +var ffjKeySchemaEnum = []byte("enum") + +var ffjKeySchemaExample = []byte("example") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Schema) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Schema) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtSchemabase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtSchemanosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case '$': + + if bytes.Equal(ffjKeySchemaRef, kn) { + currentKey = ffjtSchemaRef + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'a': + + if bytes.Equal(ffjKeySchemaAnyOf, kn) { + currentKey = ffjtSchemaAnyOf + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeySchemaDescription, kn) { + currentKey = ffjtSchemaDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'e': + + if bytes.Equal(ffjKeySchemaEnum, kn) { + currentKey = ffjtSchemaEnum + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeySchemaExample, kn) { + currentKey = ffjtSchemaExample + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'f': + + if bytes.Equal(ffjKeySchemaFormat, kn) { + currentKey = ffjtSchemaFormat + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'i': + + if bytes.Equal(ffjKeySchemaItems, kn) { + currentKey = ffjtSchemaItems + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeySchemaProperties, kn) { + currentKey = ffjtSchemaProperties + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeySchemaType, kn) { + currentKey = ffjtSchemaType + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaExample, kn) { + currentKey = ffjtSchemaExample + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaEnum, kn) { + currentKey = ffjtSchemaEnum + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaAnyOf, kn) { + currentKey = ffjtSchemaAnyOf + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeySchemaItems, kn) { + currentKey = ffjtSchemaItems + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeySchemaProperties, kn) { + currentKey = ffjtSchemaProperties + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaFormat, kn) { + currentKey = ffjtSchemaFormat + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaType, kn) { + currentKey = ffjtSchemaType + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.AsciiEqualFold(ffjKeySchemaRef, kn) { + currentKey = ffjtSchemaRef + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeySchemaDescription, kn) { + currentKey = ffjtSchemaDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtSchemanosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtSchemaDescription: + goto handle_Description + + case ffjtSchemaRef: + goto handle_Ref + + case ffjtSchemaType: + goto handle_Type + + case ffjtSchemaFormat: + goto handle_Format + + case ffjtSchemaProperties: + goto handle_Properties + + case ffjtSchemaItems: + goto handle_Items + + case ffjtSchemaAnyOf: + goto handle_AnyOf + + case ffjtSchemaEnum: + goto handle_Enum + + case ffjtSchemaExample: + goto handle_Example + + case ffjtSchemanosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Ref: + + /* handler: j.Ref type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Ref = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Type: + + /* handler: j.Type type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Type = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Format: + + /* handler: j.Format type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Format = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Properties: + + /* handler: j.Properties type=openapi.Properties kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Properties", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Properties = nil + } else { + + j.Properties = make(map[string]*Schema, 0) + + wantVal := true + + for { + + var k string + + var tmpJProperties *Schema + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJProperties type=*openapi.Schema kind=ptr quoted=false*/ + + { + if tok == fflib.FFTok_null { + + tmpJProperties = nil + + } else { + + if tmpJProperties == nil { + tmpJProperties = new(Schema) + } + + err = tmpJProperties.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Properties[k] = tmpJProperties + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Items: + + /* handler: j.Items type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Items = nil + + } else { + + if j.Items == nil { + j.Items = new(Schema) + } + + err = j.Items.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_AnyOf: + + /* handler: j.AnyOf type=[]openapi.Schema kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.AnyOf = nil + } else { + + j.AnyOf = []Schema{} + + wantVal := true + + for { + + var tmpJAnyOf Schema + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJAnyOf type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJAnyOf.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.AnyOf = append(j.AnyOf, tmpJAnyOf) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Enum: + + /* handler: j.Enum type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Enum = nil + } else { + + j.Enum = []string{} + + wantVal := true + + for { + + var tmpJEnum string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJEnum type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJEnum = string(string(outBuf)) + + } + } + + j.Enum = append(j.Enum, tmpJEnum) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Example: + + /* handler: j.Example type=interface {} kind=interface quoted=false*/ + + { + /* Falling back. type=interface {} kind=interface */ + tbuf, err := fs.CaptureField(tok) + if err != nil { + return fs.WrapErr(err) + } + + err = json.Unmarshal(tbuf, &j.Example) + if err != nil { + return fs.WrapErr(err) + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Server) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Server) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Variables) != 0 { + buf.WriteString(`"variables":`) + /* Falling back. type=map[string]openapi.Variable kind=map */ + err = buf.Encode(j.Variables) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtServerbase = iota + ffjtServernosuchkey + + ffjtServerURL + + ffjtServerDescription + + ffjtServerVariables +) + +var ffjKeyServerURL = []byte("url") + +var ffjKeyServerDescription = []byte("description") + +var ffjKeyServerVariables = []byte("variables") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Server) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Server) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtServerbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtServernosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyServerDescription, kn) { + currentKey = ffjtServerDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyServerURL, kn) { + currentKey = ffjtServerURL + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'v': + + if bytes.Equal(ffjKeyServerVariables, kn) { + currentKey = ffjtServerVariables + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyServerVariables, kn) { + currentKey = ffjtServerVariables + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyServerDescription, kn) { + currentKey = ffjtServerDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyServerURL, kn) { + currentKey = ffjtServerURL + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtServernosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtServerURL: + goto handle_URL + + case ffjtServerDescription: + goto handle_Description + + case ffjtServerVariables: + goto handle_Variables + + case ffjtServernosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Variables: + + /* handler: j.Variables type=map[string]openapi.Variable kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Variables = nil + } else { + + j.Variables = make(map[string]Variable, 0) + + wantVal := true + + for { + + var k string + + var tmpJVariables Variable + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJVariables type=openapi.Variable kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJVariables.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Variables[k] = tmpJVariables + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Tag) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Tag) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if true { + buf.WriteString(`"externalDocs":`) + + { + + err = j.ExternalDocs.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtTagbase = iota + ffjtTagnosuchkey + + ffjtTagName + + ffjtTagDescription + + ffjtTagExternalDocs +) + +var ffjKeyTagName = []byte("name") + +var ffjKeyTagDescription = []byte("description") + +var ffjKeyTagExternalDocs = []byte("externalDocs") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Tag) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Tag) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtTagbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtTagnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyTagDescription, kn) { + currentKey = ffjtTagDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'e': + + if bytes.Equal(ffjKeyTagExternalDocs, kn) { + currentKey = ffjtTagExternalDocs + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'n': + + if bytes.Equal(ffjKeyTagName, kn) { + currentKey = ffjtTagName + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyTagExternalDocs, kn) { + currentKey = ffjtTagExternalDocs + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyTagDescription, kn) { + currentKey = ffjtTagDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyTagName, kn) { + currentKey = ffjtTagName + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtTagnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtTagName: + goto handle_Name + + case ffjtTagDescription: + goto handle_Description + + case ffjtTagExternalDocs: + goto handle_ExternalDocs + + case ffjtTagnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_ExternalDocs: + + /* handler: j.ExternalDocs type=openapi.ExternalDocs kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = j.ExternalDocs.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Variable) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Variable) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Enum) != 0 { + buf.WriteString(`"enum":`) + if j.Enum != nil { + buf.WriteString(`[`) + for i, v := range j.Enum { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Default) != 0 { + buf.WriteString(`"default":`) + fflib.WriteJsonString(buf, string(j.Default)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtVariablebase = iota + ffjtVariablenosuchkey + + ffjtVariableEnum + + ffjtVariableDefault + + ffjtVariableDescription +) + +var ffjKeyVariableEnum = []byte("enum") + +var ffjKeyVariableDefault = []byte("default") + +var ffjKeyVariableDescription = []byte("description") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Variable) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Variable) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtVariablebase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtVariablenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyVariableDefault, kn) { + currentKey = ffjtVariableDefault + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyVariableDescription, kn) { + currentKey = ffjtVariableDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'e': + + if bytes.Equal(ffjKeyVariableEnum, kn) { + currentKey = ffjtVariableEnum + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyVariableDescription, kn) { + currentKey = ffjtVariableDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyVariableDefault, kn) { + currentKey = ffjtVariableDefault + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyVariableEnum, kn) { + currentKey = ffjtVariableEnum + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtVariablenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtVariableEnum: + goto handle_Enum + + case ffjtVariableDefault: + goto handle_Default + + case ffjtVariableDescription: + goto handle_Description + + case ffjtVariablenosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Enum: + + /* handler: j.Enum type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Enum = nil + } else { + + j.Enum = []string{} + + wantVal := true + + for { + + var tmpJEnum string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJEnum type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJEnum = string(string(outBuf)) + + } + } + + j.Enum = append(j.Enum, tmpJEnum) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Default: + + /* handler: j.Default type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Default = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go new file mode 100644 index 00000000..a0f22c36 --- /dev/null +++ b/v3/internal/plugin/gokit/plugin.go @@ -0,0 +1,321 @@ +package gokit + +import ( + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "path" + "path/filepath" + "reflect" + + "github.com/imdario/mergo" + "github.com/mitchellh/mapstructure" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/generator" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" +) + +func init() { + swipe.RegisterPlugin(&Plugin{}) +} + +type override struct { +} + +func (o override) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { + //if typ == reflect.TypeOf(time.Time{}) { + return func(dst, src reflect.Value) error { + if dst.CanSet() { + + if dst.IsZero() { + + } + + //if t.overwrite { + // isZero := src.MethodByName("IsZero") + // + // result := isZero.Call([]reflect.Value{}) + // if !result[0].Bool() { + // dst.Set(src) + // } + //} else { + // isZero := dst.MethodByName("IsZero") + // + // result := isZero.Call([]reflect.Value{}) + // if result[0].Bool() { + // dst.Set(src) + // } + //} + } + return nil + } + //} + //return nil +} + +type Plugin struct { + config config.Config +} + +func (p *Plugin) ID() string { + return "Gokit" +} + +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *option.Build, options map[string]interface{}) []error { + p.config = config.Config{} + if err := mapstructure.Decode(options, &p.config); err != nil { + return []error{err} + } + errs := p.validateConfig() + if len(errs) > 0 { + return errs + } + _, appName := path.Split(module.Path) + p.config.AppName = strcase.ToCamel(appName) + + funcDeclTypes := makeFuncDeclTypes(cfg.Packages) + + p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, cfg.Packages, p.config.Interfaces) + p.config.MethodOptionsMap = map[string]config.MethodOption{} + + for _, methodOption := range p.config.MethodOptions { + sig := methodOption.Signature.Type.(*option.SignType) + recvNamed := sig.Recv.(*option.NamedType) + p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption + } + + for _, iface := range p.config.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + recvNamed := m.Sig.Recv.(*option.NamedType) + + dstMethodOption := p.config.MethodDefaultOptions + srcMethodOption, ok := p.config.MethodOptionsMap[recvNamed.Name.Value+m.Name.Value] + if ok { + if err := mergo.Merge(&dstMethodOption, &srcMethodOption, mergo.WithOverride); err != nil { + errs = append(errs, err) + continue + } + } + + if !p.config.LoggingEnable && dstMethodOption.Logging.Value { + p.config.LoggingEnable = true + } + if !p.config.InstrumentingEnable && dstMethodOption.Instrumenting.Value { + p.config.InstrumentingEnable = true + } + + if p.config.JSONRPCEnable == nil && dstMethodOption.RESTPath != nil { + pathVars, err := pathVars(dstMethodOption.RESTPath.Value) + if err != nil { + errs = append(errs, err) + continue + } + dstMethodOption.RESTPathVars = pathVars + } + p.config.MethodOptionsMap[recvNamed.Name.Value+m.Name.Value] = dstMethodOption + } + } + + p.config.OpenapiMethodTags = map[string][]string{} + + for _, o := range p.config.OpenapiTags { + for _, m := range o.Methods { + sig := m.Type.(*option.SignType) + recv := sig.Recv.(*option.NamedType) + p.config.OpenapiMethodTags[recv.Name.Value+m.Name.Value] = o.Tags + } + } + + pkgJsonFilepath := filepath.Join(cfg.WorkDir, "package.json") + data, err := ioutil.ReadFile(pkgJsonFilepath) + if err == nil { + var packageJSON map[string]interface{} + err := json.Unmarshal(data, &packageJSON) + if err == nil { + if name, ok := packageJSON["name"].(string); ok { + p.config.JSPkgImportPath = name + } + } else { + errs = append(errs, err) + } + } + errs = append(errs, p.fillInterfacesByInternal(cfg)...) + return errs +} + +func (p *Plugin) fillInterfacesByInternal(cfg *swipe.Config) (errs []error) { + for _, iface := range p.config.Interfaces { + if iface.Named.Pkg.Module == nil { + errs = append(errs, errors.New("not add package for "+iface.Named.Pkg.Path+"."+iface.Named.Name.Value)) + continue + } + + configCache := map[string]*config.Config{} + + if iface.Named.Pkg.Module.External { + p.config.HasExternal = true + cfg.WalkBuilds(func(module *option.Module, build *option.Build) bool { + if !module.External { + return true + } + if options, ok := build.Option["Gokit"]; ok { + c := configCache[build.Pkg.Path] + if c == nil { + if err := mapstructure.Decode(options, &c); err != nil { + errs = append(errs, err) + return true + } + } + for _, iface := range p.config.Interfaces { + for _, extIface := range c.Interfaces { + if iface.Named.ID() == extIface.Named.ID() { + iface.External = &config.ExternalInterface{ + Iface: extIface, + Config: c, + Build: build, + } + } + } + } + } + return true + }) + } + } + return +} + +func (p *Plugin) validateConfig() (errs []error) { + for _, iface := range p.config.Interfaces { + if _, ok := iface.Named.Type.(*option.IfaceType); !ok { + errs = append(errs, fmt.Errorf("type is not an interface")) + } + } + return +} + +func (p *Plugin) Options() []byte { + var cfg interface{} = &config.Config{} + if o, ok := cfg.(interface{ Options() []byte }); ok { + return o.Options() + } + return nil +} + +func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { + goClientEnable := p.config.ClientsEnable.Langs.Contains("go") + jsClientEnable := p.config.ClientsEnable.Langs.Contains("js") + jsonRPCEnable := p.config.JSONRPCEnable != nil + httpServerEnable := p.config.HTTPServer != nil + useFast := p.config.HTTPFast != nil + jsonrpcDocEnable := p.config.JSONRPCDocEnable != nil + + result = append(result, + &generator.Helpers{ + Interfaces: p.config.Interfaces, + JSONRPCEnable: jsonRPCEnable, + GoClientEnable: goClientEnable, + HTTPServerEnable: httpServerEnable, + UseFast: useFast, + IfaceErrors: p.config.IfaceErrors, + }, + &generator.Endpoint{ + Interfaces: p.config.Interfaces, + HTTPServerEnable: httpServerEnable, + }, + &generator.InterfaceGenerator{ + Interfaces: p.config.Interfaces, + }, + ) + + if httpServerEnable { + if p.config.LoggingEnable { + result = append(result, &generator.Logging{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + }) + } + if p.config.InstrumentingEnable { + result = append(result, &generator.Instrumenting{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + }) + } + if p.config.OpenapiEnable != nil { + result = append(result, &generator.Openapi{ + JSONRPCEnable: jsonRPCEnable, + Contact: p.config.OpenapiContact, + Info: p.config.OpenapiInfo, + MethodTags: p.config.OpenapiMethodTags, + Licence: p.config.OpenapiLicence, + Servers: p.config.OpenapiServers, + Output: p.config.OpenapiOutput.Value, + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + IfaceErrors: p.config.IfaceErrors, + }) + } + if jsonRPCEnable { + result = append(result, &generator.JSONRPCServerGenerator{ + UseFast: useFast, + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + DefaultErrorEncoder: p.config.DefaultErrorEncoder.Value, + JSONRPCPath: p.config.JSONRPCPath.Value, + }) + if jsClientEnable { + result = append(result, &generator.JSONRPCJSClientGenerator{ + Interfaces: p.config.Interfaces, + IfaceErrors: p.config.IfaceErrors, + }) + } + if jsonrpcDocEnable { + result = append(result, &generator.JSONRPCDocGenerator{ + AppName: p.config.AppName, + JSPkgImportPath: p.config.JSPkgImportPath, + Interfaces: p.config.Interfaces, + IfaceErrors: p.config.IfaceErrors, + }) + } + if p.config.HasExternal { + result = append(result, &generator.GatewayGenerator{ + Interfaces: p.config.Interfaces, + }) + } + } else { + result = append(result, &generator.RESTServerGenerator{ + UseFast: useFast, + JSONRPCEnable: jsonRPCEnable, + MethodOptions: p.config.MethodOptionsMap, + DefaultErrorEncoder: p.config.DefaultErrorEncoder.Value, + Interfaces: p.config.Interfaces, + }) + } + } + + if goClientEnable { + result = append(result, &generator.ClientStruct{ + UseFast: useFast, + JSONRPCEnable: jsonRPCEnable, + Interfaces: p.config.Interfaces, + }) + if jsonRPCEnable { + result = append(result, &generator.JSONRPCClientGenerator{ + Interfaces: p.config.Interfaces, + UseFast: useFast, + }) + } else { + result = append(result, &generator.RESTClientGenerator{ + Interfaces: p.config.Interfaces, + UseFast: useFast, + MethodOptions: p.config.MethodOptionsMap, + }) + } + } + return +} diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go new file mode 100644 index 00000000..673a945e --- /dev/null +++ b/v3/internal/plugin/gokit/utils.go @@ -0,0 +1,223 @@ +package gokit + +import ( + "fmt" + "go/ast" + "go/constant" + "go/token" + stdtypes "go/types" + "strings" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + + "golang.org/x/tools/go/ast/astutil" + "golang.org/x/tools/go/packages" +) + +func httpBraceIndices(s string) ([]int, error) { + var level, idx int + var idxs []int + for i := 0; i < len(s); i++ { + switch s[i] { + case '{': + if level++; level == 1 { + idx = i + } + case '}': + if level--; level == 0 { + idxs = append(idxs, idx, i+1) + } else if level < 0 { + return nil, fmt.Errorf("mux: unbalanced braces in %q", s) + } + } + } + if level != 0 { + return nil, fmt.Errorf("mux: unbalanced braces in %q", s) + } + return idxs, nil +} + +func pathVars(path string) (map[string]string, error) { + idxs, err := httpBraceIndices(path) + if err != nil { + return nil, err + } + pathVars := make(map[string]string, len(idxs)) + if len(idxs) > 0 { + var end int + for i := 0; i < len(idxs); i += 2 { + end = idxs[i+1] + parts := strings.SplitN(path[idxs[i]+1:end-1], ":", 2) + name := parts[0] + regexp := "" + if len(parts) == 2 { + regexp = parts[1] + } + pathVars[name] = regexp + } + } + return pathVars, nil +} + +type typeInfo struct { + obj stdtypes.Object + stmtList []ast.Stmt + pkg *packages.Package +} + +func extractValues(pkg *packages.Package, stmtList []ast.Stmt) (values []interface{}) { + for _, stmt := range stmtList { + if ret, ok := stmt.(*ast.ReturnStmt); ok { + for _, result := range ret.Results { + if l, ok := result.(*ast.BasicLit); ok { + if v, ok := pkg.TypesInfo.Types[l]; ok { + values = append(values, constant.Val(v.Value)) + } + } + } + } + } + return +} + +func findErrorsRecursive(funcDecl map[string]typeInfo, pkgs []*packages.Package, stmts []ast.Stmt) (result []config.Error) { + for _, stmt := range stmts { + ret, ok := stmt.(*ast.ReturnStmt) + if !ok { + continue + } + for _, r := range ret.Results { + switch t := r.(type) { + default: + named := extractNamed(pkgs, t) + if named != nil { + for i := 0; i < named.NumMethods(); i++ { + m := named.Method(i) + if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { + info, ok := funcDecl[m.Id()] + if !ok { + continue + } + values := extractValues(info.pkg, info.stmtList) + if len(values) != 1 { + continue + } + val, ok := values[0].(int64) + if !ok { + continue + } + tp := config.RESTErrorType + if m.Name() == "ErrorCode" { + tp = config.JRPCErrorType + } + result = append(result, config.Error{ + PkgName: named.Obj().Pkg().Name(), + PkgPath: named.Obj().Pkg().Path(), + IsPointer: named.IsPointer, + Name: named.Obj().Name(), + Type: tp, + Code: val, + }) + } + } + } + case *ast.CallExpr: + if id, ok := t.Fun.(*ast.Ident); ok && id.Obj != nil { + if f, ok := id.Obj.Decl.(*ast.FuncDecl); ok { + result = append(result, findErrorsRecursive(funcDecl, pkgs, f.Body.List)...) + } + } else if sel, ok := t.Fun.(*ast.SelectorExpr); ok { + if xID, ok := sel.X.(*ast.Ident); ok { + if info, ok := funcDecl[xID.Name+"."+sel.Sel.Name]; ok { + result = append(result, findErrorsRecursive(funcDecl, pkgs, info.stmtList)...) + } + } + } + } + } + } + return +} + +func findErrors(funcDecl map[string]typeInfo, pkgs []*packages.Package, stmts []ast.Stmt) []config.Error { + return findErrorsRecursive(funcDecl, pkgs, stmts) +} + +type named struct { + *stdtypes.Named + IsPointer bool +} + +func extractNamedRecursive(pkgs []*packages.Package, expr ast.Expr, isPointer bool) *named { + expr = astutil.Unparen(expr) + switch t := expr.(type) { + case *ast.CompositeLit: + for _, pkg := range pkgs { + if v, ok := pkg.TypesInfo.Types[t.Type]; ok { + if n, ok := v.Type.(*stdtypes.Named); ok { + return &named{Named: n, IsPointer: isPointer} + } + } + } + case *ast.StarExpr: + return extractNamedRecursive(pkgs, t.X, isPointer) + case *ast.UnaryExpr: + return extractNamedRecursive(pkgs, t.X, t.Op == token.AND) + } + return nil +} + +func extractNamed(pkgs []*packages.Package, expr ast.Expr) *named { + return extractNamedRecursive(pkgs, expr, false) +} + +func findIfaceErrors(funcDecl map[string]typeInfo, pkgs []*packages.Package, ifaces []*config.Interface) (result map[string]map[string][]config.Error) { + result = map[string]map[string][]config.Error{} + for _, info := range funcDecl { + if info.obj == nil { + continue + } + sig, ok := info.obj.Type().(*stdtypes.Signature) + if !ok || sig.Recv() == nil { + continue + } + for _, iface := range ifaces { + if ptr, ok := sig.Recv().Type().(*stdtypes.Pointer); ok { + imp := stdtypes.Implements(ptr.Underlying(), iface.Named.Type.(*option.IfaceType).Origin) + if imp { + if _, ok := result[iface.Named.Name.Value]; !ok { + result[iface.Named.Name.Value] = map[string][]config.Error{} + } + result[iface.Named.Name.Value][info.obj.Name()] = findErrors(funcDecl, pkgs, info.stmtList) + } + } + } + } + return +} + +func makeFuncDeclTypes(pkgs []*packages.Package) (result map[string]typeInfo) { + result = make(map[string]typeInfo, 1024) + for _, pkg := range pkgs { + if pkg.Name == "swipe" { + continue + } + for _, syntax := range pkg.Syntax { + for _, decl := range syntax.Decls { + switch t := decl.(type) { + case *ast.FuncDecl: + obj := pkg.TypesInfo.ObjectOf(t.Name) + if obj != nil { + result[pkg.Name+"."+t.Name.Name] = typeInfo{ + obj: obj, + pkg: pkg, + stmtList: t.Body.List, + } + } + } + } + } + } + return +} diff --git a/v3/internal/stcreator/config.go b/v3/internal/stcreator/config.go new file mode 100644 index 00000000..9bf0f38c --- /dev/null +++ b/v3/internal/stcreator/config.go @@ -0,0 +1,6 @@ +package stcreator + +type Config struct { + Commands []string `yaml:"commands"` + Loaders Loaders `yaml:"loaders"` +} diff --git a/v3/internal/stcreator/loader.go b/v3/internal/stcreator/loader.go new file mode 100644 index 00000000..802d0b2d --- /dev/null +++ b/v3/internal/stcreator/loader.go @@ -0,0 +1,55 @@ +package stcreator + +import ( + "errors" + "fmt" + + "gopkg.in/yaml.v3" +) + +type yamlLoader struct { + Type string `yaml:"type"` + Params yaml.Node `yaml:"params"` +} + +type Loaders []LoaderParams + +type LoaderParams interface { + Name() string + Process() ([]StructMetadata, error) +} + +func (l *Loaders) MarshalYAML() (interface{}, error) { + return l, nil +} + +func (l *Loaders) UnmarshalYAML(node *yaml.Node) error { + var yamlLoaders []yamlLoader + var dt LoaderParams + if err := node.Decode(&yamlLoaders); err != nil { + return errors.New(err.Error()) + } + ll := make([]LoaderParams, len(yamlLoaders)) + for i, loader := range yamlLoaders { + if f, ok := LoaderFactories[loader.Type]; ok { + dt = f() + if err := loader.Params.Decode(dt); err != nil { + return err + } + ll[i] = dt + } else { + return fmt.Errorf("could not find loader type %s", loader.Type) + } + } + *l = ll + return nil +} + +var LoaderFactories = map[string]func() LoaderParams{ + new(MongoLoader).Name(): func() LoaderParams { + return new(MongoLoader) + }, + new(PostgresLoader).Name(): func() LoaderParams { + return new(PostgresLoader) + }, +} diff --git a/v3/internal/stcreator/mongo_loader.go b/v3/internal/stcreator/mongo_loader.go new file mode 100644 index 00000000..de58a124 --- /dev/null +++ b/v3/internal/stcreator/mongo_loader.go @@ -0,0 +1,13 @@ +package stcreator + +type MongoLoader struct { + Host string `yaml:"host"` +} + +func (*MongoLoader) Name() string { + return "mongo" +} + +func (*MongoLoader) Process() (result []StructMetadata, err error) { + return +} diff --git a/v3/internal/stcreator/postgres_loader.go b/v3/internal/stcreator/postgres_loader.go new file mode 100644 index 00000000..c890b8dc --- /dev/null +++ b/v3/internal/stcreator/postgres_loader.go @@ -0,0 +1,281 @@ +package stcreator + +import ( + "database/sql" + + "github.com/achiku/varfmt" + _ "github.com/lib/pq" + "github.com/swipe-io/strcase" +) + +const tablesSQL = ` +SELECT c.relkind AS type, c.relname AS table_name +FROM pg_class c +JOIN ONLY pg_namespace n ON n.oid = c.relnamespace +WHERE n.nspname = $1 +AND c.relkind = 'r' +ORDER BY c.relname; +` + +const columnsTableSQL = ` +SELECT + a.attname AS name, + a.attnotnull AS not_null, + COALESCE(ct.contype = 'p', false) AS is_primary_key, + COALESCE(pg_get_expr(ad.adbin, ad.adrelid), '') AS default_value, + CASE + WHEN a.atttypid = ANY ('{int,int8,int2}'::regtype[]) + AND EXISTS ( + SELECT 1 FROM pg_attrdef ad + WHERE ad.adrelid = a.attrelid + AND ad.adnum = a.attnum + AND ad.adbin = 'nextval(''' + || (pg_get_serial_sequence (a.attrelid::regclass::text + , a.attname))::regclass + || '''::regclass)' + ) + THEN CASE a.atttypid + WHEN 'int'::regtype THEN 'serial' + WHEN 'int8'::regtype THEN 'bigserial' + WHEN 'int2'::regtype THEN 'smallserial' + END + WHEN a.atttypid = ANY ('{uuid}'::regtype[]) AND COALESCE(pg_get_expr(ad.adbin, ad.adrelid), '') != '' + THEN 'autogenuuid' + ELSE format_type(a.atttypid, a.atttypmod) + END AS data_type +FROM pg_attribute a +JOIN ONLY pg_class c ON c.oid = a.attrelid +JOIN ONLY pg_namespace n ON n.oid = c.relnamespace +LEFT JOIN pg_constraint ct ON ct.conrelid = c.oid +AND a.attnum = ANY(ct.conkey) AND ct.contype = 'p' +LEFT JOIN pg_attrdef ad ON ad.adrelid = c.oid AND ad.adnum = a.attnum +WHERE a.attisdropped = false +AND n.nspname = $1 +AND c.relname = $2 +AND a.attnum > 0 +ORDER BY a.attnum; +` + +type MapType struct { + Type, NullType string + DBTypes []string +} + +type MapTypes []MapType + +func (m MapTypes) At(t string) (MapType, bool) { + for _, mapType := range m { + for _, dbType := range mapType.DBTypes { + if t == dbType { + return mapType, true + } + } + } + return MapType{}, false +} + +var mapTypesPkg = map[string]string{ + "uuid.UUID": "github.com/google/uuid", + "*uuid.UUID": "github.com/google/uuid", + "pg.NullTime": "github.com/go-pg/pg/v10", + "sql.NullString": "database/sql", + "sql.NullInt64": "database/sql", + "sql.NullFloat64": "database/sql", + "sql.NullTime": "database/sql", + "time.Duration": "time", + "time.Time": "time", + "*time.Duration": "time", +} + +var mapTypes = MapTypes{ + { + Type: "uuid.UUID", + NullType: "*uuid.UUID", + DBTypes: []string{"uuid"}, + }, + { + Type: "string", + NullType: "sql.NullString", + DBTypes: []string{"character", "character varying", "text", "money"}, + }, + { + Type: "time.Time", + NullType: "pg.NullTime", + DBTypes: []string{"time with time zone", "time without time zone", "timestamp without time zone", "timestamp with time zone", "date"}, + }, + { + Type: "bool", + NullType: "sql.NullBool", + DBTypes: []string{"boolean"}, + }, + { + Type: "int16", + NullType: "sql.NullInt64", + DBTypes: []string{"smallint"}, + }, + { + Type: "int", + NullType: "sql.NullInt64", + DBTypes: []string{"integer"}, + }, + { + Type: "int64", + NullType: "sql.NullInt64", + DBTypes: []string{"bigint"}, + }, + { + Type: "uint16", + NullType: "sql.NullInt64", + DBTypes: []string{"smallserial"}, + }, + { + Type: "uint32", + NullType: "sql.NullInt64", + DBTypes: []string{"serial"}, + }, { + Type: "float32", + NullType: "sql.NullFloat64", + DBTypes: []string{"real"}, + }, + { + Type: "float64", + NullType: "sql.NullFloat64", + DBTypes: []string{"numeric", "double precision"}, + }, + { + Type: "byte", + NullType: "byte", + DBTypes: []string{"bytea"}, + }, + { + Type: "[]byte", + NullType: "[]byte", + DBTypes: []string{"json", "jsonb"}, + }, + { + Type: "[]byte", + NullType: "[]byte", + DBTypes: []string{"xml"}, + }, + { + Type: "time.Duration", + NullType: "*time.Duration", + DBTypes: []string{"interval"}, + }, + { + Type: "[]int", + NullType: "[]int", + DBTypes: []string{"integer[]"}, + }, + { + Type: "[]string", + NullType: "[]string", + DBTypes: []string{"string[]"}, + }, +} + +type pgTable struct { + Name string + Type string +} + +type pgTableParam struct { + Name string + Type string + NotNull bool + Primary bool + Default string +} + +type PostgresLoader struct { + URL string `yaml:"url"` + Tables []string `yaml:"tables"` +} + +func (*PostgresLoader) Name() string { + return "postgres" +} + +func (l *PostgresLoader) Process() (result []StructMetadata, err error) { + conn, err := sql.Open("postgres", l.URL) + if err != nil { + return result, err + } + rows, err := conn.Query(tablesSQL, "public") + if err != nil { + return result, err + } + tables := map[string]*pgTable{} + for rows.Next() { + t := &pgTable{} + err := rows.Scan(&t.Type, &t.Name) + if err != nil { + return result, err + } + tables[t.Name] = t + } + for _, table := range l.Tables { + if t, ok := tables[table]; ok { + name := t.Name + if name[len(name)-1] == 's' { + name = name[:len(name)-1] + } + structName := varfmt.PublicVarName(name) + sm := StructMetadata{ + Name: structName, + LowerName: strcase.ToLowerCamel(structName), + } + rows, err := conn.Query(columnsTableSQL, "public", t.Name) + if err != nil { + return result, err + } + + existsPkgs := map[string]struct{}{} + + for rows.Next() { + p := &pgTableParam{} + err := rows.Scan(&p.Name, &p.NotNull, &p.Primary, &p.Default, &p.Type) + if err != nil { + return result, err + } + mt, ok := mapTypes.At(p.Type) + if !ok { + mt = MapType{ + Type: "interface{}", + NullType: "interface{}", + } + } + paramName := varfmt.PublicVarName(p.Name) + sp := StructParam{ + Name: paramName, + LowerName: strcase.ToLowerCamel(paramName), + RawType: mt.Type, + ColumnName: p.Name, + Primary: p.Primary, + NotNull: p.NotNull, + Default: p.Default, + } + if sp.NotNull { + sp.Type = mt.Type + } else { + sp.Type = mt.NullType + } + if sp.Primary { + sm.Primary = sp + } + if pkg, ok := mapTypesPkg[sp.Type]; ok { + if _, ok := existsPkgs[pkg]; !ok { + sm.Imports = append(sm.Imports, StructImport{ + Pkg: pkg, + Param: sp, + }) + existsPkgs[pkg] = struct{}{} + } + } + sm.Params = append(sm.Params, sp) + } + result = append(result, sm) + } + } + return +} diff --git a/v3/internal/stcreator/project.go b/v3/internal/stcreator/project.go new file mode 100644 index 00000000..cc79ada8 --- /dev/null +++ b/v3/internal/stcreator/project.go @@ -0,0 +1,295 @@ +package stcreator + +import ( + "bytes" + "fmt" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "strconv" + "strings" + "text/template" + + "github.com/achiku/varfmt" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/format" + + "gopkg.in/yaml.v3" +) + +type FormatError struct { + Err error + Data []byte +} + +func (e FormatError) Error() string { + var lines []string + for i, b := range bytes.Split(e.Data, []byte("\n")) { + lines = append(lines, fmt.Sprintf("%d %s", i+1, string(b))) + } + return fmt.Sprintf("%s:\n%s", e.Err.Error(), strings.Join(lines, "\n")) +} + +var funcs = template.FuncMap{ + "ToLowerCamel": strcase.ToLowerCamel, + "ToCamel": strcase.ToCamel, + "ToSnake": strcase.ToSnake, + "ToKebab": strcase.ToKebab, + "PublicVarName": varfmt.PublicVarName, + "Add": func(v, n int) int { + return v + n + }, +} + +type StructParam struct { + Name, LowerName, ColumnName string + Type, RawType string + Primary bool + NotNull bool + Default string +} + +type Imports []StructImport + +func (i Imports) At(p StructParam) string { + for _, structImport := range i { + if structImport.Param == p { + return strconv.Quote(structImport.Pkg) + } + } + return "" +} + +type StructImport struct { + Pkg string + Param StructParam +} + +type StructMetadata struct { + Name, LowerName string + Primary StructParam + Params []StructParam + Imports Imports +} + +type Entity struct { + Name string +} + +type Data struct { + Structure []Node `yaml:"structure"` +} + +type Import struct { + Resource string `yaml:"resource"` +} + +type Project struct { + Structs []StructMetadata +} + +type Node struct { + Name string `yaml:"name"` + Template string `yaml:"template"` + Data map[string]interface{} `yaml:"data"` + Children []Node `yaml:"children"` +} + +type ProjectLoader struct { + projectID string + projectName string + pkgName string + wd string +} + +func (l *ProjectLoader) loadEntities(loaders Loaders) (result []StructMetadata, err error) { + for _, loader := range loaders { + structs, err := loader.Process() + if err != nil { + return nil, err + } + result = append(result, structs...) + } + return +} + +func (l *ProjectLoader) exists(path string) bool { + if _, err := os.Stat(path); os.IsNotExist(err) { + return false + } + return true +} + +func (l *ProjectLoader) createDirIfNeeded(path string) error { + if !l.exists(path) { + if err := os.Mkdir(path, os.ModePerm); err != nil { + return err + } + return nil + } + return nil +} + +func (l *ProjectLoader) createFile(filename string, data []byte) error { + f, err := os.Create(filename) + if err != nil { + return err + } + defer func() { + _ = f.Close() + if err != nil { + _ = os.Remove(f.Name()) + } + }() + if filepath.Ext(filename) == ".go" { + fmtData, err := format.Source(data) + if err != nil { + return fmt.Errorf("filename: %s: %v", filename, FormatError{ + Err: err, + Data: data, + }) + } + data = fmtData + } + _, err = f.Write(data) + if err != nil { + return err + } + return nil +} + +func (l *ProjectLoader) normalizeName(filename string) string { + return strings.TrimSuffix(filename, ".tpl") +} + +func (l *ProjectLoader) executeTemplate(name string, data []byte, varsMap interface{}) ([]byte, error) { + var buf bytes.Buffer + t, err := template.New(name).Funcs(funcs).Parse(string(data)) + if err != nil { + return nil, err + } + if err := t.Execute(&buf, varsMap); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +func (l *ProjectLoader) loadConfig(configFilepath string) (*Config, error) { + var cfg Config + if configFilepath != "" { + configData, err := ioutil.ReadFile(configFilepath) + if err != nil { + return nil, err + } + if err := yaml.Unmarshal(configData, &cfg); err != nil { + return nil, err + } + } + return &cfg, nil +} + +func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { + cfg, err := l.loadConfig(configFilepath) + if err != nil { + return nil, err + } + structs, err := l.loadEntities(cfg.Loaders) + if err != nil { + return nil, err + } + wd := filepath.Join(l.wd, l.projectID) + err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + outputPath := filepath.Join(wd, strings.Replace(path, dir, "", -1)) + if !info.IsDir() { + fileData, err := ioutil.ReadFile(path) + if err != nil { + return err + } + if strings.HasSuffix(info.Name(), ".tpl") { + normalizeName := l.normalizeName(info.Name()) + if strings.HasPrefix(info.Name(), "$struct") { + for i, st := range structs { + data, err := l.executeTemplate(st.Name, fileData, map[string]interface{}{ + "Structs": structs, + "Struct": st, + "Index": i, + "PkgName": l.pkgName, + "ProjectName": l.projectName, + "ProjectID": l.projectID, + }) + if err != nil { + return err + } + filename := strings.Replace(normalizeName, "$struct", strcase.ToSnake(st.Name), -1) + if err := l.createFile(filepath.Join(filepath.Dir(outputPath), filename), data); err != nil { + return err + } + } + } else { + data, err := l.executeTemplate(info.Name(), fileData, map[string]interface{}{ + "Structs": structs, + "PkgName": l.pkgName, + "ProjectName": l.projectName, + "ProjectID": l.projectID, + }) + if err != nil { + return err + } + if err := l.createFile(filepath.Join(filepath.Dir(outputPath), normalizeName), data); err != nil { + return err + } + } + return nil + } else { + if err := l.createFile(filepath.Join(filepath.Dir(outputPath), info.Name()), fileData); err != nil { + return err + } + } + } else { + if err := l.createDirIfNeeded(outputPath); err != nil { + return err + } + } + return nil + }) + if err != nil { + return nil, err + } + for _, command := range cfg.Commands { + command = strings.TrimSpace(command) + parts := strings.Split(command, " ") + if len(parts) > 0 { + name := parts[0] + rawArgs := parts[1:] + args := make([]string, len(rawArgs)) + for i, arg := range rawArgs { + args[i] = strings.TrimSpace(arg) + } + if name != "" { + cmd := exec.Command(name, args...) + cmd.Dir = wd + stderr, err := cmd.StderrPipe() + if err != nil { + return nil, err + } + if err := cmd.Start(); err != nil { + return nil, err + } + out, err := ioutil.ReadAll(stderr) + if err != nil { + return nil, err + } + fmt.Println(string(out)) + if err := cmd.Wait(); err != nil { + return nil, err + } + } + } + } + return nil, nil +} + +func NewProjectLoader(projectName, projectID, pkgName, wd string) *ProjectLoader { + return &ProjectLoader{projectName: projectName, projectID: projectID, pkgName: pkgName, wd: wd} +} diff --git a/v3/internal/types/types.go b/v3/internal/types/types.go new file mode 100644 index 00000000..d37471a3 --- /dev/null +++ b/v3/internal/types/types.go @@ -0,0 +1,17 @@ +package types + +import ( + "go/ast" + + "golang.org/x/tools/go/packages" +) + +func Inspect(pkgs []*packages.Package, f func(p *packages.Package, n ast.Node) bool) { + for _, p := range pkgs { + for _, syntax := range p.Syntax { + ast.Inspect(syntax, func(n ast.Node) bool { + return f(p, n) + }) + } + } +} diff --git a/v3/main.go b/v3/main.go new file mode 100644 index 00000000..e24c3dec --- /dev/null +++ b/v3/main.go @@ -0,0 +1,11 @@ +package v3 + +import ( + "github.com/swipe-io/swipe/v3/cmd" + _ "github.com/swipe-io/swipe/v3/internal/plugin/config" + _ "github.com/swipe-io/swipe/v3/internal/plugin/gokit" +) + +func Main() { + cmd.Execute() +} diff --git a/v3/main2.go b/v3/main2.go new file mode 100644 index 00000000..cc0a969f --- /dev/null +++ b/v3/main2.go @@ -0,0 +1,502 @@ +package v3 + +// +//import ( +// "bytes" +// "context" +// "flag" +// "fmt" +// goast "go/ast" +// "go/doc" +// "go/parser" +// "go/token" +// "io/ioutil" +// "log" +// "os" +// "path/filepath" +// "strconv" +// "strings" +// +// "github.com/fatih/structtag" +// "github.com/google/subcommands" +// "github.com/gookit/color" +// "github.com/pterm/pterm" +// +// "github.com/swipe-io/strcase" +// "github.com/swipe-io/swipe/v3/internal/annotation" +// "github.com/swipe-io/swipe/v3/internal/ast" +// "github.com/swipe-io/swipe/v3/internal/format" +// "github.com/swipe-io/swipe/v3/internal/gitattributes" +// _ "github.com/swipe-io/swipe/v3/internal/plugin/config" +// _ "github.com/swipe-io/swipe/v3/internal/plugin/gokit" +// "github.com/swipe-io/swipe/v3/swipe" +// +// "golang.org/x/tools/go/ast/astutil" +//) +// +//var ( +// colorSuccess = color.Green.Render +// colorAccent = color.Cyan.Render +// colorFail = color.Red.Render +//) +// +//func Main() { +// subcommands.Register(subcommands.CommandsCommand(), "") +// subcommands.Register(subcommands.FlagsCommand(), "") +// subcommands.Register(subcommands.HelpCommand(), "") +// subcommands.Register(&genCmd{}, "") +// subcommands.Register(&genOptionsCmd{}, "") +// subcommands.Register(&initCmd{}, "") +// +// flag.Parse() +// +// log.SetFlags(0) +// log.SetOutput(os.Stderr) +// +// allCmds := map[string]bool{ +// "commands": true, +// "gen-opts": true, +// "init": true, +// "help": true, +// "flags": true, +// "gen": true, +// //"fix-comment": true, +// } +// +// header := pterm.DefaultHeader.WithBackgroundStyle(pterm.NewStyle(pterm.BgWhite)) +// pterm.Println(header.Sprint("Swipe - " + swipe.Version)) +// +// var code int +// if args := flag.Args(); len(args) == 0 || !allCmds[args[0]] { +// genCmd := &genCmd{} +// code = int(genCmd.Execute(context.Background(), flag.CommandLine)) +// } else { +// code = int(subcommands.Execute(context.Background())) +// } +// os.Exit(code) +//} +// +//type initCmd struct { +// verbose bool +// init bool +// swipePkg string +// wd string +//} +// +//func (*initCmd) Name() string { return "init" } +//func (*initCmd) Synopsis() string { +// return "" +//} +//func (*initCmd) Usage() string { +// return `` +//} +// +//func (cmd *initCmd) SetFlags(f *flag.FlagSet) { +// f.StringVar(&cmd.wd, "w", "", "") +//} +// +//func (cmd *initCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { +// var err error +// if cmd.wd == "" { +// cmd.wd, err = os.Getwd() +// if err != nil { +// log.Println(colorFail("failed to get working directory: "), colorFail(err)) +// return subcommands.ExitFailure +// } +// } +// log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), cmd.wd) +// for name, data := range swipe.Options() { +// buf := bytes.NewBuffer(nil) +// path := filepath.Join(cmd.wd, "pkg", "swipe", name) +// if err := os.MkdirAll(path, 0775); err != nil { +// fmt.Println(err) +// return subcommands.ExitFailure +// } +// +// buf.WriteString("package " + name + "\n\n") +// buf.Write(data) +// +// filename := filepath.Join(path, "swipe.go") +// if err := os.Remove(filename); err != nil { +// //fmt.Println(err) +// //return subcommands.ExitFailure +// } +// if err := os.WriteFile(filename, buf.Bytes(), 0755); err != nil { +// fmt.Println(err) +// return subcommands.ExitFailure +// } +// } +// return subcommands.ExitSuccess +//} +// +//type genCmd struct { +// verbose bool +// init bool +// swipePkg string +// wd string +//} +// +//func (*genCmd) Name() string { return "gen" } +//func (*genCmd) Synopsis() string { +// return "generate the *_gen.go file for each package" +//} +//func (*genCmd) Usage() string { +// return `swipe [packages] +// Given one or more packages, gen creates the config.go file for each. +// If no packages are listed, it defaults to ".". +//` +//} +// +//func (cmd *genCmd) SetFlags(f *flag.FlagSet) { +// f.BoolVar(&cmd.verbose, "v", false, "show verbose output") +// f.BoolVar(&cmd.init, "init", false, "initial swipe project") +// f.StringVar(&cmd.swipePkg, "swipe-pkg", "", "package for generating swipe options file") +// f.StringVar(&cmd.wd, "w", "", "") +//} +// +//func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { +// pterm.DefaultBox.Println("Thanks for using Swipe") +// //pterm.Println("") +// //progressbar, _ := pterm.DefaultProgressbar.WithTotal(10).Start() +// // +// //progressbar.Title = "Generate" +// //progressbar.Increment() +// //log.Printf("%s %s", color.Yellow.Render("Thanks for using"), color.LightBlue.Render("swipe")) +// +// log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) +// +// var err error +// +// if cmd.wd == "" { +// cmd.wd, err = os.Getwd() +// if err != nil { +// log.Println(colorFail("failed to get working directory: "), colorFail(err)) +// return subcommands.ExitFailure +// } +// } +// log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), cmd.wd) +// +// packages := f.Args() +// if data, err := ioutil.ReadFile(filepath.Join(cmd.wd, "pkgs")); err == nil { +// packages = append(packages, strings.Split(string(data), "\n")...) +// } +// log.Printf("%s: %s\n", color.Yellow.Render("Packages"), strings.Join(packages, ", ")) +// +// loader, errs := ast.NewLoader(cmd.wd, os.Environ(), packages) +// if len(errs) > 0 { +// for _, err := range errs { +// log.Println(colorFail(err)) +// } +// return subcommands.ExitFailure +// } +// cfg, err := swipe.GetConfig(loader) +// if err != nil { +// log.Println(colorFail(err)) +// return subcommands.ExitFailure +// } +// +// // clear all before generated files. +// _ = filepath.Walk(loader.WorkDir(), func(path string, info os.FileInfo, err error) error { +// if !strings.Contains(path, "/vendor/") { +// if !info.IsDir() { +// if strings.Contains(info.Name(), "swipe_gen_") { +// _ = os.Remove(path) +// } +// } +// } +// return nil +// }) +// +// result, errs := swipe.Generate(cfg) +// success := true +// +// if len(errs) > 0 { +// for _, err := range errs { +// log.Println(colorFail(err)) +// } +// success = false +// } +// +// diffExcludes := make([]string, 0, len(result)) +// +// for _, g := range result { +// if len(g.Errs) > 0 { +// for _, err := range g.Errs { +// log.Println(colorFail(err)) +// } +// success = false +// continue +// } +// if len(g.Content) == 0 { +// continue +// } +// +// diffExcludes = append(diffExcludes, strings.Replace(g.OutputPath, cfg.WorkDir+"/", "", -1)) +// +// dirPath := filepath.Dir(g.OutputPath) +// if err := os.MkdirAll(dirPath, 0755); err != nil { +// log.Printf("%s: failed to create dir %s: %v\n", colorSuccess(g.PkgPath), colorAccent(dirPath), colorFail(err)) +// return subcommands.ExitFailure +// } +// err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) +// if err == nil { +// if cmd.verbose { +// log.Printf("%s: wrote %s\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath)) +// } +// } else { +// log.Printf("%s: failed to write %s: %v\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath), colorFail(err)) +// success = false +// } +// } +// +// if !success { +// return subcommands.ExitFailure +// } +// +// if err := gitattributes.Generate(cfg.WorkDir, diffExcludes); err != nil { +// log.Println(colorFail(err)) +// return subcommands.ExitFailure +// } +// +// log.Println(color.LightGreen.Render("Command execution completed successfully")) +// +// return subcommands.ExitSuccess +//} +// +//type genOptionsCmd struct { +//} +// +//func (cmd *genOptionsCmd) Name() string { return "gen-opts" } +// +//func (cmd *genOptionsCmd) Synopsis() string { return "generating a plugin options" } +// +//func (cmd *genOptionsCmd) Usage() string { +// return `` +//} +// +//func (cmd *genOptionsCmd) SetFlags(set *flag.FlagSet) { +//} +// +//func (cmd *genOptionsCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { +// wd, err := filepath.Abs(f.Arg(0)) +// if err != nil { +// log.Println(colorFail("failed to get working directory: "), colorFail(err)) +// return subcommands.ExitFailure +// } +// fset := token.NewFileSet() +// d, err := parser.ParseDir(fset, wd, nil, parser.ParseComments) +// if err != nil { +// fmt.Println(err) +// return subcommands.ExitFailure +// } +// for _, file := range d { +// p := doc.New(file, "./", 0) +// for _, t := range p.Types { +// if annotations, err := annotation.Parse(t.Doc); err == nil { +// if len(t.Decl.Specs) > 0 { +// if ts, ok := t.Decl.Specs[0].(*goast.TypeSpec); ok { +// if s, ok := ts.Type.(*goast.StructType); ok { +// buf := bytes.NewBuffer(nil) +// if a, err := annotations.Get("swipe"); err == nil { +// baseTypeName := a.Value() + "Option" +// +// buf.WriteString(fmt.Sprintf("// %s\n", a.Value())) +// buf.WriteString(fmt.Sprintf("func %s(opts ...%s) {}\n", a.Value(), baseTypeName)) +// +// opts := getOpts(baseTypeName, s) +// optExists := map[string]struct{}{} +// optTypeExists := map[string]struct{}{} +// for _, opt := range opts { +// typeName := opt.typeName +// +// if !strings.HasSuffix(typeName, "Option") { +// typeName += "Option" +// } +// +// key := opt.name + ":" + typeName +// if _, ok := optTypeExists[typeName]; !ok { +// optTypeExists[typeName] = struct{}{} +// buf.WriteString(fmt.Sprintf("// %s ...\n", typeName)) +// buf.WriteString(fmt.Sprintf("type %s string\n", typeName)) +// } +// if _, ok := optExists[key]; !ok { +// optExists[key] = struct{}{} +// buf.WriteString(fmt.Sprintf("// %s ...\n", opt.name)) +// if opt.isRepeat { +// buf.WriteString("// @type:\"repeat\"\n") +// } +// paramsStr := strings.Join(opt.params, ",") +// +// optsType := opt.optsType +// if optsType != "" { +// if !strings.HasSuffix(optsType, "Option") { +// optsType += "Option" +// } +// paramsStr += ",opts ..." + optsType +// } +// +// buf.WriteString(fmt.Sprintf("func %s(%s) %s { return \"implementation not generated, run swipe\" }\n", opt.name, paramsStr, typeName)) +// } +// } +// +// data, err := format.Source(buf.Bytes()) +// if err != nil { +// log.Println(colorFail("failed generate: "), colorFail(err)) +// return subcommands.ExitFailure +// } +// +// f, err := os.Create(filepath.Join(wd, file.Name+"_gen.go")) +// if err != nil { +// log.Println(colorFail("failed generate: "), colorFail(err)) +// return subcommands.ExitFailure +// } +// _, _ = f.WriteString("package " + p.Name + "\n") +// _, _ = f.WriteString(fmt.Sprintf("func (*%s) Options() []byte { return []byte(%s)}\n", ts.Name.Name, strconv.Quote(string(data)))) +// _ = f.Close() +// } +// } +// } +// } +// } +// } +// } +// return subcommands.ExitSuccess +//} +// +//func getFieldType(f *goast.Field) string { +// if i, ok := f.Type.(*goast.Ident); ok { +// if i.Obj != nil { +// if ts, ok := i.Obj.Decl.(*goast.TypeSpec); ok { +// return getExprType(ts.Type) +// } +// } +// } +// return getExprType(f.Type) +//} +// +//func getExprType(e goast.Expr) string { +// switch t := e.(type) { +// case *goast.Ident: +// return t.Name +// case *goast.ArrayType: +// lenStr := "" +// if t.Len != nil { +// lenStr = t.Len.(*goast.Ident).Name +// } +// return fmt.Sprintf("[%s]%s", lenStr, getExprType(t.Elt)) +// case *goast.StarExpr: +// return getExprType(t.X) +// default: +// return "interface{}" +// } +//} +// +//func getOpt(optionName string, f *goast.Field, e goast.Expr, isRepeat bool) (result []optionFunc) { +// name, ok := getOptName(f) +// if !ok { +// return nil +// } +// switch t := e.(type) { +// case *goast.ArrayType: +// return getOpt(optionName, f, t.Elt, true) +// case *goast.StarExpr: +// return getOpt(optionName, f, t.X, isRepeat) +// case *goast.StructType: +// for _, ident := range f.Names { +// result = append(result, optionFunc{ +// typeName: optionName, +// name: ident.Name, +// }) +// } +// case *goast.Ident: +// of := optionFunc{ +// typeName: optionName, +// name: name, +// isRepeat: isRepeat, +// } +// if ts, ok := t.Obj.Decl.(*goast.TypeSpec); ok { +// if s, ok := ts.Type.(*goast.StructType); ok { +// var hasOpts bool +// if s.Fields != nil { +// for _, f := range s.Fields.List { +// name, ok := getOptName(f) +// if !ok { +// continue +// } +// if isFiledOpt(f) { +// hasOpts = true +// expr := astutil.Unparen(f.Type) +// if e, ok := expr.(*goast.StarExpr); ok { +// expr = e.X +// } +// result = append(result, getOpt(ts.Name.Name, f, expr, false)...) +// continue +// } +// of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) +// } +// } +// if hasOpts { +// of.optsType = ts.Name.Name +// } +// } +// } +// result = append(result, of) +// } +// return +//} +// +//type optionFunc struct { +// params []string +// typeName string +// name string +// isRepeat bool +// optsType string +//} +// +//func getOpts(optionName string, s *goast.StructType) []optionFunc { +// if s.Fields == nil { +// return nil +// } +// var result []optionFunc +// for _, f := range s.Fields.List { +// expr := astutil.Unparen(f.Type) +// if e, ok := expr.(*goast.StarExpr); ok { +// expr = e.X +// } +// if opts := getOpt(optionName, f, expr, false); len(opts) > 0 { +// result = append(result, opts...) +// } +// +// } +// return result +//} +// +//func isFiledOpt(f *goast.Field) bool { +// if f.Tag != nil { +// if tags, err := structtag.Parse(strings.Trim(f.Tag.Value, "`")); err == nil { +// if t, err := tags.Get("swipe"); err == nil { +// if t.Value() == "option" { +// return true +// } +// } +// } +// } +// return false +//} +// +//func getOptName(f *goast.Field) (name string, ok bool) { +// name = f.Names[0].Name +// ok = true +// if f.Tag != nil { +// tags, err := structtag.Parse(strings.Trim(f.Tag.Value, "`")) +// if err == nil { +// if tag, err := tags.Get("mapstructure"); err == nil { +// if tag.Value() == "-" { +// ok = false +// } +// name = tag.Value() +// } +// } +// } +// return +//} diff --git a/v3/option/decoder.go b/v3/option/decoder.go new file mode 100644 index 00000000..0effccad --- /dev/null +++ b/v3/option/decoder.go @@ -0,0 +1,497 @@ +package option + +import ( + "errors" + "fmt" + goast "go/ast" + "go/constant" + "go/token" + stdtypes "go/types" + + "github.com/fatih/structtag" + "github.com/swipe-io/swipe/v3/internal/annotation" + "golang.org/x/tools/go/ast/astutil" + "golang.org/x/tools/go/packages" + "golang.org/x/tools/go/types/typeutil" +) + +type Build struct { + Pkg *PackageType + BasePath string + Option map[string]interface{} +} + +type Module struct { + Path string + External bool + Builds []*Build +} + +type Result struct { + Modules map[string][]Module +} + +type Decoder struct { + optionPkgs map[string]string + pkg *packages.Package + pkgs []*packages.Package + commentFuncMap map[string][]string + typesCache map[uint32]interface{} + hasher typeutil.Hasher +} + +func normalizeName(s string) String { + return String{Value: s} +} + +func (d *Decoder) normalizeVar(pkg *packages.Package, t *stdtypes.Var, comment string, visited map[uint32]interface{}) *VarType { + if t == nil { + return nil + } + return &VarType{ + Name: normalizeName(t.Name()), + Embedded: t.Embedded(), + Exported: t.Exported(), + IsField: t.IsField(), + Type: d.normalizeType(pkg, t.Type(), false, visited), + originType: t.Type(), + Zero: zeroValue(t.Type().Underlying()), + Comment: comment, + } +} + +func (d *Decoder) normalizeStruct(pkg *packages.Package, t *stdtypes.Struct, isPointer bool, visited map[uint32]interface{}) *StructType { + if t == nil { + return nil + } + result := &StructType{ + IsPointer: isPointer, + originType: t, + } + for i := 0; i < t.NumFields(); i++ { + f := &StructFieldType{ + Var: d.normalizeVar(pkg, t.Field(i), "", visited), + } + if tags, err := structtag.Parse(t.Tag(i)); err == nil { + f.Tags = tags + } + result.Fields = append(result.Fields, f) + } + return result +} + +func (d *Decoder) normalizeType(pkg *packages.Package, t interface{}, isPointer bool, visited map[uint32]interface{}) interface{} { + switch t := t.(type) { + case *stdtypes.Func: + return d.normalizeFunc(pkg, t, visited) + case *stdtypes.Map: + return d.normalizeMap(pkg, t.Key(), t.Elem(), isPointer, visited) + case *stdtypes.Slice: + return d.normalizeSlice(pkg, t.Elem(), isPointer, visited) + case *stdtypes.Array: + return d.normalizeArray(pkg, t.Elem(), t.Len(), isPointer, visited) + case *stdtypes.Pointer: + return d.normalizeType(pkg, t.Elem(), true, visited) + case *stdtypes.Struct: + return d.normalizeStruct(pkg, t, isPointer, visited) + case *stdtypes.Signature: + return d.normalizeSignature(pkg, t, nil, visited) + case *stdtypes.Interface: + return d.normalizeInterface(pkg, t, visited) + case *stdtypes.Named: + return d.normalizeNamed(pkg, t, isPointer, visited) + case *stdtypes.TypeName: + return d.normalizeTypeName(pkg, t, isPointer, visited) + case *stdtypes.Basic: + return d.normalizeBasic(t, isPointer) + } + return nil +} + +func (d *Decoder) normalizeTypeName(pkg *packages.Package, obj *stdtypes.TypeName, isPointer bool, visited map[uint32]interface{}) *NamedType { + k := d.hasher.Hash(obj.Type()) + if v, ok := visited[k].(*NamedType); ok { + return &NamedType{ + Obj: obj, + Name: v.Name, + Type: v.Type, + Pkg: v.Pkg, + IsPointer: isPointer, + Methods: v.Methods, + } + } + nt := &NamedType{ + Obj: obj, + Name: normalizeName(obj.Name()), + Pkg: d.normalizePkg(obj.Pkg()), + IsPointer: isPointer, + } + + visited[k] = nt + + nt.Type = d.normalizeType(pkg, obj.Type().Underlying(), false, visited) + + return nt +} + +func (d *Decoder) normalizeNamed(pkg *packages.Package, named *stdtypes.Named, isPointer bool, visited map[uint32]interface{}) *NamedType { + k := d.hasher.Hash(named) + if v, ok := visited[k].(*NamedType); ok { + return &NamedType{ + Obj: named.Obj(), + Name: v.Name, + Type: v.Type, + Pkg: v.Pkg, + IsPointer: isPointer, + Methods: v.Methods, + } + } + + nt := &NamedType{ + Obj: named.Obj(), + Pkg: d.normalizePkg(named.Obj().Pkg()), + Name: normalizeName(named.Obj().Name()), + IsPointer: isPointer, + } + + visited[k] = nt + + nt.Type = d.normalizeType(pkg, named.Obj().Type().Underlying(), false, visited) + + for i := 0; i < named.NumMethods(); i++ { + nt.Methods = append(nt.Methods, d.normalizeFunc(pkg, named.Method(i), visited)) + } + return nt +} + +func (d *Decoder) normalizePkg(pkg *stdtypes.Package) *PackageType { + if pkg != nil { + var module *ModuleType + fndPkg := findPkgByID(d.pkgs, pkg.Path()) + if fndPkg != nil { + module = d.normalizeModule(fndPkg.Module) + } + return &PackageType{ + Name: pkg.Name(), + Path: pkg.Path(), + Module: module, + } + } + return nil +} + +func (d *Decoder) normalizeBasic(t *stdtypes.Basic, isPointer bool) *BasicType { + return &BasicType{ + Name: t.Name(), + IsPointer: isPointer, + kind: t.Kind(), + } +} + +func (d *Decoder) normalizeInterface(pkg *packages.Package, t *stdtypes.Interface, visited map[uint32]interface{}) *IfaceType { + it := &IfaceType{ + Origin: t, + } + for i := 0; i < t.NumMethods(); i++ { + it.Methods = append(it.Methods, d.normalizeFunc(pkg, t.Method(i), visited)) + } + for i := 0; i < t.NumEmbeddeds(); i++ { + it.Embeddeds = append(it.Embeddeds, d.normalizeType(pkg, t.EmbeddedType(i), false, visited)) + } + for i := 0; i < t.NumExplicitMethods(); i++ { + it.ExplicitMethods = append(it.ExplicitMethods, d.normalizeFunc(pkg, t.ExplicitMethod(i), visited)) + } + return it +} + +func (d *Decoder) normalizeFunc(pkg *packages.Package, t *stdtypes.Func, visited map[uint32]interface{}) *FuncType { + comments := d.commentFuncMap[t.String()] + comment, paramsComment := parseMethodComments(comments) + + return &FuncType{ + Pkg: d.normalizePkg(t.Pkg()), + FullName: t.FullName(), + Name: normalizeName(t.Name()), + Exported: t.Exported(), + Sig: d.normalizeSignature(pkg, t.Type().(*stdtypes.Signature), paramsComment, visited), + Comment: comment, + } +} + +func (d *Decoder) normalizeSignature(pkg *packages.Package, t *stdtypes.Signature, comments map[string]string, visited map[uint32]interface{}) *SignType { + if t == nil { + return nil + } + st := &SignType{ + IsVariadic: t.Variadic(), + } + if t.Recv() != nil { + st.Recv = d.normalizeType(pkg, t.Recv().Type(), false, visited) + } + for i := 0; i < t.Params().Len(); i++ { + v := t.Params().At(i) + nv := d.normalizeVar(pkg, v, comments[v.Name()], visited) + st.Params = append(st.Params, nv) + } + if t.Variadic() { + st.Params[len(st.Params)-1].IsVariadic = true + } + for i := 0; i < t.Results().Len(); i++ { + v := t.Results().At(i) + nv := d.normalizeVar(pkg, v, comments[v.Name()], visited) + if nv.Name.Value == "" { + nv.Name = normalizeName(fmt.Sprintf("r%d", i+1)) + } else { + st.IsNamed = true + } + st.Results = append(st.Results, nv) + } + return st +} + +func (d *Decoder) normalizeMap(pkg *packages.Package, key stdtypes.Type, val stdtypes.Type, isPointer bool, visited map[uint32]interface{}) *MapType { + mapType := &MapType{IsPointer: isPointer} + mapType.Key = d.normalizeType(pkg, key, false, visited) + mapType.Value = d.normalizeType(pkg, val, false, visited) + return mapType +} + +func (d *Decoder) normalizeSlice(pkg *packages.Package, val stdtypes.Type, isPointer bool, visited map[uint32]interface{}) *SliceType { + return &SliceType{ + Value: d.normalizeType(pkg, val, false, visited), + IsPointer: isPointer, + } +} + +func (d *Decoder) normalizeArray(pkg *packages.Package, val stdtypes.Type, len int64, isPointer bool, visited map[uint32]interface{}) *ArrayType { + return &ArrayType{ + Value: d.normalizeType(pkg, val, false, visited), + Len: len, + IsPointer: isPointer, + } +} + +func (d *Decoder) normalizeSelector(pkg *packages.Package, obj stdtypes.Object) interface{} { + return &NamedType{ + Obj: obj, + Name: normalizeName(obj.Name()), + Type: d.normalizeType(pkg, obj.Type().Underlying(), false, map[uint32]interface{}{}), + Pkg: d.normalizePkg(obj.Pkg()), + } +} + +func (d *Decoder) normalize(pkg *packages.Package, obj stdtypes.Object) interface{} { + return d.normalizeType(pkg, obj, false, map[uint32]interface{}{}) +} + +func (d *Decoder) normalizeModule(module *packages.Module) *ModuleType { + if module != nil { + return &ModuleType{ + Version: module.Version, + Path: module.Path, + Dir: module.Dir, + External: module.Path != d.pkg.Module.Path, + } + } + return nil +} + +func (d *Decoder) normalizePosition(pos token.Position) *PositionType { + return &PositionType{ + Column: pos.Column, + Filename: pos.Filename, + Line: pos.Line, + Offset: pos.Offset, + IsValid: pos.IsValid(), + } +} + +func (d *Decoder) decodeRecursive(pkg *packages.Package, expr goast.Expr) (interface{}, error) { + switch e := expr.(type) { + case *goast.CompositeLit: + switch vt := e.Type.(type) { + case *goast.SelectorExpr: + return d.normalize(pkg, pkg.TypesInfo.Uses[vt.Sel]), nil + case *goast.Ident: + return d.normalize(pkg, pkg.TypesInfo.Uses[vt]), nil + case *goast.ArrayType: + switch elt := vt.Elt.(type) { + default: + var value []interface{} + for _, expr := range e.Elts { + switch st := expr.(type) { + case *goast.SelectorExpr: + value = append(value, d.normalizeSelector(pkg, pkg.TypesInfo.Uses[st.Sel])) + default: + return nil, errors.New("fail") + } + } + return value, nil + case *goast.Ident: + switch elt.Name { + case "string": + return makeStringSlice(e.Elts, pkg.TypesInfo), nil + } + } + } + case *goast.BasicLit: + var value interface{} + tv := pkg.TypesInfo.Types[e] + if tv.IsValue() { + value = constant.Val(tv.Value) + } + return value, nil + case *goast.Ident: + switch e.Name { + case "true": + return true, nil + case "false": + return false, nil + } + return d.normalize(nil, pkg.TypesInfo.Uses[e]), nil + case *goast.StarExpr: + return d.decodeRecursive(pkg, e.X) + case *goast.UnaryExpr: + return d.decodeRecursive(pkg, e.X) + case *goast.ParenExpr: + return d.decodeRecursive(pkg, e.X) + case *goast.SelectorExpr: + _, err := d.decodeRecursive(pkg, e.X) + if err != nil { + return nil, err + } + return d.normalizeSelector(pkg, pkg.TypesInfo.Uses[e.Sel]), nil + case *goast.CallExpr: + return d.decodeRecursive(pkg, e.Fun) + } + return nil, nil +} + +func (d *Decoder) callDecodeArgs(pkg *packages.Package, obj stdtypes.Object, args []goast.Expr) (map[string]interface{}, error) { + result := map[string]interface{}{} + sig := obj.Type().(*stdtypes.Signature) + for i, arg := range args { + //exprPos := pkg.Fset.Position(arg.Pos()) + if callExpr, ok := arg.(*goast.CallExpr); ok { + fnExpr := astutil.Unparen(callExpr.Fun) + if _, ok := fnExpr.(*goast.StarExpr); !ok { + obj := qualifiedIdentObject(pkg.TypesInfo, fnExpr) + if obj == nil { + return nil, errors.New("failed get object") + } + val, err := d.callDecodeArgs(pkg, obj, callExpr.Args) + if err != nil { + return nil, err + } + var valueType string + comments := d.commentFuncMap[obj.String()] + for _, comment := range comments { + if annotationOpts, _ := annotation.Parse(comment); annotationOpts != nil { + if annotationOpt, err := annotationOpts.Get("type"); err == nil { + valueType = annotationOpt.Value() + } + } + } + name := obj.Name() + if valueType == "repeat" { + if _, ok := result[name]; !ok { + result[name] = []interface{}{} + } + v := result[name].([]interface{}) + v = append(v, val) + result[name] = v + + } else { + result[name] = val + } + continue + } + } + vr := sigParamAt(sig, i) + if vr.Name() == "" { + return nil, errors.New("failed params name") + } + val, err := d.decodeRecursive(pkg, arg) + if err != nil { + return nil, err + } + result[vr.Name()] = val + } + return result, nil +} + +func (d *Decoder) callDecode(pkg *packages.Package, e *goast.CallExpr) (map[string]interface{}, error) { + obj := qualifiedIdentObject(pkg.TypesInfo, astutil.Unparen(e.Fun)) + if obj == nil { + return nil, errors.New("failed get object") + } + result, err := d.callDecodeArgs(pkg, obj, e.Args) + if err != nil { + return nil, err + } + return map[string]interface{}{obj.Name(): result}, nil +} + +func (d *Decoder) decode() (result map[string]*Module, err error) { + result = map[string]*Module{} + for _, pkg := range d.pkgs { + for expr := range pkg.TypesInfo.Types { + expr = astutil.Unparen(expr) + callExpr, ok := expr.(*goast.CallExpr) + if !ok { + continue + } + fun := callExpr.Fun + if selExpr, ok := fun.(*goast.SelectorExpr); ok { + fun = selExpr.Sel + } + callIdent, ok := fun.(*goast.Ident) + if !ok { + continue + } + obj := pkg.TypesInfo.Uses[callIdent] + if obj == nil || obj.Pkg() == nil { + continue + } + + if buildName, ok := d.optionPkgs[obj.Pkg().Name()]; ok && obj.Name() == buildName { + if _, ok := result[pkg.Module.Path]; !ok { + result[pkg.Module.Path] = &Module{ + Path: pkg.Module.Path, + External: d.pkg.Module.Path != pkg.Module.Path, + } + } + option, err := d.callDecodeArgs(pkg, obj, callExpr.Args) + if err != nil { + return nil, err + } + basePath, err := detectBasePath(pkg) + if err != nil { + return nil, err + } + build := &Build{ + Pkg: &PackageType{ + Name: pkg.Name, + Path: pkg.PkgPath, + }, + BasePath: basePath, + Option: map[string]interface{}{ + buildName: option, + }, + } + result[pkg.Module.Path].Builds = append(result[pkg.Module.Path].Builds, build) + } + } + } + return +} + +func Decode(optionPkgs map[string]string, pkg *packages.Package, pkgs []*packages.Package, commentFuncs map[string][]string) (result map[string]*Module, err error) { + return (&Decoder{ + optionPkgs: optionPkgs, + pkg: pkg, + pkgs: pkgs, + commentFuncMap: commentFuncs, + hasher: typeutil.MakeHasher(), + }).decode() +} diff --git a/v3/option/decoder_test.go.bak b/v3/option/decoder_test.go.bak new file mode 100644 index 00000000..f3fbfb2d --- /dev/null +++ b/v3/option/decoder_test.go.bak @@ -0,0 +1,84 @@ +package option_test + +import ( + "fmt" + "os" + "path/filepath" + "testing" + + "github.com/mitchellh/mapstructure" + + "github.com/swipe-io/swipe/v2/internal/ast" + "github.com/swipe-io/swipe/v2/option" +) + +type Interface struct { + Type *option.IfaceType `mapstructure:"iface"` + Namespace string `mapstructure:"ns"` +} + +type OpenapiTag struct { + Methods []*option.SelectorType `mapstructure:"methods"` + Tags []string `mapstructure:"tags"` +} + +type ServiceOptions struct { + HTTPServer *struct{} + Interfaces []*Interface `mapstructure:"Interface"` + OpenapiTags *OpenapiTag `mapstructure:"Tags"` +} + +func TestParser_Parse(t *testing.T) { + wd, err := filepath.Abs("./fixtures") + if err != nil { + t.Fatal(err) + } + astLoader, errs := ast.NewLoader(wd, os.Environ(), []string{"./fixtures/..", "github.pie.apple.com/ISS-Tools/zeus-service/pkg/..."}) + if len(errs) > 0 { + for _, err := range errs { + t.Log(err) + } + t.Fatal("AST loader failed") + } + + modules, err := option.Decode(astLoader.Pkg(), astLoader.Pkgs(), astLoader.CommentFuncs()) + if err != nil { + t.Fatal(err) + } + + for _, module := range modules { + for _, build := range module.Builds { + if opts, ok := build.Option["Service"]; ok { + var o ServiceOptions + err = mapstructure.Decode(opts, &o) + fmt.Println(o, err) + } + } + } + + //p := NewParser() + //p.Parse(nil) + + //type args struct { + // s interface{} + //} + //tests := []struct { + // name string + // args args + // want interface{} + //}{ + // { + // name: "", + // args: args{s: &TestStruct{}}, + // want: nil, + // }, + //} + //for _, tt := range tests { + // t.Run(tt.name, func(t *testing.T) { + // p := NewParser() + // if got := p.Parse(tt.args.s, data); !reflect.DeepEqual(got, tt.want) { + // t.Errorf("Parse() = %v, want %v", got, tt.want) + // } + // }) + //} +} diff --git a/v3/option/fixtures/service.go b/v3/option/fixtures/service.go new file mode 100644 index 00000000..05d8b994 --- /dev/null +++ b/v3/option/fixtures/service.go @@ -0,0 +1,25 @@ +package fixtures + +type ServiceA interface { + // TestMethod dvsdvsdvsdvsdv + // @name sdvsvsdv + TestMethod(name string) error + // TestMethod2 sdvsdsdv + // @name sdvsvsdv + TestMethod2(name string) error +} + +type serviceA struct { +} + +func (s *serviceA) TestMethod(name string) error { + return nil +} + +func (s *serviceA) TestMethod2(name string) error { + return Test() +} + +func Test() error { + return nil +} diff --git a/v3/option/fixtures/swipe.go b/v3/option/fixtures/swipe.go new file mode 100755 index 00000000..eb39eae8 --- /dev/null +++ b/v3/option/fixtures/swipe.go @@ -0,0 +1,265 @@ +// Code generated by Swipe v2.0.0-rc13. DO NOT EDIT. + +package fixtures + +// A Option is an option for a Swipe. +type Option string + +// Build the basic option for defining the generation. +func Build(opts Option) {} + +// A ConfigEnvOption is an option env config. +type ConfigEnvOption string + +// ConfigEnv option for config generation. +// +// To generate a configuration loader, you can use the swipe.ConfigEnv option. +// The optionsStruct parameter is a pointer to the configuration structure. +// +// The option can work with all primitives, including datetime, and an array of primitives. +// +// The option supports nested structures. +// +// To use the default value, just specify it as a value in the structure. +// +// Default func name is `LoadConfig`. +// +// You can use structure tags to control generation: +// +// env - name of environment var, options: `required`. +// +// flag - name of flag, enable as the console flag. +// +// desc - description for String function. +func ConfigEnv(optionsStruct interface{}, opts ...ConfigEnvOption) Option { + return "implementation not generated, run swipe" +} + +func ConfigEnvFuncName(name string) ConfigEnvOption { + return "implementation not generated, run swipe" +} + +// ConfigEnvDocEnable enable markdown doc generate. +func ConfigEnvDocEnable() ConfigEnvOption { + return "implementation not generated, run swipe" +} + +// ConfigEnvDocOutput output path markdown doc generate. +func ConfigEnvDocOutput(output string) ConfigEnvOption { + return "implementation not generated, run swipe" +} + +// A ServiceOption is an option service. +type ServiceOption string + +// A MethodOption is an option method. +type MethodOption string + +// A OpenapiServersOption is an openapi servers option. +type OpenapiServersOption string + +// A OpenapiServerOption is an openapi concrete server option. +type OpenapiServerOption string + +// Service a option that defines the generation of transport, metrics, tracing, and logging for gokit. +// Given iface is nil pointer interface, for example: +// (*pkg.Iface)(nil) +func Service(opts ...ServiceOption) Option { + return "implementation not generated, run swipe" +} + +// @type:"repeat" +func Interface(iface interface{}, ns string) ServiceOption { + return "implementation not generated, run swipe" +} + +func AppName(value string) ServiceOption { + return "implementation not generated, run swipe" +} + +// ReadmeEnable enable for generate readme markdown for service. +func ReadmeEnable() ServiceOption { + return "implementation not generated, run swipe" +} + +func ReadmeOutput(value string) ServiceOption { + return "implementation not generated, run swipe" +} + +func ReadmeTemplatePath(value string) ServiceOption { + return "implementation not generated, run swipe" +} + +// JSONRPCEnable enabled use JSON RPC instead of REST. +func JSONRPCEnable() ServiceOption { + return "implementation not generated, run swipe" +} + +// JSONRPCPath sets the end point for transport. +func JSONRPCPath(value string) ServiceOption { + return "implementation not generated, run swipe" +} + +// JSONRPCDocEnable enable for generate markdown JSON RPC doc. +func JSONRPCDocEnable() ServiceOption { + return "implementation not generated, run swipe" +} + +// JSONRPCDocOutput change output dir for generate markdown JSON RPC doc. +func JSONRPCDocOutput(output string) ServiceOption { + return "implementation not generated, run swipe" +} + +// MethodOptions option for defining method settings. +// Given signature is interface method, for example: pkg.Interface.Create +// @type:"repeat" +func MethodOptions(signature interface{}, opts ...MethodOption) ServiceOption { + return "implementation not generated, run swipe" +} + +// MethodDefaultOptions option for defining for all methods default settings. +func MethodDefaultOptions(opts ...MethodOption) ServiceOption { + return "implementation not generated, run swipe" +} + +// Logging a option enabled/disable logging middleware. +func Logging(enable bool) MethodOption { + return "implementation not generated, run swipe" +} + +func Exclude(enable bool) MethodOption { + return "implementation not generated, run swipe" +} + +func LoggingParams(includes []string, excludes []string) MethodOption { + return "implementation not generated, run swipe" +} + +func LoggingContext(key interface{}, name string) MethodOption { + return "implementation not generated, run swipe" +} + +// InstrumentingEnable a option enabled/disable instrumenting (collect metrics) middleware. +func Instrumenting(enable bool) MethodOption { + return "implementation not generated, run swipe" +} + +// InstrumentingDisable a option disable instrumenting (collect metrics) middleware. +func InstrumentingDisable() MethodOption { + return "implementation not generated, run swipe" +} + +// RESTMethod sets http method, default is GET. +func RESTMethod(value string) MethodOption { + return "implementation not generated, run swipe" +} + +// WrapResponse wrap the response from the server to an object, for example if you want to return as: +// {data: { you response data }} +// need to add option: +// ...code here... +// WrapResponse("data") +// ... code here ... +func RESTWrapResponse(value string) MethodOption { + return "implementation not generated, run swipe" +} + +// Path sets http path, default is lowecase method name with the prefix "/", +// for example: the Get method will look like " /get". +func RESTPath(value string) MethodOption { + return "implementation not generated, run swipe" +} + +// HeaderVars sets the key/value array to get method values from headers, +// where the key is the name of the method parameter, +// and the value is the name of the header. +func RESTHeaderVars(value ...string) MethodOption { + return "implementation not generated, run swipe" +} + +// QueryVars sets the key/value array to get method values from query args, +// where the key is the name of the method parameter, +// and the value is the name of the query args. +func RESTQueryVars(value ...string) MethodOption { + return "implementation not generated, run swipe" +} + +// DefaultErrorEncoder is responsible for encoding the server error. +func DefaultErrorEncoder(fn interface{}) ServiceOption { + return "implementation not generated, run swipe" +} + +// ServerEncodeResponseFunc sets the encoding function of the passed +// response object to the response writer. +func ServerEncodeResponseFunc(fn interface{}) MethodOption { + return "implementation not generated, run swipe" +} + +// ServerDecodeRequestFunc sets a function to extract the user's domain +// request object from the request object. +func ServerDecodeRequestFunc(fn interface{}) MethodOption { + return "implementation not generated, run swipe" +} + +// ClientEncodeRequestFunc sets the function to encode the passed +// request object into an object. +func ClientEncodeRequestFunc(fn interface{}) MethodOption { + return "implementation not generated, run swipe" +} + +// ClientDecodeResponseFunc sets a function to extract the user's domain +// response object from the response object. +func ClientDecodeResponseFunc(fn interface{}) MethodOption { + return "implementation not generated, run swipe" +} + +// ClientsEnable enable generate Golang, JavaScript client. +func ClientsEnable(langs []string) ServiceOption { + return "implementation not generated, run swipe" +} + +// HTTPServer enable generate http server. +func HTTPServer() ServiceOption { + return "implementation not generated, run swipe" +} + +// HTTPFast enable generate fast http server. +func HTTPFast() ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiEnable enabled generate openapi documentation. +func OpenapiEnable() ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiTags sets docs tags for method. +func OpenapiTags(methods []interface{}, tags []string) ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiOutput sets output directory, path relative to the file, default is "./". +func OpenapiOutput(value string) ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiInfo sets info. +func OpenapiInfo(title, description, version string) ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiContact sets openapi contact. +func OpenapiContact(name, email, url string) ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiLicence sets openapi licence. +func OpenapiLicence(name, url string) ServiceOption { + return "implementation not generated, run swipe" +} + +// OpenapiServer sets openapi server. +// @type:"repeat" +func OpenapiServer(description, url string) ServiceOption { + return "implementation not generated, run swipe" +} diff --git a/v3/option/fixtures/transport.go b/v3/option/fixtures/transport.go new file mode 100644 index 00000000..eb7f0e46 --- /dev/null +++ b/v3/option/fixtures/transport.go @@ -0,0 +1,40 @@ +package fixtures + +type Config struct { + Name string +} + +func SwipeConfig() { + Build( + ConfigEnv(&Config{}), + ) +} + +func Swipe() { + Build( + Service( + Interface((*ServiceA)(nil), "test"), + Interface((*ServiceA)(nil), "test"), + + HTTPServer(), + HTTPFast(), + + OpenapiTags([]interface{}{ServiceA.TestMethod2}, []string{"no"}), + OpenapiInfo("title", "descr", "ok"), + + MethodOptions(ServiceA.TestMethod, + RESTQueryVars("ok", "no"), + ), + + MethodOptions(ServiceA.TestMethod2, + RESTQueryVars("ok1", "no2"), + RESTMethod("POST"), + ), + + MethodDefaultOptions( + RESTQueryVars("ok1", "no2"), + RESTMethod("POST"), + ), + ), + ) +} diff --git a/v3/option/types.go b/v3/option/types.go new file mode 100644 index 00000000..387ddd29 --- /dev/null +++ b/v3/option/types.go @@ -0,0 +1,268 @@ +package option + +import ( + "go/types" + stdtypes "go/types" + + "github.com/fatih/structtag" + + "github.com/swipe-io/strcase" +) + +type String struct { + Value string + upperValue string + lowerValue string +} + +func (n String) Upper() string { + if n.upperValue == "" { + n.upperValue = strcase.ToCamel(n.Value) + } + return n.upperValue +} + +func (n String) Lower() string { + if n.lowerValue == "" { + n.lowerValue = strcase.ToLowerCamel(n.Value) + } + return n.lowerValue +} + +func (n String) String() string { + return n.Value +} + +type VarsType []*VarType + +type VarType struct { + Name String + Embedded bool + Exported bool + IsField bool + IsVariadic bool + Type interface{} + Comment string + Zero string + + originType stdtypes.Type +} + +type StructType struct { + Fields []*StructFieldType + IsPointer bool + + originType stdtypes.Type +} + +type StructFieldType struct { + Var *VarType + Tags *structtag.Tags +} + +type SignType struct { + Params VarsType + Results VarsType + IsVariadic bool + IsNamed bool + Recv interface{} +} + +type FuncType struct { + Pkg *PackageType + FullName string + Name String + Exported bool + Sig *SignType + Comment string +} + +func (f *FuncType) ID() string { + return f.Pkg.Path + "." + f.Name.Value +} + +type IfaceType struct { + Origin *stdtypes.Interface + Methods []*FuncType + Embeddeds []interface{} + ExplicitMethods []*FuncType +} + +type ModuleType struct { + Version string + Path string + Dir string + External bool +} + +type PackageType struct { + Name string + Path string + Module *ModuleType +} + +type NamedType struct { + Obj stdtypes.Object + Name String + Type interface{} + Pkg *PackageType + IsPointer bool + Methods []*FuncType +} + +func (n *NamedType) ID() string { + return n.Pkg.Path + "." + n.Name.Value +} + +type BasicType struct { + Name string + IsPointer bool + kind stdtypes.BasicKind +} + +func (t BasicType) BitSize() string { + switch t.kind { + case types.Int8, types.Uint8: + return "8" + case types.Int16, types.Uint16: + return "16" + case types.Int32, types.Float32, types.Uint32: + return "32" + default: // for types.Int, types.Uint, types.Float64, types.Uint64, types.Int64 and other. + return "64" + } +} + +func (t BasicType) IsString() bool { + return t.kind == stdtypes.String +} + +func (t BasicType) IsNumeric() bool { + switch t.kind { + default: + return false + case stdtypes.Uint, + stdtypes.Uint8, + stdtypes.Uint16, + stdtypes.Uint32, + stdtypes.Uint64, + stdtypes.Int, + stdtypes.Int8, + stdtypes.Int16, + stdtypes.Int32, + stdtypes.Int64, + stdtypes.Float32, + stdtypes.Float64: + return true + } +} + +func (t BasicType) IsAnyInt() bool { + switch t.kind { + case stdtypes.Int, stdtypes.Int8, stdtypes.Int16, stdtypes.Int32, stdtypes.Int64: + return true + } + return false +} + +func (t BasicType) IsInt() bool { + return t.kind == stdtypes.Int +} + +func (t BasicType) IsInt8() bool { + return t.kind == stdtypes.Int8 +} + +func (t BasicType) IsInt16() bool { + return t.kind == stdtypes.Int16 +} + +func (t BasicType) IsInt32() bool { + return t.kind == stdtypes.Int32 +} + +func (t BasicType) IsInt64() bool { + return t.kind == stdtypes.Int64 +} + +func (t BasicType) IsAnyUint() bool { + switch t.kind { + case stdtypes.Uint, stdtypes.Uint8, stdtypes.Uint16, stdtypes.Uint32, stdtypes.Uint64: + return true + } + return false +} + +func (t BasicType) IsUint() bool { + return t.kind == stdtypes.Uint +} + +func (t BasicType) IsUint8() bool { + return t.kind == stdtypes.Uint8 +} + +func (t BasicType) IsUint16() bool { + return t.kind == stdtypes.Uint16 +} + +func (t BasicType) IsUint32() bool { + return t.kind == stdtypes.Uint32 +} + +func (t BasicType) IsUint64() bool { + return t.kind == stdtypes.Uint64 +} + +func (t BasicType) IsAnyFloat() bool { + switch t.kind { + case stdtypes.Float32, stdtypes.Float64: + return true + } + return false +} + +func (t BasicType) IsFloat32() bool { + return t.kind == stdtypes.Float32 +} + +func (t BasicType) IsFloat64() bool { + return t.kind == stdtypes.Float64 +} + +func (t BasicType) IsBool() bool { + return t.kind == stdtypes.Bool +} + +func (t BasicType) IsByte() bool { + return t.kind == stdtypes.Byte +} + +type SelectorType struct { + Sel interface{} + X interface{} +} + +type PositionType struct { + Column int + Filename string + Line int + Offset int + IsValid bool +} + +type MapType struct { + Key interface{} + Value interface{} + IsPointer bool +} + +type SliceType struct { + Value interface{} + IsPointer bool +} + +type ArrayType struct { + Value interface{} + Len int64 + IsPointer bool +} diff --git a/v3/option/utils.go b/v3/option/utils.go new file mode 100644 index 00000000..14109556 --- /dev/null +++ b/v3/option/utils.go @@ -0,0 +1,132 @@ +package option + +import ( + "errors" + "fmt" + "go/ast" + goast "go/ast" + "go/constant" + "go/types" + stdtypes "go/types" + "path/filepath" + "regexp" + "strings" + + "golang.org/x/tools/go/packages" +) + +var paramCommentRegexp = regexp.MustCompile(`(?s)@([a-zA-Z0-9_]*) (.*)`) + +func parseMethodComments(comments []string) (methodComment string, paramsComment map[string]string) { + paramsComment = make(map[string]string) + for _, comment := range comments { + comment = strings.TrimSpace(comment) + if strings.HasPrefix(comment, "@") { + matches := paramCommentRegexp.FindAllStringSubmatch(comment, -1) + if len(matches) == 1 && len(matches[0]) == 3 { + paramsComment[matches[0][1]] = matches[0][2] + } + continue + } + methodComment += comment + } + return +} + +func makeStringSlice(elts []goast.Expr, info *stdtypes.Info) (result []string) { + for _, expr := range elts { + tv := info.Types[expr] + result = append(result, constant.Val(tv.Value).(string)) + } + return +} + +func sigParamAt(sig *stdtypes.Signature, i int) *stdtypes.Var { + if sig.Variadic() && i >= sig.Params().Len()-1 { + return sig.Params().At(sig.Params().Len() - 1) + } + return sig.Params().At(i) +} + +func qualifiedObject(pkg *packages.Package, expr ast.Expr) types.Object { + switch expr := expr.(type) { + case *ast.Ident: + return pkg.TypesInfo.ObjectOf(expr) + case *ast.SelectorExpr: + pkgName, ok := expr.X.(*ast.Ident) + if !ok { + return nil + } + if _, ok := pkg.TypesInfo.ObjectOf(pkgName).(*types.PkgName); !ok { + return nil + } + return pkg.TypesInfo.ObjectOf(expr.Sel) + default: + return nil + } +} + +func qualifiedIdentObject(info *types.Info, expr ast.Expr) types.Object { + switch expr := expr.(type) { + case *ast.Ident: + return info.ObjectOf(expr) + case *ast.SelectorExpr: + pkgName, ok := expr.X.(*ast.Ident) + if !ok { + return nil + } + if _, ok := info.ObjectOf(pkgName).(*types.PkgName); !ok { + return nil + } + return info.ObjectOf(expr.Sel) + default: + return nil + } +} + +func findPkgByID(pkgs []*packages.Package, path string) *packages.Package { + for _, pkg := range pkgs { + if pkg.PkgPath == path { + return pkg + } + } + return nil +} + +func detectBasePath(pkg *packages.Package) (string, error) { + paths := pkg.GoFiles + if len(paths) == 0 { + return "", errors.New("no files to derive output directory from") + } + dir := filepath.Dir(paths[0]) + for _, p := range paths[1:] { + if dir2 := filepath.Dir(p); dir2 != dir { + return "", fmt.Errorf("found conflicting directories %q and %q", dir, dir2) + } + } + return dir, nil +} + +func zeroValue(t types.Type) string { + switch u := t.Underlying().(type) { + case *types.Basic: + if u.Kind() == types.UnsafePointer { + return "nil" + } + info := u.Info() + switch { + case info&types.IsBoolean != 0: + return "false" + case info&(types.IsInteger|types.IsFloat|types.IsComplex|types.IsUnsigned) != 0: + return "0" + case info&types.IsString != 0: + return `""` + } + case *types.Struct: + return "{}" + case *types.Chan, *types.Interface, *types.Map, *types.Pointer, *types.Signature, *types.Slice, *types.Array: + return "nil" + + } + panic("unreachable") +} diff --git a/v3/swipe/config.go b/v3/swipe/config.go new file mode 100644 index 00000000..509ce175 --- /dev/null +++ b/v3/swipe/config.go @@ -0,0 +1,82 @@ +package swipe + +import ( + "strings" + + "github.com/swipe-io/swipe/v3/internal/ast" + "github.com/swipe-io/swipe/v3/option" + + "golang.org/x/tools/go/packages" +) + +type warnError struct { + Err error +} + +func (e *warnError) Warn() error { + return e.Err +} + +func (e *warnError) Error() string { + return e.Err.Error() +} + +type PluginConfig struct { + Plugin Plugin + Build *option.Build + Module *option.Module +} + +type Config struct { + WorkDir string + Envs []string + Patterns []string + Modules map[string]*option.Module + + Pkg *packages.Package + Packages []*packages.Package + CommentFuncs map[string][]string +} + +func GetConfig(loader *ast.Loader) (*Config, error) { + cfg := Config{ + WorkDir: loader.WorkDir(), + Envs: loader.Env(), + Patterns: loader.Patterns(), + Pkg: loader.Pkg(), + Packages: loader.Pkgs(), + CommentFuncs: loader.CommentFuncs(), + } + if err := cfg.Load(); err != nil { + return nil, err + } + return &cfg, nil +} + +func (c *Config) WalkBuilds(fn func(module *option.Module, build *option.Build) bool) { + for _, module := range c.Modules { + for _, build := range module.Builds { + if !fn(module, build) { + break + } + } + } +} + +func (c *Config) Load() (err error) { + optionPkgs := map[string]string{} + for _, plugin := range registeredPlugins { + optionPkgs["swipe"+strings.ToLower(plugin.ID())] = plugin.ID() + } + c.Modules, err = option.Decode(optionPkgs, c.Pkg, c.Packages, c.CommentFuncs) + return +} + +func Options() (data map[string][]byte) { + data = map[string][]byte{} + for _, plugin := range registeredPlugins { + name := "swipe" + strings.ToLower(plugin.ID()) + data[name] = append(data[name], plugin.Options()...) + } + return +} diff --git a/v3/swipe/generator.go b/v3/swipe/generator.go new file mode 100644 index 00000000..defe5959 --- /dev/null +++ b/v3/swipe/generator.go @@ -0,0 +1,9 @@ +package swipe + +import "context" + +type Generator interface { + Generate(ctx context.Context) []byte + OutputDir() string + Filename() string +} diff --git a/v3/swipe/plugin.go b/v3/swipe/plugin.go new file mode 100644 index 00000000..337ce19d --- /dev/null +++ b/v3/swipe/plugin.go @@ -0,0 +1,23 @@ +package swipe + +import ( + "log" + + "github.com/swipe-io/swipe/v3/option" +) + +type Plugin interface { + ID() string + Configure(cfg *Config, module *option.Module, build *option.Build, options map[string]interface{}) []error + Generators() ([]Generator, []error) + Options() []byte +} + +var registeredPlugins = map[string]Plugin{} + +func RegisterPlugin(p Plugin) { + if _, found := registeredPlugins[p.ID()]; found { + log.Fatalf("plugin %q already registered", p.ID()) + } + registeredPlugins[p.ID()] = p +} diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go new file mode 100644 index 00000000..e6e569f1 --- /dev/null +++ b/v3/swipe/swipe.go @@ -0,0 +1,101 @@ +package swipe + +import ( + "context" + "fmt" + "path/filepath" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/frame" + "github.com/swipe-io/swipe/v3/internal/importer" + "github.com/swipe-io/swipe/v3/option" +) + +const Version = "v3.0.0-beta1" + +type ContextKey string + +const ( + ImporterKey ContextKey = "importer" +) + +type Importer interface { + Import(name string, path string) string + TypeString(v interface{}) string + TypeSigString(v interface{}) string +} + +type AstFinder interface { + FindImplIface(ifaceType option.IfaceType) +} + +type GenerateResult struct { + PkgPath string + OutputPath string + Content []byte + Errs []error +} + +func Generate(cfg *Config) (result []GenerateResult, errs []error) { + result = make([]GenerateResult, 0, 100) + + importerMap := map[string]*importer.Importer{} + + for _, module := range cfg.Modules { + if module.External { + continue + } + for _, build := range module.Builds { + for id, options := range build.Option { + p, ok := registeredPlugins[id] + if !ok { + errs = append(errs, &warnError{Err: fmt.Errorf("plugin %q not found", id)}) + continue + } + cfgErrs := p.Configure(cfg, module, build, options.(map[string]interface{})) + if len(cfgErrs) > 0 { + errs = append(errs, cfgErrs...) + continue + } + generators, genErrs := p.Generators() + if len(genErrs) > 0 { + errs = append(errs, genErrs...) + continue + } + generatorResult := make([]GenerateResult, len(generators)) + for i, g := range generators { + generatorResult[i].PkgPath = build.Pkg.Path + + outputDir := g.OutputDir() + if outputDir == "" { + outputDir = build.BasePath + } + filename := "swipe_gen_" + strcase.ToSnake(p.ID()) + "_" + g.Filename() + + importerKey := build.Pkg.Path + filename + + // importer cache for package. + importerService, ok := importerMap[importerKey] + if !ok { + importerService = importer.NewImporter(build.Pkg) + importerMap[filename] = importerService + } + + generatorResult[i].OutputPath = filepath.Join(outputDir, filename) + f := frame.NewFrame(Version, filename, importerService, build.Pkg) + + ctx := context.WithValue(context.TODO(), ImporterKey, importerService) + + data, err := f.Frame(g.Generate(ctx)) + if err != nil { + generatorResult[i].Errs = append(generatorResult[i].Errs, err) + continue + } + generatorResult[i].Content = data + } + result = append(result, generatorResult...) + } + } + } + return +} diff --git a/v3/writer/base_writer.go b/v3/writer/base_writer.go new file mode 100644 index 00000000..d7152873 --- /dev/null +++ b/v3/writer/base_writer.go @@ -0,0 +1,18 @@ +package writer + +import ( + "bytes" + "fmt" +) + +type BaseWriter struct { + bytes.Buffer +} + +func (w *BaseWriter) Line() { + w.W("\n") +} + +func (w *BaseWriter) W(format string, args ...interface{}) { + _, _ = fmt.Fprintf(&w.Buffer, format, args...) +} diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go new file mode 100644 index 00000000..b3fa8d38 --- /dev/null +++ b/v3/writer/golang_writer.go @@ -0,0 +1,353 @@ +package writer + +import ( + "fmt" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" +) + +type GoWriter struct { + BaseWriter +} + +func (w *GoWriter) WriteCheckErr(errName string, body func()) { + w.W("if %s != nil {\n", errName) + body() + w.W("}\n") +} + +func (w *GoWriter) WriteType(name string) { + w.W("type %s ", name) +} + +func (w *GoWriter) WriteDefer(params []string, calls []string, body func()) { + w.W("defer func(") + w.W(stdstrings.Join(params, ",")) + w.W(") {\n") + body() + w.W("}(") + w.W(stdstrings.Join(calls, ",")) + w.W(")\n") +} + +func (w *GoWriter) WriteTypeStruct(name string, keyvals []string) { + w.WriteType(name) + w.WriteStruct(keyvals, false) + w.Line() + w.Line() +} + +func (w *GoWriter) WriteStruct(keyvals []string, assign bool) { + w.W(" struct ") + if assign { + w.WriteStructAssign(keyvals) + } else { + w.WriteStructDefined(keyvals) + } +} + +func (w *GoWriter) WriteStructDefined(keyvals []string) { + if len(keyvals)%2 != 0 { + panic("WriteStructDefined: missing Value") + } + w.W("{\n") + for i := 0; i < len(keyvals); i += 2 { + w.W("%s %s\n", keyvals[i], keyvals[i+1]) + continue + } + w.W("}") +} + +func (w *GoWriter) WriteStructAssign(keyvals []string) { + if len(keyvals)%2 != 0 { + panic("WriteStructAssign: missing Value") + } + w.W("{") + for i := 0; i < len(keyvals); i += 2 { + if i > 0 { + w.W(", ") + } + w.W("%s: %s", keyvals[i], keyvals[i+1]) + } + w.W("}") +} + +func (w *GoWriter) WriteFuncCall(id, name string, params []string) { + w.W(id + "." + name + "(") + w.W(stdstrings.Join(params, ",")) + w.W(")\n") +} + +func (w *GoWriter) getConvertFuncName(t *option.BasicType) string { + if t.IsAnyInt() { + return "Atoi(%s)" + } + if t.IsAnyUint() { + return "ParseUint(%s, 10, " + t.BitSize() + ")" + } + if t.IsAnyFloat() { + return "ParseFloat(%s, " + t.BitSize() + ")" + } + if t.IsBool() { + return "ParseBool(%s)" + } + return "" +} + +func (w *GoWriter) getFormatFuncName(t *option.BasicType) string { + if t.IsAnyInt() { + return "FormatInt(int64(%s), 10)" + } + if t.IsAnyUint() { + return "FormatUint(uint64(%s), 10)" + } + if t.IsAnyFloat() { + return "FormatFloat(float64(%s), 'g', -1, " + t.BitSize() + ")" + } + if t.IsBool() { + return "FormatBool(%s)" + } + return "" +} + +func (w *GoWriter) writeFormatBasicType(importer swipe.Importer, assignId, valueId string, t *option.BasicType) { + funcName := w.getFormatFuncName(t) + if funcName != "" { + strconvPkg := importer.Import("strconv", "strconv") + if t.IsPointer { + valueId = "*" + valueId + } + w.W("%s := %s.%s\n", assignId, strconvPkg, fmt.Sprintf(funcName, valueId)) + } else { + w.W("%s := %s\n", assignId, valueId) + } +} + +func (w *GoWriter) WriteConvertBasicType(importer swipe.Importer, name, assignId, valueId string, t *option.BasicType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { + useCheckErr := true + + tmpId := strcase.ToLowerCamel(name) + strcase.ToCamel(t.Name) + + funcName := w.getConvertFuncName(t) + if funcName != "" { + strconvPkg := importer.Import("strconv", "strconv") + w.W("%s, err := %s.%s\n", tmpId, strconvPkg, fmt.Sprintf(funcName, valueId)) + } else { + useCheckErr = false + tmpId = valueId + } + if useCheckErr { + if msgErrTemplate == "" { + msgErrTemplate = "convert error" + } + errMsg := strconv.Quote(msgErrTemplate + ": %w") + w.W("if err != nil {\n") + if errSlice != "" { + w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, importer.Import("fmt", "fmt"), errMsg) + } else { + w.W("return ") + if len(errRet) > 0 { + w.W("%s, ", stdstrings.Join(errRet, ",")) + } + w.W("%s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), tmpId) + } + w.W("}\n") + } + if declareVar { + w.W("var ") + } + retId := fmt.Sprintf("%s(%s)", t.Name, tmpId) + //if t.IsString() { + if t.IsPointer { + ptrName := "ptr" + strcase.ToCamel(name) + w.W("%s := %s\n", ptrName, tmpId) + retId = "&" + ptrName + } + //} + w.W("%s = %s", assignId, retId) + w.W("\n") +} + +func (w *GoWriter) WriteFormatType(importer swipe.Importer, assignId, valueId string, f *option.VarType) { + switch t := f.Type.(type) { + case *option.BasicType: + w.writeFormatBasicType(importer, assignId, valueId, t) + case *option.NamedType: + switch t.Pkg.Path { + case "github.com/satori/uuid", "github.com/google/uuid": + if t.Name.Value == "UUID" { + w.WriteFormatUUID(importer, t, assignId, valueId) + } + case "time": + w.WriteFormatTime(importer, t, assignId, valueId) + } + } +} + +func (w *GoWriter) WriteFormatTime(importer swipe.Importer, t *option.NamedType, assignId, valueId string) { + switch t.Name.Value { + case "Duration": + w.W("%s := %s.String()\n", assignId, valueId) + case "Time": + timePkg := importer.Import("time", "time") + w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", assignId, timePkg, valueId) + } +} + +func (w *GoWriter) WriteFormatUUID(_ swipe.Importer, t *option.NamedType, assignId, valueId string) { + w.W("%s := %s.String() \n", assignId, valueId) +} + +func (w *GoWriter) WriteConvertTime(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { + switch t.Name.Value { + case "Time": + tmpID = t.Name.Lower() + "Time" + timePkg := importer.Import("time", "time") + w.W("%[1]s, err := %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", tmpID, timePkg, valueId) + case "Duration": + tmpID = t.Name.Lower() + "Dur" + timePkg := importer.Import("time", "time") + w.W("%s, err := %s.ParseDuration(%s)\n", tmpID, timePkg, valueId) + } + return +} + +func (w *GoWriter) WriteConvertUUID(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { + tmpID = t.Name.Lower() + "UUID" + uuidPkg := importer.Import(t.Pkg.Name, t.Pkg.Path) + + switch t.Pkg.Path { + case "github.com/google/uuid": + w.W("%s, err := %s.Parse(%s)\n", tmpID, uuidPkg, valueId) + case "github.com/satori/uuid": + w.W("%s, err := %s.FromString(%s)\n", tmpID, uuidPkg, valueId) + } + return +} + +func (w *GoWriter) WriteConvertURL(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { + switch t.Name.Value { + case "URL": + tmpID = t.Name.Lower() + "URL" + urlPkg := importer.Import("url", "net/url") + w.W("%s, err := %s.Parse(%s)\n", tmpID, urlPkg, valueId) + } + return +} + +func (w *GoWriter) WriteConvertType( + importer swipe.Importer, assignId, valueId string, f *option.VarType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string, +) { + var ( + tmpID string + ) + + switch t := f.Type.(type) { + case *option.BasicType: + w.WriteConvertBasicType(importer, f.Name.Value, assignId, valueId, t, errRet, errSlice, declareVar, msgErrTemplate) + case *option.MapType: + stringsPkg := importer.Import("strings", "strings") + if k, ok := t.Key.(*option.BasicType); ok && k.IsString() { + if v, ok := t.Value.(*option.BasicType); ok { + tmpID = "parts" + f.Name.Lower() + w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) + w.W("%s = make(%s, len(%s))\n", assignId, importer.TypeString(t), tmpID) + if v.IsNumeric() { + w.W("for _, s := range %s {\n", tmpID) + w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) + w.W("if len(kv) == 2 {\n") + w.WriteConvertBasicType(importer, "tmp", assignId+"[kv[0]]", "kv[1]", v, errRet, errSlice, false, msgErrTemplate) + w.W("}\n") + w.W("}\n") + } else { + w.W("for _, s := range %s {\n", tmpID) + w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) + w.W("if len(kv) == 2 {\n") + w.W("%s[kv[0]] = kv[1]\n", assignId) + w.W("}\n") + w.W("}\n") + } + } + } + case *option.SliceType: + stringsPkg := importer.Import("strings", "strings") + switch t := t.Value.(type) { + case *option.BasicType: + if t.IsNumeric() { + tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(t.Name) + w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) + if declareVar { + w.W("var ") + } + w.W("%s = make([]%s, len(%s))\n", assignId, t.Name, tmpID) + w.W("for i, s := range %s {\n", tmpID) + w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", t, errRet, errSlice, false, msgErrTemplate) + w.W("}\n") + } else { + w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) + } + } + case *option.ArrayType: + stringsPkg := importer.Import("strings", "strings") + switch b := t.Value.(type) { + case *option.BasicType: + if b.IsNumeric() { + tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(b.Name) + w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) + if declareVar { + w.W("var ") + } + w.W("if len(%s) > len(%s) {\n", tmpID, assignId) + w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s))\n", errSlice, importer.Import("fmt", "fmt"), strconv.Quote(msgErrTemplate+": array length must be less or equal "+strconv.FormatInt(t.Len, 10))) + w.W("} else {\n") + + w.W("for i, s := range %s {\n", tmpID) + w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", b, errRet, errSlice, false, msgErrTemplate) + w.W("}\n") + w.W("}\n") + } else { + w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) + } + } + case *option.NamedType: + switch t.Pkg.Path { + case "net/url": + tmpID = w.WriteConvertURL(importer, t, valueId) + if !t.IsPointer { + tmpID = "*" + tmpID + } + case "github.com/satori/uuid", "github.com/google/uuid": + if t.Name.Value == "UUID" { + tmpID = w.WriteConvertUUID(importer, t, valueId) + if t.IsPointer { + tmpID = "&" + tmpID + } + } + case "time": + tmpID = w.WriteConvertTime(importer, t, valueId) + if t.IsPointer { + tmpID = "&" + tmpID + } + } + w.W("if err != nil {\n") + if errSlice != "" { + w.W("%[1]s = append(%[1]s, err)\n", errSlice) + } else { + w.W("return ") + if len(errRet) > 0 { + w.W("%s, ", stdstrings.Join(errRet, ",")) + } + w.W("err") + } + w.W("}\n") + if declareVar { + w.W("var ") + } + w.W("%s = %s\n", assignId, tmpID) + } + +} From 49f32281cca3969a4cdc68a2df8d0bd871845d11 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 29 Jul 2021 21:24:28 +0300 Subject: [PATCH 213/293] refactor: fixed --- docs/swipe_gen_gokit_openapi.json | 1 + v3/cmd/gen.go | 1 - v3/internal/format/fomrat.go | 4 +- v3/internal/importer/importer.go | 8 +- v3/internal/plugin/gokit/config/config.go | 1 - v3/internal/plugin/gokit/generator/gateway.go | 2 +- .../plugin/gokit/generator/instrumenting.go | 16 +++- .../gokit/generator/jsonrpc_js_client.go | 41 ++++------ .../plugin/gokit/generator/jsonrpc_server.go | 7 +- v3/internal/plugin/gokit/generator/logging.go | 16 ++-- v3/internal/plugin/gokit/generator/openapi.go | 2 +- .../plugin/gokit/generator/rest_client.go | 10 ++- .../plugin/gokit/generator/rest_server.go | 2 +- v3/internal/plugin/gokit/generator/utils.go | 80 ++++++++++++++++--- .../plugin/gokit/generator/utils_test.go | 66 +++++++++++++++ v3/option/decoder.go | 8 +- v3/option/types.go | 2 + v3/swipe/swipe.go | 7 ++ 18 files changed, 215 insertions(+), 59 deletions(-) create mode 100755 docs/swipe_gen_gokit_openapi.json create mode 100644 v3/internal/plugin/gokit/generator/utils_test.go diff --git a/docs/swipe_gen_gokit_openapi.json b/docs/swipe_gen_gokit_openapi.json new file mode 100755 index 00000000..d78a13d8 --- /dev/null +++ b/docs/swipe_gen_gokit_openapi.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"title":"Statistic Search Queries Service","contact":{},"license":{},"version":"v1.0.0"},"paths":{"/stat/search":{"post":{"tags":["/stat"],"summary":"SearchQueries","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"dateFrom":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"dateTo":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"index":{"type":"string","format":"string","example":"abc"},"numberClicks":{"type":"string","format":"string","example":"abc"},"query":{"type":"string","format":"string","example":"abc"},"sizeIssuing":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} \ No newline at end of file diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index 6c960f62..2775c96e 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -128,7 +128,6 @@ var genCmd = &cobra.Command{ } if err := gitattributes.Generate(cfg.WorkDir, diffExcludes); err != nil { cmd.PrintErrln(err) - os.Exit(1) } cmd.Println("Command execution completed successfully") diff --git a/v3/internal/format/fomrat.go b/v3/internal/format/fomrat.go index bb6a2402..5da786ad 100644 --- a/v3/internal/format/fomrat.go +++ b/v3/internal/format/fomrat.go @@ -8,12 +8,12 @@ import ( func Source(src []byte) ([]byte, error) { var useGoImports bool - _, err := exec.LookPath("goimports") + _, err := exec.LookPath("gofmt") if err == nil { useGoImports = true } if useGoImports { - cmd := exec.Command("goimports") + cmd := exec.Command("gofmt") stdin, err := cmd.StdinPipe() if err != nil { return nil, err diff --git a/v3/internal/importer/importer.go b/v3/internal/importer/importer.go index b2de5e26..bcec0f5d 100644 --- a/v3/internal/importer/importer.go +++ b/v3/internal/importer/importer.go @@ -3,6 +3,7 @@ package importer import ( "bytes" "fmt" + "go/token" "sort" stdstrings "strings" @@ -47,7 +48,8 @@ func (i *Importer) nameInFileScope(name string) bool { return true } } - return false + _, obj := i.pkg.Types.Scope().LookupParent(name, token.NoPos) + return obj != nil } func (i *Importer) HasImports() bool { @@ -134,7 +136,9 @@ func (i *Importer) typeString(v interface{}, onlySign bool) string { case *option.FuncType: var buf bytes.Buffer buf.WriteString(t.Name.Value) - buf.WriteString(i.typeString(t.Sig, onlySign)) + if t.Sig != nil { + buf.WriteString(i.typeString(t.Sig, onlySign)) + } return buf.String() case *option.NamedType: if t.Pkg == nil { diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 75698eb0..01b9a703 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -76,7 +76,6 @@ type MethodOption struct { Signature *option.NamedType Instrumenting BoolValue `swipe:"option"` Logging BoolValue `swipe:"option"` - Exclude BoolValue `swipe:"option"` LoggingParams LoggingParams `swipe:"option"` LoggingContext []LoggingContext `swipe:"option"` RESTMethod StringValue `swipe:"option"` diff --git a/v3/internal/plugin/gokit/generator/gateway.go b/v3/internal/plugin/gokit/generator/gateway.go index 6d9c3201..510c6c97 100644 --- a/v3/internal/plugin/gokit/generator/gateway.go +++ b/v3/internal/plugin/gokit/generator/gateway.go @@ -67,7 +67,7 @@ func (g *GatewayGenerator) Generate(ctx context.Context) []byte { } ifaceType := iface.Named.Type.(*option.IfaceType) - g.w.W("type %sOption struct {\n", UcNameWithAppPrefix(iface)) + g.w.W("type %sOption struct {\n", UcNameWithAppPrefix(iface, true)) g.w.W("Instancer %s.Instancer \n", sdPkg) g.w.W("Factory func(string) (interface{}, error) \n") diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index c11abc45..a386e2e3 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -60,16 +60,24 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) if mopt.Instrumenting.Value { + methodName := iface.Named.Name.Lower() + "." + m.Name.Value g.w.WriteDefer( []string{"begin " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - g.w.W("s.opts.requestCount.With(\"method\", \"%s\").Add(1)\n", m.Name) - g.w.W("s.opts.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", m.Name, timePkg) + e := Error(m.Sig.Results) + if e != nil { + g.w.W("if %[1]s != nil {\ns.opts.requestCount.With(\"method\", \"%[2]s\", \"err\", %[1]s.Error()).Add(1)\n} else {\n", e.Name, methodName) + g.w.W("") + } + g.w.W("s.opts.requestCount.With(\"method\", \"%s\", \"err\", \"\").Add(1)\n", methodName) + if e != nil { + g.w.W("}\n") + } + g.w.W("s.opts.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", methodName, timePkg) }, ) } - if len(m.Sig.Results) > 0 { for i, result := range m.Sig.Results { if i > 0 { @@ -109,7 +117,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("Subsystem: i.opts.subsystem,\n") g.w.W("Name: %s,\n", strconv.Quote("request_count")) g.w.W("Help: %s,\n", strconv.Quote("Number of requests received.")) - g.w.W("}, []string{\"method\"})\n") + g.w.W("}, []string{\"method\", \"err\"})\n") g.w.W("\n}\n") g.w.W("if i.opts.requestLatency == nil {\n") diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index 2d7b8e5d..b51f7c1a 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -2,6 +2,8 @@ package generator import ( "context" + "fmt" + "strings" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" @@ -30,9 +32,6 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { mw.W("}\n\n") for _, m := range ifaceType.Methods { - resultLen := LenWithoutErrors(m.Sig.Results) - paramLen := LenWithoutContexts(m.Sig.Params) - mw.W("/**\n") if m.Comment != "" { mw.W("* %s\n", m.Comment) @@ -56,10 +55,9 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { } if len(m.Sig.Results) > 0 { mw.W("* @return {PromiseLike<") - if m.Sig.IsNamed { - mw.W("{") - } - for i, p := range m.Sig.Results { + + results := make([]string, 0, len(m.Sig.Results)) + for _, p := range m.Sig.Results { if IsError(p) { continue } @@ -69,16 +67,13 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { defTypes[key] = t } } - if i != resultLen-1 { - mw.W(", ") - } if m.Sig.IsNamed { - mw.W("%s: ", p.Name) + results = append(results, fmt.Sprintf("%s: ", p.Name)) } mw.W(jsDocType(p.Type)) } if m.Sig.IsNamed { - mw.W("}") + mw.W("{%s}", strings.Join(results, ",")) } mw.W(">}\n") @@ -87,19 +82,18 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { mw.W("**/\n") mw.W("%s(", m.Name.Lower()) - for i, p := range m.Sig.Params { + params := make([]string, 0, len(m.Sig.Params)) + for _, p := range m.Sig.Params { if IsContext(p) { continue } + name := p.Name.Value if p.IsVariadic { - mw.W("...") - } - mw.W(p.Name.Value) - - if i != paramLen { - mw.W(",") + name = "..." + name } + params = append(params, name) } + mw.W(strings.Join(params, ",")) var prefix string if iface.Namespace != "" { @@ -109,15 +103,14 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { mw.W(") {\n") mw.W("return this.scheduler.__scheduleRequest(\"%s\", {", prefix+m.Name.Lower()) - for i, p := range m.Sig.Params { + requestParams := make([]string, 0, len(m.Sig.Params)) + for _, p := range m.Sig.Params { if IsContext(p) { continue } - mw.W("%[1]s:%[1]s", p.Name) - if i != paramLen { - mw.W(",") - } + requestParams = append(requestParams, fmt.Sprintf("%[1]s:%[1]s", p.Name)) } + mw.W(strings.Join(requestParams, ",")) mw.W("}).catch(e => { throw ") mw.W("%s%sConvertError(e)", LcNameWithAppPrefix(iface), m.Name) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index b0f4396f..b878bfd3 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -122,7 +122,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { if iface.Named.Pkg.Module.External { external = true - g.w.W("%s %sOption", LcNameWithAppPrefix(iface), UcNameWithAppPrefix(iface)) + g.w.W("%s %sOption", LcNameWithAppPrefix(iface, true), UcNameWithAppPrefix(iface, true)) } else { g.w.W("svc%s %s", iface.Named.Name.Upper(), typeStr) } @@ -146,6 +146,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("for _, o := range options {\n o(opts)\n }\n") for _, iface := range g.Interfaces { + optName := LcNameWithAppPrefix(iface, iface.Named.Pkg.Module.External) ifaceType := iface.Named.Type.(*option.IfaceType) epSetName := NameEndpointSetNameVar(iface) @@ -160,7 +161,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("%s := %s{}\n", epSetName, epEndpointSetName) for _, m := range ifaceType.Methods { - optName := LcNameWithAppPrefix(iface) + epFactoryName := "endpointFactory" kitEndpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") stdLogPkg := importer.Import("log", "log") @@ -276,7 +277,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { } else { g.w.W("r.Methods(\"POST\").") if jsonRPCPath != "" { - g.w.W(".Path(\"%s\").", jsonRPCPath) + g.w.W("Path(\"%s\").", jsonRPCPath) } g.w.W("Handler(handler)\n") } diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index a10eb242..a352d239 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -25,6 +25,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { ifaceType := iface.Named.Type.(*option.IfaceType) loggerPkg := importer.Import("log", "github.com/go-kit/kit/log") + levelPkg := importer.Import("level", "github.com/go-kit/kit/log/level") ifaceTypeName := NameInterface(iface) name := NameLoggingMiddleware(iface) @@ -80,20 +81,25 @@ func (g *Logging) Generate(ctx context.Context) []byte { g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) if mopt.Logging.Value && len(logParams) > 0 { + methodName := iface.Named.Name.Lower() + "." + m.Name.Value timePkg := importer.Import("time", "time") g.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + var resultErr *option.VarType for _, result := range m.Sig.Results { if IsError(result) { - g.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name.Value) - g.w.W("%s = logErr.LogError()\n", result.Name.Value) + resultErr = result + g.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name) + g.w.W("%s = logErr.LogError()\n", result.Name) g.w.W("}\n") } } - g.w.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, iface.Named.Name.Lower()+"."+m.Name.Value, timePkg) - - g.w.W("logger.Log(%s)\n", strings.Join(logParams, ",")) + g.w.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, methodName, timePkg) + if resultErr != nil { + g.w.W("if %[2]s != nil {\nlogger = %[1]s.Error(logger)\n} else {\nlogger = %[1]s.Debug(logger)\n}\n", levelPkg, resultErr.Name) + } + g.w.W("_ = logger.Log(%s)\n", strings.Join(logParams, ",")) }) } diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index c8842a20..b547eec4 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -604,11 +604,11 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOption) *op if IsError(r) { continue } - g.fillTypeDef(r.Type) responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) } } else if lenResults == 1 { + g.fillTypeDef(m.Sig.Results[0].Type) responseSchema = g.schemaByType(m.Sig.Results[0].Type) } if mopt.RESTWrapResponse.Value != "" { diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index e4a728e5..070f0cd0 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -341,8 +341,14 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } else { responseType = importer.TypeString(m.Sig.Results[0].Type) } + + var ( + wrapData, structPath string + ) + if mopt.RESTWrapResponse.Value != "" { - g.w.W("var resp struct {\nData %s `json:\"%s\"`\n}\n", responseType, mopt.RESTWrapResponse.Value) + wrapData, structPath = wrapDataClient(stdstrings.Split(mopt.RESTWrapResponse.Value, "."), responseType) + g.w.W("var resp %s\n", wrapData) } else { g.w.W("var resp %s\n", responseType) } @@ -367,7 +373,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n") if mopt.RESTWrapResponse.Value != "" { - g.w.W("return resp.Data, nil\n") + g.w.W("return resp.%s.Data, nil\n", structPath) } else { g.w.W("return resp, nil\n") } diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 88a8abf3..db651898 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -343,7 +343,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) } g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.w.W("return encodeResponseHTTP(ctx, w, map[string]interface{}{\"%s\": response})\n", mopt.RESTWrapResponse.Value) + g.w.W("return encodeResponseHTTP(ctx, w, %s)\n", wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Value, "."))) g.w.W("}") } else { g.w.W("encodeResponseHTTP") diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index c40fb494..08d158b0 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -1,6 +1,7 @@ package generator import ( + "container/list" "fmt" "strconv" stdstrings "strings" @@ -129,15 +130,16 @@ func LcNameWithAppPrefix(iface *config.Interface, notInternal ...bool) string { return strcase.ToLowerCamel(UcNameWithAppPrefix(iface, notInternal...)) } -func UcNameWithAppPrefix(iface *config.Interface, notInternal ...bool) string { - var isNotInternal bool - if len(notInternal) > 0 { - isNotInternal = notInternal[0] +func UcNameWithAppPrefix(iface *config.Interface, useServicePrefix ...bool) string { + var isUseServicePrefix bool + if len(useServicePrefix) > 0 { + isUseServicePrefix = useServicePrefix[0] } - if isNotInternal && iface.Named.Pkg.Module.External { + if isUseServicePrefix && iface.Named.Pkg.Module.External { if iface.External.Iface.ClientName.Value != "" { - return strcase.ToCamel(iface.External.Iface.ClientName.Value) + return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.External.Iface.ClientName.Value) } + return strcase.ToCamel(iface.Named.Pkg.Module.ID) + iface.Named.Name.Upper() } if iface.ClientName.Value != "" { return strcase.ToCamel(iface.ClientName.Value) @@ -221,13 +223,13 @@ func IsError(v *option.VarType) bool { return false } -func Errors(vars option.VarsType) (result []*option.VarType) { +func Error(vars option.VarsType) *option.VarType { for _, v := range vars { if IsError(v) { - result = append(result, v) + return v } } - return + return nil } func Contexts(vars option.VarsType) (result []*option.VarType) { @@ -240,7 +242,10 @@ func Contexts(vars option.VarsType) (result []*option.VarType) { } func LenWithoutErrors(vars option.VarsType) int { - return len(vars) - len(Errors(vars)) + if Error(vars) != nil { + return len(vars) - 1 + } + return len(vars) } func LenWithoutContexts(vars option.VarsType) int { @@ -669,3 +674,58 @@ func isFileType(i interface{}, importer swipe.Importer) bool { } return false } + +func wrapDataServer(parts []string) string { + var fn func(e *list.Element) string + fn = func(e *list.Element) (out string) { + if next := e.Next(); next != nil { + out += "map[string]interface{}{" + out += strconv.Quote(e.Value.(string)) + ": " + out += fn(next) + out += "}" + } else { + out += "map[string]interface{}{" + strconv.Quote(e.Value.(string)) + ": response }" + } + return out + } + l := list.New() + if len(parts) > 0 { + e := l.PushFront(parts[0]) + for i := 1; i < len(parts); i++ { + e = l.InsertAfter(parts[i], e) + } + } + return fn(l.Front()) +} + +func wrapDataClient(parts []string, responseType string) (result, structPath string) { + var fn func(e *list.Element) string + fn = func(e *list.Element) (out string) { + if next := e.Next(); next != nil { + out += "struct { " + out += strcase.ToCamel(e.Value.(string)) + " " + out += fn(next) + out += "}" + } else { + out += fmt.Sprintf("struct {\nData %s `json:\"%s\"`\n}", responseType, e.Value) + } + if prev := e.Prev(); prev != nil { + out += " `json:\"" + prev.Value.(string) + "\"`" + } + return out + } + paths := make([]string, 0, len(parts)) + + l := list.New() + if len(parts) > 0 { + paths = append(paths, strcase.ToCamel(parts[0])) + e := l.PushFront(parts[0]) + for i := 1; i < len(parts); i++ { + if i != len(parts)-1 { + paths = append(paths, strcase.ToCamel(parts[i])) + } + e = l.InsertAfter(parts[i], e) + } + } + return fn(l.Front()), stdstrings.Join(paths, ".") +} diff --git a/v3/internal/plugin/gokit/generator/utils_test.go b/v3/internal/plugin/gokit/generator/utils_test.go new file mode 100644 index 00000000..dccb3a37 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/utils_test.go @@ -0,0 +1,66 @@ +package generator + +import "testing" + +func Test_wrapData(t *testing.T) { + type args struct { + parts []string + } + tests := []struct { + name string + want string + args args + }{ + { + "success test 1", + `map[string]interface{}{"a": map[string]interface{}{"b": map[string]interface{}{"c": response }}}`, + args{[]string{"a", "b", "c"}}, + }, + { + "success test 2", + `map[string]interface{}{"a": response }`, + args{[]string{"a"}}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := wrapDataServer(tt.args.parts); got != tt.want { + t.Errorf("wrapDataClient() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_wrapDataClient(t *testing.T) { + type args struct { + parts []string + responseType string + } + tests := []struct { + name string + want string + wantPath string + args args + }{ + { + "success test 1", + "struct { A struct { B struct {\nData User `json:\"c\"`\n} `json:\"b\"`} `json:\"a\"`}", + "A.B", + args{ + []string{"a", "b", "c"}, + "User", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, path := wrapDataClient(tt.args.parts, tt.args.responseType) + if got != tt.want { + t.Errorf("wrapDataClient() = %v, want %v", got, tt.want) + } + if path != tt.wantPath { + t.Errorf("wrapDataClient() = %v, want %v", path, tt.wantPath) + } + }) + } +} diff --git a/v3/option/decoder.go b/v3/option/decoder.go index 0effccad..c18ce490 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -7,6 +7,7 @@ import ( "go/constant" "go/token" stdtypes "go/types" + "path/filepath" "github.com/fatih/structtag" "github.com/swipe-io/swipe/v3/internal/annotation" @@ -287,6 +288,7 @@ func (d *Decoder) normalize(pkg *packages.Package, obj stdtypes.Object) interfac func (d *Decoder) normalizeModule(module *packages.Module) *ModuleType { if module != nil { return &ModuleType{ + ID: filepath.Base(module.Dir), Version: module.Version, Path: module.Path, Dir: module.Dir, @@ -469,10 +471,12 @@ func (d *Decoder) decode() (result map[string]*Module, err error) { if err != nil { return nil, err } + build := &Build{ Pkg: &PackageType{ - Name: pkg.Name, - Path: pkg.PkgPath, + Name: pkg.Name, + Path: pkg.PkgPath, + Types: pkg.Types, }, BasePath: basePath, Option: map[string]interface{}{ diff --git a/v3/option/types.go b/v3/option/types.go index 387ddd29..b6b4dc06 100644 --- a/v3/option/types.go +++ b/v3/option/types.go @@ -89,6 +89,7 @@ type IfaceType struct { } type ModuleType struct { + ID string Version string Path string Dir string @@ -99,6 +100,7 @@ type PackageType struct { Name string Path string Module *ModuleType + Types *stdtypes.Package } type NamedType struct { diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index e6e569f1..394bd1b3 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -69,6 +69,13 @@ func Generate(cfg *Config) (result []GenerateResult, errs []error) { outputDir := g.OutputDir() if outputDir == "" { outputDir = build.BasePath + } else { + path, err := filepath.Abs(filepath.Join(cfg.WorkDir, outputDir)) + if err != nil { + generatorResult[i].Errs = append(generatorResult[i].Errs, err) + continue + } + outputDir = path } filename := "swipe_gen_" + strcase.ToSnake(p.ID()) + "_" + g.Filename() From 2ddbad1f59624be299ab67607e24e534d0d1bd5b Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 9 Aug 2021 11:48:23 +0300 Subject: [PATCH 214/293] refactor: fixed gateway gen and some improvements --- v3/internal/plugin/gokit/config/config.go | 8 +++---- v3/internal/plugin/gokit/generator/gateway.go | 2 +- .../plugin/gokit/generator/jsonrpc_client.go | 6 +++-- .../plugin/gokit/generator/jsonrpc_server.go | 22 ++++++------------- v3/internal/plugin/gokit/generator/utils.go | 6 ++--- v3/internal/plugin/gokit/plugin.go | 22 +++++++++---------- v3/option/decoder.go | 2 +- 7 files changed, 31 insertions(+), 37 deletions(-) diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 01b9a703..f85597a5 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -47,10 +47,10 @@ type ExternalInterface struct { } type Interface struct { - Named *option.NamedType `mapstructure:"iface"` - Namespace string `mapstructure:"ns"` - ClientName StringValue `swipe:"option"` - External *ExternalInterface `mapstructure:"-"` + Named *option.NamedType `mapstructure:"iface"` + Namespace string `mapstructure:"ns"` + ClientName StringValue `swipe:"option"` + //External *ExternalInterface `mapstructure:"-"` } type OpenapiTag struct { diff --git a/v3/internal/plugin/gokit/generator/gateway.go b/v3/internal/plugin/gokit/generator/gateway.go index 510c6c97..b3169a60 100644 --- a/v3/internal/plugin/gokit/generator/gateway.go +++ b/v3/internal/plugin/gokit/generator/gateway.go @@ -69,7 +69,7 @@ func (g *GatewayGenerator) Generate(ctx context.Context) []byte { g.w.W("type %sOption struct {\n", UcNameWithAppPrefix(iface, true)) g.w.W("Instancer %s.Instancer \n", sdPkg) - g.w.W("Factory func(string) (interface{}, error) \n") + g.w.W("Factory func(string) (%s, error) \n", NameInterface(iface)) for _, method := range ifaceType.Methods { g.w.W("%s EndpointOption\n", method.Name) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 59582b35..44f49012 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -79,8 +79,10 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { g.w.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) requestName := NameRequest(m, iface) + paramsLen := LenWithoutContexts(m.Sig.Params) + resultsLen := LenWithoutErrors(m.Sig.Results) - if len(m.Sig.Params) > 0 { + if paramsLen > 0 { g.w.W("req, ok := obj.(%s)\n", requestName) g.w.W("if !ok {\n") g.w.W("return nil, %s.Errorf(\"couldn't assert request as %s, got %%T\", obj)\n", fmtPkg, requestName) @@ -101,7 +103,7 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil, %sErrorDecode(response.Error.Code, response.Error.Message, response.Error.Data)\n", LcNameIfaceMethod(iface, m)) g.w.W("}\n") - if len(m.Sig.Results) > 0 { + if resultsLen > 0 { var responseType string responseName := NameResponse(m, iface) if m.Sig.IsNamed { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index b878bfd3..7847fc23 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -166,11 +166,6 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { kitEndpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") stdLogPkg := importer.Import("log", "log") - //var clientType = "JSONRPC" - //if iface.External.Config.JSONRPCEnable == nil { - // clientType = "REST" - //} - ioPkg := importer.Import("io", "io") g.w.W("{\n") @@ -187,23 +182,20 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name) g.w.W("}\n") + //g.w.W("cc, ok := c.(%s)\n", NameInterface(iface)) + g.w.W("if %s.Factory == nil {\n", optName) + g.w.W("%s.Panic(\"%s.Factory is not set\")\n", stdLogPkg, optName) + g.w.W("}\n") + g.w.W("%s := func (instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, kitEndpointPkg, ioPkg) - //g.w.W("if %s.Instance != \"\"{\n", optName) - //g.w.W("instance = %[1]s.TrimRight(instance, \"/\") + \"/\" + %[1]s.TrimLeft(%[2]s.Instance, \"/\")", stringsPkg, optName) - //g.w.W("}\n") g.w.W("c, err := %s.Factory(instance)\n", optName) - //g.w.W("c, err := %s.NewClient%s%s(instance, %s.ClientOptions...)\n", transportExtPkg, clientType, UcNameWithAppPrefix(iface, true), optName) + g.w.WriteCheckErr("err", func() { g.w.W("return nil, nil, err\n") }) - g.w.W("cc, ok := c.(%s)\n", NameInterface(iface)) - g.w.W("if !ok {\n") - g.w.W("%s.Panicf(\"client %%v is not implemented interface\", c)\n", stdLogPkg) - g.w.W("}\n") - g.w.W("return ") - g.w.W("Make%sEndpoint(cc), nil, nil\n", UcNameWithAppPrefix(iface)+m.Name.Upper()) + g.w.W("Make%sEndpoint(c), nil, nil\n", UcNameWithAppPrefix(iface)+m.Name.Upper()) g.w.W("\n}\n\n") g.w.W("endpointer := %s.NewEndpointer(%s.Instancer, %s, logger)\n", sdPkg, optName, epFactoryName) diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 08d158b0..d3b9d88b 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -136,8 +136,8 @@ func UcNameWithAppPrefix(iface *config.Interface, useServicePrefix ...bool) stri isUseServicePrefix = useServicePrefix[0] } if isUseServicePrefix && iface.Named.Pkg.Module.External { - if iface.External.Iface.ClientName.Value != "" { - return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.External.Iface.ClientName.Value) + if iface.ClientName.Value != "" { + return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.ClientName.Value) } return strcase.ToCamel(iface.Named.Pkg.Module.ID) + iface.Named.Name.Upper() } @@ -170,7 +170,7 @@ func LcNameJS(iface *config.Interface) string { } func NameInterface(iface *config.Interface) string { - return LcNameWithAppPrefix(iface) + "Interface" + return UcNameWithAppPrefix(iface) + "Interface" } func NameLoggingMiddleware(iface *config.Interface) string { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index a0f22c36..7764389d 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -171,17 +171,17 @@ func (p *Plugin) fillInterfacesByInternal(cfg *swipe.Config) (errs []error) { return true } } - for _, iface := range p.config.Interfaces { - for _, extIface := range c.Interfaces { - if iface.Named.ID() == extIface.Named.ID() { - iface.External = &config.ExternalInterface{ - Iface: extIface, - Config: c, - Build: build, - } - } - } - } + //for _, iface := range p.config.Interfaces { + // for _, extIface := range c.Interfaces { + // if iface.Named.ID() == extIface.Named.ID() { + // iface.External = &config.ExternalInterface{ + // Iface: extIface, + // Config: c, + // Build: build, + // } + // } + // } + //} } return true }) diff --git a/v3/option/decoder.go b/v3/option/decoder.go index c18ce490..d2a19266 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -288,7 +288,7 @@ func (d *Decoder) normalize(pkg *packages.Package, obj stdtypes.Object) interfac func (d *Decoder) normalizeModule(module *packages.Module) *ModuleType { if module != nil { return &ModuleType{ - ID: filepath.Base(module.Dir), + ID: filepath.Base(module.Path), Version: module.Version, Path: module.Path, Dir: module.Dir, From d3e7a707422af355777934fcf7c247f2e45775c4 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 11 Aug 2021 19:41:40 +0300 Subject: [PATCH 215/293] refactor: fixed bugs and added config env doc generator --- .../plugin/config/{generator.go => config.go} | 78 +++--- v3/internal/plugin/config/config_gen.go | 2 +- v3/internal/plugin/config/markdown_doc.go | 80 ++++++ v3/internal/plugin/config/plugin.go | 13 +- v3/internal/plugin/config/utils.go | 3 +- v3/internal/plugin/gokit/config/config.go | 39 +-- v3/internal/plugin/gokit/config/config_gen.go | 2 +- v3/internal/plugin/gokit/generator/helpers.go | 34 +-- .../plugin/gokit/generator/jsonrpc_doc.go | 2 +- .../gokit/generator/jsonrpc_js_client.go | 2 +- .../plugin/gokit/generator/jsonrpc_server.go | 9 +- v3/internal/plugin/gokit/generator/logging.go | 1 + v3/internal/plugin/gokit/generator/openapi.go | 160 ++++------- .../plugin/gokit/generator/rest_client.go | 157 ++++++----- .../plugin/gokit/generator/rest_server.go | 252 ++++++++++-------- v3/internal/plugin/gokit/generator/utils.go | 131 +++++++-- v3/writer/base_writer.go | 6 +- v3/writer/golang_writer.go | 2 +- 18 files changed, 569 insertions(+), 404 deletions(-) rename v3/internal/plugin/config/{generator.go => config.go} (63%) create mode 100644 v3/internal/plugin/config/markdown_doc.go diff --git a/v3/internal/plugin/config/generator.go b/v3/internal/plugin/config/config.go similarity index 63% rename from v3/internal/plugin/config/generator.go rename to v3/internal/plugin/config/config.go index a8b5c8fb..54a97ceb 100644 --- a/v3/internal/plugin/config/generator.go +++ b/v3/internal/plugin/config/config.go @@ -12,7 +12,7 @@ import ( ) type Generator struct { - writer.GoWriter + w writer.GoWriter Struct *option.NamedType FuncName string } @@ -22,8 +22,8 @@ func (g *Generator) Generate(ctx context.Context) []byte { typeName := importer.TypeString(g.Struct) - g.W("func %s() (cfg *%s, errs []error) {\n", g.FuncName, typeName) - g.W("cfg = &%s{}\n", typeName) + g.w.W("func %s() (cfg *%s, errs []error) {\n", g.FuncName, typeName) + g.w.W("cfg = &%s{}\n", typeName) var ( foundFlags bool @@ -60,50 +60,50 @@ func (g *Generator) Generate(ctx context.Context) []byte { if foundFlags { flagPkg := importer.Import("flag", "flag") - g.W("%s.Parse()\n", flagPkg) + g.w.W("%s.Parse()\n", flagPkg) - g.W("seen := map[string]struct{}{}\n") - g.W("%[1]s.Visit(func(f *%[1]s.Flag) { seen[f.Name] = struct{}{} })\n", flagPkg) + g.w.W("seen := map[string]struct{}{}\n") + g.w.W("%[1]s.Visit(func(f *%[1]s.Flag) { seen[f.Name] = struct{}{} })\n", flagPkg) for _, o := range requiredFlags { - g.W("if _, ok := seen[\"%s\"]; !ok {\n", o.opts.name) + g.w.W("if _, ok := seen[\"%s\"]; !ok {\n", o.opts.name) g.writeAppendErr(importer, o.opts) - g.W("}") + g.w.W("}") if !bool(o.opts.useZero) && bool(o.opts.required) { - g.W(" else {\n") + g.w.W(" else {\n") g.writeCheckZero(importer, o.f, o.opts) - g.W("}\n") + g.w.W("}\n") } else { - g.W("\n") + g.w.W("\n") } } } - g.W("return\n") - g.W("}\n\n") + g.w.W("return\n") + g.w.W("}\n\n") - g.W("func (cfg %s) String() string {\n", typeName) - g.W("out := `\n") + g.w.W("func (cfg %s) String() string {\n", typeName) + g.w.W("out := `\n") if len(envs) > 0 { fmtPkg := importer.Import("fmt", "fmt") for _, env := range envs { if env.isFlag { - g.W("--%s ", env.name) + g.w.W("--%s ", env.name) } else { - g.W("%s=", env.name) + g.w.W("%s=", env.name) } - g.W("`+%s.Sprintf(\"%%v\", %s)+`", fmtPkg, "cfg."+env.fieldPath) + g.w.W("`+%s.Sprintf(\"%%v\", %s)+`", fmtPkg, "cfg."+env.fieldPath) if env.desc != "" { - g.W(" ; %s", env.desc) + g.w.W(" ; %s", env.desc) } - g.Line() + g.w.Line() } } - g.W("`\n") - g.W("return out\n") - g.W("}\n\n") + g.w.W("`\n") + g.w.W("return out\n") + g.w.W("}\n\n") - return g.Bytes() + return g.w.Bytes() } func (g *Generator) OutputDir() string { @@ -117,19 +117,19 @@ func (g *Generator) Filename() string { func (g *Generator) writeEnv(importer swipe.Importer, f *option.VarType, opts fldOpts) { tmpVar := strcase.ToLowerCamel(opts.fieldPath) + "Tmp" pkgOS := importer.Import("os", "os") - g.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, pkgOS, strconv.Quote(opts.name)) - g.W("if ok {\n") + g.w.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, pkgOS, strconv.Quote(opts.name)) + g.w.W("if ok {\n") - g.WriteConvertType(importer, "cfg."+opts.fieldPath, tmpVar, f, nil, "errs", false, "convert "+opts.name+" error") + g.w.WriteConvertType(importer, "cfg."+opts.fieldPath, tmpVar, f, nil, "errs", false, "convert "+opts.name+" error") g.writeCheckZero(importer, f, opts) - g.W("}") + g.w.W("}") if opts.required { - g.W(" else {\n") + g.w.W(" else {\n") g.writeAppendErr(importer, opts) - g.W("}\n") + g.w.W("}\n") } else { - g.W("\n") + g.w.W("\n") } } @@ -137,19 +137,19 @@ func (g *Generator) writeFlag(i swipe.Importer, f *option.VarType, opts fldOpts) if t, ok := f.Type.(*option.BasicType); ok { flagPkg := i.Import("flag", "flag") if t.IsString() { - g.W("%[1]s.StringVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + g.w.W("%[1]s.StringVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) } if t.IsInt64() { - g.W("%[1]s.Int64Var(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + g.w.W("%[1]s.Int64Var(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) } if t.IsInt() { - g.W("%[1]s.IntVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + g.w.W("%[1]s.IntVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) } if t.IsFloat64() { - g.W("%[1]s.Float64Var(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + g.w.W("%[1]s.Float64Var(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) } if t.IsBool() { - g.W("%[1]s.BoolVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) + g.w.W("%[1]s.BoolVar(&cfg.%[2]s, \"%[3]s\", cfg.%[2]s, \"%[4]s\")\n", flagPkg, opts.fieldPath, opts.name, opts.desc) } } } @@ -157,9 +157,9 @@ func (g *Generator) writeFlag(i swipe.Importer, f *option.VarType, opts fldOpts) func (g *Generator) writeCheckZero(i swipe.Importer, f *option.VarType, opts fldOpts) { if !bool(opts.useZero) && bool(opts.required) { if f.Zero != "" { - g.W("if %s == %s {\n", "cfg."+opts.fieldPath, f.Zero) + g.w.W("if %s == %s {\n", "cfg."+opts.fieldPath, f.Zero) g.writeAppendErr(i, opts) - g.W("}\n") + g.w.W("}\n") } } } @@ -167,5 +167,5 @@ func (g *Generator) writeCheckZero(i swipe.Importer, f *option.VarType, opts fld func (g *Generator) writeAppendErr(i swipe.Importer, opts fldOpts) { errorsPkg := i.Import("errors", "errors") requiredMsg := strconv.Quote(fmt.Sprintf("%s %s required", opts.tagName(), opts.name)) - g.W("errs = append(errs, %s.New(%s))\n ", errorsPkg, requiredMsg) + g.w.W("errs = append(errs, %s.New(%s))\n ", errorsPkg, requiredMsg) } diff --git a/v3/internal/plugin/config/config_gen.go b/v3/internal/plugin/config/config_gen.go index dc00647b..2ced7112 100644 --- a/v3/internal/plugin/config/config_gen.go +++ b/v3/internal/plugin/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Config\nfunc Config(opts ...ConfigOption) {}\n\n// EnvironmentOption ...\ntype EnvironmentOption string\n\n// FuncName ...\nfunc FuncName(value string) EnvironmentOption { return \"implementation not generated, run swipe\" }\n\n// ConfigOption ...\ntype ConfigOption string\n\n// Environment ...\nfunc Environment(structType interface{}, opts ...EnvironmentOption) ConfigOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Config\nfunc Config(opts ...ConfigOption) {}\n\n// EnvironmentOption ...\ntype EnvironmentOption string\n\n// FuncName ...\nfunc FuncName(value string) EnvironmentOption { return \"implementation not generated, run swipe\" }\n\n// EnableDoc ...\nfunc EnableDoc() EnvironmentOption { return \"implementation not generated, run swipe\" }\n\n// OutputDoc ...\nfunc OutputDoc(value string) EnvironmentOption { return \"implementation not generated, run swipe\" }\n\n// ConfigOption ...\ntype ConfigOption string\n\n// Environment ...\nfunc Environment(structType interface{}, opts ...EnvironmentOption) ConfigOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/config/markdown_doc.go b/v3/internal/plugin/config/markdown_doc.go new file mode 100644 index 00000000..031b3302 --- /dev/null +++ b/v3/internal/plugin/config/markdown_doc.go @@ -0,0 +1,80 @@ +package config + +import ( + "context" + + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/writer" +) + +type MarkdownDocGenerator struct { + w writer.TextWriter + Struct *option.NamedType + Output string +} + +func (g *MarkdownDocGenerator) Generate(ctx context.Context) []byte { + g.w.W("# Config\n\n") + + var flags []fldOpts + var envs []fldOpts + + walk(g.Struct, func(f, parent *option.VarType, opts fldOpts) { + if opts.isFlag { + flags = append(flags, opts) + } else { + envs = append(envs, opts) + } + }) + + if len(envs) > 0 { + g.w.W("## Environment variables\n\n") + + g.w.W("| Name | Type | Description | Required | Use Zero |\n|------|------|------|------|------|\n") + + for _, opts := range envs { + desc := " " + if opts.desc != "" { + desc = opts.desc + } + g.w.W("|%s|%s|%s|%s|%s|\n", opts.name, g.getTypeSrt(opts.t), desc, opts.required, opts.useZero) + } + } + + if len(flags) > 0 { + g.w.W("## Flags\n\n") + g.w.W("| Name | Type | Description | Required | Use Zero |\n|------|------|------|------|------|\n") + + for _, opts := range flags { + desc := " " + if opts.desc != "" { + desc = opts.desc + } + g.w.W("|%s|%s|%s|%s|%s|\n", opts.name, g.getTypeSrt(opts.t), desc, opts.required, opts.useZero) + } + } + return g.w.Bytes() +} + +func (g *MarkdownDocGenerator) getTypeSrt(t interface{}) string { + switch t := t.(type) { + default: + return "" + case *option.MapType: + return "map[string]" + g.getTypeSrt(t.Value) + case *option.ArrayType: + return g.getTypeSrt(t.Value) + "[]" + case *option.SliceType: + return g.getTypeSrt(t.Value) + "[]" + case *option.BasicType: + return t.Name + } +} + +func (g *MarkdownDocGenerator) OutputDir() string { + return g.Output +} + +func (g *MarkdownDocGenerator) Filename() string { + return "config_doc.md" +} diff --git a/v3/internal/plugin/config/plugin.go b/v3/internal/plugin/config/plugin.go index dc929f68..8dddfe51 100644 --- a/v3/internal/plugin/config/plugin.go +++ b/v3/internal/plugin/config/plugin.go @@ -2,7 +2,6 @@ package config import ( "github.com/mitchellh/mapstructure" - "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" ) @@ -13,13 +12,15 @@ func init() { swipe.RegisterPlugin(&Plugin{}) } -type Func struct { +type StringValue struct { Value string } type Environment struct { StructType *option.NamedType - FuncName *Func `swipe:"option"` + FuncName *StringValue `swipe:"option"` + EnableDoc *struct{} `swipe:"option"` + OutputDoc StringValue `swipe:"option"` } // Config @@ -37,6 +38,12 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { if p.config.Environment.FuncName != nil { funcName = p.config.Environment.FuncName.Value } + if p.config.Environment.EnableDoc != nil { + generators = append(generators, &MarkdownDocGenerator{ + Struct: p.config.Environment.StructType, + Output: p.config.Environment.OutputDoc.Value, + }) + } generators = append(generators, &Generator{ Struct: p.config.Environment.StructType, FuncName: funcName, diff --git a/v3/internal/plugin/config/utils.go b/v3/internal/plugin/config/utils.go index ffc4678b..f7a1e2ef 100644 --- a/v3/internal/plugin/config/utils.go +++ b/v3/internal/plugin/config/utils.go @@ -25,7 +25,7 @@ type fldOpts struct { required Bool useZero Bool isFlag bool - typeStr string + t interface{} } func (o fldOpts) tagName() string { @@ -38,6 +38,7 @@ func (o fldOpts) tagName() string { func getFieldOpts(f *option.VarType, tags *structtag.Tags) (result fldOpts) { result.name = strcase.ToScreamingSnake(f.Name.Upper()) result.fieldPath = f.Name.Value + result.t = f.Type if tag, err := tags.Get("env"); err == nil { for _, o := range tag.Options { diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index f85597a5..ee67a2df 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -36,6 +36,10 @@ type IntValue struct { Value int } +type Int64Value struct { + Value int64 +} + type BoolValue struct { Value bool } @@ -73,23 +77,24 @@ type RESTMultipart struct { } type MethodOption struct { - Signature *option.NamedType - Instrumenting BoolValue `swipe:"option"` - Logging BoolValue `swipe:"option"` - LoggingParams LoggingParams `swipe:"option"` - LoggingContext []LoggingContext `swipe:"option"` - RESTMethod StringValue `swipe:"option"` - RESTWrapResponse StringValue `swipe:"option"` - RESTPath *StringValue `swipe:"option"` - RESTMultipart *RESTMultipart `swipe:"option"` - RESTHeaderVars SliceStringValue `swipe:"option"` - RESTQueryVars SliceStringValue `swipe:"option"` - RESTQueryValues SliceStringValue `swipe:"option"` - RESTPathVars map[string]string `swipe:"option"` - ServerEncodeResponse FuncTypeValue `swipe:"option"` - ServerDecodeRequest FuncTypeValue `swipe:"option"` - ClientEncodeRequest FuncTypeValue `swipe:"option"` - ClientDecodeResponse FuncTypeValue `swipe:"option"` + Signature *option.NamedType + Instrumenting BoolValue `swipe:"option"` + Logging BoolValue `swipe:"option"` + LoggingParams LoggingParams `swipe:"option"` + LoggingContext []LoggingContext `swipe:"option"` + RESTMethod StringValue `swipe:"option"` + RESTWrapResponse StringValue `swipe:"option"` + RESTPath *StringValue `swipe:"option"` + RESTMultipartMaxMemory Int64Value `swipe:"option"` + RESTHeaderVars SliceStringValue `swipe:"option"` + RESTQueryVars SliceStringValue `swipe:"option"` + RESTQueryValues SliceStringValue `swipe:"option"` + RESTPathVars map[string]string `swipe:"option"` + RESTBodyType StringValue `swipe:"option"` + ServerEncodeResponse FuncTypeValue `swipe:"option"` + ServerDecodeRequest FuncTypeValue `swipe:"option"` + ClientEncodeRequest FuncTypeValue `swipe:"option"` + ClientDecodeResponse FuncTypeValue `swipe:"option"` } type OpenapiInfo struct { diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 8e7fffbc..864a1025 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOption ...\ntype MethodOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// Exclude ...\nfunc Exclude(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTPath ...\nfunc RESTPath(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipart ...\nfunc RESTMultipart(maxMemory int64) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOption ...\ntype MethodOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTPath ...\nfunc RESTPath(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index 55070899..61aeeed4 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -21,29 +21,31 @@ type Helpers struct { } func (g *Helpers) Generate(ctx context.Context) []byte { - var ( - kitHTTPPkg string - ) importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - if g.JSONRPCEnable { - if g.UseFast { - kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") - } else { - kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") - } - } else { - if g.UseFast { - kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") - } else { - kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") - } - } endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") g.writeFuncMiddlewareChain(endpointPkg) if g.HTTPServerEnable { + var ( + kitHTTPPkg string + ) + + if g.JSONRPCEnable { + if g.UseFast { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + } else { + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + } + serverOptType := "serverOpts" serverOptionType := "ServerOption" kitHTTPServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index 32e5c8f7..aa8a78d4 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -9,7 +9,7 @@ import ( ) type JSONRPCDocGenerator struct { - w writer.BaseWriter + w writer.TextWriter AppName string JSPkgImportPath string Interfaces []*config.Interface diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index b51f7c1a..3b581313 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -19,7 +19,7 @@ type JSONRPCJSClientGenerator struct { func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { g.w.W(jsonRPCClientBase) - mw := writer.BaseWriter{} + mw := writer.TextWriter{} defTypes := map[string]*option.NamedType{} diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index 7847fc23..a9adbed2 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -153,7 +153,6 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { if iface.Named.Pkg.Module.External { epEndpointSetName := NameEndpointSetName(iface) - //transportExtPkg := importer.Import(iface.External.Build.Pkg.Name, iface.External.Build.Pkg.Path) sdPkg := importer.Import("sd", "github.com/go-kit/kit/sd") lbPkg := importer.Import("sd", "github.com/go-kit/kit/sd/lb") @@ -182,7 +181,6 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name) g.w.W("}\n") - //g.w.W("cc, ok := c.(%s)\n", NameInterface(iface)) g.w.W("if %s.Factory == nil {\n", optName) g.w.W("%s.Panic(\"%s.Factory is not set\")\n", stdLogPkg, optName) g.w.W("}\n") @@ -242,12 +240,9 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { if i > 0 { g.w.W(",") } - //if iface.Named.Pkg.Module.External { - // pkgExtTransport := importer.Import(iface.ExternalConfig.Build.Pkg.Name, iface.ExternalConfig.Build.Pkg.Path) - // g.w.W("%s.Make%sEndpointCodecMap(%s", pkgExtTransport, iface.Named.Name.Upper(), epSetName) - //} else { + g.w.W("Make%sEndpointCodecMap(%s", UcNameWithAppPrefix(iface), epSetName) - //} + if iface.Namespace != "" { g.w.W(",%s", strconv.Quote(iface.Namespace)) } diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index a352d239..581ce964 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -75,6 +75,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { logParams = append(logParams, strconv.Quote("err"), result.Name.Value) continue } + logParams = append(logParams, strconv.Quote(result.Name.Value), result.Name.Value) results = append(results, result.Name.Value, importer.TypeString(result)) } diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index b547eec4..71051347 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -18,7 +18,7 @@ import ( ) type Openapi struct { - w writer.BaseWriter + w writer.TextWriter JSONRPCEnable bool Contact config.OpenapiContact Info config.OpenapiInfo @@ -179,43 +179,12 @@ func (g *Openapi) Generate(ctx context.Context) []byte { return data } -func makeOpenapiSchemaRESTError() *openapi.Schema { - return &openapi.Schema{ - Type: "object", - Properties: openapi.Properties{ - "error": &openapi.Schema{ - Type: "string", - }, - }, - } +func (g *Openapi) OutputDir() string { + return g.Output } -func makeOpenapiSchemaJRPCError(code int64) *openapi.Schema { - return &openapi.Schema{ - Type: "object", - Properties: openapi.Properties{ - "jsonrpc": &openapi.Schema{ - Type: "string", - Example: "2.0", - }, - "id": &openapi.Schema{ - Type: "string", - Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", - }, - "error": &openapi.Schema{ - Type: "object", - Properties: openapi.Properties{ - "code": &openapi.Schema{ - Type: "integer", - Example: code, - }, - "message": &openapi.Schema{ - Type: "string", - }, - }, - }, - }, - } +func (g *Openapi) Filename() string { + return "openapi.json" } func (g *Openapi) makeRef(named *option.NamedType) string { @@ -375,9 +344,7 @@ func (g *Openapi) schemaByType(t interface{}) (schema *openapi.Schema) { return } -func (g *Openapi) makeJSONRPCPath( - m *option.FuncType, prefix string, mopt config.MethodOption, -) *openapi.Operation { +func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config.MethodOption) *openapi.Operation { responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, @@ -416,6 +383,7 @@ func (g *Openapi) makeJSONRPCPath( responseSchema.Properties[r.Name.Lower()] = schema } } else if lenResults == 1 { + g.fillTypeDef(m.Sig.Results[0].Type) responseSchema = g.schemaByType(m.Sig.Results[0].Type) } else { responseSchema.Example = json.RawMessage("null") @@ -551,47 +519,39 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOption) *op Properties: map[string]*openapi.Schema{}, } - queryVars := make(map[string]queryVar, len(mopt.RESTQueryVars.Value)) - for i := 0; i < len(mopt.RESTQueryVars.Value); i += 2 { - queryName := mopt.RESTQueryVars.Value[i] - fieldName := mopt.RESTQueryVars.Value[i+1] - var required bool - if stdstrings.HasPrefix(queryName, "!") { - queryName = queryName[1:] - required = true - } - queryVars[fieldName] = queryVar{ - name: queryName, - required: required, - } - } - - queryValues := make(map[string]string, len(mopt.RESTQueryValues.Value)) - for i := 0; i < len(mopt.RESTQueryValues.Value); i += 2 { - queryName := mopt.RESTQueryValues.Value[i] - value := mopt.RESTQueryValues.Value[i+1] - queryValues[queryName] = value - } - - headerVars := make(map[string]string, len(mopt.RESTHeaderVars.Value)) - for i := 0; i < len(mopt.RESTHeaderVars.Value); i += 2 { - headerVars[mopt.RESTHeaderVars.Value[i]] = mopt.RESTHeaderVars.Value[i+1] - } + queryVars := make([]varType, 0, len(mopt.RESTQueryVars.Value)) + queryValues := make([]varType, 0, len(mopt.RESTQueryValues.Value)) + headerVars := make([]varType, 0, len(mopt.RESTHeaderVars.Value)) + pathVars := make([]varType, 0, len(mopt.RESTPathVars)) + paramVars := make([]*option.VarType, 0, len(m.Sig.Params)) for _, p := range m.Sig.Params { if IsContext(p) { continue } - if _, ok := mopt.RESTPathVars[p.Name.Value]; ok { + if v, ok := findParam(p, mopt.RESTQueryVars.Value); ok { + queryVars = append(queryVars, v) + continue + } + if v, ok := findParam(p, mopt.RESTQueryValues.Value); ok { + queryValues = append(queryValues, v) continue } - if _, ok := queryVars[p.Name.Value]; ok { + if v, ok := findParam(p, mopt.RESTHeaderVars.Value); ok { + headerVars = append(headerVars, v) continue } - if _, ok := headerVars[p.Name.Value]; ok { + if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { + pathVars = append(pathVars, varType{ + p: p, + value: regexp, + }) continue } + paramVars = append(paramVars, p) + } + for _, p := range paramVars { g.fillTypeDef(p.Type) schema := g.schemaByType(p.Type) schema.Description = p.Comment @@ -641,33 +601,37 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOption) *op Summary: m.Name.Value, Responses: responses, } - for _, p := range m.Sig.Params { - if name, ok := mopt.RESTPathVars[p.Name.Value]; ok { - o.Parameters = append(o.Parameters, openapi.Parameter{ - In: "path", - Name: name, - Description: p.Comment, - //Required: true, - Schema: g.schemaByType(p.Type), - }) - } else if name, ok := headerVars[p.Name.Value]; ok { - o.Parameters = append(o.Parameters, openapi.Parameter{ - In: "header", - Name: name, - Description: p.Comment, - //Required: true, - Schema: g.schemaByType(p.Type), - }) - } else if queryVar, ok := queryVars[p.Name.Value]; ok { - o.Parameters = append(o.Parameters, openapi.Parameter{ - In: "query", - Name: queryVar.name, - Description: p.Comment, - Required: queryVar.required, - Schema: g.schemaByType(p.Type), - }) - } + + for _, pathVar := range pathVars { + o.Parameters = append(o.Parameters, openapi.Parameter{ + In: "path", + Name: pathVar.value, + Description: pathVar.p.Comment, + Required: pathVar.required, + Schema: g.schemaByType(pathVar.p.Type), + }) } + + for _, headerVar := range headerVars { + o.Parameters = append(o.Parameters, openapi.Parameter{ + In: "header", + Name: headerVar.value, + Description: headerVar.p.Comment, + Required: headerVar.required, + Schema: g.schemaByType(headerVar.p.Type), + }) + } + + for _, queryVar := range queryVars { + o.Parameters = append(o.Parameters, openapi.Parameter{ + In: "query", + Name: queryVar.value, + Description: queryVar.p.Comment, + Required: queryVar.required, + Schema: g.schemaByType(queryVar.p.Type), + }) + } + switch mopt.RESTMethod.Value { case "POST", "PUT", "PATCH": o.RequestBody = &openapi.RequestBody{ @@ -681,11 +645,3 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOption) *op } return o } - -func (g *Openapi) OutputDir() string { - return g.Output -} - -func (g *Openapi) Filename() string { - return "openapi.json" -} diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 070f0cd0..640e4bb1 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -13,8 +13,9 @@ import ( "github.com/swipe-io/swipe/v3/writer" ) -type queryVar struct { - name string +type varType struct { + p *option.VarType + value string required bool } @@ -87,6 +88,11 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { epName := LcNameEndpoint(iface, m) + bodyType := mopt.RESTBodyType.Value + if bodyType == "" { + bodyType = "json" + } + httpMethod := mopt.RESTMethod.Value if httpMethod == "" { httpMethod = "GET" @@ -104,13 +110,13 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } var ( - pathVars []*option.VarType - queryVars []*option.VarType - headerVars []*option.VarType - multipartVars []*option.VarType + pathVars []*option.VarType + queryVars []*option.VarType + headerVars []*option.VarType + paramVars []*option.VarType ) - methodQueryVars := make(map[string]queryVar, len(mopt.RESTQueryVars.Value)) + methodQueryVars := make(map[string]varType, len(mopt.RESTQueryVars.Value)) for i := 0; i < len(mopt.RESTQueryVars.Value); i += 2 { queryName := mopt.RESTQueryVars.Value[i] fieldName := mopt.RESTQueryVars.Value[i+1] @@ -119,8 +125,8 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { queryName = queryName[1:] required = true } - methodQueryVars[fieldName] = queryVar{ - name: queryName, + methodQueryVars[fieldName] = varType{ + value: queryName, required: required, } } @@ -151,12 +157,12 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { queryVars = append(queryVars, p) } else if _, ok := methodHeaderVars[p.Name.Value]; ok { headerVars = append(headerVars, p) - } else if mopt.RESTMultipart != nil { - multipartVars = append(multipartVars, p) + } else { + paramVars = append(paramVars, p) } } - remainingParams := len(m.Sig.Params) - (len(pathVars) + len(queryVars) + len(headerVars) + len(multipartVars)) + paramsLen := LenWithoutContexts(m.Sig.Params) g.w.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) g.w.W(strconv.Quote(httpMethod)) @@ -168,7 +174,6 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } else { g.w.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) - paramsLen := LenWithoutContexts(m.Sig.Params) if paramsLen > 0 { nameRequest := NameRequest(m, iface) @@ -230,7 +235,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("if %s != nil {\n", valueID) } g.w.WriteFormatType(importer, name, valueID, p) - g.w.W("q.Add(%s, %s)\n", strconv.Quote(methodQueryVars[p.Name.Value].name), name) + g.w.W("q.Add(%s, %s)\n", strconv.Quote(methodQueryVars[p.Name.Value].value), name) if isPointer { g.w.W("}\n") @@ -243,45 +248,6 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } } - if len(multipartVars) > 0 { - bytesPkg := importer.Import("bytes", "bytes") - multipartPkg := importer.Import("multipart", "mime/multipart") - ioutilPkg := importer.Import("ioutil", "io/ioutil") - - g.w.W("body := new(%s.Buffer)\n", bytesPkg) - g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) - - for _, p := range multipartVars { - if isFileType(p.Type, importer) { - g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) - g.w.WriteCheckErr("err", func() { - g.w.W("return err\n") - }) - g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) - g.w.WriteCheckErr("err", func() { - g.w.W("return err\n") - }) - g.w.W("part.Write(data)\n") - continue - } - name := p.Name.Value + "Str" - g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) - g.w.W("_ = writer.WriteField(%s, %s)\n", strconv.Quote(p.Name.Value), name) - } - g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") - - if g.UseFast { - g.w.W("r.SetBody(body.Bytes())\n") - } else { - g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) - } - g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") - } else { - if remainingParams > 0 { - g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") - } - } - if g.UseFast { g.w.W("r.URI().SetQueryString(q.String())\n") } else { @@ -289,31 +255,78 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } } - for _, p := range headerVars { - name := p.Name.Value + "Str" - g.w.WriteFormatType(importer, name, "req."+strcase.ToCamel(p.Name.Value), p) - g.w.W("r.Header.Add(%s, %s)\n", strconv.Quote(methodHeaderVars[p.Name.Value]), name) - } - switch stdstrings.ToUpper(httpMethod) { - case "POST", "PUT", "PATCH": - if len(multipartVars) == 0 && remainingParams > 0 { - jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - - g.w.W("data, err := %s.Marshal(req)\n", jsonPkg) - g.w.W("if err != nil {\n") - g.w.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) - g.w.W("}\n") - - if g.UseFast { - g.w.W("r.SetBody(data)\n") - } else { + if paramsLen > 0 { + switch stdstrings.ToUpper(httpMethod) { + case "POST", "PUT", "PATCH": + switch bodyType { + case "json": + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") + g.w.W("data, err := %s.Marshal(req)\n", jsonPkg) + g.w.W("if err != nil {\n") + g.w.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) + g.w.W("}\n") + if g.UseFast { + g.w.W("r.SetBody(data)\n") + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + bytesPkg := importer.Import("bytes", "bytes") + g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + } + case "x-www-form-urlencoded": ioutilPkg := importer.Import("ioutil", "io/ioutil") bytesPkg := importer.Import("bytes", "bytes") + g.w.W("r.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n") + g.w.W("params := %s.Values{}\n", urlPkg) + for _, p := range paramVars { + name := p.Name.Value + "Str" + g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) + g.w.W("params.Set(\"data\", %s)\n", name) + } + g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) + case "form-data": + bytesPkg := importer.Import("bytes", "bytes") + multipartPkg := importer.Import("multipart", "mime/multipart") + ioutilPkg := importer.Import("ioutil", "io/ioutil") + + g.w.W("body := new(%s.Buffer)\n", bytesPkg) + g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) + + for _, p := range paramVars { + if isFileType(p.Type, importer) { + g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("part.Write(data)\n") + continue + } + name := p.Name.Value + "Str" + g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) + g.w.W("_ = writer.WriteField(%s, %s)\n", strconv.Quote(p.Name.Value), name) + } + g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") - g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + if g.UseFast { + g.w.W("r.SetBody(body.Bytes())\n") + } else { + g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) + } + g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") } } } + + for _, p := range headerVars { + name := p.Name.Value + "Str" + g.w.WriteFormatType(importer, name, "req."+strcase.ToCamel(p.Name.Value), p) + g.w.W("r.Header.Add(%s, %s)\n", strconv.Quote(methodHeaderVars[p.Name.Value]), name) + } + g.w.W("return nil\n") g.w.W("}") } diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index db651898..a56523b5 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -103,24 +103,36 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - queryVars := make(map[string]queryVar, len(mopt.RESTQueryVars.Value)) - for i := 0; i < len(mopt.RESTQueryVars.Value); i += 2 { - queryName := mopt.RESTQueryVars.Value[i] - fieldName := mopt.RESTQueryVars.Value[i+1] - var required bool - if stdstrings.HasPrefix(queryName, "!") { - queryName = queryName[1:] - required = true - } - queryVars[fieldName] = queryVar{ - name: queryName, - required: required, - } + bodyType := mopt.RESTBodyType.Value + if bodyType == "" { + bodyType = "json" } - headerVars := make(map[string]string, len(mopt.RESTHeaderVars.Value)) - for i := 0; i < len(mopt.RESTHeaderVars.Value); i += 2 { - headerVars[mopt.RESTHeaderVars.Value[i]] = mopt.RESTHeaderVars.Value[i+1] + queryVars := make([]varType, 0, len(mopt.RESTQueryVars.Value)) + headerVars := make([]varType, 0, len(mopt.RESTHeaderVars.Value)) + pathVars := make([]varType, 0, len(mopt.RESTPathVars)) + paramVars := make([]*option.VarType, 0, len(m.Sig.Params)) + + for _, p := range m.Sig.Params { + if IsContext(p) { + continue + } + if v, ok := findParam(p, mopt.RESTQueryVars.Value); ok { + queryVars = append(queryVars, v) + continue + } + if v, ok := findParam(p, mopt.RESTHeaderVars.Value); ok { + headerVars = append(headerVars, v) + continue + } + if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { + pathVars = append(pathVars, varType{ + p: p, + value: regexp, + }) + continue + } + paramVars = append(paramVars, p) } var urlPath string @@ -136,8 +148,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { urlPath = "/" + urlPath } - remainingParams := len(m.Sig.Params) - (len(mopt.RESTPathVars) + len(queryVars) + len(headerVars)) - if g.UseFast { g.w.W("r.To(") if mopt.RESTMethod.Value != "" { @@ -185,28 +195,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if len(m.Sig.Params) > 0 { g.w.W("var req %s\n", nameRequest) - switch stdstrings.ToUpper(mopt.RESTMethod.Value) { - case "POST", "PUT", "PATCH": - if remainingParams > 0 { - jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - fmtPkg := importer.Import("fmt", "fmt") - pkgIO := importer.Import("io", "io") - if g.UseFast { - g.w.W("err = %s.Unmarshal(r.Body(), &req)\n", jsonPkg) - } else { - ioutilPkg := importer.Import("ioutil", "io/ioutil") - - g.w.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) - }) - g.w.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) - } - g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) - g.w.W("}\n") - } - } if len(mopt.RESTPathVars) > 0 { if g.UseFast { fmtPkg := importer.Import("fmt", "fmt") @@ -227,100 +215,134 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } } - if mopt.RESTMultipart != nil { - var multipartMaxMemory int64 = 67108864 - if mopt.RESTMultipart.MaxMemory > 0 { - multipartMaxMemory = mopt.RESTMultipart.MaxMemory - } + for _, pathVar := range pathVars { + var valueID string if g.UseFast { - g.w.W("form, err := r.MultipartForm()\n") + valueID = "vars.Param(" + strconv.Quote(pathVar.p.Name.Value) + ")" } else { - g.w.W("err = r.ParseMultipartForm(%d)\n", multipartMaxMemory) + valueID = "vars[" + strconv.Quote(pathVar.p.Name.Value) + "]" } - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) + g.w.WriteConvertType(importer, "req."+strcase.ToCamel(pathVar.p.Name.Value), valueID, pathVar.p, []string{"nil"}, "", false, "") } - for _, p := range m.Sig.Params { - if _, ok := mopt.RESTPathVars[p.Name.Value]; ok { - var valueID string - if g.UseFast { - valueID = "vars.Param(" + strconv.Quote(p.Name.Value) + ")" - } else { - valueID = "vars[" + strconv.Quote(p.Name.Value) + "]" - } - g.w.WriteConvertType(importer, "req."+strcase.ToCamel(p.Name.Value), valueID, p, []string{"nil"}, "", false, "") - } else if queryVar, ok := queryVars[p.Name.Value]; ok { - var valueID string + for _, queryVar := range queryVars { + var valueID string + if g.UseFast { + valueID = "string(q.Peek(" + strconv.Quote(queryVar.value) + "))" + } else { + valueID = "q.Get(" + strconv.Quote(queryVar.value) + ")" + } + if queryVar.required { + fmtPkg := importer.Import("fmt", "fmt") if g.UseFast { - valueID = "string(q.Peek(" + strconv.Quote(queryVar.name) + "))" + g.w.W("if !q.Has(\"%[1]s\") {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.value, fmtPkg) } else { - valueID = "q.Get(" + strconv.Quote(queryVar.name) + ")" - } - if queryVar.required { - fmtPkg := importer.Import("fmt", "fmt") - if g.UseFast { - g.w.W("if !q.Has(\"%[1]s\") {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.name, fmtPkg) - } else { - g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.name, fmtPkg) - } + g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.value, fmtPkg) } + } + tmpID := "tmp" + queryVar.p.Name.Value + g.w.W("%s := %s\n", tmpID, valueID) + g.w.W("if %s != \"\" {\n", tmpID) + g.w.WriteConvertType(importer, "req."+queryVar.p.Name.Upper(), tmpID, queryVar.p, []string{"nil"}, "", false, "") + g.w.W("}\n") + } - tmpID := "tmp" + p.Name.Value - g.w.W("%s := %s\n", tmpID, valueID) - - g.w.W("if %s != \"\" {\n", tmpID) - g.w.WriteConvertType(importer, "req."+p.Name.Upper(), tmpID, p, []string{"nil"}, "", false, "") - g.w.W("}\n") - - } else if headerName, ok := headerVars[p.Name.Value]; ok { - var valueID string - if g.UseFast { - valueID = "string(r.Header.Peek(" + strconv.Quote(headerName) + "))" - } else { - valueID = "r.Header.Get(" + strconv.Quote(headerName) + ")" - } - g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") - } else if mopt.RESTMultipart != nil { - if isFileType(p.Type, importer) { - osPkg := importer.Import("os", "os") + for _, headerVar := range headerVars { + var valueID string + if g.UseFast { + valueID = "string(r.Header.Peek(" + strconv.Quote(headerVar.value) + "))" + } else { + valueID = "r.Header.Get(" + strconv.Quote(headerVar.value) + ")" + } + g.w.WriteConvertType(importer, "req."+headerVar.p.Name.Upper(), valueID, headerVar.p, []string{"nil"}, "", false, "") + } + if len(paramVars) > 0 { + switch stdstrings.ToUpper(mopt.RESTMethod.Value) { + case "POST", "PUT", "PATCH": + switch bodyType { + case "json": + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + fmtPkg := importer.Import("fmt", "fmt") + pkgIO := importer.Import("io", "io") if g.UseFast { - g.w.W("parts := form.File[%s]\n", strconv.Quote(p.Name.Value)) - g.w.W("var (\nf *%s.File\n)\n", osPkg) - g.w.W("if len(parts) > 0 {\n") - g.w.W("f, err = %s.Open(parts[0].Filename)\n", osPkg) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - g.w.W("}\n") + g.w.W("err = %s.Unmarshal(r.Body(), &req)\n", jsonPkg) } else { - g.w.W("_, h, err := r.FormFile(%s)\n", strconv.Quote(p.Name.Value)) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - g.w.W("f, err := %s.Open(h.Filename)\n", osPkg) + ioutilPkg := importer.Import("ioutil", "io/ioutil") + + g.w.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") + g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) }) + g.w.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) } - g.w.W("req.%s = f\n", p.Name.Upper()) - continue - } - var valueID string - if g.UseFast { - valueID = "form" + p.Name.Upper() - g.w.W("var %s string\n", valueID) - g.w.W("if fv, ok := form.Value[%s]; ok && len(fv) > 0 {\n", strconv.Quote(p.Name.Value)) - g.w.W("%s = fv[0]\n", valueID) + g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) g.w.W("}\n") - } else { - valueID = "r.FormValue(" + strconv.Quote(p.Name.Value) + ")" + case "x-www-form-urlencoded": + if g.UseFast { + } else { + g.w.W("r.ParseForm()\n") + for _, p := range paramVars { + valueID := "r.Form.Get(" + strconv.Quote(p.Name.Value) + ")" + g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") + } + } + case "form-data": + multipartMaxMemory := mopt.RESTMultipartMaxMemory.Value + if multipartMaxMemory == 0 { + multipartMaxMemory = 67108864 + } + if g.UseFast { + g.w.W("form, err := r.MultipartForm()\n") + } else { + g.w.W("err = r.ParseMultipartForm(%d)\n", multipartMaxMemory) + } + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + for _, p := range paramVars { + if isFileType(p.Type, importer) { + osPkg := importer.Import("os", "os") + + if g.UseFast { + g.w.W("parts := form.File[%s]\n", strconv.Quote(p.Name.Value)) + g.w.W("var (\nf *%s.File\n)\n", osPkg) + g.w.W("if len(parts) > 0 {\n") + g.w.W("f, err = %s.Open(parts[0].Filename)\n", osPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("}\n") + } else { + g.w.W("_, h, err := r.FormFile(%s)\n", strconv.Quote(p.Name.Value)) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("f, err := %s.Open(h.Filename)\n", osPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + } + g.w.W("req.%s = f\n", p.Name.Upper()) + continue + } + var valueID string + if g.UseFast { + valueID = "form" + p.Name.Upper() + g.w.W("var %s string\n", valueID) + g.w.W("if fv, ok := form.Value[%s]; ok && len(fv) > 0 {\n", strconv.Quote(p.Name.Value)) + g.w.W("%s = fv[0]\n", valueID) + g.w.W("}\n") + } else { + valueID = "r.FormValue(" + strconv.Quote(p.Name.Value) + ")" + } + g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") + } } - g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") } } + g.w.W("return req, nil\n") } else { g.w.W("return nil, nil\n") diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index d3b9d88b..62686b72 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -485,32 +485,53 @@ func jsTypeDefRecursive(i interface{}, nested int, visited map[string]struct{}) switch t := i.(type) { case *option.NamedType: - result := "/**\n" - result += "* @typedef " - - switch t.Pkg.Path { - default: - result += "{Object} " + t.Name.Value + "\n" - result += jsTypeDefRecursive(t.Type, nested, visited) - - case "github.com/google/uuid", "github.com/pborman/uuid": - switch t.Name.Value { - case "UUID": - result += "string\n" - } - case "encoding/json": - switch t.Name.Value { - case "RawMessage": - result += "*\n" - } - case "time": - switch t.Name.Value { - case "Time": - result += "string\n" + if st, ok := t.Type.(*option.SliceType); ok { + + return jsTypeDefRecursive(st.Value, nested, visited) + + //result += "/**\n" + //result += "* @typedef " + // + //result += "**/\n" + //return result + // + // out := jsTypeDefRecursive(st.Value, nested, visited) + // out += "\n\n/**\n" + // out += "* @typedef " + // out += "{Array<>} " + t.Name.Value + "\n" + // out += "**/\n" + // return out + //result += jsDocType(st) + " " + t.Name.Value + "\n" + } else { + result := "/**\n" + result += "* @typedef " + switch t.Pkg.Path { + default: + result += "{Object} " + t.Name.Value + "\n" + result += jsTypeDefRecursive(t.Type, nested, visited) + + case "github.com/google/uuid", "github.com/pborman/uuid": + switch t.Name.Value { + case "UUID": + result += "string\n" + } + case "encoding/json": + switch t.Name.Value { + case "RawMessage": + result += "*\n" + } + case "time": + switch t.Name.Value { + case "Time": + result += "string\n" + } } + result += "**/\n" + return result } - result += "**/\n" - return result + + //case *option.SliceType: + // return jsDocType(t) case *option.StructType: out := "" for _, f := range t.Fields { @@ -570,6 +591,9 @@ func jsDocTypeRecursive(i interface{}, nested int) string { if b, ok := t.Type.(*option.BasicType); ok { return jsDocTypeRecursive(b, nested) } + if s, ok := t.Type.(*option.SliceType); ok { + return jsDocTypeRecursive(s, nested) + } if t.Pkg != nil { switch t.Pkg.Path { case "github.com/google/uuid", "github.com/pborman/uuid": @@ -729,3 +753,62 @@ func wrapDataClient(parts []string, responseType string) (result, structPath str } return fn(l.Front()), stdstrings.Join(paths, ".") } + +func findParam(p *option.VarType, vars []string) (varType, bool) { + for i := 0; i < len(vars); i += 2 { + paramName := vars[i+1] + if paramName == p.Name.Value { + varName := vars[i] + var required bool + if stdstrings.HasPrefix(varName, "!") { + varName = varName[1:] + required = true + } + return varType{ + p: p, + value: varName, + required: required, + }, true + } + } + return varType{}, false +} + +func makeOpenapiSchemaRESTError() *openapi.Schema { + return &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "error": &openapi.Schema{ + Type: "string", + }, + }, + } +} + +func makeOpenapiSchemaJRPCError(code int64) *openapi.Schema { + return &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "jsonrpc": &openapi.Schema{ + Type: "string", + Example: "2.0", + }, + "id": &openapi.Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "code": &openapi.Schema{ + Type: "integer", + Example: code, + }, + "message": &openapi.Schema{ + Type: "string", + }, + }, + }, + }, + } +} diff --git a/v3/writer/base_writer.go b/v3/writer/base_writer.go index d7152873..a542e35f 100644 --- a/v3/writer/base_writer.go +++ b/v3/writer/base_writer.go @@ -5,14 +5,14 @@ import ( "fmt" ) -type BaseWriter struct { +type TextWriter struct { bytes.Buffer } -func (w *BaseWriter) Line() { +func (w *TextWriter) Line() { w.W("\n") } -func (w *BaseWriter) W(format string, args ...interface{}) { +func (w *TextWriter) W(format string, args ...interface{}) { _, _ = fmt.Fprintf(&w.Buffer, format, args...) } diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go index b3fa8d38..e32eb59d 100644 --- a/v3/writer/golang_writer.go +++ b/v3/writer/golang_writer.go @@ -11,7 +11,7 @@ import ( ) type GoWriter struct { - BaseWriter + TextWriter } func (w *GoWriter) WriteCheckErr(errName string, body func()) { From 78aa12ab1707c81040378b4b6c48d2f28c0aae30 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 16 Aug 2021 19:33:36 +0300 Subject: [PATCH 216/293] refactor: fixed gen config swipe option bug --- v3/cmd/options.go | 56 +++++---- v3/internal/plugin/gokit/config/config.go | 34 +++-- v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/instrumenting.go | 2 +- .../plugin/gokit/generator/jsonrpc_server.go | 4 +- v3/internal/plugin/gokit/generator/logging.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 6 +- .../plugin/gokit/generator/rest_client.go | 2 +- .../plugin/gokit/generator/rest_server.go | 112 +++++++++++++++-- v3/internal/plugin/gokit/plugin.go | 119 +++++++----------- 10 files changed, 212 insertions(+), 127 deletions(-) diff --git a/v3/cmd/options.go b/v3/cmd/options.go index 829e68fe..ad0cf924 100644 --- a/v3/cmd/options.go +++ b/v3/cmd/options.go @@ -116,7 +116,10 @@ var optionsCmd = &cobra.Command{ if !strings.HasSuffix(optsType, "Option") { optsType += "Option" } - paramsStr += ",opts ..." + optsType + if len(opt.params) >= 1 { + paramsStr += "," + } + paramsStr += "opts ..." + optsType } buf.WriteString(fmt.Sprintf("func %s(%s) %s { return \"implementation not generated, run swipe\" }\n", opt.name, paramsStr, typeName)) @@ -202,32 +205,43 @@ func getOpt(optionName string, f *goast.Field, e goast.Expr, isRepeat bool) (res name: name, isRepeat: isRepeat, } - if ts, ok := t.Obj.Decl.(*goast.TypeSpec); ok { - if s, ok := ts.Type.(*goast.StructType); ok { - var hasOpts bool - if s.Fields != nil { - for _, f := range s.Fields.List { - name, ok := getOptName(f) - if !ok { - continue - } - if isFiledOpt(f) { - hasOpts = true - expr := astutil.Unparen(f.Type) - if e, ok := expr.(*goast.StarExpr); ok { - expr = e.X + + var buildFuncOpts func(obj *goast.Object) + buildFuncOpts = func(obj *goast.Object) { + if ts, ok := obj.Decl.(*goast.TypeSpec); ok { + if s, ok := ts.Type.(*goast.StructType); ok { + var hasOpts bool + if s.Fields != nil { + for _, f := range s.Fields.List { + if len(f.Names) == 0 { + if ident, ok := f.Type.(*goast.Ident); ok { + buildFuncOpts(ident.Obj) + continue + } + } + name, ok := getOptName(f) + if !ok { + continue } - result = append(result, getOpt(ts.Name.Name, f, expr, false)...) - continue + if isFiledOpt(f) { + hasOpts = true + expr := astutil.Unparen(f.Type) + if e, ok := expr.(*goast.StarExpr); ok { + expr = e.X + } + result = append(result, getOpt(ts.Name.Name, f, expr, false)...) + continue + } + of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) } - of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) } - } - if hasOpts { - of.optsType = ts.Name.Name + if hasOpts { + of.optsType = ts.Name.Name + } } } } + buildFuncOpts(t.Obj) result = append(result, of) } return diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index ee67a2df..d05562be 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -54,7 +54,6 @@ type Interface struct { Named *option.NamedType `mapstructure:"iface"` Namespace string `mapstructure:"ns"` ClientName StringValue `swipe:"option"` - //External *ExternalInterface `mapstructure:"-"` } type OpenapiTag struct { @@ -76,8 +75,13 @@ type RESTMultipart struct { MaxMemory int64 } -type MethodOption struct { - Signature *option.NamedType +type Aggregate struct { + Method *option.NamedType + Params SliceStringValue `swipe:"option"` + Results SliceStringValue `swipe:"option"` +} + +type MethodDefaultOption struct { Instrumenting BoolValue `swipe:"option"` Logging BoolValue `swipe:"option"` LoggingParams LoggingParams `swipe:"option"` @@ -91,12 +95,18 @@ type MethodOption struct { RESTQueryValues SliceStringValue `swipe:"option"` RESTPathVars map[string]string `swipe:"option"` RESTBodyType StringValue `swipe:"option"` + Aggregate []Aggregate `swipe:"option"` ServerEncodeResponse FuncTypeValue `swipe:"option"` ServerDecodeRequest FuncTypeValue `swipe:"option"` ClientEncodeRequest FuncTypeValue `swipe:"option"` ClientDecodeResponse FuncTypeValue `swipe:"option"` } +type MethodOption struct { + Signature *option.NamedType + MethodDefaultOption +} + type OpenapiInfo struct { Title string Description string @@ -153,16 +163,16 @@ type Config struct { OpenapiLicence OpenapiLicence OpenapiServers []OpenapiServer `mapstructure:"OpenapiServer"` MethodOptions []MethodOption - MethodDefaultOptions MethodOption + MethodDefaultOptions MethodDefaultOption DefaultErrorEncoder FuncTypeValue // non options params - LoggingEnable bool `mapstructure:"-"` - InstrumentingEnable bool `mapstructure:"-"` - MethodOptionsMap map[string]MethodOption `mapstructure:"-"` - OpenapiMethodTags map[string][]string `mapstructure:"-"` - IfaceErrors map[string]map[string][]Error `mapstructure:"-"` - JSPkgImportPath string `mapstructure:"-"` - AppName string `mapstructure:"-"` - HasExternal bool `mapstructure:"-"` + LoggingEnable bool `mapstructure:"-"` + InstrumentingEnable bool `mapstructure:"-"` + MethodOptionsMap map[string]MethodDefaultOption `mapstructure:"-"` + OpenapiMethodTags map[string][]string `mapstructure:"-"` + IfaceErrors map[string]map[string][]Error `mapstructure:"-"` + JSPkgImportPath string `mapstructure:"-"` + AppName string `mapstructure:"-"` + HasExternal bool `mapstructure:"-"` } diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 864a1025..9873527f 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOption ...\ntype MethodOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTPath ...\nfunc RESTPath(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(signature interface{}, opts ...MethodOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOption ...\ntype MethodDefaultOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// AggregateOption ...\ntype AggregateOption string\n\n// Params ...\nfunc Params(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Results ...\nfunc Results(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Aggregate ...\n// @type:\"repeat\"\nfunc Aggregate(method interface{}, opts ...AggregateOption) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index a386e2e3..06de0c38 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -14,7 +14,7 @@ import ( type Instrumenting struct { w writer.GoWriter Interfaces []*config.Interface - MethodOptions map[string]config.MethodOption + MethodOptions map[string]config.MethodDefaultOption } func (g *Instrumenting) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index a9adbed2..bd3a9445 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -15,7 +15,7 @@ type JSONRPCServerGenerator struct { w writer.GoWriter UseFast bool Interfaces []*config.Interface - MethodOptions map[string]config.MethodOption + MethodOptions map[string]config.MethodDefaultOption DefaultErrorEncoder *option.FuncType JSONRPCPath string } @@ -115,11 +115,9 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { for i, iface := range g.Interfaces { typeStr := NameInterface(iface) - if i > 0 { g.w.W(",") } - if iface.Named.Pkg.Module.External { external = true g.w.W("%s %sOption", LcNameWithAppPrefix(iface, true), UcNameWithAppPrefix(iface, true)) diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 581ce964..816f8f82 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -15,7 +15,7 @@ import ( type Logging struct { w writer.GoWriter Interfaces []*config.Interface - MethodOptions map[string]config.MethodOption + MethodOptions map[string]config.MethodDefaultOption } func (g *Logging) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 71051347..1d71a112 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -27,7 +27,7 @@ type Openapi struct { Licence config.OpenapiLicence Output string Interfaces []*config.Interface - MethodOptions map[string]config.MethodOption + MethodOptions map[string]config.MethodDefaultOption IfaceErrors map[string]map[string][]config.Error defTypes map[string]*option.NamedType } @@ -344,7 +344,7 @@ func (g *Openapi) schemaByType(t interface{}) (schema *openapi.Schema) { return } -func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config.MethodOption) *openapi.Operation { +func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config.MethodDefaultOption) *openapi.Operation { responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, @@ -508,7 +508,7 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config } } -func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOption) *openapi.Operation { +func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodDefaultOption) *openapi.Operation { responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 640e4bb1..e2d046a4 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -23,7 +23,7 @@ type RESTClientGenerator struct { w writer.GoWriter Interfaces []*config.Interface UseFast bool - MethodOptions map[string]config.MethodOption + MethodOptions map[string]config.MethodDefaultOption } func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index a56523b5..2f534129 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -20,7 +20,7 @@ type RESTServerGenerator struct { JSONRPCEnable bool DefaultErrorEncoder *option.FuncType Interfaces []*config.Interface - MethodOptions map[string]config.MethodOption + MethodOptions map[string]config.MethodDefaultOption } func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { @@ -51,13 +51,26 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("// MakeHandlerREST make REST HTTP transport\n") g.w.W("func MakeHandlerREST(") + + var external bool + for i, iface := range g.Interfaces { typeStr := NameInterface(iface) if i > 0 { g.w.W(",") } - g.w.W("svc%s %s", iface.Named.Name.Value, typeStr) + if iface.Named.Pkg.Module.External { + external = true + g.w.W("%s %sOption", LcNameWithAppPrefix(iface, true), UcNameWithAppPrefix(iface, true)) + } else { + g.w.W("svc%s %s", iface.Named.Name.Upper(), typeStr) + } + } + + if external { + g.w.W(", logger %s.Logger", importer.Import("log", "github.com/go-kit/kit/log")) } + g.w.W(", options ...ServerOption") g.w.W(") (") if g.UseFast { @@ -78,19 +91,96 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } for _, iface := range g.Interfaces { - g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) - } - - for _, iface := range g.Interfaces { + optName := LcNameWithAppPrefix(iface, iface.Named.Pkg.Module.External) ifaceType := iface.Named.Type.(*option.IfaceType) + epSetName := NameEndpointSetNameVar(iface) - for _, m := range ifaceType.Methods { - g.w.W( - "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - LcNameWithAppPrefix(iface)+m.Name.Value, m.Name, epSetName, - ) + + if iface.Named.Pkg.Module.External { + epEndpointSetName := NameEndpointSetName(iface) + + sdPkg := importer.Import("sd", "github.com/go-kit/kit/sd") + lbPkg := importer.Import("sd", "github.com/go-kit/kit/sd/lb") + + g.w.W("%s := %s{}\n", epSetName, epEndpointSetName) + + for _, m := range ifaceType.Methods { + + epFactoryName := "endpointFactory" + kitEndpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + stdLogPkg := importer.Import("log", "log") + + ioPkg := importer.Import("io", "io") + + g.w.W("{\n") + + g.w.W("if %s.%s.Balancer == nil {\n", optName, m.Name) + g.w.W("%s.%s.Balancer = %s.NewRoundRobin\n", optName, m.Name, lbPkg) + g.w.W("}\n") + + g.w.W("if %s.%s.RetryMax == 0 {\n", optName, m.Name) + g.w.W("%s.%s.RetryMax = DefaultRetryMax\n", optName, m.Name) + g.w.W("}\n") + + g.w.W("if %s.%s.RetryTimeout == 0 {\n", optName, m.Name) + g.w.W("%s.%s.RetryTimeout = DefaultRetryTimeout\n", optName, m.Name) + g.w.W("}\n") + + g.w.W("if %s.Factory == nil {\n", optName) + g.w.W("%s.Panic(\"%s.Factory is not set\")\n", stdLogPkg, optName) + g.w.W("}\n") + + g.w.W("%s := func (instance string) (%s.Endpoint, %s.Closer, error) {\n", epFactoryName, kitEndpointPkg, ioPkg) + g.w.W("c, err := %s.Factory(instance)\n", optName) + + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, nil, err\n") + }) + + g.w.W("return ") + g.w.W("Make%sEndpoint(c), nil, nil\n", UcNameWithAppPrefix(iface)+m.Name.Upper()) + g.w.W("\n}\n\n") + + g.w.W("endpointer := %s.NewEndpointer(%s.Instancer, %s, logger)\n", sdPkg, optName, epFactoryName) + g.w.W( + "%[4]s.%[3]sEndpoint = %[1]s.RetryWithCallback(%[2]s.%[3]s.RetryTimeout, %[2]s.%[3]s.Balancer(endpointer), retryMax(%[2]s.%[3]s.RetryMax))\n", + lbPkg, optName, m.Name, epSetName, + ) + g.w.W( + "%[2]s.%[1]sEndpoint = RetryErrorExtractor()(%[2]s.%[1]sEndpoint)\n", + m.Name, epSetName, + ) + g.w.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, + ) + g.w.W("}\n") + } + } else { + g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) + for _, m := range ifaceType.Methods { + g.w.W( + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, + ) + } } } + + //for _, iface := range g.Interfaces { + // g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) + //} + + //for _, iface := range g.Interfaces { + // ifaceType := iface.Named.Type.(*option.IfaceType) + // epSetName := NameEndpointSetNameVar(iface) + // for _, m := range ifaceType.Methods { + // g.w.W( + // "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + // LcNameWithAppPrefix(iface)+m.Name.Value, m.Name, epSetName, + // ) + // } + //} if g.UseFast { g.w.W("r := %s.New()\n", routerPkg) } else { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 7764389d..cd7b23e2 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -7,7 +7,6 @@ import ( "io/ioutil" "path" "path/filepath" - "reflect" "github.com/imdario/mergo" "github.com/mitchellh/mapstructure" @@ -23,39 +22,36 @@ func init() { swipe.RegisterPlugin(&Plugin{}) } -type override struct { -} - -func (o override) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { - //if typ == reflect.TypeOf(time.Time{}) { - return func(dst, src reflect.Value) error { - if dst.CanSet() { - - if dst.IsZero() { - - } - - //if t.overwrite { - // isZero := src.MethodByName("IsZero") - // - // result := isZero.Call([]reflect.Value{}) - // if !result[0].Bool() { - // dst.Set(src) - // } - //} else { - // isZero := dst.MethodByName("IsZero") - // - // result := isZero.Call([]reflect.Value{}) - // if result[0].Bool() { - // dst.Set(src) - // } - //} - } - return nil - } - //} - //return nil -} +//type override struct { +//} +// +//func (o override) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { +// //if typ == reflect.TypeOf(time.Time{}) { +// return func(dst, src reflect.Value) error { +// if dst.CanSet() { +// if dst.IsZero() { +// } +// //if t.overwrite { +// // isZero := src.MethodByName("IsZero") +// // +// // result := isZero.Call([]reflect.Value{}) +// // if !result[0].Bool() { +// // dst.Set(src) +// // } +// //} else { +// // isZero := dst.MethodByName("IsZero") +// // +// // result := isZero.Call([]reflect.Value{}) +// // if result[0].Bool() { +// // dst.Set(src) +// // } +// //} +// } +// return nil +// } +// //} +// //return nil +//} type Plugin struct { config config.Config @@ -80,12 +76,12 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *opti funcDeclTypes := makeFuncDeclTypes(cfg.Packages) p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, cfg.Packages, p.config.Interfaces) - p.config.MethodOptionsMap = map[string]config.MethodOption{} + p.config.MethodOptionsMap = map[string]config.MethodDefaultOption{} for _, methodOption := range p.config.MethodOptions { sig := methodOption.Signature.Type.(*option.SignType) recvNamed := sig.Recv.(*option.NamedType) - p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption + p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption.MethodDefaultOption } for _, iface := range p.config.Interfaces { @@ -144,47 +140,23 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *opti errs = append(errs, err) } } - errs = append(errs, p.fillInterfacesByInternal(cfg)...) + checkErrs, hasExternal := p.checkExternalPackage(cfg) + if len(checkErrs) > 0 { + errs = append(errs, checkErrs...) + } + p.config.HasExternal = hasExternal return errs } -func (p *Plugin) fillInterfacesByInternal(cfg *swipe.Config) (errs []error) { +func (p *Plugin) checkExternalPackage(cfg *swipe.Config) (errs []error, hasExternal bool) { + for _, iface := range p.config.Interfaces { if iface.Named.Pkg.Module == nil { errs = append(errs, errors.New("not add package for "+iface.Named.Pkg.Path+"."+iface.Named.Name.Value)) continue } - - configCache := map[string]*config.Config{} - if iface.Named.Pkg.Module.External { - p.config.HasExternal = true - cfg.WalkBuilds(func(module *option.Module, build *option.Build) bool { - if !module.External { - return true - } - if options, ok := build.Option["Gokit"]; ok { - c := configCache[build.Pkg.Path] - if c == nil { - if err := mapstructure.Decode(options, &c); err != nil { - errs = append(errs, err) - return true - } - } - //for _, iface := range p.config.Interfaces { - // for _, extIface := range c.Interfaces { - // if iface.Named.ID() == extIface.Named.ID() { - // iface.External = &config.ExternalInterface{ - // Iface: extIface, - // Config: c, - // Build: build, - // } - // } - // } - //} - } - return true - }) + hasExternal = true } } return @@ -260,6 +232,11 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { IfaceErrors: p.config.IfaceErrors, }) } + if p.config.HasExternal { + result = append(result, &generator.GatewayGenerator{ + Interfaces: p.config.Interfaces, + }) + } if jsonRPCEnable { result = append(result, &generator.JSONRPCServerGenerator{ UseFast: useFast, @@ -282,11 +259,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { IfaceErrors: p.config.IfaceErrors, }) } - if p.config.HasExternal { - result = append(result, &generator.GatewayGenerator{ - Interfaces: p.config.Interfaces, - }) - } + } else { result = append(result, &generator.RESTServerGenerator{ UseFast: useFast, From 589c88873db5ae414982d028fa1c1f5201c1522d Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 18 Aug 2021 21:32:12 +0300 Subject: [PATCH 217/293] refactor: refactoring --- Makefile | 22 ---- README.md | 29 ++--- CHANGELOG.md => v2/CHANGELOG.md | 0 v3/Makefile | 9 +- v3/OPATH/bin/swipe3 | Bin 0 -> 11474162 bytes v3/go.sum | 119 ++++++++++++++++++ v3/internal/ast/loader.go | 12 +- v3/internal/plugin/gokit/config/config.go | 1 + v3/internal/plugin/gokit/config/config_gen.go | 2 +- v3/internal/plugin/gokit/generator/gateway.go | 2 +- .../plugin/gokit/generator/jsonrpc_server.go | 6 +- .../plugin/gokit/generator/rest_server.go | 6 +- v3/internal/plugin/gokit/generator/utils.go | 2 +- v3/internal/plugin/gokit/plugin.go | 2 +- v3/option/decoder.go | 10 +- v3/swipe/config.go | 6 +- 16 files changed, 153 insertions(+), 75 deletions(-) delete mode 100644 Makefile rename CHANGELOG.md => v2/CHANGELOG.md (100%) create mode 100755 v3/OPATH/bin/swipe3 diff --git a/Makefile b/Makefile deleted file mode 100644 index 468bdb05..00000000 --- a/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -VERSION = snapshot -GHRFLAGS = - -.PHONY: build release - -default: build - -fgo-build: - fgo -p releases -b homebrew-swipe build ${NEXT_TAG} - -build: - goxc -d=releases -bc="linux,386 darwin,windows" -arch="amd64 arm" -pv=$(VERSION) - -release: - ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) - -chglog: - git-chglog -o CHANGELOG.md - -check: - go vet ./... - go test -v ./... \ No newline at end of file diff --git a/README.md b/README.md index c7fbce9e..8096246a 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,14 @@ # Swipe -[![Build Status](https://travis-ci.com/swipe-io/swipe.svg?branch=v2)](https://travis-ci.com/swipe-io/swipe) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/swipe-io/swipe/v2/LICENSE) -Swipe is a code generation tool that automates the creation of repetitively used code. -Configuration parameters are presented in Swipe as parameters of the Golang function, using explicit initialization instead of -global variables or reflections. +Swipe is a code generation tool that automates the +creation of repetitively used code. -## Installation - -To install Swipe, follow these steps: - -```shell -go get github.com/swipe-io/swipe/cmd/swipe -``` - -> check that "$GOPATH/bin "is added to your "$PATH". +Configuration parameters are presented in Swipe as +parameters of the Golang function, using explicit +initialization instead of global variables or reflections. -or use brew: - -```shell -brew tap swipe-io/swipe -brew install swipe -``` - -## Documentation +## Installation -[User guide](https://pkg.go.dev/github.com/swipe-io/swipe/pkg/swipe?tab=doc) \ No newline at end of file +See [docs](https://swipe-io.github.io/docs/installation) \ No newline at end of file diff --git a/CHANGELOG.md b/v2/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to v2/CHANGELOG.md diff --git a/v3/Makefile b/v3/Makefile index 078b80dc..43d2ec67 100644 --- a/v3/Makefile +++ b/v3/Makefile @@ -5,14 +5,9 @@ GHRFLAGS = default: build -fgo-build: - fgo -p releases -b ./../homebrew-swipe build ${NEXT_TAG} - build: - goxc -d=releases -bc="linux,386 darwin,windows" -arch="amd64 arm" -pv=$(VERSION) - -release: - ghr -u swipe-io -replace $(GHRFLAGS) v$(VERSION) releases/$(VERSION) + go mod download + go build -o $(GOPATH)/bin/swipe3 cmd/swipe/main.go chglog: git-chglog -o CHANGELOG.md diff --git a/v3/OPATH/bin/swipe3 b/v3/OPATH/bin/swipe3 new file mode 100755 index 0000000000000000000000000000000000000000..ae29b35fbcd1843910ff14311c6e79c5cad3447d GIT binary patch literal 11474162 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

7FNkk#YDZ70fJa;a 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⪙1{Xly$VtF?} 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

OvBHE&f2rFwx4>`kJ%o? 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%0AK-WRTHcWWo6+ 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≫UJKt# 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

dE??MB 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
  • V&)M?S)l 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

    &vg{6F*Rm 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�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%0D&p_s@}^I_Lt<@WCseAsOVgwLG^Ovs)d!8sW? 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

    9ctyF z<*yyaf1Z%zuj_oAh?f}u09dZJuo(Vo9EQKL;(g{MI(SYzS}ueLwM2rv5ph zGo-0Ac38ja+**_-E~~iJ>R^4yl8Mfz@wwTXsf6_m#D+{=wOuFq1Hau?;xKi@yEfxT z#lKONUcz&mX?F?jRuE^aeePrFOKG>3c7y%Orf|+TvA)$!btNX&7l!x#LhX(^%d}fV ztWNEEtU-#O{?WAdqpzV|#fPwsI+*WIgNIlS z4;!3&I8!_i4{O;w-{2uO7!Uuazg>IYIk2scPdwbfyTZpqM0-X2Wc(m_FJ)gF1FsW? zccO_g*X7~C!28l^2Hs8|-Wd3GzBCx#ID4NNcoT!+y&w->Lk|y3H0`$L@UY8irLPbk zh`*S6c;YO?7fV8M7VEE>ad7M0awF~8~mF@7u75{&cv{8p^n{En5R*YjKF9-7~s zCFzIwtvxx+@4Axo{rvuN@Vm7n{T+UPp5Nljb&u|8Ih*hK{P^-gQ>_P2Bs$(!HO5ee$k5e?IHIe}DU_Nax#4&gA9?4s$luf62La3HdVzIatJgCl2ds zcM~Jql^xA`^RXe_RAgdA4P*B{nf)#6E!juDoY=)7>|?MyT4tWl=`s6kfBYXCs+_&v z*JH;PjdGf^sj~DJ#}+jg$!|wb=D)WaJ7yQxGpVp{v~BK2C+S}PJDK^=?;of~m?68H z_i3Y`Kf_+IvGI}tP{gIX$xgJQeG;o*q_crbhHVk^3SJW_qe?tZ^T zxew(_F6C2uFSJq168LLNzdvyQR(BEe;Ou=;Io!CRwa89)9kJnTkslil)>nxe2FANy zHu1Y${kA!?pzknjPGDM2oEcjDF}_L#a@GOYUNn+EWvtU|;z+5%_L{Y)Y>kJ9ZzJC} zn6GDPM{PLFmt*E@WbJ7DDb*IC&zFSoPyrrZ0Y65*cG>eEu4GT1eO-gkf7sVGDqUai zwC{_KHlKadB9``(#%Y>6*asr-V`5Y z+rl`p_q10}Ptxw2gPvVbi`-ZYUY8TE^2R{ZWi{xd@|}N$Z7F{^>i1bopR?7c_!wHq z^;vBDOj?_mbHhUL+j}|#bSw7fGvp##!F!566+is~eHOw+jyFmSZ)C-PQ;EsKA6n1t zPO33JP5UXnesQQN7mnZyt&!D!1FBKl4W5Ux<@5Uxe`|k3#V?f04fOgwVZHKOV0{CeWRaPT z$V~RjaFe4$c=vN7>^mBd9bxxpbWRLL`k(=3{@yEEcuk*<>yHoPR zOVil_ZCd*AQuMnF*&=@vp7gGU-=|0LRU_7{7Jzco(D&KPn*dEN(zfh@%) zdY(UB_lQd_#XfqTzZX~!l;ZCh_QP?YMbUTH{ywu$fzGP5GQ-yIixz|r?H};t>G(6O z4GLgXZeMH7^}g1;>Qnn!X)pAwPec>Z?B%Szg|bpWnM{ zTcURZd2S2y;JlvAVUY8K4s)``mxntU$0B(2_k1qq>>BdFyW8M{D7*-r=Rd!@5j%(b zZsp*9`uP-FNO))p;o*DWLHTTphcb(Y-rSm!pK#BP-{)WGZ(npU|7!fiT{rD|G0}U9 ziR){g3cy*ZybW-6l?)n#yTu!Zab2+l8<-7TzG2Fx$6rZ$XC^cg! zwC;8Qy>FEG#RKqKRz4i@Kjib52oGS%-JsFk((WS&+_U#L%)(k8RU`lyL8KKL+baz?MPQhum1zJ zOw#Mi`78?Ia2h!L_W*}kpC8`O(ZSQ)8-Ty4#h=a359HSxSGhXJ^Yo{Nl^DGRE-R2(ey1-{5l`pXQy>;EVR6;|9HB@WuH# z&i*%EYQ;|JmubmyMy8p0`#tl8KJ(t;6TPIE@a{(BO?EVR3j2!|j{iiiNS{e3Eq`QB z%m4A|#>zVzzqk3+T>MWp<)Qtgcf}LMx&5TsOL~RloN9U2#%|=l1bbtA;@AFJjPy5; z{*+Jcr_ZRhr%ioGbg(^b>I!Jzb?m#}pjk0h+$_b7597%TLaWv+5E%Gxy7>pVDk zQhAXK^qhreyKlr!CXT$7-hqtpd#)tV1K@b~3Usadbf{I5 zOck$+Rs!2C44?Ze@b%k)_FIEFkNx9mV;2FV%h*i6jLjKGO_5{a+OGP`G2E{vKf?7m z*VR`hxSpi#MtlXXi60~@3_Ofuv)Q+WJ>o?>)!=0k_n;fqk^Ee9hfV8E;C{Mx73L*KY|w;s5!2mVIp z_(r~?3k=P75hL>FIK#Xeo&qOXzGs=^o>S}`lMmSBawZz@cC0Wy*~iU(&Ej3-Pi5^M zpXYe!aeQxb4JNJ^#n<;{U<=?cm!IJ5K14J!12~3*+tB7%;6Ak7>?gL&hkH42SNd>6 ztHZ(lqz^Z=Y2oH9Hv@M9xEXH-xW(g}T?;Szd4Xy{G-um0{+va@ANo`_wdi}ZUu*oiW9+V-IFbYYVkQ`=aZ++V`~l6*x5dwae}wb{qCsq564~ zr)M5K_+0tb418*6?`l37f95(q8Gq(_J{iB!Z}6n2zgb*|Pfe{LpV32|jnBc?P3*I_ zhFX9c?QhFomc`JK_U?TM+wTQxUth%bd%^hGWjpIwPa!}1InKxNpvUYqaGk<$M|O1s zll2|sV_&T)FZxx5R!{nzI48@S#1$Uk(Jv%%Iv)+q+cn2mhZ zoU^xIAX6V%NnCa^ePDlxKRx(WxmeXNm^znLfvmJO@PgIQq3{Q+VL2;bN%3!wy;)67 zNHuLB6YG@oy3ppx5~_s}Eby(NzmR;t6<8F15-c6GgzrD*yXa&TbaK79F6+p*-@B}SYyYa~CFieAJd)T%)Jcyo zn%Mkq*-eif&S&{QJA12(#_!xr?QCBPy;na0`Gy?45Lg(isV8$jZRFeEQ>U3310K1r zn&=4gUxV&f9$YcPrR-bS)Olh$KECPRDXggo&d0p$pV-@we5~5bFpoXpr)MFbi#V5z zcFJVS6LYM&)>!~u-SE^;?zpJWnY?`San6F5MkT7se-pW83Ewjd<|b%a=R}$%!`A9L zbD=$Mv+&H@I{#rFV+CGAGr((T2$)stBws8;|6Sx+Qyb1Q`}Jj^LB)qe14bv(&g^$> zt-99?zBrR4?yoh$AM1E_vh!)#F~yuqBDnn))#(-aWdFH<($y%8#II3ii_$)9kJ&(QqKg0YG+xb7I4vbNz zppBG!VmiBwXQ7vDici|lE~fqE;OlC}c^%)yJJ6wG14g#5;uD-|z3N#}Y>ElMHHmBY z@y;5jS2Szlj*FQO_&9qt^5#0e!^fIe&4udDG%ogEyeAwZ$js$^p6e_@u6&n$D)qef zE#;kV-s$0;|GEgB4V)41E_o(iE(Yg4<%!-PoLU1)FJB>U>hmaPO&aqtwGBD!OrP}U7ZW8fV=E^;F2GU|>t@Lg+AiutbnJ#~&; zcFsUrmd+N<3f8T_`or0*#Rfk4U0x+P0PY&*EucBkRKpjDfHywy8M^&MCbYShfMnR^U+k0Suz$ z?2H6$fJ0!|PTLD;_n|DXm+>s}#T#c~Pk>LsAJAL`_&snX_;o&5xXm+YV>a|@_eL#V z|Ac`*V&E_0jEyY(^lw}{iRX%1`F&@i_j~-V;CGhsXk1}Aq4CJ33C44Icsz_jGB3** z0y!6q#pUeJec%1MkzXq~Bf`k9*CN-%`EKMFbaa_hG*Es)SCU_i=yyHy40<>DS3~jd z$mG|vI^P4_7L;GWA2|VfK8dq;(Aj}ptwE;99_U`g+{~vI0lB({TxJUT)-%pb?g z246jS_*#Yh+!ig{avpSE_QzGXuXDmv4)92}3&VowA(=n~BObJsk3vuTMNjal__d1|SFjhhcr}nK8pF?% z@E2nUc-33P80Rx~_)xUuj*u=pX{Vphgp2CJba@r+J@r4nUd1nZ0loUhYV<1KHP2<} z)jo81`x%^#0bX=|@Qy`^-Z#NRmv8GWj*Q+piZwYqxV8h_6dhjHd@i!?7WlH1^YJp^ zBzk4VUhQQYg|^y8Ih%@Tm%ZA|`QMANk&`nyAA@$)$9d4m4*EHy#Ch#a@byBm^P0|E zd0~J3-7h#d-PHv>E{>G!d>H!M%JYjkwNv^P;pFP~*!Oota`npt4>OJrqUX-_$FcYz#&OgL#xWB6tCV&|qURi7>^p{is(;tF;92z2Z@>Tb zix&N(-7h+#Yoii3%t8-p|L7I}&F`ZURf~TRxh8f;--7MP{Sz45-|V;fKb_Ik#BbS} zEB#MhtM|WuHFWJO=DW^yI%NIz=6ea>i`IXM@ABO}&L8{R(DVPu_i|!AvEKzTO`Err zPe0+oJuQa;L%%;C_4BXh{Oer2+PxatiT|?fclelr-OMLva&2lg>+e}V$$jHfLFdO& zci@iWof+6d(VHH_Kk8Vb7;c@7LKo4mQPU4$CPh7X|ZQ-G3 zD$jr)<-dZOMl*&v{ut&0KQRgu$KmyJLgTn>k`0(ca?iN0=pU{8ze!G8Mcvh}A|Vw)AJKh>EOLG9fxa;R=Q7e)+62;;24er87l$vZKr9 zq33B!IFdar`=x7&vp~2`@|l?qU(RDLM`3G6oh@Uety3P6hwlh&gRXo06+hK+%liS*_Z4q>j8g<1;dl@jd(+v@)5o6L(TfRy4UQOCF@MWWbqR_d_4G(1+qk zS?EJ@<~ia-O-oDDYP-7(+N0es)WL_~f!Ksy)9K@>qSneyQ zBh$I2ckYKjYvE7nZ(|$KZ|85|&qD$~3 zFEgTnmqDY z5#pH<=rP_fGp(~V+?lkiJuj$3a;y1UUeoJc%^x(r;#7Q0#!(3kq!P!cGw@RONn{iK zHz8+&8db?@(Xi(6nWez9#?GH=Jfy3xKqqFO)Om26Pd6^{m>;v=5X7v{{e+DpY(+M` zaO$z?%Q??HyPR=eO})i+k=}i6huE6+l>O{xy~0-3sjOk%{%0D#EU*gSnk&I8y|4WB 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

    YoE&bQ)Olo5Kc{e$8Dx-wcnnQ--xy&EmIe z__{A%gBA?0wP()=_RcyJzx|Qi0?o^I=e*P2<}uou%%9amN4{~av6!;rJ^eHM=i8&Q z4TJfEiK*aT^FZ)LQt}bLQ2a}_%MkcYc1h&6WnFf?vvLaMzlw%spGn3KRZb503qc=t z9F=o8iG4SMF+R!g*MUvr=0WEDAB69U5xwI_iUC#vAMwSOcV2v8!8?~eb#tLJa$ zgITv^RqZ{NKNzO;Hk%IPW@cS}yRJ`)+ ztL~TI0{p^{a1#PAih;@Y4)QPdVWTO7Oi>IpMH$HvTSoYKjWQ|v{L;*g3zq!OgWrV) zOna3Rv+YHR!`SvT4t>>yoznO#>I&kbiao5ox-QDr)z;Nhm#rs-E|C2o+0zYN59$0& zY=O$ZYF`877k!PO6JDhLbw9al!N@bW8(iN5Zby!;UGUNmynDf}acKj;(Zp#+hnBIA z^WVb*`K*miId#|m*}^_P3w!cUpANfly2gh+ezZ62_fY?=N%t&x=N}$7uuF$}xGCzX z|BuJlFMs1=e=JSRg>jVKDLZir&u^yQkG5}G@J{3rQ*YbveYhj%Wb2Lc?C;@V4s|W1 zF7ZM?cmcZe>_tCcXnT?9KaekkOmcksf4Hq~!AH+;G4!4E=$l-Qu??D&5`7~-jE|Gp zZRZBPT%zur`z8DS*MfKc1wTUe1ojj7+3zH#XY0{^If`4m%zcsnn+ZoeT!?nW^JO~! zv=Y8z93=B)tG@VgcW*h)_c7uqWyDaDW1th(dr6kp6Z_EGEy>Nnvh(4sGHAU5{;_&h zZA_MIu8WmKK4g3a3%q4=h~^*9Uq?g>(mgr-jOiQZZ%@?5nSyy3?V#OE@esc@Y*A>(* zc=$(88d`JV2Qx-ZtcCW+y6UJuM&PfAKgHsr;4wMT$@RS&{_ra4K=sBYg?IPmaUc?$9L2do`(OWwODa- zrl?b~PSq)TIpcF)d=noolibbvQTcJQQ^CD#`|oQ#O95kouKupQ#^(CAy~dV{4pn~B zC^KKQjU3g)K*~>6`_KuxJH^;3rwjO6@Uf<+X8;r9+Kx`wd4IBt^2YOv&6PLFgE^D~ zv!!*x{4p@6pphjcjVGwv&cU>zuO$a#4s`&(^v09)L3VhUv6OEoot+o+&rAT0zmWqF zV$4nK40tlSj}h|%roZUAl561lGuO)9{~g~aklXSH+LFF}p9eh4=(p z5|j~7G7gc1TjB~HWDOhbH+K3lDx+`x`Lox@NZ$0!pXuz^&5nDt4LKwmYBPL#0oNT% zz%jOlp&95V%%9>Ko!F{-=wAnZk78`H`!t7^1a^I|Scc*l_|g0OC#N?Qx&?>bD7HDY z(lO8Th4w;!2TpOGZ>4M-G`uSy3q&`S@Tp`$Yyfru?Ft6PsT7;&ppBQY_uoKwz6`9t z#MV{&7ETjqn@gMx7;T)*(CJ+01bfH$9nfwbFlw!92jdvbANjucS#4wED<+#L_Uyvd z=LF&@v}fZf9ngp3Z8n}F+N;A(G`0~i%jcAx|7Gd=YRT=;;jP#_ooj&SM(F4k>uY&y zN7hG(r%=a@(1UzU!C>3yq}>$oC}yE+*=+Lv$ZRBqpNkkV$QP8|7Qs6t~%LOHYiia^#lqB{?YF!f< z9a)iwtb2t%)`MT+TDUd-Bl0GnIt}hCFKpQ2<223l-;f(2Srvj$6o-DBd(oS4zMpID znXPNdrZ>3%1^3$1_!)jJ?jE++;9TQnpMQsIos)8wexctp`L**4r!k(6{-{g7``@Tr zXQCvG&v>qvPjA-iur?T3aL4$b{IVDBJJyK4?Giw`Y$=gU7bZA6v# zZrg|yn>LJXMH@CIpmi~dc_?lyxnuRO;=qze-$DNL@{jp829Ibi%Gy=3QC!8l;Un2q z34G05ILqTs!lZN#iQq4_G8+N|wfk2-{vq|VRMIG3Y#x_20JTd@1 zmzc`CA;1M6>>7ft>6~G7LTIX=uLJGHB)g$gyU#_G`QRjDS%y3oo)lxk=4g48bu^OM zvys^yv^59%>;#vW!QTbEe>~r#Z=Ihky?a^2oWI_39r~dH|0)Jv9PlFFDFI$2tL*xO z&$FknXgFxMy3`qkXQZnQEXC!<2KUCxi|=Bax5Q=J0#70EDyAqrgptu#k?V4dd)c_3 z<61m(Swi-0zvj!hS8Qi)6FlX|#LXIB_^Xt6DdxEpySNNl;l1zY%^}nO8N6Q~mmNtw zleVUs@;X~fXKaO=Us9Xk?*g7{UPk;V8HD^mhI!ZD<~rC9(cJ~m-Evb#lFs`Vly|FH zUlq(((!7ep902xoi?t_Ae2Ms|wTpCL8{}8Mk^fyLex)y2er3EwE8Sb|+=e&5(%qfE zJ@;9#Eo^r2=?(`SEuThpSBXzmH?)ZU-XYs*DbKYwqL;q%+msKW{V6?scsL&wkNSUblJ#pm zTkbj5xarfzllXaXJ}5C4c-4=2{L+_NwM9R~zv_!cm&XgrhnK&w zjGSQ68Rd5NRW1p>-6p4`3Vr^F*{7k@$OP$g>A7_}1B~{tH+Dq9c?!6c=aw9?`5|n( z65&WW?#kaL$IJNF5&Y{y{OcGw!s2ZgA9b1P#;>+At1KY<bn8^))GCyh^yJTN{r z<7<3s;B|7~75>xULO%64_N)!arv28ZPDt()BR?f41O0e}ex!MR0r_6?t0j}Nel_LB z@jTS(`_;fytb6&@z!lN8{Ayr3muvaezg2zE(-`RKCa#^pzuJL}h3_8^$k|^Zu6>;S zGfhm4cS#Ig;ACzc4P1&0$@NzdRvdGHzgVDd%E0BU9eH zZFSd=uvf0kN1hJA#&X@mT6aHqX#Pgl>}TE^Mz(3^Ed0c|#*g12KmO1R{7&%vJ~U=*BKoblck~i+so&uX=tI4c z^ZlCdLigT{+#&{GzSVpZI%tvhoob&)egp3h%;hX`^m8Y+!vJvg6Y5G-1OG~3Tw{6C z^NEE^jlcYaR^uCF{e=ByuVDIh%a|TN;mNy?HEyK59bz-SVQ;^#E7-gBqi`Slb!~+1 zu?<4l2pZ2DIMXT#tQt%0sUa9NCt1K>fBpos&W9|g&+jSrfiH7_`QO7vfAwcCi-FAn z|8vLv;86Z&)g)(86=!dy>3?b+^HSiXlX1KLj9BJ|(_)#ynH!+B2ss`En5Z9iP<3^@EG zzVd9&s+ImNN7hs%pp*HI(M$4e|6`1ABi%|H$XMY_`!#Ca%xvnMgM764OQOFqlE?6k z;vVvIHD@cipnS%PA=<S z4%=xrbDhMpGxg5U8M2ik_+I!InF#ecd>fhK(`y*pIh<#5>O?o6kiVdO06Sm#A@}0f z-}5YeBYI*WarpQd4boS+^Q6xe=ggA=v-V0$A|GsQeYt!<;efI2HCIX*$yc*)=8fdq z(B3<=t$EUA(5rG;(%|RUJS%EqJi*c11~$nRx0yMo5h;}c$G_ycY`4b*GvmJ5*Hw?8 ztJvRbZH&2a1eu!`S8v=|6HQS7*To)6>W(qqEldI%}n`v#Nca1sr}Hc!!N$2jjqBpL4v< z5`DSgU2*v`a4-0?{o&aR;fdcG@FqOV|IX?y;Q1QQvw91-{#EzVTfla+uBEqt??$er zw|>L-k`XpW>7M>cW2&0JEd?x>yM`|CXtH9^;#G2r+o6j*WR%u3ZX3iL4P(#=AMEA6z#Tec z9JF;evQ4t(VPv)L$KgkA=3e9f_0gZ0HTc4pax`NBxoCVi&9#XpfyqVwI>c7u>@`O` zCp(v3!(4hTG2Y#bVRhw2#HhlDw-9rQ0Dn?G1ip}B`|x0i~l&oqmq^A zm#fg{%gM3XK)Ds&-8*G7+ZeQXTQXm~BwJWE$1sg^F>Q?VU{5oql7pVV;>}wMZ<3pu zJ6C(Umw##JrUiQ$zLE#~cmsPIev)8UdFJM`-zk^vhvXzFXU6kA^PtbLvCY26^Az;@ zBi^aK2f2Tg>kW*9Vw(AJ>#yc}{wm|P(R?HN4mZmm3Bq0I%S3cU$!27tbA+{}Q|Wsl zH~<$F$j9Z_@m9tt7A6}~b8c6$m!e`{jGvhwL#I72nv#wBmhAEZ#sS^~vn?N>DJNnV)S#@w$cqu%ocu_fLDMa8I zL;KM0AAH+J<9is}J;C=b?-f@v@ha>~J)8BP&B>7bQ9HKGbhQF%02orcZ;kAw0>C zb(}jNF!5#9g<@h!Ver3a`fAaYvIo~-s-wBQcWqcOv}!djKD@fs-F~?_47LwE#X?=wz<3*Ylms7wz@D-t@YXeHM&tNB&EP z=F%(krqk2NP(!Z^eR`em)9bvGqt~BnzfWkum+gjL88K1tc{VTVaBA-i`- zc0cIbXwTGfZUxs?7wFfE=Xmmy24ZmU5 zLP1A`MV~ZQ!Z%Knt97=XZ;PBy4a9z7Y(%e5AMt$IBsfbAgC3E$qKns=-w#2f>8YBB z3Lidrrk9(nb$B{Qjybb^WgpkxmjVxEj<+6FbeoX<1s_$O;^&1^uREB%g5d?7!*&Jp z_am;q9zxIYj@@cVijW-M%^gYpc4h;QAEZ4~S(hcl&RwVV&*(*0|h<-l-uMY!zQ7p6tu&>lKVv0?3JFyPlfQqn9Juaf)+#UQzjZuAkR%c557HiSIaBRtE7;J zA#{1-R^%9Qhbm-Ul=YWZE+n8q;a79Mvb{pS9+B;itb=!S)_~$Cd54R!Z*`pqd@{VwXKP`j@MgmJ= zEF*cHS_nOOKECO%=@)GoA78$*nPUkX`F?=>9_fjYY*qT5=6;v%W6X(iZQ^P8V$vs< z0FQpp=eG%d(sd!%+DBK{qqvrA)V`}{o9CL>?bm!E*ZS3aWR)pm1$X9w_GNM5<@v|p@0)_5*3dGR-IecS}Iexql;ImOt^##8&#u$vBoi+;qk3{Uy* zlta=n5gSN2K=!?h{q!C_i`GmXC}vNv+pg=X(s>baS2SXBd}PBZ?kQVaWB$iK!mD-Y z75q#2A(c+o3&OkBXvkJBWxhDfT({O4nD1zFx#O@$Y~H?pNA7t0RrZPP1cq1PBl*k` z-l<;2INF)BmoKAw_w#$e?Rvq1cJSj4|5EFF#yOegtT(BJ&NP22Kci!!lc@*B_K}+3 zGjYWSlw(oq6dbOD_6&^z|9Yo@b0|Xl+JT{tvnaMY-dPk;o{N@JwEv27mcWa}Ws-V4 zy1dNLWddL4C1~QO{MoUoW^5j!TvlF&J$ZSE_~a);hG*ra_K}wT+%}s0L1cmQ2NfS3 zJlf;^^h$IK@RJihTsZ;TDcejxS>Ls3O>`{ly9ONA{A&}qMb@w`tN-CQ@Y(8Rhr(yV zPdVSs;hW3&_OXcbJo#ZQHm{=F8M$T)=W_0)z60b`bUXbHx1EO^MBb#3JCA|GcPF_= zpF|cx7e`yk1JXS)!bOiEueJg6yTE%D@p-MoQS4SR70s=LuzB+?f&Rd=Y!B>ZGoIKZ z<_uKHeFwi>I4HcmV7rw=*t;#V;R>hOIQ5kV&mnY$^pyji#s3E{V{ojDe8gRRd$oJiMHfBB7(KyQ73Q-B3OKfdqt}U# zNLO8eyinfYLB>w8nGkfg2YNAU2k=N8{(2IzHC<|=c(cEj`d=Gdb*K5-R@cu4y1fm@~{s)0` z+6mya@Yylx#%_Ce5xJ-2(JS6zpJ#Y(%Sy-DYy1AFY(H=_gm)UV=L?yG;NIwQ`X=1B z57GKIcnG^+`EeHi8pk~Fi+`tljLdTQThAVapHtu#nVpfIeU&zJFMb{bJ_LvEH4oLF z`=h#_k1a|2k{yb7I|bjxjcwV3!`LI2ZVa`S9Hce9&J6nhe5NbdGm6`XqdjbOB|3_|Xq7 zZD--r@?9}GDzd*K;IXKWa_$Jf9J2GAKHk@!;lH2B`CWaycZd7$;T6Rj)VCvB-G)>; zy@rYbr@GBC+_F;{l6#?R^|&NXY4JtI3N z3C$K_b8S>!0`-zBV{o3#;@mYjFQcs}ZP_{uZfWmH#bBs=lwh6=K7qM|d(D;0uNVCC z?bV0mWMj`~#?Xhyw3eG(&CTfiTInah55~U_z$V-6O8MXZSjPM@HZc}-p7g3{-{gNW z4ok5Io3lkU{>d^Q4 z_9(KXh;MZ*JV~A$#nzev{ziu4B~~`c7h5*UnI1|x4I}T0brv{JJsok_$B?=e6W6$CEK-d3R?Zu#CQn-W<3hng856sfo}CZvBPUbvmyOG%ksr!Y z$b;|Fb>$@$!yKIlb|gxERD$tT4xf0p7Wp*?7`L(ii*n4H%(*7sn$+QeK2M>a>X+ie z>ibc6DA-4Gz^8}SAKynWFJyqhp+kMrIYD_?#r`nrXO(n6x)8pir(0a+dFtqc zHx`^7PXGTvuCvBsD7XTESyO`$TmE?po+*jYtmr^&(4JpvCFM(i@A> z0i%IEhxRnzJQMoYyl4>4qmoU)lR#cX6fdKFQWA@A7Mlh=Zjni2EXkDn>K6 z@=5nj)sc7(nt>KlFM6;f>ztDG%kToW7xTC#$0-3%%lDEVEoNOtHm~?c=t;g+`zdU; zWjZf(gr^fLS$mX(o{DJ8;ZMH&d-&xM>M1%wJ)&LJ^JR2vihBGws)SmP%1Z?KDjG z>4r7@E^GL;Cxd*8#N*J3XpS)#-I+L##_KuY0}pBFM>M0ee%g0)CMYzt0p9LFUv)t5 z9q1~p7k(?Jp9$WH{zUT{|KGt2M%RXw3zTnifn>KAz;9#u*5RMww>qES@L4~qJD%SX zz@r$&ku*G1Z1=76c&J=F6vzopQbshqfWFHvOmMHhej;4dkdvVOD(XDkx{t=RM(}y@ zM0ZUA=Ob|b9A}musS7nE>MV}^{qfe(FFmgSKlm@mw3bAT(~@AkUB)E@Ery}5c3{=I zPvO<_fN-QEY5C#+WeX&TMcv*)i+dwAL^+5naGu z1nNu8A3Pf@B>Q}_%F8AV9ey7>E{pHF9(@1kj$@6=S<2#jw}GM z=Cm$IeuihWUutZ2#V_UicR-_`Wgk3WK9wX(kwe%CMc^;OZzVQgqPVQ2iMb{9Me~x9 z6;bM&4ZYZTRO@$$_b-L_l`|1JlW*aZ6yH^hCk7s2UXgR6G&g-2<2)C6GM+e-<`%}| z`_!QSUSm!}G5-S#8S{bov3?#~n-gY!!`-)xc%|kzl8WE^eK<&)ihI}V+y>-{_FRmN z=X=I7GKpVb{>dL+hTWA~NdJ&y3Hs^+*O9H9ApvcB=Ztu~5R?N(pHN0)^DR3z+-q!R zX>1mQCuEOuc9Ab8SCO_%Y|M-e@xU?Yhi$}yY`&Fbiv0P%YH!vNCy?prW68-5a4FsF zkT)csB7rQ?xM-{zb+3Ma&%XLmB>RDOvwG3*$3N%vV}Rd}nB*n>5d10l)AVO9Jd_tR zJQV29j=uWyW6=_Gk+Hvd^rHFy<6x)&NAzFzpy=g=01jFMYh8?9!*&x6ek~ku{W3Wk z$`5YiuPB22W-NcoGZQO>ZrZ03)0>a&Fi^gTXR9i=LHXjHwABHf+l6B~ic_gLlb&`BR?#XGfXxzoG4(pX2 z=HQIHB_CftkoFJwn*xkTV%~+uqTZq$6m!BoyK3LayTNm_a z>f&7ZzgrjU=xkjY=O*L-k2J6i_viZO=f%=#R~AE1Z*(I(E1 z^l4?3r3ZAo^s($CGgfmgO?Z1F8lRN9ZU=`U`EtoT9c#RSGM;?!?VE9Z`){&;BV&C&9%tq5aDxxa$Gb-O zd<<>NcS~k{w=5qs$8oO5$JA%OQ#p9&Ip+4|XZ92S@=P@FCGqw|WF@qjypj0S2<(iB z;OZ8hNq){}Jh3Z65$s584BVmHD2rGv8xZ=(~2sXeykNquSeQ2<4Yjp6`_3 zkU}P;&{?KD`rDMRm{X$i9k%=uzdU-)l%EW3YdwQA(!{oI9qq@6fLXFs^Ki?cF-v>1 zp}lr;gsY%OYX`1?KNQ2tCziAvI?Th))BOr^f|nDUX`f5~iN7cwww$=T>Y&_o?dh?c z7>t=?8qIG7_t;r_KbyS@+N-&b@O%cpQ}{)uEGHhX_oFp8g^XT~J=Q*%-%I#~SC_}U z_j&L~`x5Sn&nL%$C&pLt*L%rDXC7KpFb8HK)w$D%0fosirM(@=#70$?Fwy zFVzxlA!{0IX47$nF zx2N@zgYh$cIS4OnZYg)3gM5Y^cD`70&B#HOL+-3){y0%rQIdpbQpl??@XD9f+=iW> zI7@j@fijvGH1mY;V|_o?Y{8H9$Oz5faNg4MmDoGVyBdJ4FlJDA;~w;t-4Eez_-yoT z#a-3NSlKiOpgqy5cb0Nq^M8})p<^Hyg*(5%J>*w zpuU^A?!^n#a|6$M@dD3Q@l3XXcws)jl1ne~%=2AB%};P`d1Lk0jx}CF87J`1vll#n zz-9SNWAE+2kqaiT>tY~J8=1` z>Y0&zXT~A;uyg`EhR<@4@&nF|yico~bpz>i5Y&ZCprrcpN-v9|_^1BZvnd)-?1bnm>pit$FD~ob#=AtC-V0$e3#FmSUR* zzUj`|h}H*;an>ft#~1x=)|{zg)O=SMch;71U5|`V{)5d=d9T=$o3fh{^RN%*TO509 z>xJW2Z}aA40_50heseWBr=JYz$qy_WNX);0`WQpaK@+1`R6#CXHT1R|y3=nB^PI@w zMRnLzlAGID+q8}S4PS;HlZ;;#f6MWOs(G(|Y^Q8B<(6|_&GSxZgWR#hk5I0hT*7kd zoJ-yMT}s_;$_u0{a*!BU!Qn03NBJw`+j5?lQs=$!Q5o-xxR3I@6uH-gOqH#ehGrE< zl0EyKV}CaGY$4wy9%o%e+WO{~btwk$A#zNzS-!UBN7Lvi)nV=8GycN&?!n@B-7@=+waMGKNIk^{fwTECj7urlE} z|9U&W7T?N^xwrOM<30Sz7r2XGoq1pH-)pYFmg_iwRz5|chdAGzh#sz>Kf!p)Y-m9= zA)i2f3(>a?^o_Od8%6&b$0B4<9phL#sNcrDto6~p#f)9cUf(9&aNAfvZ`X^v3f62;_syoa`-FWzqJAUy}?hB~x&*qtRGG`5=kjV>@ct~uiQN;;p5yf5m( zF2Uc$KiO~dL5f%6*C6M@_`?;PXo3RxB;@s&3 zaRB@;gQtVN+&SC-B(U!t*1PX@ z)hF(|J#Wm+S<-iXUz*eRH7C>eFXi;TGGzK5>xaL2{|JLa#^YJV5SO-lc^ky-_h;9k zEpeuo>Fns3+fai_ehdqd3O9{`kR(qCk|7Ik7>qh=EV(_*!!$?$pqo9T4do4nf62IZc zh*)M9*X6O{4fxI`H`CDXl@oiN&OaaZ#!PV`*;Ml5&gcW~s;m9>nmo8|dx~MT z(O#7HqJDepMN`)d^!7~yhgR<^7xXiIw3kUAKQ2{Q`t8NN_G09BJFM9gjI|+hIe@bp z-g&PG{ul=AGn`BrWulZxQbzbUw0%GO22sxN8hyS@d*`AzHTQ^bQxdG#%!l)x;r}0; z>zz>s-w9VUPwu-T)&D-ld{^vxXMvr665rLqm(^Eu&KGc2_}`5>iSG=YuU%}u+ls9r zI8Qyf@Ag-3n(XxtnWyiZll|_=-rxO6`zf6aKAls&_WU#7+E4boYop$G{y6;lWWVd0 z*$XePo$PmmN_u_w)06!!()+t7PxiY(V|w-PhbQ;l{^}>$7Z7?$7u1;X+jMf@?Wn$X zT(9=lpX_(_m-fQTS5EG`{na0z-3!j^PWHRu=k)sSnv?x*Qt$6Rce39}-wB^SKU|XY zot3>IZ0OWj=11_wJY5@VScd!$%8}#{YztpL?TY&HX=$$t0S>E=5tFG45x-Tvy)7xu!>2ilY7M10=^=cei>&-1?X z`M2}<@0c(1n)#tcCz1HThyz6PoL~}lZJTT z`SP&oWWW3EXU%tZ{2n;j@0QQ%^lYPVT!M z)wfUU)!skldm_4WHTyOGTHFkrW|`fYl#_EWw~(4KF%Y$_i$u9w|%R?c@857=L3FD`wH z9lIl%a2q1Xqijw`*xQS%oOk8CQw;2E^1{0Clg%^mrX0-SJbT7Ii|`EjHiT!tU{1l5 z!wwtB{SW`<-#57p1>E0h?_;5cF!x`w_pRjrGv|M~y{~i|KH~mjdmnQf{>uGm?(@w2 z6FI&3Fn{8iX|EC(m<#&@_k(lF9I|C1^oKGX+`syg_a@=1sR$&S|Cg>2{=Vi-x{SY^bu!Y0-gK3t`HVisC2J)1w}ti4RR zEyM)p5Hst?pK`@oxmO&Be2!lEC&5@p)ln~=)v9yhXj^MbWRIJ*8q{NQe3AQ#i~OTs zRxxtL5}&1SicJOkvzmC&CqoLe`8P5A8>i_^)@70-qwDyYW<9^5m)7ZqUV`+LAVx&F z9S-qBV%~m?xU5UDIggH}H{1ixKlEW}0EPtDS>$pNgy#wqKkkXI8^7jbfB#;_N;F@& zfH{L9^m`a|%sF0Wzu4}6+r`I8bZ0Cd|7Hh%5_Z1vUGb@t)yy~fw!U&M7d}TFe4iM{ zJLx9khSsNf<4OM=@kI1{c`DQ8UU*Oo2kNoiAs8WtD^-GukOyB#@6(dyq z-+=}a#JCc3X-EFkJc}zYo}R>4xA4gaIdH@q=Ss#|et9tVj?acae{MsJF%q3AcP_V# z#`|J$jWh3!cSW9wf2rkY*m?6vb-#wh)&YL5pqJ08yt_o& z=5~6|7>^y!D9Q?#;6dZ@@fSRN30I2K;!ABRpEj+b%&C1SxtM$qXgcD=AJV!SGoJs| zdpzGi{`(!}&kyy!H}RL6XU+G-U`+drgT?iVz!)TzN9vEkyQ6!?z~n-#aWdB_H$w6r z+$Zs!v*UVY?{R%C2cFbC@T|Vv$ajpBf#nvT&b|ko)qxAeNbc5e>{-qIBqvjj`H8}q zb94}~Z_%b;E5m0KjlBDI4}6*vFgUv;V*KE=^dK~#xTgH>o6d!29wydItSH&YcyA{D z2@T~_|I5(UYtWXiJ05nB1CCi^M^2a7_hSPxe*-+~n4GRimtvlek_Yo!e%s-X^g?XJ zLHLx!nwUE`^lNjH6{Gs+A;?JD70rs4Q=2K%sPBLQxo`3|fhh@m%1K7$@cFJ*_G5)rr1hkoRKk_6EycR?>;DVBII`@=KJp*?>%&J z#2N0znJU4t=<**mjy@l{r#NOm8yA=gnWNZ3JUODZ+^wwT27le@aLG}4z|efSUtoac#}U~qV=tb#o%BG{I0WTs9*N~EY7BU>6ee)ywn-F zCaPzgL$h>0^I5c+TFRJKqchHOj+Sw+e3FMJ-OpK;Pv5+m^3o6Ji?7Z49Fav8*e})C z(;9c-OJkz%-&Y>t2y_ehQQv+_dnuEr=j{`?gL`EA{&H}iW*mk>PfhAS<4n8{o5&jn zO9z6nyW8C^T7LahV&Bk{=I}L!NyhzFzRi_sr}9iPEdS3DPeA|G6&$DkT8%9qH8A{^yjI0lBfwTkJT*>C--%2zvEoYYQ4l$=0og?S zaEg&tZOA*j-%e_bGu_Y&>)z_Hhh8DxS?}~WXAPU{SpNpixxUKtZIS*B+eB0F(w?R< z4X;vu4%gdS$22_3^=RZldy%Pczhq}meFJ*xiwx+gFE$`h-`Iv%r~_E`*SC&^cK!Ma zZGB^V>Wc^9YYo8H6o8L&^s?|F+q3Yorqz=LV~HUXcMjn3E+3Ead=HO~iL;M69*?b) zEgm;nJU()^sdrO(VzQ~X$>hU$<8zZ=Z(`t`&uV;HHCNGksi`-{nnQnlHbtH6_+;x{ zcBWr%WQwVG&bf>=HUau2yY8%wHS>(`rYJmLOrI|4qfB&|Uk2V&nHks?swV;6m~WfB zJ_YM_SzBw~k&~crf_<80`$P;}eX5i`yXTza`_y`TpLUT4$rykuuTQ~x$Jly(T5b~W zJvrt0dShO_L3nHNnGL*^Qw+QjGX`G#rHy$D8@C!R{9sF`*AW{=rowo`mCxg1bEM#x z^2mgSvQ<@Gv$0L;u~)}X&o*SJ@}o4@FTJDul>gF<)%^}2?b~MV!R2i3u_?TJ z#w^DDx9vT&aS8Wdv-i-~Ozv0N`-Ialjr%3`J~E|Y3iqG4_wdUk?x%V8JIbB04db~# z$KJ=sHjL&zl)WF*5aC{HTRnKEG>qc@E$*cU#@xhtB02gu0iA0O-sEKHEG6=K9 zx4ypc&iCo@=d@3ZzQg`DHhpq#%(H#ph!}gnkX-E)w&haFyn(%wT!JpZ2MGE<#%Duk zWc@zMOLzR!snC!3&+IKz${9XM*B*!gP@v#*o#n&5}w%Dqs|l*;B0bsDOMmYbNu1?2mb^6mI2 z=T)QcUW+)3isJFN<~Z7$D}P@;`*J*bux#E)Y%$&2kUM$qw1nRGfoo4*x zGADl@XNK>4?Bl!c+e3NfEIB+APL!83zX4nTYvCm!)-;y0e?d9>Ck#FM1p7TJ1~Q)C zA}73WDbGgJe)*32hc<987^;Dx1N;6uCx2u0aA#*|c)6*g+zD?C4G*#Jhj)J&<==IN z9$m%WubtzRuc&-R@`e2TkL7to(S0HI?aSM@SNrx+pVmZGJ41=HhxTbqBv&F1dnrh+ zV3Qf!6Prx_QwQ+BJSdduWc*qkXJgaQkiq*SXVBh|_yY%kv2#^q=9UjQBNh4T#Ai12 z0|o~e-o@`i9xjUbusCXi`b3AnCC6RkxSW1G$~mHyqZv==`5Vx4<*0IF7gml6Wokx; zBrhMpe{AvS+spg1<6lJns&dfm_|N0)F^#kE+@F1*G`>%e|E2LQXFRpMfM1w8VF62yR%pI5;+h8cqja1sNym=9|VSZiHp zTIqN%*R|rTa&p6*hKjQ&6A5LO@}70%z50->a9R|LLf>q1z5*`+hq3j5WfS;GR>WKW z3~#7hlD3OzJLH5m7SVQuwj+Mq5!G$$nKsGP(<+;hdRYJdV1jyb@t42`*E*1W)USQp zlM}%Kbx7CfyMOoNVu?So4>vrly!~%d*5>O9Uwg^3(s+t?MXQT>uYA!t{BBsaV&}KEV8aIE$aB%J@~xDIl?;FN*@1!|cnA1p|H`|h@!|5D^LQ5apC9$VJ;1MIuVmE| z|3VIJK;{SIbK6b4u=jdB_n!Ke(*Djx@X#WMYh0h_}UC6l;szlh^Xm zyPFpjLW7ljqy1d8SFFalC8wNnqXbhOFlkQyEwi#QOrx`Yd#Fi{16*8aKndCZtK}!<2D^)2F6^(77L1}R|C<%9 z&YLffcGf<@7-+434fG(roF)$PM_?&*!fWp5evT7w!G_a*iY;kyaFBN@TgiS7=`~JE zJ2JzgNv}V`PZD?(<2qIN0+wY4S02qtMhKT7;@XNUV=o!ll*^nT?^v-g@YteQSTQix z0OKM2u3~51vo-bZ+BLvb^F4R%RXi&N4u@Zzg`;zI{tMWI&ojZN{2VjBb>8}-?K5QW z2KJX;;D8QUcSd& z`{nWc!W+r4&Y~v1H#uzAOmC2lz6JXu+ImidXfcW1V0}&T_(LPmk(S4A?akvWrH6PX zyd~E_ckoRT*`V*uToU8^Rr&m)CDnng5Mq2QvF8LMK2b~h&rVBG*qNbmC!+$QH z+{%xb;_JZL4GzqDQ*dBxYj98w4%!Ae7gvD?*>(wVAbgY#axQ9vXVOdJEp_?MG{ID( zu_JyfxRS`pt%0#iL(lCC<>PsIxe2~Q{vw_?&E*!e$m2{kez%jdAz)@R8A=P-2=a-#pmE@ zi(~@y0Bs+s|Dd2jYcbhZ%)37_rhy>qh#GhzaSWT1ag8!(QBA+ z)chPAJj!{xv}tj$T{5CNPPtg-TYOXaytB3mTQttK>;{d&wYg)km^zpA)SCjv@+a7{ zih7HP{mGtAZDlVKaGOHrXl_Dsz?!X>)ugbInC7l2zWYC-QDy7rm};k@Nq-Z<2mV zF2&%_a(FO|%#|KXA!pO`;KO;)JpD2BiyRcrtqhzl{;>Q%58oU;V)jP{$HIZ+P=y+NNvQ;fS_hsMLnD-TfSX0k?>B5C;jx}CNA9L+fFW;fZpOPHK zmpVESyCXFM{4ob7`N%rYMHTps)zZK8YYRS!ba*>`3Zvg0>>r&4T*_S2RjjeOf;s0o ziW}XIeF^<-rj7)*f_wtcPAKncC1&>+y8T^ryVlTkP?zwl`d#p*=c|z;+i3G;U+2G! z&gV?|MVqO&l5bvxKazYy`)}sftuk$tiS+T#QQRX37Rj&54DyR{jPOgDw_c%s`SH3= zv;I%_8Z+TWdkmL+rN?jm@cKZ$gCBof4W4@C>&PxDgs$LQ?GaP zlJ_rYKlgQBv-mcxea7iqA@#q3&MmwN9YLSeN4`DM7!5 zs|5Tj|CYTbjjZ`ipuBmfGUP_8Os!w$-zZb~@5n-6D1@Hdbat~}FJ~t8(FV2_->>z* z|9PN|2m35fE)wNe_~qs27QO~<8N0%txNBqRVck3YN;enoM>c)Hv)_Ujet*m}$%U&J z&rMw0vD9yHJSXJRFSM)iy3rpm`CFP}mdwsa4z%NE)FBJ(bL7FAIO8FI1ixi%6ZnX` zT{ATP;!Vk0*|s;TA0s_ore}-&`X%3V&-fj29%U^pI^D+KerV(!@QkxE#osR}_nv+Z zqo2R<`x)$?=kN9QkJY~!wtw_Z{SqI2Ch)8<4lUA`Sa+-4r*i1%JUh<=YE(aJApLc9ds7`24;QSdRH)zMpnQ z^LEUG_?Up)?j^4n-@>1pzkK2I@-F?CMu3tWZjEaT2 zX4txaXX`;Wm9n>ii~LvnIycak*>Ar+LEVN{+M~T_WteEimv_Sbx4^-!KIq|IbN*1k z-}ZU-U4QId`BywEyM(y&st{*^u%?~D`;2G zD!v@bNdBpPWI>D87}ctu#2FH&6W>9$8JURA7@&Cl51h4wSxYVZ2s$x%O(Hj~T>84- z2jP1QbeN={Mc7ZFaO~nD_wtLSGb6wzdcVczSKHrLz@?tw;6G3Lcv8P+n||f(s~`p% zBlenHXlcTe@k!tmZ5A@#mE@_YUFlZwSP~wyaHO1>Gw{=mPMdG(1lvz}7i#+y+E&?C z+WrgAY`z&Aq6y>#tlVrK-PcWW|g-*%);5db>N)+;* z_Wr8({K{5?FE6Ts_GR0(>i!;QZ4}<=>BE$4AI`II(Fet$)J9Cc7h|~@yH?*c(HB!M zV^@n!(o@g)Y(0Yl^=$R)IqZKQ_iFmSOZ4d?=dun=|xc$(t#nIo?NUt4{BEc7Sh;jNqF)dFIdAylH5cxT|RQ z3p^JuKDi1TitE1Q(IMzHxZj#`!k1sdyw-rO7gxl}*&iVP@KxY@IkdHWQh8>@H1Sy8 z;VAT5Nx3S@Xuj%l>{-oM9mI|``HswM7RTdn5tm@zDs1MhH2)``F~T$H{YQoopFy7` zvGw3H6Fc{0nU|*&tp6asi|W6J-(}2UiYJ%R#%S88r#_uaq`A*>cskfdJ9=@{eZ+d{ zmkX>e{N>V*(0Jy;rZ87We`Hf{g@y$8r@{NxzXPx434-uHLY~qV{xp~KEq;IKU*FHK zm+hKVlBm-CsBdDTK!6%$&ZPce4f!JFG{|NVg*HhJ$L!_z$0(v z)>D1DUypOq3F|5M>-kC!JWarpU2{8x+z#N0w&s%`0B!UE&oaNBWjXK!>q(L`YU=sQ zloQso-mm9s3lDj?>Q}IysB&Ti&n0J_u%1W!dM>r~kSCp6PZj%AQP2M9?E_9&&n~~7 zNq#*MeDmCTwkY=n+bsG7IW{@?QCw2vE?uBl?l~47=8J;$C`SgFG(9G}WoA)BjC%BK zl-!mm`)x(I_vqHs7tqK4YRWx8Zb%Vj$|<85@;AAc+~@s~YT&t#d&PoHdHQ)5_j|ni z9o67(J@-58J>zmG_Yc{7#{28s*V}vO=&RiSi@k?FZ|43Q?!_nTR(j_}*IZLB zQGmZf*}t@VWo1JP#s$FmJFbKLd&tj+nxy(D^a}Ny--#8o}{WN|Hzv*<9hK3$)!-ni; zPOE!~o9SNaWjB-ax|@h!+pN=$UUIm~hVE-cF=CcDf_mSvJt-Asya zQpNfuen?%*hC+AFXN;Wx@=z}(ti7YYFwB>Kw=%DoX5ZFkKf1nozL%&_@(XSkNH*G&+$7omPzh*lvi{l>P$ECbiQqKFYwDQ*~jm%dY8G( zmU-JR^BaEOp}tb;9p;)mx8w*nD}Nb-mZI~W=||Va4D6|N|G?P#XNB-i^fv1ZV#pQb zuisBBD2ndegg?)(U`bLYk_eYb?q6if5no7**!+-r7xCWx{B-IdHeIOsL+1I+yV2ge zTZeh?6t`A9stw*CpZ#m^TzJ=lrOwDT$eKmnjGdYHqP=CK$w5EM*|}EjQK#xEx?1ro zXJdLH{DV#!vnZAsd!^Pog%8&;53!Wr{>7|DuiA%!M`Fl7*SQf3y|yA(^K3r-UeqJ6m4Cl$s53ov3$R=X-l=zmV(-A0 zfDXm$@*fgDPJgag{Ve!cbBVJk&vSiqjm6Vh&NEx&2l?gy#ebgU8`&OP&c&bRUBxx< z(v9TaUK=xW7;5JfwL?Fv*uzG3zI+8d3cPAd-=uF;S?#yvnDhS1W>Zg$^fnTi?DMS9d;O*fjS@-ee(>E(G zYYVm}>-tIxe-PkVpP%16&7(2^IG|IT%Z1KZ{xyo)_}lau+S z-JkgNb$6cz+^6@z{Vl!+?&P)oPbn1#@jpP(~_Cje4+p(b@{S(7{G4(BQ zhMX)%PD=iU&?VX>$Id)ZX&p8$Nc{{RxC-6xIm0<%bKT-4N zY3{!WJmN>i$2682Q;o$M(Is^YHud*w!V}Mf^mCJ*F*Yvasr-4X>)r@?{4d>Oa!k}m z##?=S)xMj{Gu5wme*b^&zq5OmNltk(ihPF~fomSH+(P+Vxkjd?)^UyOB41YgzTcU0 zz8Sw5_PWRKe)bO(cfn*TgQAK-i6pL*xBXC+0pa(0tn1Yo#P}wws_0B$E z{nrz~dMmINBAc2d_c-%hFl#-L>egCC>9_0qsITe-^;J`!>L~I1XT}mbh$1gEW>d5M z_VQVxCf5^PvefUl^v+6PSY!Ho#2Mwm6t}XN+?3q@miGalX@3ZGYjjo5{&BN_?+;(@ zi7WlM`dH&5eauG>Ag4XJ9zitST7VoH${EwoHZE9lbc?Z3p1^K-_|)$&csSi;?yJz} zTa=^9Sp(v+Qv67lxvNU~cyoLEpTT;P#J~A&f0XrG_Pa8kMf&(|N#;8XUb^%NwKp-_ zUehVr?`n~4u|B?gY2o)4%zAKJ@9)?T!nW6jy%F!@yC(806)VuM!>{JqlgO%%;p1-B zGiv=wavbA^98OMT>?U&!{XlIHh^MyU}1dX5IFfc;f8~pjJ1n^or$H)oZ5hwQSD&&h|o~^RUup1NA zp^{+yKy^Cf>9hJx-6qEq`C^{I+rmLsry_$SdsRmKCf=7WHS1@P2}UL(>m-w{Z<4?^ zOK=uecOmj~I536FO5UZvvKd_ZuDK4|cl`$Ye+6;oUgv$%KDn*NMwgt9Xq^TyU|$=& z$c7isC+7<;^4Z3EIz;xlVx(HvR)-Gv`tR-4kQnD=QsB?vjXG0&tA6Nv^?`V8V`6Kp zq*A%2)F1QdCppoaZ~46JV(Go?`lZQyM;)?XlQXy;$2B_M(OTyF*-Mc&n)+E8eLNk- z`ksa~+Y zH8zy=uV|w!gkA*S#;zX1Gjx#fnwslm(v%TxbPe>&%;&pm&ao?YOQb_JUYyP7eZSDj zh<=isTjXjl-}%@@*gA^gZN12Oz8arvHrI;fZN^U84qRJrt2X-{&qglQv(8S>-O0!Z zb51z7|1;I7g5NX=dS%K+={Ia)V;#S}k9C4?_<@~E? z+{?@VgG|aYyRYc@%l_X5x2zR+{j_%n{=>b&P?br*B&-L zH1$QvOHzC?ROz2_4h*Asrur583lZNmIa9!VrvF@LIw;>ek9X#LP4F{>cdA1;8pQRB zyjMKp`}|s)`$9_}*i07I5=$TGdC7&o=tKVeI+c@ccMIj9A7kH$j^LTC?B!UEy&zgz zZN~r^l{*HH2**o~$Nh3*78dvIH}c-cc~m&Rr3dG-VM=rGZu?^1f zQ^#KNAC%8+a0HHbbFZ8p;WrITFLSTC(ZZq5Gp&Q*twGK+$fZU2)6Z;S-r3^tzqRH` z{Dge4Z8LA`JzLDPPr>2&C&D4J%<|$F2T>Pw$PP);j%<<;G+yqMm^jjD7QeHO$1i!G z)7uvxkKacFv~BS#nm2d{H+eoy>uguiT|0E0=hL-fDtW{f#RKU4>B%*;JHDsy;N92` z7Vmd}_c;cy?Ds_3)!IT=_(2MLoM)^Cgm1 zY2W{l{vXEu2q$yzoa1ezxax&Qy*hhr-1YzKgGTm-VJ^Yje}s7j_Oilnpzd|N^Uiz7 zYn}v*$Caz}%B`iG^o(qc&dOtrCG_3XkItJ*i7`wt`|XeDS8t=0y&e0zhYnJT&6L^ z3GmPBq5pR1zhae>DZ7c7TodP#wp+8i0nBotYfUX^U(1=Uu*$e9$RaI^44#C`I_!MKTax3bm$Lsf*vAod8v77EYV1Sop`d*@X&|vM z^-+4H5P0E3!Kn7`wQ#{VvhPi`QdGd<1NfBjrw^858l2bhYfkG;OCDn-S+ifAGEHIu7?_j_?V0}59y<2{wU-Xx z^sM65ZJmGfaK+fk-j99?ti}fB+x~^UVj`Oq69Mj)CiG;2v5pZF5uUa{o6-2VhUmxd z-m``E!BOpr;*4)FaTnT&66eskY77<67mXfE0uObxf?MJ(n;gDZ8F+PvQ#sb~YWw|+ zFJ;WUDZgFhK!|shGbh{I+RYm8fBwXiF~|b!u)vysXvW(3i*n0AFVde0`DwoI?_^^j z$J^JdW*;wuma5Jn$IGCqAN0tNUoZ8}LJ!iBqx94=QiN=nuv&MIY41 zpD6cjAh=`<4c$-XS2|>>r3-IfUNWnNHkETOy0!me=t!rPcmm^)DBwHBLNdX=55jjZ z@+X+@lYm!5Yw~}i(4@x7`cQ&Xd|HGoFK@!1rv4PMqad%Ao#OGT_|*D09xeCmHFQ5P z%fIUdPenf?Zx8K}KhpoW`R2qB=7(u}t?wUHKG*d^;S}eYNnb#YUgA76n002@$=&sh=?5Q*j>i%Y)&7gcoPDJ=3S+p>XFhQZbB~)j2eWpl zyV1(w4e&t+`@=9NXWGBPZ{Nk%4e=+NS96M;^Pq8f*T_%oW$o9HTnryHf+P635Ig57 zWPV~E_4s|c4qa=nlf#$`1E0z%{2BIpTH`&8J}lO}3O4x?*-9Z3&+TYrUKLoIR*mgy z0#?J9@a$M%y^c6$7+5vO??jx2P7_yknv3D76zeX2&GYoHfMK7R_aYYN&3mP(Q@TYm ztR22hL686W5%E3AUB*)LX(8Z9?DJqs|B5{ks4Ex#-eGW6Pnper(8||y_VRF4j^E~fba=ixijL}{6dk?Z| z#ck0pGtTVI*pG1+4J7bm(6fhkJ;A&iIGYP^9B93uVehJFS1bF|)bg#1p3Mhm2S&QI zvT_}&;Rr$u9NMw$ghU@Bc&EyTDmpmHYqSJr^#5LTO@Q&YlZ`fgz#7gf)9+ zP%tb^=xAxpz<^+CMEW~gXfwlrm(XOS&Xkr6;0?Tlg%`4O05Qd|BWh`7=6CNs!+>al zO3tJ)|MzEI_WsVE8TIt{^};>-yVrNEXFd1lSN5C@PvsO!f7&yrP!9|xKk1QE*yVEyjsHb0MEyw4062Di_dalwW=^&e>l3AdKr(>owK$2qWgSg-qSrqf6CrTe_n!K&FIhV#;;OMU&gOVAn$t5 z;Ge#Q|70Jy7asq3p{;S#-_P;4V)&>`<>K_le;22~`B)B4A7VVe7RI@v4>XXgm#tg# zef&jY^dKO9g0IJT9B=t>I9^9BdN0|k{dAu=ZYRd~IF8z=BW1hL?cpkTN_zeo>2@n; zDQF?zK(rXFcHRzPGj#9xT>MGhVG^ZD12hR&CD;o~%?vp)LmOZcZPIKe!al=JQ>#$@|eP{_oO^x!j*avoj+!gGSibQw@!_3~>7I(GRB4 zYJ8I&_zJyf6hE;~8Wl!pboyYY|KN*P-CpF-=sfJ#LCcq$?r23#qBB3)iWs8Ch0}UQx8+7K6=#bC%KYail{->*NebhLLbtY#Y zy*=uokAPeC{84?>L9IbXcE$t`oJHMq(YWA&ImnQqOEAdL<*S}94}UOSWS6%0mYt1H zG)&0QWf`z4ewW`^$X&u-cD#Q2t!RQDEtyGyd-((AY^qY|0L{FQq?k@Rx*fmh51;F9 z*^du2GOwY$f&P7bMqGJHu$Fq!hxsk%j2dVK@8O5Yw(xsjwk3)O(*~K{kIY_2-LRLR zAA?8P7UXB8_Z4$>-r4^y-GEDRdX#S8jnJ*tj5);6=?%_(P7@QQfA!($)Q26}_yjSL zw*$UFHYa>{5NF*ICJet zSp=s=W#pMZk1WK=JAa1HV~Ls0vN4nRuTpzU6njpA7t!a+Ih>_^n|k((fOFsAU2=Mg zqx8?L?U2(c<#`)?-F8#ZRjBhGxo=r@)bfGgKe`py~U319`D4ao7Zs1N^$|YT=Z1>os803^8Sjo`7>{)e;Y;U2 zkF2ybGW`l<0i|{GfzM*(+ z7C0vERebxpYN%%M8+a5R?)Q0&NkN8}zCOs=rxkieU(+1U=`rn$e?Hibv@Dwfr_l^fEfcN^-EWc5!*p<2#IO;0P(W#q~ zOA=k%h6I~RY1{N!8yA%E_bA$FP4W8j9&rI@MV~|+J$I>+gRs17W1h!UR|~%hH)gHz z;-G6OH1unY)w;XngIaTJp9Vj}JHWoV5PQ+Sg75Tyy6%8gJjI&h0QhJ$zh6tNm%5lZ9~o*uSD7^c zz8^L3V9QndUdx&D%FEHmFrIB;EajB*u={4skTD1Id^OLtW+)g!elI}hnRP?v8sm4h z*L)ALwr~74=KL;yE6&X)meD$zr~ko&-7Q!1{loC_($=7PFa1oR{Zhu<&ELoJcdqSH z?V4hs4(#iicRpCpmdXDi2KF-B7LA4ON_2IxW)QVuI~Z5Khw=lg?QUF#{FQ-Y$?be_ zTnc{w%sVApgXaIH?F;-p7kE`?mR>-;vUy**czbrmll(6JZ7_Ap6~-Qp^?WczJk35- z_)0#K_+W07{?(TL$_*V4{k6`nyTikE=#KaD)^i@%`ec2=$n+ZN#mJiG-#^Jd#C7Ov zo(DW%1ssN6^l=j~nsuQBw1mzp_%0qWxyU2rE7%-J3^9yp?ux5 z9KF1+JDu-Z+s);>XzZQ;A^5IOUl+I^5nn}eFXPPkwr0}u26N_+#^)upTnDVI2hGp=jNAu3m%l%L&~ZADf@ix4@K&HQ4gT}M!D=bFQU zO@4iU9T!`O4&(&-Ddh;goO6amMvVL0r`QB?6 zC%G}{lQom<`sru>i~KJ0?B#p7HPlb>yI(_nsjqf!4K+@?{`&ZMq>tadPanf*7ohvM z_0=YBeW3yB3p@p;7Mc1;@R^Y@@bKAp-fHRY{v>sJ$MLUdeF=3xW(&=X&G#MaB+?nf0L_IR5jG z-)^~qIZ1zOz2=KwrJhYIw~_xEp*b=onNi_f)3RBOKXu}+;V1sC96V<)k( zdjB(8Yah$srLv*173tAB^EtMn9lGyk+z$Nv>qc=-aOJq>!Lh_=#2{(mUO0>zkDL&Pq8lZ=p5y(3O8uoeXp_mg&Q6+&jy=ZR#M{c@4HJY%YVUl;kH5R?vEU0aA)>P ziyvIg{f(#f)}_n-kTkh$dU8H`&XlbhFOOlw3#G$%RkJa3^hKH?}Ze?WNDmx7yYxok?Ev z(6FBMNt*97|8VllTuhw@&r;Av^81M3L}!^C4=^SfTe-;8Xygz%s^(5F#bIgjJ$$47 zhWL87@${#dI~|m#_)Y6-1^%~*{FYAGdfoBx3i4;x);`*EZA~%s3HVTvdfkF-;5&T}%uOUJX3d?Iwwxd<^|p*QfM& z%*IX``Ax&q^^CPvHH_#RQ@1-hE5~J$V`R_O?XFx#3>~f8U4zb-410NAog>T2p=9fO zY#ox3SKj$7JfRpu@@nE~#yN#&>O;P-T|vFu94vZ|MrPE%Ygy{mkI@dnfda+^Zl^zJtQ?t7fUMvcwtAhx&_{ZYXCMu&{V4y=PO zkstZ7obzpRU!iL1;LG$nWDGrmU$`Me|HxnPux~tIWn1`6^Zs?rCCNM_({0c|XGQDz zowQ5wTzW)sOQ)GSy$Jl>x$uL7>Z#;U6IKqcXC6(;k3kE?o$5<@i5H=t$NNvfyK**x z`>!|td;4>@x;pUM!J04nHsZ^%wzE_6Uc9m47U9bKZmBon32>v|!iTwsM)*52Vf+Z` zOUrbIcp-CaJnYierH z+pjXmFEel9S2Fn;xDh_2M>$Kw@qzWl)7yjchQsAE*qCh#HLRkAYCjU_oCGpO-eH$t z%h`%;2!S`j+Gu)vqFn3j8ZXVWlNs|}{+7SrojVSEKe;dbH(C3z*Z6lwXZ<^5(bz-k zoY%@m2!A7>FQ4+=jEu8RQY7C99W6gI!J3(Dfx+GOs`AEx+@oM{t=cE}0sGMoY`d`y zq3b^_`bK=FdRH49)h~}lbu4`6eWhg)9or_|>wKk3`AU=e*R5LT3}=}9K4*Yy4zYbY z0|PzcX!C{6jDJKwfBVM47L&h}eni*)h40E=M8u3?sq(!ghv|D7m|PZ zuocLAgX(zQ+;{AEwilepw==#obd>F7U20|BM)oe?FX+s7t@CZVfphgoSieu_j;3g< z{dCjuQ`&(8A9REIk)I`=7B7&qF0Z+YvyC~sMLa0`5XVmory0Kz-vm1e|5cGUmW?iQ z_%}W)JQk%xmGn6NU>2G{&@-x!o!fAuXjDr{2tpqR1%ZLZAD5aMI6Hu| z)^zW|b>KEQHt~FMiF|?6n&X_88*uMIQ3L1miBC$s4BPV~8@aQuxOI4sI}n~akN)Zs z<*I*{&G{Pd(p; zFBH1=oD*X6oAR;Xza+9Inu)eQalh%g`j)<&SaQhZBcvZ?-_$OJjEM(R+&L$IHH7zc zHptL%w8h5A-bmh)GrceB_P;q8{_g#}v9u8kqv=a~MH&hWk6q*HZj+;tQS@7*^CcAL zRC>P%9-E^)bMX1*Bx5OGYwf2U%kUUH{?6AekJXx5R`Oi5MPF_V62~{^zEgBo@W8#u zU(wmY195b`z9;45JGhVXaD#&{zGd?sz_6=0&KVJXz~JAjisF@axp*m>4y}}znMz#& z;~H2Ss3#Vz+^rD=$Mu4>R~zn@%$<*DSnA;H=AP@A-#d&BmaVBR#BR9#!lBOvuJd)w z+5F6@<-KL@MD+{ph?!SLW2^DaS(&?i_Q95!5t%dm?Bb2}*o3~~jk_GKwjP0AgfD#D zu*UQ4Sm6(zVQv=~Uk7;kyD*?$*xMj@a3J=(iuFYND((%dUsV?*Zl=!3oO@G&&Ak+x zn~&~GAL>52ly>rm6|<`bci_Uh$paUTnmk}(>15Uhn(O#|3$ezlyt4&cFc)8N0Czdn z^Y=Q=4`J`bQL?XfLt{JD_wQ*}uyCI4A3SPVXZ`cM-~4!Y#i?mv_i|-pRI`mMT4fqAEf@EbCyI~6+14z;Av|4HUA|KE?* z;Lehjjd*2zwvGG`<${zO3Gw&TzU9rgS`2T&)B5h;l}{1kPf6DQmp(!_P6~TxbOLro zu%tLw-pq}5(g_2{GM>{3PcxqCzQ4~H;Sko{z3j|l{G9p8XFnU+4asGFiBH)D>B(X6 z)VCZ@_0W&t>(H?5dFX;K7FL(X@U=CMb}zdlJszt%O|FyQ8jmo(NBKOp;XR-4dV7{V zC&;Vh9^)aex#MXZ?r^dCHD?^b9@3xIy87(z1K`I|>a$;sS7q%Rd>v?=*5r@ZfIjlKl5NU@|pvlc`+>hBFx3+622_CBVkS z$*;~|81HPKfj^pKTa;g&13V<3Mzl}j_p$74h}>VTS{2D;8*rt7=@a0nN4+-iRi0+- z+QuIBXeYy`lYkRhQ(c;T_ZJvrDtjb+eRMVBX4aGFr<(ayGFSPidCaTVdJ^#WWfzh| zuKJ~T#^_u6X=0qq>D$ZMDe%taJoCJ&&nW+|r$(bM{%IU;`Dd`>pTrTJ4=D~4P4eQ_ zAAJo!Wjg$)v%q5PvDZGVJb0%7eObM*Z1Pg*CjVUg^8@*@;veXKgZiW&y_0tg`m#Dv z-Uc77rd>69n7f6Jit#*;-=$|vP7OL7cL*NUd*d8WP|H(r5C|;ZUf8ez_PQMP7?9-2Y zecd7QC;IN--wXWneAjZ$!Ildh-x+?}?)Fb|e$k;}AIrv{HOz(i4HQqn2a=ames#I_ z?NxC1RU>&8ol_TUV7{X*|IBl`IXPNx&`|BFd@j_u^+C z8kWuP#K{o`aSKO?E|9$$w+x(tpCo)NKS%t$jvSltZs}-qCY9vAv>vWCNzpz9EfYGg z=MTedOsV^^=#Mz9*ShzTKIZkEe&%&~WL|r}e6U6SO@I3GB4V=W{4^(OCRz8YEFUDj zCtJn$#)T!5Mc*&OtDFZ>u68BFnl+rw-%30u-KMq$=($4lsr=FsbYF6NtUN0B+M^>s ztQ{Ma#s+=&?>YL0ek+mxMr>{m8$=FPFezUspIGDnnR!h`7kC@A_G?*vBYjIOoYA-P z2_AdT`UJ@l&`r4wcrQvH`9ePjUp5bz#aIvf@_zo6@Iqd!yF1^Vi*0>5^?NP-Di@<( zqy1fE)`PS6Im&J{vR1boKDmbVDEaMsq0wE$1bet2x#&P_aSWbRPG&D_>34C5j(Pq? z?!O>LY(TbCg?D<}SEn4X?+Y z4EuGm?WgqCJHLLTZ@u%I8>M#=zx)>cDmQeA>tA?25j@}R@GM;GzaIDoM^XRS_*Yv; zHwWzbZD7xDp!?4o#x%zQ>@_q9poQXv)JX7AAF2W&jc>%GxJ-{eAbh@jQTr)IWNH4*l?IV|4Y0- z<8{mX(n+F4OlMoQ9&OeJWq0M1s9lnGlE|j!oMg_$%YmOZ^Hwq{E?aRxvXIuJb=e62r;dt6abSD1qrds9L+U(lcRu}tw9y#t) zSsv-GAH3e=d$0|P(R8nRG|!^^=Davo%DZxilprf?c_1KtMVbD_;e)cTsAQh)YZ zHkb0`2~pe*Ss&Ih*99J@Hm_V04-OEwa+X=5Ys#`~pPO>l{ckQA`ujIunwEUCC>Xgf zfEQ)s)9BTb+opU>Y6$aSPHoVHbgyKA|1N(I`w%d9*Z0l$vN78C^&E9Z(w)-lt7aZ-`Dj#roxk{$sn5usSJ#b>)4Af^ z72JK^ z@coA8;%Db|1zVRr7Z0|+8K2E_?lfvOd&BMisuqV!d~nwP2VvihkGay{@|>-*>o6tZkCz_4|50$Hd7bTT*F;@)6o~w!N>1rKiLrYOgd6+uI!12R>kp`=ghtJ$mUJJr!_xn zPMTNKA9uFSF8XWU;#xi{a{8#Hj|%!wzOsaOHQ(ELU$qvR-+j#Qed8SyuV?*j(JV&I zm*k`f*)HMle4Vk&{;o80GC4hXTDD8LRId6wof$TQ_v9a<=i;$o(^7KAexFw{KE3KE ztUqFXXZ77+_WRlW4R5*n)JFKk^C0=^Q{?}fnjFR|aJ6-}v(GXG3}#;gKB(W35>3_ zet0OKh;cslnvFT+pM;~q!`Og4rNz&G>NoI9ZemxDvw3RZpYw@ZU3?$Ox$F;y+B1o_ z`kaf8?ISshWuM9VUOoLT>r0BS-}z$BeS_O={>l3P+5D6B|KW!^{3~L>ZCbZq0L<`d z0Kc~CJHI7)mI7|oJ!Wt+Dd?)cfcw>ItGd$6T|Qhj_r^`-&b7LrV1>VTEseeMcgP)% zkEFY}(%7;p?vRsjJzDur-oJ;YxL>D*j>2~Q@_(fPzF zb&2DeYk^-jSUOJn@GfdXFs37_rH$b(ND;T-ZwD@eaL=<$Yxlmpzj43~L*Xlr z&fo`ko^Mm@66JHLx0ElWTyhHjt!7;O;>`v0wT!-&(N{Zt-N7AU^4pbb;y#DX@xJ=v zTofbU@PyA(>OOGkS@f{YpYr}s9UW~x61kejd}i{rj_y#=}B5~pc>HBkOBVb3x#XOHuKn1+WL*Z8F3G5G6z_$xUwVdPbJ z!)C^W?izDOA7g&uLyW0hmGGjwn$nD!Mpk8G(~SA~$e2qRQ+)d1S@w=B@u~kWs_*xj z^OCdvxAOX`c~woTbW(~tus?!MkZnKovh`=MZ<`ep%7^)H&Ww;fjFHRKyXMS2-ff%0 zy}sxl^^@Xn=``i)4};(5!-v-_oHLm-w=S+EH&;Ww%~1I+{Qgb!Bl~%0dmSrZQTWQw z#m#7*kL4fz8@>Vtwd;D->Je*m;Fs~Vf&Y#C(^o?Ddyjp5w5@gP=_Y?Hy6G%=@Tgkw z4&>4LBi6qcY<~u)%BS8=jZcw_YrYPC@8!A2tv;jpeah_LiQrdy2sn!I(c#g}oULi( zR{B0U44i_e6nHFReRFFB4}PAa{np$$dRzzx^lf|)+C7xpE(aI2idpxwze%`Iu0uRr z3NPp2;`SU|i0&!TmG|_{Z=M3@SLgPZ>bH&J|?Y1RiK`r7H+H4Y#5 z2_M2k#13?BBL9W0kvz$VPk}4N;AwDW;&6Pjgv;X?y&)U`n{+`;{S_IX^Fis={HwUz zvBBD3*|(_ADcYvNq3on&XZH+yR!k50P5!?pJ!9~5#n50v0IieAi`GEpXOEO!NB0+? z_kHe6ezA0u&hq%)KhQhU5%8yc&Lnh{{79dcdRaqXds$2A+yH)0O6QJd{^&2`FY>(r z7*-DoCR7qzR3J~B(J=claH2d&YMP&?gHe>L;j zicGF1u4v%%b)NZonL1SPa~t^CoI~G>41KfrQHH>&agzDpQ=WA5DWZpa_C4uj`83Fz z;eBwTd1?OJ$#(x-aAfjJ$j)7R`_ZF0I_BrO?ZCU@pOCRlf6PU)xGJ}uv!^~* z2n+FVen$R`wyiqrUbv}qx=6l1ydgeml)Zr;9%oL*HfS8)X{Y@yJFFfGy1O5IN^=J9 zv1RyN#$SqO{3X#%xKBe%+0KoemnHoo{KpHO&&0bW&@7KUah%U2eH24G={}8T@Ff`O zLo|GJaQ4j9T4?0!xEr8Rh+Ltcx>|rqc?;F^s4i+1-$yA19SGgsJNR##8%0;fFTF00 z{iwtPf+cZO^FzF6&f#^mGI=XtNr40Dl@z#60n2Nhwyw+getH)iq=COKdJhhL=$$s; zZ{wX6eZVhR;AgXcr4sm6Pat{M9998~bdT~7A$73<=L-vexqK*GC-e@ocJmhwww%D< zQGGf%*MA>RAK+N`C(ECu@2(`YQGU+r_U`(;^*B@+-6{V=@^0)NycgB!8uxO>)qV*t z<2}ajV?9^nd;2`t_&3ZiZs(V=(ZD7u~hd{2%nj^?+q{F}t@v`Z+Le{ZpoorYdMO;&b( ziOy8K79CIc83%qI?FT;><@$#ecFam=ueZr24dWT`$YvY=g*MXR>xNhz{)n?%f;EZX zkYrBv+RrKaPUIQy%TJU2(R(TADc_=sbqT}Q*bedaH-BRN0O>O03xFThW96eO;ZIX5 z;Qc&}p?6~%+vJgK4Z<8(N1K#Qfv1!3Ta0*mPDHO(sy2Bd&(W*Js!itH2Oq~++*v!C zCml<>UDQIT{$05I^O^QeThD9yjPjekpQN|{6N84uE01t-3~>vve@ndQMBq z`M76-QS%(JneYQC#ZP`JDXTt2|x zQTz=y>;KvMl5h$+8tx}D{D(Z0;0M*<2W?ecfxjRhnzjAKG4zad_aBARBf%SErP7t< zdDNB4uSwx2h10;pjGpo+eipxZS(EPRqz~1?$_^#L%>iIk-{cHf3+J3FaBJ7MiHV?N zEoW%SPm#YO9@pLswf`1pV?>{8{XdSssPRgaE0FG^-8|Z99F3><|42K*BiojTKbzms z)3@-vFWc6|d0F1JJq+4C9{%<`YVf<=PNEmS@nzy49OE{?4IuV*qS=>bF9y7x-+t;`xW+dZ=)`@2j^8w=?_^0UO!Gr|9{6Oe6 zh<|&~(;d)+T6XAb_k7Rvwa=rpK4Q<=Dbbq93}gaX(Atg9M{_=qy%z(SXshFSbgy?c zbaeYAwUZ=4n*7WjKS}sd&>in7>qWCM##{zAb79?KVT2B z{zLR<)>O|2ukdaP+t%GZl>G7G>y;Z&Uq*M)->{C1P1|VlIt%#iV*Z_Pd?j<=mdSt$wibVy8Z-Q{{1<;UwjOA+VZ~77fGhO z(Sfh(tQv49I;85Dqj+!@@;Woobvb?beevQk{7}nd?0*%HsZQcT_;E>K_r-6=FVK6c zflL!uw&Oc}g})USYA=QFS7T_;+}C;LVT>uK^)xvwU`*lr%8sG?kulDRk{(Cq#+rVQ z+wi&R2U~{ox0mINy{UHcZ1#g6nU&{7;1fD9#;)SWk8yaYH}>W^(ck?(XPC7&PYEZN zffJtl_>Xl)_Ep-weqKhXmp^JR^F5&uok#muX`jqLjC0R*{^#Hg`=}Fb<6Mi~`9n5z zz!$rbsW$j)54_So5q_B!be(|gRUBkrEc=`)3WEu?e5Pgw)DN?df^{hA57GS(_=f3W z&#nyn>{(%Miv_=$FUGv)w| z3BM;N*|C(fldbSD?1py6KaBLLn8e5s{RZmqNahgjgWubEZw>v39zW+(^s606Y=<8+ zF~V1>Bh_!M@SJ`dr{BQ0(HG!CG&g=7V}MA?a}HSTNKU!X5c6S4zoWpb1$IVt0&vT`$OT!{ovTx9>y8Ocdff283)bTg2o?ea_fa={kwO4 zS&aM?I(c)W&agRG@M_PD&HG6|YX8}8o+p)4G`g>leINriq~ROc#WrxMb1Dm=-nmBV+BQEO8bXZ;R*{SsQG zpoM%Hog3-LP%cpY?hqc0E*h}mCUCF1FvZzv^iNnFD@V_<=h59K0i0?27aiJ=3)!+W z(tX?~QC(@~DIex{8VC3q9j=dexK^!(p2t-a3k~9WPXA_I2pomzT@&MA7X)Wm+H=3R z^uQu$eGUC&?4_f3fBWN?$lqm6EyPz;-bHbSu|eRm4f=?l?Z~TaSxqZ7-qiVco{)Vv z@(SK}kH+_fzV||B`2uNpp@Q$1AlGVd;!NV%b>yMu;!n)w?9(dtEzaX_`Mje0Md+xt zSI+IMB9B0AfjcWDZ{Ie?3=Ga~J?NdP2L?7T`-;!jD7Hnn#*icNlVaQ?v{k&8l&{Iz zD8iqO)!hF0IC9N9M?>Sh1b_41k@~xqzj=2!e=7zO|NntcE7NxG#ByLr0YiwMNib$O znoq{8gvX+CqDKX^JiLAF^k5Y>0` z2jv5HfS(R@l>8;N3Gqo%)V9m_^XHhg<1fkgOM|m^aCSVh^vc_@#c|@aSI~jzjoB&5 zk>n)e_xafKJ^887#_UNL!8piXY9#nX7Ue5xtx`7hFwqj*sdxt2*zeE#3IC2p90=5Bc3~*_sse3 z#Bvp!eY2Xrb&p{g=igMsc}5JUTH58{W;ZrczGxc1G7T>*;2!qryuT1Rn8W?+zYtFu zoXNk7ZI}%0J$$ky#(tqowyNHT^QuIjqxx9UB?%_dG8{&NFAzG5@3ZUAXh_Yaiur)DGQ{X$Sre>!Y34N~3<@1Cj^F zE7HeNKadM;jI3yWAut+05Zu8Z)ScLvtzGx^7V(TW-;@tH1YM?Dea^f#u_!hms>`JN z_fNHF0(&2@k$3Rj&3TLKbM}{njAz!K$SE}vJ7}DkV#rI5v%W<>_5Z-rB)RZy_uD-_ zNzRZ+js$kWk6Z};O4U7zcZ;CeFlbha%{Aw8oN97z<>F1?k#8vj9*b`W?3#zp z1?sQuezm1df4E3ETqIdf-%3Bi`6_UJCx7SK+cU@YuHQHKzB^caZ=5&~yw5=gXdPAc zGd0751M-b(IP^a2wvZG6e-gwTGr|TGm`&y7!0YymaZk=6j{;w88U# za#pps2hvBo6+6(sp&7cPFaC_e^EIcx`h|ye$Tf^DpMJ>?e|XOM_up^UAS*k8ku}IA zH~jD%!ME)l3y6oT3>Xw_SSox(6{vT z%-r#v{D#P8Zhetz>1<3%F39=L)nl^tMgQYu^)GK{`OVXMlz2$|jJ-Ab2D>^}IsS%8 z2FIUNEuZ9LqVU^?o*B<`^pD|L^00mJtcky9_e1JEq-TV`ha<4a-_)G*ygdd6@m_K? zb{pD=CMEdt%x&|DI)e&WB!BW1!yI|7KtCn$oh!)chxp7Dm%xLsTOPc{jcN49<*~($ z#7BbVM-f;&US9F*i(`RBw8`LQiowf^u6DIwyo`lce;Zh_bw<8q z&+%Vw!_GwQnP7|oC1i(h9`3O=Nf*v*X~cM*aZJzH)8m!@?VpqfdwAW_z9N> zzrn#P9+ey`Z=)Pq3Vsys1!EHUexN;q*lF3~zSeTp=fSs_-z3^--2~aL8h&cCVr2dH zclVozujW1Jb@ z=Ww+}(Aeb0z^VN32Q^2=5lsKp2aE}~_e|&Byt(rKzP@|CXg@&ic{|c! z?!28hKY6I7R<#n~)Yk^2poP{!D}e1H_%Z-CqpNe^Kt~xrQ~F=Eo~0iL7RP%=minQG z>H$=zv4}dSt?utj+~42ilbCX)&lB6&6C208fARfnOj!m$)zY`><&#&74|w0mI<;#zaPMmcdC^LIN6!b9j*ly9;o}Lx?8;hbya>AH z_y#4e?m#?wqLZ5tem42u8H~+1(p`t%qy|lUlN-i0Cl~Q-2DF54QnR4Z#K6X<=ysib zypAJ%Ebi38*h=VOw~~PGkmF!OE+fXQuei|FB6wm z^XcN!Hl3Sz8Q&F`5{oKU)tQOfW1?78auE`X#$7Bb`x-BkzDsOI&QDQJJw66_r&*fS zijTK`-td9wwZFjW;e7OAb%D79wS;p^(!AG9?Z}((Mwy8n3pU)ycj7_=v(_7X#E!tY zJo3BZM&*lo#Es1Fs+>03LsxNBFku_=(TkR|k(*LzIlFIKrt+^g>t~|nuLrrhD10qL z%X5PaEm!2y62Byk-o8;|!%xL7p7=R-Gzq^d_a~d|>EA>`I{s>M?r$NXk{S*s_O zYQcaL(N%4vO)&*3%_>e$3UhiFI|) zRxGW!r-ArX{>N7Q)&Ivc;rex*-3wif-h#&~ozL3go~z9qm;b&HJYYY7F>606;Qzgx zV+STOc+mXbagFnx%?CRn&SoNYw!|W;O2M* zu<%auVm|5bs>6|M$G@p138R}+b$s$$?%9@K8F9#*;gu>fvYVl|?lMxJiqro@e4L^` z<@3c?^9(+&{^f1d&9owKKjTw!cZ>V}6FzJC{$G5`Cy)dY8&H=}9>=b;u$@<;4c3N{<%UY7osEJ7rBB$PGXw^9$?ryrZ zSH0a*icP8=g-<~)H9!_>$!RJ-s+z8nR`OBgFAKoa9`S!}KkirFndx4)bezH2|?;uq^%-7H>qzUsLi-=i(Qlh||NJVopx zzgfPmsh0uQF>t0lp80(|zYD)(vHQX?^!P3JU)@37koH(rsty`D&H+chZiu+x6mzbz z^3CvN0XQrJceh8^X~$;QY0+&x)@fzSDzNcA>W1V4Gu|BNTO1s2<|!ThuRI@9xf(|7 zwq$-abtGEX%d6%4#6;Jvd{>;3m*6{dY~lN#`7YjW1?Ro*4{`U^^jH56{Nlw?F7EYw zYU=e~i!EM*z81XebyhO^LFaZGUgz2EdIm4ckGT~76My^n=Acsp^4dCow}v%@Ih>)y z_h+>pC7zf5i}JGI|2FVzkBVed|3%~7r&xpNE53?39b728;dtat@4JqMM|dXqy>5M1 z@+jUw-gL%YK6I!fe^QUnT+I5v)}Yq9`$;N^t#l5CX@e}P%^Y-k3ZC*~NiV7X;J?L} z;389hpjeu*<&T>9ly*N;oCWNG^d9{wZa9pt%S#m6)-%7+Zq4nEDSJpk{%KH6!Yht9269$NU9T~`f&=+>XE zS^w9pu1S6VV2kW_lwa(90+D*uNp@b-WZQ=DH#C&K7T%41Kp)7j6z)aS2|gz_ns(qs z`{|`)qBJ^LG=i7}~e%=n0F&}Vx7 zk{d&~()T*}MCUiw;4iPCZ{Xj&K&x8x3vxv{q*xd9a;#lZe>F8O2 zkG~qcZ_|2@@BkfOy4T`4KFZ>+Qft`I@29>`x9?ALlg?2dPwUgP=}J!G6TfPybh~WE zES>?!0Bn$S!#v3--@{q7W+z-|-ST*kyR)jg8jlPfjIj@D zKe1k_w6MA8`;B)O<>l=|MrYeKo4CoF3%5zyNKgEewajSzd6@7y4Iif({MP`F;zsb+ zsydZw;GKrARuHlhAiZ z19{9~&_3+{Y}HY&#*T6~+3eGa?WkQ^nW>M$C#}9R-f3hDJD@f18tQ>k)M_cWoIXPK zu{3j@iTozvM)jH>|4X)ZQu^B0Yo=#X7Xlor?bp7v4)CBoX$ODJ+?o>Qt@zZ*iUj+j zndAA1F0*FC-+HF+{{828U-hGHb;uyK)9Oq2rEM2YWk)>C7l6Nuvox(L#2)_jW6g?r zwiAmezG^GYZ&s~U8~&7FmoNH&^i9sVZFRssBhhs~W6O`gFUMwaUaH1~A1hT;Sqn|w zZ+9QGagON+na~-u@>AgRp1!|wOUx~<`gX}XaKu}wpL*2!Wci7%?xsSUPr`O-;JyQfKoY z3-|WUe=Nx2dsmP8^a9o@bN2tI7*F~n#r#s>TeWTH7iaSys?RP$UnF1Yo;{Ag#q)2x zZsGYOF`{hT&eIOIY;f_S@f+yJpJ5pFH_n8&qvtV(@SyzvB6z)o{8-xva%@-Db}ohI zRqOPMo@4KtuDr0bap-^*)7a-EIp{!dK8YMOAqUH^Jf8aSn$AN5t2#C2&!B;+|bb?Lu(`E zH(*Tg-0ME^y>bPjr*cZGHp7d|O+HX~7k6`P_h)U|81-S`dME{n z`~9-#+bHL$F;m2`RjtQlblBK$aXyIT4gNPddOp_$!Gqxp$GZb<&1-5bFpdUB^}~G3 z`Iq7?V1MB+PG*^NrQ4t8_uL|<VUbUbY*(#Iq|!IRdJYL(yf_c`P*v1iE2G=Ao8oamav9T{NCeK>mvF?W6@o?an-I)rJk-HI_^a`lY>@V(-khD zkNU&iI=VX(QaX_5(sRnwTOPH)$*yQ!qdY?Me@;2rBA?OBr+TRIPX=G1^@$^T`6owR z-0<9fcw%_oQ7eujw)+U5ML!HWEAoc#+lEc+rZ)H8x?$$LweELfUGHwUe>3jQA+#dz zu`<|td~^6H_x!RxA3n@y2lw1>;r`-%m0g_U+m+&-)UWuIUZB4c>`GNoXn3rm-PJ|D zRB7uMU*VJZztZhPEJZ%oeS`YN7rASgb$R?&bH3YDas%(K8)V_)e&N&z{xNQf`-a;Y zx1DFZ^JkWyaRIzaJJBv7|78d?5syjUSnIp{BK#!x`(*$7D)7uR>D`HXHiCKZ9&ysm zd5jxiZxcc1L&AM}6}B(PU(pWSx)*Z$h3v87b2^`Q2Eopb`~f=$zIW{p_5goJFlfc~ zL2SjAVDP^5Jl%aZc;9qBlQ&Tl1HX6N3S5k(G1dkJJ5%-8Jns8g_TKUzEaTm_=dlC4 zKZx<~;QOerbUxIoI@bn!C+%x($eHHHoxRU$U(rDR?&f|A|M$B=*G~WUJ3-eD|My$u zX58QVtA{ivs}Fa6P0aW;N${E^gPQ`csYNmTPO>dI_IX_^ju%o6jab z-{tdKKA-1v1)n$Zc@v-Ye6Hg29X?z5e2dRp`Fy6bE4|wAQCGt41J8&4+s_J4Ignr3 zCD_t+hc}PBCebC@aWO6TDm5guk_-L=w9s$Q(UY3N%{?REOD{qM7~Yx z3h4Vr&=r^7UCkOIvX`!qe^A-A{G>$J6V%>35u9q)rsQ+Trk$=knT|w;vF|bX(DSF_ zh^lGSl{wJMeoeZ*hn!iw>&j4wg|i(ka{(to%w zp#O&FCM)kFec;}0*1NzbKK_ooqc7Y^KZ5CeV5FUVmTUbO@D#rF{^ADq?D9Od9o@rR z(mRVPJH?{KIOFxc%L#&Nfu~w)4jbHmP?df9| zI8iKrKDm`}AI~l$cS8;SRA}e#y#Rlwq#0YXo8rAZ>hX((pH;#S_i2!4N?w+o=eZvK zYQ|!G!G5ad%Q&(*CWmlWcD^$rcp2yMau4ljpPZR(S4q3AW?yRD)`>nZndbKyf}?0( z8Xj-E3m-dJc1znjc!BvzkE{)r-jbR|J8-p7YgXWjd~R1Q{&oyG%p;d1pS7O3tob~A z_bb{0b9fK%(!cO@>La{|@4Iy}`w)J`^M`rP+)6lSe7p9{H=LaDu~XFv!*A<}fjn-# zEMT8ES1RWT9X*6243>06xwlui_4* zs^IFIgMc%~KN&nIS=YK=>Y1P`eKGVyzLp_h@}C5w_n+hkf9E~$_KchJ0ypQ2?VMly z6TiVb#j2f+`1<#~35;(ce{WQp9P@hOeepq(_jT`w)?i}stX@#wdg?Lg1;)`mpn5Ot z02ca4tq8gVYaTLQhb+{vp74A2>K0sC*SWkkQ9hq@JJQ!OhhOksKQbu(oT|OIz$!Qz zsAJJ*crLI+d>-Z2z&VlmO+n_UUu**IW$0qnWmmBNl8+CZ z+JgMeVlK?*jN!qG$I-1`uUrdmuZ5Qa_9<3#r;Tz*Dg5${)Mx12z_uEA;7R_0hdO*q zH61YQir9AE}YRQ3On-c5L}*=_eCiZ8bbspDnz{yIzjZj`Bu)U?vVc9^TNq zvOQlXpPGO(jePG_I^O4#FBm?I-ux9jyd7J;#o8mqC(;+f?Hj}0dBFMj zv(-nKnAYsYMh>P!pU(@XmzV?c86ck;yPG>VRhJ;y%y)E2LzD0&;8>988lrcc9ehT) zydnIyiuO4+wDpgU$I%<%D%zkoLiC30Dd+4SCA-{qllBe;`(B5~!bQO0`rWL4!L#5w znmvbU_%~cc?G*8&Y>wx>FOCe@p){(SmvC_umsUCYNO4y)gps ztKtJ-3?Bt2&JHa1c)AIl&H7=~*Z2?cWb%po;0bV}7|5(2RNA$!wd5dP=5MXz!@Fkh zq1M7ped}uO|KztP{?$FAb(m;qeNTfs_#i3&5nlN3f4BJqGY1m`@!QAz9P$U7nC0DS_t|7WGvk+H>)^fAXl&nD{(h0a$Mg3@ z<~k{+bNTlNC)u-M6RH)U?~p#tTy;Jaa-=x)U&r>I>)S6_JZ8ocj(Ptdmm@c~j zw1qkAQ~tsx^LN39U%O8|`vreXMz*Oh<|)9z=D`!j55n@f}D z`+)Oz{lNJ&a7wnmu-Kh39?>z%!<;txU`zFTIqM_t{IV0Mk?C=M*(~feYfP*a$iLlH z#ktKH{}vl19#%e5{?DuO{YStD=;Opt;z{T&zZjX_-@`AaPrdgI?cY7pwzvM0^}!9T z=vz22wczyq(!p%s$?fcIb@x68<_u$d=gEI2ZH$aBwaf1nTtf|<{7(7RIzs_pqiaqX zK3yDJG6p+={@jAz&_4gVpm68z{QRAFzIP3A#Qggs*oU(Mux(qn;TA~r?3o%mjSl8B?jc=s#l zgK#|dh41N!iLT#L7m^$eezh-nET7Ur%x4SFr=oxCe%b=gi(u~;^V`gGpNo5fw$br* zr{c%Nmx5C~EjSr-vg0GO4}m=r89g`&cL30WEhJ2^*TXTf{Re$Yf7 zL%vcm&oq{7diO%~$dQaWLjFb3zWZ1^O!NLc@(}IxyO#d$q~93lJXhc^Tu0t)HGL1_ zQ#Iq2y6wUR1EK_U*Yo76gr3ZP0hagAIo@*ks3|j9(k-|&Vt3@pYin0Jm##J zD1>hk_=A-i_00^K(TyUGpS zTeap1oc=D64I_K&(lvjCpN9dr=N|{_y35{f`Ht&T^d14dujzx{gW0>0TVD|)9<=m6 zIjf7R8H2e$sI?*HE*+GF)@z`3IL*(|*0A^*3BLz&p>kJ(Q8)uW;r=oQxAKz8Wstw< zDi;5^-!FE*`*UYA^BWC)&?zbClpGI!k@JM??s-S$*xlZ;^0hwj_vL=@Hw*lU9>U#@ zQxCTM%HfXmtj*6leSW67KYB#=JQs9FjNFaY<#rFD=4<2}{LOdxi^|JV?&M9K3lAS2 zY|3YCr;fdn_3&;nwf%}!iW-6grO0Iv(Zxqn-=4zmMRjqdavY2=UF>!6e01<``gpP- zc($89?`D1ej$pvfI~v#%oL{)Ja`qamN(79#M z*X+4~#-fYnQ^mgdJmyoye3XOQrnU6*!3A+q54{P@0XQ=@ihP&%aWr?y+jS0S(m65a zR)xH&9;OO-(KV-}#+!Hny{LO|@{I3m^gGYLNNtg7OtfZ_f>+w%ADy)zIq%Cp{9gBL zOmy}Ez3@5Smpscpv?K3k{T+BGxtc5GytFqeIv>s5(^2^k-6eJt?Zx{){sa9(H|>?P zJk5D*PERxxVpmTaVfonmDrwKhS)c0ePxRIUtJUu?aG#?G)_f<+$4A4*Uj`n#zF_wY zoH>nre10GM1+E46z*~42w5?8*gWK{X&qSNcbygU2Q2v@2zFhXOW@v2j;7_yu&b>Ib zWqh7Z-2*lMisfWK6hBv)eYKp&LLYUiXQq!NI3~Wx=uqV`ANx4;V%>FV#6 zDUY!N+Q5gxdGsC$VldA2p;no`&!TUg(Giu6H6KGS6Hm`!tTZ~gue&6s9*Hh<^PVfd zZ9UAa-%9VjrP#*(cHLn6w`AD()=oG6Q#mjAUuRItPU*KGsCYqoL~~6W`f$#{XUW-V z4VT(7#md+W)o_wOA7%Bv)-qfT=LF~{JsJlG#BaNNK6Clu)C%Djsqd(ap^s-9Ud)Hb z@(WDd>*4;I;0BJviE)bDp7>~uVv)`@(_DaCcIQiy384lU$7ov)+w0Te&yb{Uv)bJk5?1ZNRmW$7#?7{HLIkWF>tuvc{**fw%)%^7XOb^)$%JsoD1~ zIbEwd*=fDybe`w|T;@EZi}?iK@{Nj>GZsCVtN1TD-qJJ5gPxBnmG_L)$sURPeL-^s zKWX}S@pCq3>~Zis-&N~jZ~#ot@LhQKb65WH8-4NIEW>m7dA9!Yb2;yLe7>PcnD$TvB@`;JIRWE(Q+tdjU8Q&uRYRr|8^`{6QbdpP4^3e)1h;1D|K@ zmh&^r{C~pS_VafS9%am%dG2`Bz$qTpITAg16qv8;qun#Kt0{;r4)DdL%h!A)%Qw5U zZtVGHCVYc#GkkNT;~V&>Z2`7*2=QJWIVC=KkLJv3^nC|;-45o{L5;ZdMMU3c_$Vb@ z&g_ZHGH`Xf_=|ZNKB}{Pr00ge7VzESv2C<+Y4&`N0`^oD#o^_P`Mu2Y-5jq6#z2!S zes>kKr^@4Z33L3Va!U#JQNdpo;7D~ZhTj-#3f~QXIhmWpck!3uH(;O0_h1E#n6E?lT44!c1vj{7^WfN#-PmE4uA{XEpXt_YW44;9xAw?0lH z6W8|Mue9ix-agKS&t-g^mC;&?h2JKIGviwO$r=RbLv!8{vNMO@WS`{6zc7)znaJ~5 z|HszHUr+w^(6C5-40uxfBcD<>D~|mZ-^!+&n4aI&Z^-YG%fsI}P zN~mD|Gvm4QelFtt`M&PQH0R5?agux{@lg!VU_Xt1#`X#x`4iU913u6nyN&Ea zR=vv-_FonUBY!}B=7HCUeJiLfh_eo@?*VgF+*W%8xg+end~p-2;Y-C;Q@nKm=MEB2 zv0pGqP)o7E`?dDmDXp1!-{2`3V2#EgYj`A^Dg%} zZu}n2-N!njjq)2>-#N*((eFOqofJg&L`|ff+Kb0%pSve&_+hjiN#8|@E(%RYMDhOd zNZ+dem48-C44x0|b%wp}0t%-=185P>aPoFuj=Yt!hX>w`=A>7R=q+zQc(!kOyI~PN zDe#9n$2+ijwE$foG;p>Y{chcrt3~?|9lEPU(H)hAX ztlzC*Eu(;3{&Md5-hzyz$#vkAt@c;D zK14sQflbLjWY*5bhi^f@M&`bie&X*{u38!-ZcYzeqx)tro-@4R7V*L>&|LCXto=>w zxli^nP6@F8cHz9qI{WoPeDpT_lb_NzaePj;hfuHPD!I}krm zvwoGHQFng>`b_%=O#H-ebA#{S3{3m9uT*lav)UG`t@fXq_v?T8j(gXB|NbvEw~#%_ z2lO1Bvz2wrnlkpn3b)+v8}g|{)-C#P=GcgzBH2>=`H_D8{Nk~!ZZ|$4?`samN649n@V#k5|NHg! z=K3SxMB}7oZ^4(@rw1+tw`w>gw~zbZgd^q=j^~rPizXI_S>NQxjIG)PPiuV|eeCLS z?R`)Ye@OOIxmon8^z1%tvEVshW9m12rMx(~%OH3#zYM*tPjZf>>`%?-y(QG%)V0Q% z3-~SIxpL{ksqo(hKD9g(e$J9GXfFG#y+2mGaUyfl{vgrC|JP%F z$jYH%z2|q2U=@7eSb5>%f~6~B#5=63OzJT==GE%kGM7wS;CbxOz*9Bv>3z>*Wpod* z=JBe7|Lt^(JndcXZ@j@~yx#a~aX9efJ?i(tmijR)FKCP%jGc&sTnSK(Bh~@JWlO`5Fg$7hwn2e}S4`?BY|@|LIPw#1uY{ z#s4qk6Wdn&b$Hml_ptOfe~&~y#k2UwEB*fGsuG){5FNhg`d6$FBUUZO$CGZ9pRoIB z=l|TpZ}>0y_#!dYijX%;op0+ZFIBzBG}^my+m$1Ae}7LfOoL~spHgmAyx4Y6qHF2G z;?72Dt;n^lRKCUM>PibZpC0@a<5wvc_8;(_ZzG-H`^BfSy7FAkpVxWsoXP27-t1w% zD+_a@fth_r=ek-@{6CYEcW^%9Y8jRPl+8@?T>X7t@B?$W4th!_&qA;5WFCj11Hp%f zCp{$S+M;-cHmdX0`zGJH$mE_j`rOlPf3|sRt6aIx1RxJJkbV~6L+{|dG324 z57mtgRvu~&xs!TyRy}#(ZM4BhVqaES=Of_Ou7ekD=%ThkxYv5v!mUB`UbA0o(1uq{ zUNW}ffcbqeIm*K}h?f`CYMn`Yx(3?wW`SuBZDjXToJE_a#^X=t=*U$2yGrU^UB|#J*IiUnx@}}cqSbvo{+4VSPr=e?}5&;3&?=%n{4*# zk66B!zKJCmlUlg^sq77g_uA3h_0;OGLzn0~`8w)5O#Sjo<@=Wb>r`MpU1x}kmaM0R z&ya6>-szBh<@yJhT)(Mfz^}du*p$C&S3G_zaiCc{w0ABEPWdyc-P1m_>Bxl6ypsJ$ zmcqZcg2$;QW;QxOIkz_P!fA|ILmTH?Yh6vcergzNW`6)QF4(Zx;Hl8!3I4d0?|&zk zPrFZ7CMx)%Qa5>(uFQ9jjVRFG)y|ZIyR_|={`|o(i)Uvp_ZSigH%F20h zj&Axr=Uyt$;$izA?FEL1(1n0E4c z-u3wkbduy>`r}&;7lxlNcJJK8JM@*FNzEShE6d<-)m*kv^J#nwe9Kzt26#+sHF@w! z+g&=(D%L|UJjvO}9T)f33mxQIJCMNz=!K3|d?E|d7X#539W8u!I-z4cJcW#QpcfW6 zz0iSv%sfL!bRaJa%3|fxCp+NJeE4(EOwP9jK0Uh|o+*)TzlmDYg(aP>@QSJb=6eVA z2%L*BqMc9qQ48Re9(n>;{>E=!M<~D8moE8Zq>cQhUU~!^JRNDHwVtGK2Tn8ciX3Q< zUL(7is%#;Fa$2a5i{2uAmQ%2OKG2 zl>B_x|JLMwLxzBnIyigh*`HOfXx_0fM)mtz>Gvzp@4(y!zbH4Jfw_tHb`54%vF<$U z59V56rfs!@IWNw4`mEr)e7+)Lp6TR`;)Uc)fmyogN4}=D4w!kynA!Y3{%U#>&uN#Z zvo!1QX~|3J-!`3tOMRbyGdZNo=x-Q*PvR3Ed{g%Wj}Q&4A6!K)#otp{N&QFWo-4emTyW-7O@)-T$PPn4&+td|^-bLh?(Xko+ z%=2*6=fW|?*zCC<1V?=Yj_`eCL~zjdIR}Tw!)=l=c*oS7IGK1^v>V2=YqKy}nV4W; z`kaU9e8zr1nYfnUy-esn!v1iS05;m*<6(pL4aOG7?Rjy!!z>{04j+7HC-leO34Y@z zz*nlN^ZauB)BG;j?*Vq;)AN{~F~{!ikC7@qdVR(o{sI}h2fq9jah=)QI<`6WFnvFY zZ=o8q*|sLORc9%qkHR|YB!MAXTX@7rd*_x49SoUq94`<2W_F$BsuK^kP#@oSyhIML z$9l_X=0hLkF)gh|FgKoQZeMfH6#s$iO(oz$zEll%N%wP*7k)0)6qKi^Gg`y_9NME$ zO*`_Y&zA8wJ|21C{C#Iqd%BK2Ep^lg8Xpi|(sSO?9Xln$y8uWH@ zEaOWaEF31MWOPfDyPspckL7Hh#pn>;`7|^)z9R39)!()7!bs}>_*?l##R&4BLWhGl z-F%I2jNMgEL}NZl8_jhapIh;Fe4PmET)TqS(+nTob&+y=`Q~nl^XR`hnbWTIIY=J`B2!Q(vXbjrqxckzZ5B-V|TkG9SM|zJ%5sUp~d2gC&|jO%5iY|7>3C z^iJik;$r{{P63Hk>>k$#?g5$!pqa+ z-e*6ysh8|oA8Y(oo$01=;a}l5ImzvkLGvL z16&F(^3j*UquvkvnB!5yi_EW>x%s$#uGY($w^<_ww*|z4^4-f+k1>|-*uysF>gzF* z;%#^@Q;&h|ssPW?nuH`iUTh5OAX7Y#pJ8xr;v(Mtf8b5LY!&3GPFklR0#_%crwvUplX}cWvFX!+Yzz9lx`B7oCSsn9ZmEZedoIDwx~v zm|MVqQF;2m%}P&AN9H%MpZQ6*M(JnP>fmXu)z#wj z%pq^Ady}+YbqRUbR&(C+s#pudw`-mUA4{)D_T^{f z(l>;@an%6-Y?!65uPf+-zF+NQ{%7|y|8tmsA^aaBJA4sMp&vX4f=Hka`)W$M@odIW7<*r9$hxkP!MfgX{^0}QtVM?l&KIDC;F}G6|Ke}a=45CdmKkxe}VotJu^ZE4rcRX|Z zJ7C^`}x`u>0OA^MlUYwRDgZ0sL$ zqL^u&_NCLmawy`Lt-v4bIMw*7t>9R3)9vrmzwwu`rAf&mHkO#5_;<4L^{c3v)?5+Im6ox8&BXc*UwPttWfw$|re2Tlr3nFkL}<=th}PBro#_47Ix z?ZDpCg4rGDz4`ba%7g4VIXFf6mP{LR_1BY|?_j^md~}=I44OzAbY`XvvHl64r42Zk zPu@Un#!R3M>n@o#%Jp;Jdk22){J3p1eLQW-B5lwy7fqrKKF0hpw#~v5X)`X;hBbo0 zr_zSCy!j{DHrI`%&B>8AtRJjDnKp6SOtx+AK7lsm1T*lkZhj``!grL>CSlv`7)_h0 zkv6QU@0~y!_-y`k+h)%w+ME?>GYu<5p6D@%~soH&tbHAJkq8XdU4-*M=fo3*fxW>`)$F~kv8+77d1m2^Jufn zwqbAKDGUA(X)_&qjik+V+Wg73nNHqw!C!5g0?8?U?t1P*Z{Y9wA$kk>nuDKQ+lHP| zT$LzjuHED9#4Q) zCpvtt_U)TBlVHQ`Jkz~$TEm(f4sg#0Zn(`oe_qd9v(JCxp6kBjxwYBnH@oK#n*OuT zZ*b3b&g$H-Fw_4v?m5LP^q+m+;GSP+`p-W9o_qdX(|`8)&RH`k3sHn6Rb*inl<2m=qgi44zkIZ*zo+~vzx*^)e^2=pe)&LCe^2=ozr2feiuo>khyD65^~=dU0DgMPFY?R( zpz^Ao^1t`Xf35Pup7ODN`A$3;bGrv9Gtll<~J zQ@_7w0K6UNm)~OQ?~u1&!^c)cbXjhJ%z7dw9gN7RjW- z6Rn=gd(wq|xCi|O8`#*yvtxlikL(J?o8$&^$j0y%qc7jZcy_@9(($CToqBzb9eW>m zXyKXg5d4Mp&AT(=9b);kj}E4FL)q#c^OfrCdI6nMuu*1pY+|!1U;b9_{JqlIucFN( z;-!6mRA2VhD_{Ez_7!^E(d?_&1S4a(E7&vFw|%wsv)ES~BU$aMKE|WRzAE*{qc8jF z;m-r-XRxnsI|iIp8TQpD#H9rGRUTt?H2Z3^@#pl|SMtMYJwtl6=7a^BZ~46w`zHo( zMBvk1oVTL<7W4U6EPFXIBN24t`TXnmE@&=-9z36a^IX5tdFS(Ajb1DNnf#0`fq$?h z@Fmz79?_*}FM&<6V+&)B-}WOz#axfb9YVd=I)w2{`+liGCt^B%iFvw zSeu`>v}t0MlY?~(&qTYk;Julw-TVG84_i%sf-3p@2isg7 zEy2FhsBd?NVo6UJ9P)it)8@iJcGx)KueS8Wb=QFp<;^PAxF&Mgubk64k6hKs65`p= zeZn#%EI)LnR||&`G40C3uN{>{|m!o7rd_R&SRN*9%k#ovG|VP8fD3?J_78J9DG zK`~Nc7}kYgP`paGedYZ8bZGDP*Wr&-|H1b*2mGt;aG!r0YA-^2+OH9AuZWoGfDV*{ zKHT0*@O*gvNBpup7ylpg#(Ly{{38|6fs3A~F^_|v%5Z+#ake~%^4L-G({?sP2lzA! z(DO}xT4MQaAM6^L<=1B&YWz*mmy(DXzj9)|gTB1UGm%iZKL<>IzR-() z*3q9NZ9hkU?w~Krg+u)D>Q4^z{}6EFm#N#qoF77XHw!B*P*Y54oE4Ak$JVw&dq^F3F7t#;Gn#RAcpV|2IkbZ_9#M;5u zqNYb28Q=ERrk%2BU z&|4hPzty1}lk4;XBd>q@ij~D$zp;7*>*dtzMQ>rR0$2L^;BLD|iIe=oRsz@0`p?^+pP^*iLl1@A*cs@JW|IYMXD9A@UM5WFhW z{6a1iTS@2NgrWTFwQXj5m7B0n` z2k~xh4P_etI0Ffe#Xlvy1ODR3iN0``pslZ;XZMY2kBq5b?NGnkd9RheK`)kvMmA_aj62J$ zZLn@<_rbIr7p!d@xqofXr<_$f!qQ#$O1@?Ml+W186FYter*%F~u@{BY_t#sThVe<> zOPw8<63=ya48Tui4STgcZUPHZXW$uuQUE);~UT?jUMU2x1y;g_VGlni? z?%T#tC-b4suyqCdFTo9M$j2s{f0}mMnK#7b;jJ---8pri;;eM4>_ttlZC`=X?Q;~(EmNgD6Q`^Z&xD=h!0~w zEqUu17Z*8z&X)3^IoarmadwQ7;70b&M)3PW?WO6w_0k_C&%f9+Hf4pfZ5e+De0dYq zHaUZl2bM3bo^8gC`mmLVUA@$-*=oEzXw}pS9jo3LS11YcT< zi8FpJA-OL46AiTi%YMf1!<|{i58Wz|M;gB*Z4j$yU{0F#0PqXk@;6NZ-@%xj>5rLo zbjkXWC5IYIxes_x*YN!RQl@{Uz{aC1hv0Gte^Cp0w1HLnT%^irDEj1`yUHWZga~w; z13k-^<{_uzqj+abASbOKP464q2H%Fp;lF31>r=ntzXaQ-#WvO}4A0%j?r?mN^asgp z@M!0|q3|X$ReK(qk*S%nT#Df;5ByocWb_5i;hzk)x)kdLl6Bc)x&B{%$e%@vm2SH|Ax*>ij5(_hk$S3)?p{pn}ypUrEvAFuxr`|-NF&=v79z)hS@Vsp{D`J7t- z{mJg!y@nirJ`BItSvI0q`t3bMpM--q=>v7R(6CEAl6mO#TOnuD&*6TYuX{f}bmcm$ zEihwoJmrdE2>4#Ml-I~ycRzb@p|AJRD-!v=pD+Ip|2cEzfh^A>-}9ft7qyC2uC@7J z|3ZAS?22$(MXPz2elkWW^Y z@ms%F95n5??;y{SlSQ>>nZCXel)ueb(x!YGyYHKB_Nb2lcpI98-geykp<-#%I-K@yctiPy zx;Fm8+V%P^*?I0=_&5fYoB7S^QJUw-CC$Hbt{r$imO8uKY1p6MKQ+MLHl~BgUgxV+lIPxC3~m-;)9*xAso|fxI>13UXT5de18xIe*$Q!Bbm>EaJ_tYe zeZ@)VA`9#S&AU~~3kPh92bLc=!L{|v&UVpopzpS8F9B`3S0f{!8Oe~>$nkD;X84Ex zY*U_gm6wVJ-ccFy3>?);$Am9k&gAhpk4Jp^aTj)4RL>{BVdfm}yQBSWzC7C1eCURF z`B>i+5dSeyXRP?J8Q2+%?Oy=KQS@UBeUqG{e@Xh+hAy`sxTWj0Ux7W(`0i(X6Ehg| znT&C>gYQW`L-2Mv<1@|KF8y4zgpVZE{!H&VsGYWCKS>ADUZ%Gb@DO7oy($O4M0_rF zS6lt6xstO1o>AR7oiB18Q}Pw`6=>X?e+B-k9cOQXJk5E`fz6-P*?hdzZ|2-)`am1X zKd@VE%%zQ2z!mlD9Jx6Cmz*17f?e7B*#!tjm^i)G%=U?J% z{}b_3s#kqKmwOLbrH`Bh4{cy>e26jK$k^tOj-~pSGH$&0OY$mJLx(l^{5tVJ%a0-5 zB4O%@cD~HKm;}xheDA?y(r4n!fSJA*QlIuzX#YTB7P!A3J%)R$$CRY?7|9RyVc0wL z8+sLOd9AUs<;BomBX!XS@q~0N>A2Dx#A~J>ot#NoZ~I~VsK8QfVDZla3c(^cM8^s6 zx9c46G?aE~tbX=K?4qD=(rLA(tg{x%)z&8Pj*L;;xzexqVyDnXg1#n}@@y}<5-^uj z|Izv=-_@JSgBR+fr@48l#i?MCZ*>suO2^dx(vLS$Z{HZXx}>E$aFM~IFm|FFIbbd(<}Cz^$$%+XmuystWLS6pLQCwz>0 zH9oUrW{jTk$0)56^4(|F38}-^30EDV6Vi@!!k^Rc1ozv|KGgU#?&Ev#RfYCuWa@-V zex9Kd?g3v`CtM{PwNIT8xHEOa@6)DeOgdpZ`QzwE1cD`#CW z{>dkhHFKCFpo0TTm?v7ne*`?{K?mSl_J?R&%Wm8F%UD_cGpY zBY1|+a>m93Zs|3fegPj0jiuHF`<)Yv zSv&lNpU64G?&XSeHlgO#L^Qv_$Xw=rBXfs4sWrq@OWwL~QfC2mLO0A8#HE~P?5diV ztZo-yOTDxi16SyIs{$K%`A~EqD zAyz`Xo7@Ax8J}x*dw)?jIo74HGoo_t8iPs?GUgvxU6T@YFnQwFdd0-53 zgQj(toxlUl$zD)C(IjoMm#vrHvi_0o&!t-m9uGY<{u%Vphc|X_tE3Owr>1d~{(Tx_ zBHg8c^7Y7qKxfmwYt5U&X%cv)pS|`>&)HJi_a&WQghKI`E~m(e6g*++ot@5N$H;hT``7)k&4GrsZQmU}tMkX|U+B|EpJA-dKgL-7H+5)#hh)6y z_nYdFYk5NoJq{o7d8j)d(URfi=EW*9{RE&OJThf6YuM}lr`yopi1Y5fdd+u!VrVa-GSJ>12-^R0;!IcRaXWNvXR zry)ViK@GpBG9MXP_Z0a*DEk&=34AnfbFVeFh5Cj$P;snpPUf3U z#O@5QV~w-AYEr{IbcGyq7R5ykU(kEtuZ_kIn62RMiL*7j;3?-COKw}Bryve3%w~=BUy>wlWmRUTAfKv z`_i8ZwMN2s@|DP*JeJOMJ-Sz)I+OX{F*@u2MrV@DoX5CH4^K`84@c3NMnH?go8-Tl z|KSsVjpRt3iT-8PnSeJ_XDX+C(Oz#DKFzYemx zjk4#po>$Gg3j_bTU1tpH5WXdo0)19`#bWuxsYkkbwr@S^i)Yl=T{GA}pWD_iIz1CQ zy%u<#(4VDO>%ShrezC5~BmLLzh;pOX4Pl>?r?a2Ms}Xz%$j>^>Kh?lCgT5}6-Vp5^ z@&(rDrr}S}8XY#Lc*i@j9NO+hfBUl0-_y#~<?+GrbXU2>ftrvOiRL+SG}zMDl2C4#!-DDz@6z6nMIr8Tlqu`J|xe;ZAhN& z%Vq=q9XJW(nM1pQy=!bh^S#43L)Z9&Kku6F6~J;Xa82i$1Q*CN))BJXfbCCb!38#8 z7#C?95O~7!EPy)!yqWTBh>sT|&v-t7-+??cvvTThf=k)M_k&Tr7VK!y(wwc@Dks$tW!BBkMbNOyO>tr>@Z`RsC;(qF4-N1ZX z$$l@sH|sditb9>lm96F1W%v-;7+=hHBUm$1jz#9nT;|HP?DN1sc}+ENE*Fea z#8G}`==W0N>#*>#?+y4Sy$CPC|3+3XK_8+15@=*Da_CX&EtU^-DSi;Gr_Qi4N#{#+ z`R8t?*BmPCnnRp-?3$5tQX6us+1TaI7Rg=33&_VO9cDgsjXwigzSP7oNTvkx@!$P< zJ&DgT}1IPfaxVjA~zDN{Y;xeE8QxPt$<<~HW0iw6QM8r?Hx6jr`Z4J27_} zIk<-3YG*BDkcYqNp&++~p9{N=_#9vj=PP>QLuk*3Q}B6NVAC9V&4@#dlNgI&iZt_M zojnih0Q;c3>W(}Q%jDH>1|G)3+XOBcuXrQ)5igXWztXRS{B6J_S^J1`PX&Ac-bAy_ ze}@e{9=#5ls5p(Y(V&qi_oCAx^vDXvx03PIwT3;l4r?0Hp?S8=j467has}!;&36ab zBVEqBMbLcF3Dhn4glFIrp6~f;4}U7=Qn8H6?HHd4>}$Es;@#QwXAakDyRXgQlW&FF zKkIw?C_T}+iatZ{nqMU^(pA4Fu#E@ zUvXQ|9r;POY3|aPYkn1-dRo6316&jN=iPWE&wQBf_&(n;ceZdImEwn%gO59We4LFh zqlvl-K8bD)~h zw6Tdc-T~*@Q@x)y+8OITquGBw)=7<)Z-Cr8t);!&I47fxKu*)&9rKjC&Tk{LAD0(7 z*Q}$BHrg0Df!LIboK!!)`5OM}lJi+RgLjKLC*wbe1$mTv<>AyE{{X+`gZLw5y9*-? z-{JS~L(lK=pQ~NPFy^#44bqiXP`-oTE`8NHm~x4wc^W>`K9?}v-M}7gL#wRyRDhQx z^oH-DvkDn3di^qW$v!vq$hb+*9nQFUjGNlf`(F}VdPgzc_YxP&d*YoTq4z3yXP5Rm zA4v%Dgs^`*)%1;vxO( z&jFT!?1Mk++oKQfXD)gXJ@f$c(YuUML1bX(bo4oub>N#XKE7Z5i{NZJI1}x5fQa3S zcLIOa;IHI{;=?+#@VCgwpsb6S812Pq3h8r-HQ3LXy^Fk4+}e{*X6P`$t~IWJx3tDp zs<<_+1AtS}cRTc|c!&egu<-vTZG_{W{y@9Z>*Nzm;M4dWzhC4&tV;=w4j+zA;P`Gf zIQr0~0ys3Tf<-Z%0W1#-mZqLqte^R?NSE3T|2@g?-7Yeav3i30?@?}ek-j~~Z}Fn) zzf65@dp+2CW`o;W=+8ZlnR{H7bw*N)$lZf%*x|ks z-O*Kfoc+GezqZ=z!MfA&sh-*UdzHN&NnIO!zn1UohS=|0{cF_!zPc2f`0U=_tL&Lb zYI^YflIRZhtsHcS)zZAYaknqC-oyS>UUG-?$0%>|%hxIAS>bSEPJ4Jp^HI)6e%)r|Mo-jEdkicKp_A&g0bhCmF-A9p9oHcGNGu!fTC@YaAVb?<1{TH#plJ?wN(Q zh1*51=(|30c7|-YeSr;EwBE*-m4nZ&%0WII_}5l@Ei6QLFGY7phjJIA_b-W{Ye!Or z*HKzqg`dr&4y4>~G(B`$&Uy_T@DmS%%Om1qyBFb;1{F{`IqkKH&6Dhxi z@>?mtjq*v9Po}(*@>b}5Fl6#MxSECL#ajuQQ)O?$JH|5ZO@@C4=Ta+((3cAY_<|FCGBUhpm zwd31CcWqnD6cadgbSL(UyIB2tuNu5=C3&y>_bKmD<0U;%C(xjUnA~}9iDWjbGRTUYI1l~#<1P66NX%m9oahA z(o@u*J1Xr}`xcGwq2$zt_L9?m9?iGDhnZ3KiBR4gk?&z^;CqmL=~18N+cU5$jPGGJ zWy_F9v{?de%J(p29_s?go3t;1v26}~39F$|WKaURG|x%<61HaZB`o%3w1>QjD5f6z zalncEzgjDvAzuP*=Yrq739Ko@A3JIPzUx>MrhWO3Wm~ipPoNxk9l+6_*jMF|k-jHg zOXme>ZAfx42~6@0wcpQpPQ>O1KG`D6p=H_H_&m~ZcF>Ow@FBS?y`xlTU)%YltZ5eh z>?6zje^!>;T}0Um)&k#t^xmu2IwKaZV?HgoEpM~o-z%_P;mzbq?A-q7l7r!c%bjf- zn144g|L$b|ZR5PN4NmN}0_NqmDbDsfX!#E4dg>Hs+t+yS1>Spy_xAJN3;ugAOm?>C zU5jlAEP0cG^BT=fKD}1@*E)MW*m^R$*6?1sPIok#a#da*NezD9*SCg7cbGZ*m*C|^ z>!Y}jbxX~Eq6Ni0CZPkxU~23W&_RN+k2Cf$a9Iv6iTT+Y_`KVIM?U#roL~5j9p`K` zDZjy3Xz~KtUir{!Xk3?1L=RxRO0cI4eE-Fs>B^HD;&mtceX@Q(VhZFO8jEEJ+viRRLTBb*|?JJqQ%H{CMI%g z1^b$0R|_`mZL6Q-R}r853;4^XCoRYRQw(o8bt%_$g8P~RyAG!|ZsT70c@DOoz@EU9 zdeK2PoOrw^y!|)%iE^c@>N{Y%NBEdik#fLCguZ*te&44#sRDdpz;O-wZkf&>uEGb@ zV)CS)XTE)toCaxpOgj=EQQ@Q6;={;9@L_4m#*ax?lYc>W$Ar&-2ll5JJX}KG_vxOx zzsUUo?yX*WdD*%%8CP&$iu_BS;cPD{<$g5l_RKq_$QSu-@IUMe{14ZUu>PAI^jqa( zzx_0P*ziRq`{GR*c|QulOEL6d^j*f%=+D?N(x1f#ap2EA8vMYcaXd_nMuPhxz{nR{K7q9wcv=TI+q)72?0i;Y z^`q{YkyHiGwa=;o8JC!ho?MCFbsE0m8T>PMxV&S=19?=594-Zhk%gKg^E&TBHmFQz ziBvY(g^#SD{(Fgg(&bK+uEAZ7A`mH-M zu5;waJwESl>NWmd^=(qj^iT9IJG+uSg<6x5ovm@b514hW=PGz|@`(SxXjs|~9J3mJ zlfRC7yfw%G-s`INZ5LwL@bztVT22Mu*fFy6Ph^}aPqLmf6?(V~deHt##TI|eceQ>T zc#GD?X;)(t@P>(9=R5ByXdgN)f<^)vrf;=JLp~Reb_A<@g@cHpNK^x#Uss%OgZjp* zZ?DHv|G+qmGya{}FKzC;`7NdZ(16ZOF^u#>re|ep)nxlC>5*>T@u-y8~ zk-d4)rPe(+K?f_LgBAG8S{IcbcBpd#?R+X<*+(~4ADQS(upK~mNitVzf2aDJ*lX8s!hW(7eVQ|P;+tapQpZsyUr$a` zPQxJX`*UAQpO@4BV2@g`9u@43Nt9s2ux{eE_BZf{*8|?Y<}Wti+;BU7h3F5=vs-0v z=YW^_;H3mT;?Kkv7SraRiACt-UVEUDT*V7P`+*#~=?Un6s96hIWpb-}CPs-O)cbqZD8LwE#Rp~fS>J4OvY+CX5 zwa`?2gyrpIiG{`Z^7&SJmSPj-m#;AJlLwKj){iga8Z-W>9vRwV@_Uf)3Yz^V=`!Fm zz-=5nC&6bM{ofBSKCgKt^u2U)&9Mi7s~x!hK9kn@-j}IqJR5&7GBsRpht@ObyW0K{ zZG>g(R}5YPf3S_WZ0CKA@zv&8{+4>aDg4uIue*z?4!b+S(XavaM(3LCq`)OQ-UUWS z+Wm8@Q@FFOJ`vC|vU-QdnvvpFrC(_t)w=R>##p-S^`(q6`pRfxE%zh;Tjy}S8JXK| zc%M1R^8PN9A131Ghq=w>hwAUmrNy&-_b@D=hP-VRS=n;dOC z=FxA-y#((L1s8`Hf7yF&8E}c0;=pb6R^Si~?b&K+NO650@Th+Q4C=q^DESGrk6n2A z=nT8><+7IC25Zap+wwn@>72jQfa5aqCj{kx^vj2;ys)Qyzh53vc?>_gq5po^hK&E) z#Q*uvKOkQ3GB?uu`8%=H8~*bI&+WH)Mn)zQvD7Q(S-&m+m423MV~y#CHd>z%$&GpEKI~HAkxQ;#QdNzf3 zF5~(Ru~$_C6~pE0Vs-Y~Jt>khdIqvxdDFcy$nbG~8St8Y-Qy{n=<8*?znnd{!P%He z{M^!slt)49*Nb0+E`eXN5gJTInKw$I|FyI~9lfoD`zUg)uz#ffAIW7F(295`BE1dx zyw(9B|4796N3^ddEHjMW#=DX?SEJVk^_V!GJ=ldI`69ZNT_O0yJEudli4j)rdC+Zq z5Aubzr9fUujz5R26%UiA$(#qS^%x*q``Ol|r+L0W4cNI85 z2WsK$hG4AbfsbnNF_}E?W6%={`#Y~{FI;>Q_CI5G{i1n?*#}cET~GTcH0QZb03-F9 zI0)+A_EYN3GUwGQ&f&UIX3lFFSo@mv92cEWxRIVIUCyQ7_x>@Y^Ucho-aPVB^o?wIjK?i3++;>aBj zxuZ24`KiNlr%Ad+lb^#_JP&Q%;Nwz$HMQRtEo&^&WA*`j@DZ{{a`!>I_s#g|`k>X8 z&dO)?agoEO4ZX*h z--kcT_)zp4x+;_JcMLw1f%qQA;ZuSx<1-!OODcj+y~h}P%J6-xT7mz-tRLY&kRL7Z zf4It72;De(A9^Yxmd35e2E;~B%tVGd(R%4QxrO*GvBiu|OJ11C_-5(@<*rgrmG;wqo_3zhwf3THY z6VciVstRA0+pU}rwDTUa0(@znl)twh_W!8K6>PE6dPjTKejH1BDDkmkMX z=v%LOk9HON9-jA-;`x*Kj(JaetYlj#zEgW`rZn~VD(;}oblj}q2X4iuMS(q#jiQ_J zTj{TOw5DM5Jmrz8Ep70+sGo1VZu~bPz1rf<&RcCSkc)wLTzI>y?i}MkO2-!Y^HfeD zW82Ak1h7m$d~`Xaemu>4oA}q9xSi{R{1^D~4gdFe;#)uJiS2XvGw}^kd%oQPldn0H zpBnmzl#0fQAIJaLT@vIV^>f~wZ=YSMeN@O*Rb>0PHTl{mgbU`=a=dlflokd@sBNe_{L_Eq_qCa;)JW7cFY8j5I}h@&`?!4;KSd z40NDRNx>lSd{U1dvg^|np&9m1PTQL)PHUPOi3tTWRlCLFP6Ql6?bMK9Z zf5&OPD7W)m@|Ma+k*7TXe6KM!eWGsfe%=MY?}qyXp4PKhK0XSW$UNNLoliVx|ILZ< z)Q|2OujKn_d^>}y@`h4p*mv{DbKn}hD6Yd@&3lb{4sEvPmUVZZ*c0y;wefzR<()X= z>rSMuNz|+M=!0bN8PI7Pbedj=8zUSr9`s#%drVw#AMFOuJaqARb13G?hbwrlxL~ax zq-BZ!Tr_?ibhIQyFvEhFt>lf`YolUK^ z%0XKWFplqv=a4sZ^PKkw4RNj+6R9m*d?v9lKX-2GgbzCykM^02HFQ_cd88zQBQMFI z&Jz3ukK#|fC(lU@9O07r6LX2_)0}Z5dq>dY*q58z`D5mf zqAI&)CK%45eb%r|JnEOoZ>+KRW-&jEb5i|*Suu2Nb>#k8>7)|%0T0?7sPg;7ql35n zNj7$Lz?MAX!R%VxkS!kHy$g*hmryPK=)jMm`A0rX*U&Est|s0W%!=T%(-J24kSyu=CAc<-sOz^qO0-Ih+yqXg<+7n$cqNnL1x+ zn8&=2+)EjoWjbfiz%L&8O(na$1agP|dGMq7UjCSIek{8SPNeU9jB$7O(9QBIR#sJ% zEuhU6wSyayHTb4!V*_n8502JrJ+WCiR9zc`ogjCx{Du1y(FVn8%3mctLV4;=3EB|; z)dqBH>Zf0=BS&AD;N9--<2F|rS|H!rQe-}D7135PZ7Bw0J^FD4a$WxV3fW+^6-S0@ zyo`^Dw&Jwa^?}vFjlHe5;EkZI?(QL*)BRaO%!TuB57dCa1o-RKx10UGHD&az`pCY$ z6SOze@7qMbJ#bg@1!tSazq@;IPu~_gDTlr}^v$7f?qYm-;L&NZYcM7UGktSQqDR={ z&joGG@Y@>i=Tma}8@xRHG;@RI8)!L#ZFakGHtZr3r@S6Ga#&}e>|n*Ba~pE-UxIX>VIDdUX>1 z$Q^6TpHn4LqW^6VR5(t(Xd;jw(qAXM3O?wggWl(j zvpP>J@yv1LM3T8;Dl&3ExRT#|f1}RT>sQ|&T=Yj?_D5bWB0j$kdAR~St~flgValSC z!|lL0nf$WN=wSt1A4bl5z!wL;I^e6uCo5g5#Id=p(?(`N^LmE;M*tJwwNbCeSacfDUP5C6%qyrbw-!D}eu_?(0%P!wd`r18{~5IP&Cs)j zdgl1gpvN0R&%UZ>Eq*KrG(11_O#1_JYyD@?{hZLV7|)>D)QB?nE+A{yN>(uM4yL@> zIsd|H=Qb-pDBH)Hmv~)gaw(VbX6g|Rv^Rbu_nOBg`)3|^sPT5*kxp#nf8B7K@9{A5 zzwWdn;-R~V)9NB#xTeP0>`tsSbAdNGCv~uu^8=!%`8uS(pKMGtRSf@>z*D8z6Y=+Q zQi%_8Qpt~UQpFP}zlbv8X%hLohYnp5<98SDbn_frY%cwaBMakormKV5&SVZF|<$rupo5UJSi1J{#2l0XZHE-oc6F^iFl}4QT(t`qZ_tf7Rn<~cbf6X)&YMtbJtva=tZwO*DU`P zzLbeMsg_@|7YzK#hmc1f`q77X@U=`&%BHmbh9;-qUYD~5T0W`0rwW-W9LH1!OwY1+ zG_BhMvvdkazU2OA8JL?`e-O;KPq8*qtd$&)l@+O$-NfP0u53^F_j74?ExzpOjJw-x zbM99;xu)G(+Ku_`7OISPf24MYTmAW$Kht>Nm-<=uI!FIOb>iCszN6K7cc?Fl8)W|2 zTYKp#7Gt727%2sd*p) zj^;D3#Y^BTa3NZ$#P?c_9jkexyUr;a7qhfbkn8-ke3Pv^0)O!P{YUUW6caaCLEPZn z(aufI2Il5E#TlBI3v#f z7_{^8Q(5_7m2>L2UVP9}>GvJE>OQshhb`o-H?+$&%nuH9ptYUp&*K-O?P_RIc`>8V zVFfg(dA^V`@xt5L+U|!9RXCxS+}P#gU4Du{4h8gj-XrK7Ls@4wYZIJ-;me~c#X|gc ztm%Jj5WGygZWeh|{677nUg`3JSMSNLILW6acP{(_zshb_ynu4OwUT3_+F|XL_dnh4 zuZK6s?71OpxuTD{rL>Q~5`V^yTGsa5xr`NSYVptvR#W_2YuC| z<2cWr*YFf`wQyebo!&T?3=$nx?+_gwd(8h$c=u({uj(xwIrZ7=tb0;)L~O$`=x9-v zu`JXWRN1j~lqU#zdfw-tBl-2JA3ru7U7n?FCkq_~{F{xA9@H6ke*+z@I+&e~Zuen3 z79HLAH`39EQ?k?1TPO8RM}^Cd9COWOcWo3M9ed0>*)tf>(S5gCI%-*(z0QZ5MMtb( z9fOYEP@T*>#^=VnnwMK-Q~sX)Sny>L>z>l#AFSvtj|$oEZFocby|c{Ei;$P%@1xBh zPlel_1mCZQk9`<+149KcNJlI7*It+TFhr&>N3OPW71k6?}<;U zKwrX_L0ytB10>I&HFpMWsIO~~3-EQ$klu4@1$-^N=f&?^*qfXjqgTYxD|+Tr%7E#v zFzi0e*?8ceCR@C@=zrn^$+fO#tJ`%Y>@_~4!pwm|T;y+b=2)0FmZI}5SW3hzm7)e*TxTxTFsr z8jyvDbk$2B**Gln}jX69TT}QIe zhO0RR8&hLY=!9TXO6%Um?8vbo66#p^J{(>DlXi_!iL-Ymdi} zk4v(QrJGu1otI**j$9#FY=HU!E_c`U){eR9bzn1&3A4`5MCa(8ykzXHFWT&&=op2{R60G<-qBv$y~7boJ@j?T-lcX)G~9;>W5C{WXx09aE1@yZNF1 zC6>%^$JIJC;TM8Pe(a%Oq5r1 zEiC1nPXGMQNvvII-7Zm3!QR+Ny<3mIJ_bK0@>F(yPCw)=wtTqFUtetb=BWB7v0C!M z#Oq_Go(ndmduX3~fLIVSVH9{G)5@7VfhK_7f|ypPvD_=>ek>kH^2F0T*yZT8C^ z%NI~ro?U+5K>Uf~(uHS@ON9Ro{5J6jlxhB2uDH%&6HJUq5#u5sM*f}PjhF(j5j--s z_wtRds^f0%ef@Q-d<#Z@g{IvM|HS{x0#g&;&*FP`vfzoOsv@H=6hCBsJ2T6-G1eNI zJ{@(T@r?twi*MZcX7G)R=PuP5C%{~*^CW@A*ckYTUE=m!-%nhYrQUE~h5(!TcnVj+ z`T=Vc;pdCZnnmqvw{X?-f6RFP5_>%K{cBwHTzg=`-;eX3U*tbOIpg`&#OCY!Ib8Mq zMO?$*KTV9hp6}wS=Re{aey&`*dOpg3p3BuOvE$q%TX@kaCeAL#I16X@-C@Vsy^gq; zEaUK}*pYOV?Y%^n_dI-<#t$0I+RY`6Wa7q#d-x>a_sT9foS+REmiU4LUwj$eb{Q2P_Jw67SXrL-HL zlap$j&3fT1+MAh^B8Jhd1OJh+%e#mD?xG=Z=fN*=_E#roRq%cV?^dMRt1DO|t4MvF zvwXEChG%$qaIf{Si}|hVxm;U@pf4c*Mf1yu_e>7Lr-ED@z%!Noh6s0 zfcIEyw`*QsxRf*bn9p}nw>uu%c#3ED$5QSy-~&37&-uXQBjtf`>w(+2FJs-$@XniA z-cdhV=tm*4X#_E41NlFVf9=;B?q5&#uP1Un!M`8oUytKD#J?ZpUk7mQ@89?Hues)G zWlqH0>-@KzEuRvPq_#fsuOIu@!(2b|?+^Lc54ir1e}B-w{+a8a%ze${oqpK?b5(Bm z=$8HF-nNzSpL_oG9sl|VbJhDfTi)VcIM;f4UB5$(7lIpyKeJv=jOJYYt#>P4D%$VJ z_3|fJcY2EdXZWw?oWz>bHg~_yefQ~`-90vzs^}{AfsSP@mU*~*jA9&}%}wI1Q^_9y zt-HiaNrxSF3w&Py9hN|c(2!!Gll(Sk+q_M_vC-t3ohh1P9aJ=3YuE5zcntoB_E_)T zTGVpB$+P8+r)|aDl%n6U#$ooIpG7RpOx8q+KXHMvP&u?>qsZ;WZ`pkG!>!}`1XryG z)1OA{5cNYkgqP3%T-v5T2Z>9JSLXGK2bfQeiwfjhur|jSoBloUlpj;7-|)?)iW_3i zYC74j`DvXtK8JddJ#M8#EDL>~?UA%7><$NE+knLBvy6 z^N!%0%`@INv8VcGGQat5b0<8*yB^<2*6hyLH|TZ!obB^;-nny9Los+$T<-3uvt2QK zBUtM!B&Nch1r7`OcA}GFjMBM45_4&vwiJJ*I3~rzBx!3sdoe_R?nHmR3>pe@k1Z$u zUh$C7n$cAg+;1VqM7pYI-_TSOH1#_8ev|&cZTUib#k{BZ_s8((CC+zyVqE*#T%5qH z=l|~`;)I}Q#X75xLI0H7Q*9JOw-vSIGog)uH^h6HZ9J5vjWmo^7Df*k<9)#R-7Md` zoIT*wS~>25KhfjQW_I2WUf+W@}IcOvKq4^qc*%*UC}G#5B|oZZ25 z%?0|i^MT!OVbA|Pna zyn=X*0&MoN?7h(Wo2KpjDTkGhRxza>GOTK_^J=Z)F&NWY>FJNM4xq8kM=mq|-@e_* z(6S~6IY8S+oOrGQYJBIC6d?mQ-=9ikCfDjlZON zK(D<;uF96Mmr1(#px6%ReTO@lJ#xfz)${AtuhJl0rCU2PXU+6rW;C$Tv z1|J^yXq!wwClSLrhq;>mXitJEAwVl{`eqe;IsmpB;M+jb)Oi$^}dBYcn!x~%zlhLTF4#Y zsGRsE=|-*Ojux&fxyHvK<7P6J*q?z93ccq6`JR%rQ$P$vA!lqzzi5(=Zjy~(N=~*h zT8h7IV?Nr*UgO>1za9LygZ~cj|1hz?>9e=MzvJUyyi|XP^Lc&wr@5?Z0CZD@E<^u} zE<^tg{~djjOh$*%JSv(zm>{ORB%2;%^JOKV56zLpievhn7p%0z18UXs&`c%^ z6L${IjEuW0-`9tcU%X68UM-%;nV%=b3&&LhyK?C=+fRnU0# z^X*#b!0-fPU}y$<$?dT8B3g0%{7>n5qIH1Xi%t%buMa-dcpbV4Ygaw_OrT-Wjp~$6 zCH^Xf4~xcH>f>)}?R?b2d=&IY?~3>O2@cvfGMzH%DD&aZ3iwkxx%Oj-K8Jk~d=IztsN&bc z^&DazmJE%UIfQwHI;DFKqEG+HGZ(x_POsHH^<7W-HT>)T3a$>{P3J0^skv}K^iX3g zG`BOo`}2E&k!c71D0{Eyi21Oq+Ru4O%%@_cyAt+#uo|7MdPK(DNZC`7)W_s=FmvNV z@-7o2X}|NY#9`|9!6^1cG$R*bCw>8yuZ^S*1a(ZLj)b43a`>lU%w%3ErBd8-I|Fp`ML{cvX-@lo&!yPjP`x4zzG1=tb zP;M&^KGYoFPjmbla=nSZdCyy`cgo3)7U_JKb&CWtz?`qN(@8~$>&~T)JY;Aa`|JB5 zNB1Kq7BWY-BP-jXvkq{s96a(ZikJRXd1IjymBgx9oSBSDaO9&r=ef*qH@lBbmiH#v{H687FD&#_0I?T{FIo5|dJ*q#l3%j1+raTN zKkAWt9&%4@3%94X#u#}hi7xi7yRxo{QV2fz{_`{2}Ac$a0L#MHMFC#siO~!&tB!?FQ5+iARa9*yZvnW zLCVV{V~Q9n;Z{27*pGB3P^2u#?P$iKc2a{!E=Lc%c$&|VP14nk3@hm^!)_6c`u_6jqwQ%eA zQ!+*U`#3Sccu5{+z@#@bW}&-N{2PiqFg(N*#sd5(Un(*vH-5jrzy|XfKZLEIBsX*RNz(MaYG0_Aq}=`OwvD^E640JIHbMOEmn`wZH;hEQi;O z4y^o4%H<^8>qgEq;JubW_o5EbyXNXZ_qzM79^LEn%B=L<WaUnq3&@5lg$ef43PX7+81_QiWO zHl0-t19NUvNK z=#^m^s&y~P(4P)C)Tp(IbF@6c*So4BQPDiba%;vW{8JHe{mgL9G&~M`1^a~s$mQe@tA(uRY!CYYS zJ|HU-kMIv|CMVMdcx!7eFKZ)*xaLp!uG|sqzm|*+>xaXA*($o>yIg2EkAL|>@Yx$b z*$QNL`zCxHt&y^}J&xJ0bs)oonk1mA#DAc|j?st)cSZ6U7kz+%74mE$(vTwKqd0L8Goyz}Z+}Ch^WfS=| zH2+t!KIv_ujZMJQW!ra`as{pm!39ia-ho!-ABn;DZY%R7^(Xi)xl+0nd!Xy(cggFl zXTFScK5B9`^K1woMt>LIGH#8~kC990gzCTgIs4zB5!PvISvyuNx@5R=YU^G)m-K*l zbuMtFeMe_lN;hSb`fwLGl&?$jQ9d}y$4crm>%QPhI1xUc=N(_bvKfwgs>W zZoy|@=bQcXvz@v*dv>_X`x={jlo05`j&5G&j;WB%!ePH=rw)cz%%tv@Cm2F z=cAOpOFJ#{)%xdt9iTr$ef$j2x7py`gHGnd+d;cmQ_leUca_?Q*95!Hff8;$xy|DG zv({Bc9UE?Twyi_wcnFj$^=V;o1&?*hp`_BAu+(!JIZTO;4=jatv<_kZ$Ra!^%>*(BSd-Pz19;iU{5%ag6`ZxZAJ~je2uy7{_q;V$=4f9eZHNwx{>Qk8f9@sE z$THwCdXVpPOY2JsU(QuS*VOfz>Kbl!UitCj)Eg%cnY)z*FgYTgP8;|||7bH6I$6$k*^K_7bMucv+WBjLCI0&-UN>>SqX zTar{_h3lC|9u^OnRF8Nrauk?6V3OQg z*9T1NwEh=@Nw#Hz-<$IfHGZOd+S$nce!sk#d*!86c@y`~a4);W$jffpVoc-9{P6%U z#?}P}*}H?I&|3-bKx-zx0=kpmYz25Q`(&BZB$Ga`ez*>u{h?Ce#3wKs8CVeM*V&)k zqi1oyk^B+2le=nvB{G+>?O;5VpJ6~Gw&QNbwn+ZA$M9_|DmuJwg0=fMpU)cTMUtZf z&3X2v)bkMeCyI}c)T@qMzAfckM15OwL($EcpDR|#}I*-B>a0RQFSUo;u$ z=ELddRp3uKrK-?*f*dxI4WcETRVSPcT9e@;fRD<_yBp9b>rgvZ;5V!!A4VI#LG@Fz zGU%sdvpFXYS*3pdiuR_EA3^VGy=ELRD6g8yZN>93{QgA-OwtPklk&0X{Ji}?%mNd6 zJHjyK3Z_yEli(2?CJ#Mu{7^6y_P}tQ4};<@`=X_he1b!Ft{(JPNxxDPMa^&j8 z?73$Tp7o>ItI>_<|4k1ve&_~i{d5}gVg~;o#SHDoZ-%CMZ(-(pGkIrLME>xD&S9JH zD$Y8v-c8V!=79ujU*eMlxSbR4v6JGA^=`>za2Cud8n-*~b4nh|Mo;qW4)nN<=o9;g zMp7H_+sPKtoH_t|qJ4ENm4JR-&GE=m)v0gV8uh+>czK;$CSXUcCKn86q{sJy8|0$& z4kMePi6pSKL07WZ+nGz+(Fr?hps@nxvO3l%OURFzC*CeEtNny{$h|S;-QOmEm}JGr z+DnuVo(4ry>&$s__H4|-#12dLx(kuJxX3u<(tFT4d1M54x%duRf9_oJ!qAr~ z$Ugbhr;?KfU*nDqW02F2AgA%4B?fWU!*%rI700eU(%%UDS;;@|9}J(bt+gfL{*s?r z{&e8w!a{KV3UU=aO>3Uj_*TrGbnueIMi2NwHuntX8sobJ#uzY$`>_1X9#}nSY}Xn1 z73#{%iddiD#XRRhGfCQ6eiybYeK4{ZdRo4Mdf-i+$$mR|s1uY;C5}n{KD|#c(r|O0 z3;8e;{8rBIsr=vRmY%#1$8x#k`1d1sv4p^Xma=&;Q3$djOa zn71R(%0F3tPb6aVVakW39O)YOo8*h2j~?w6B2#6X7Q*vEfAO2{m`~0g*{a3xeKE3B zdej20Q=Q!UHsCr7nK}yDx`=jLW~~?7_Rz>9|z_8l|JFOi%-eXIXYd|r{pzDZ-VdM!RH43X|1xE z^I?NC(`FFsnbtp=r3>SC;XTn(&f}CoDzGTNOGi};-R?^Nl_?@JU z1GLqa(T>&;L=Ww>v!8Y*(@qENw1?ZFAL1ABN|N^4Xlp-h9iXi*Qn&hf23PsU7t`L! z+)L(4X2kiXk};XWJ+fn8SawKuOEzB72d>wl@2O4Wzo))Z%Yfb)(LE^nw zYOr}fcgqT%Yn^im*S_ZC`+f+o4K?#Iyvdq;FdtKobkR6-issn5%=dccWAY^*dp=$o zirqfLz!f!q`O~;p9EEf|(O;F~)SqR)3uCcPItSyiYNH(w`Fy35h|c04Kz~b+%h)oU z-okX-2^Nep9;mR z4!3f)=_G8h8opm9KNfj*;0NnpBX7?*_@okFFS!$ygHN%titC&Y{wf|iy&=Ak@mGw; zVrYQeh{COjWAbTY`XqEY;EYTMHo-TU_h~mVo?LdwlHmL}V>5v}=^-UMeAqZ&%tPN@ zhfj%oO52SsPyOCFV5RJIu%nQY{uk69y`!8?bu$0&3DR&8Lwua zo7zN|RhyFi{RJcacBkqpJ;o4wV*)fnU%wf$2JnRriUH_4~vO7^R-f|I_g{Sz`^ zosa$|ScxGi^MJLO@g**06Z~YA5g!M zGd*#RwqEt=0s17n)yMOB6d2lK5?14O}f(~8k zQml1%ckbpQlS`WXkE7_{82FC-4Mm^4b60u9nGivbRV;#|SOj=Z{OuwyZ2aeC1}}PF z^yQUsg_b6bg6^qb_I6J@QQJ-n`BfPM;W22(`=tAVbR7wskNO%bJI7@iod`czR$%KWw-C-OME#7s}c>TU~l#2Ql}GW0WkGZrBFx z{Hl|2gBCn!LcYiZ*C^)=O4fW``=Rn;%{Iu2iz1G`2mCbch$3N`H z=se}@aEx!wo{g}?@6$Z?T?J>D@ACDdV)U-~Fl?Avj4S%LfF3O4Lh*NJR zdThx@-P@|EH-Y?((T?Vca(+wR8=n~dTFng!<{YChG5<(s3S{HI9;MxNvR6Xw{s?+b z@OycV^-l_hgkN?WWxo?o5a-~cD|`4G((8<^`6mA5XwO{WLoTyMY0nSL{5Gc$ofX=c zPdneHoj5!voWe82fm)sXO~oko!87Zjr5t!>KD?05q1(-PfE!Z=f0(&Lds4uU_(OW6 z;>Yts{4uY+dzEZHpcgIZ0}Epo|2ZI4I6wOW6ZqS zF+-mhz0utmmYwLQ2aAYpHTnd4kL=9%$e|_r6Me~UZDQ?9bE8)sAts(Umwe|M=}|e9 zDOOxGP|e&D_t!Av(5GZ)A>Wtqz4%Hra%e&ybj>==ivw)^i7c$6$ z?&IW^7hc2qNb(}9kBGmZ%YDHax(VoAZHfogr#F}n#0PUN59|y4_v^5oIKS8E1x3gL z#WPCpx{+9M$#UhumTa|wpfx9~XG=Jvd# z^L!dLvWPZVyR?1-VDPGAR_9vC6&U6=GQN^Y@R^y%X8X_Q*ylxBuXnJ&fKzKqW={)n z7XALON67PLBA&T7s64lp${8txF1~ZmaLV$5S<_|zDpTE~uOd}sI{+W1%MPxHU8 zKOGpHMIVI!J*8jSzbIL3|`+A=63*5r7=wt6cLm$``Ejk|pd}@5PcVHg+ zS%mRGes9aHBXTWvdpBoWp*ugwIRRXC{9V z-HbnYhYJl%#y4a5F$2!x7W8Cj_YcmY#>3#b7}@p~_tNh&`=BD@BNVz&PJ z_WuF&sj&UuCVeWOK8|wW7fTEGLDTW2@}b(fCP|;{8nu6hdkH)OPNbtqKha#HzMeW*8jGW-FmDlKZqLc{G?96qk32?J(zri|+3wulqsf9#d6Z; zjm41@zYXa!MT~Pq>+8^v#@u7AOgTAj)R<3WeNi%w{5=Qp`?w{!z4i%!U*_7=3@+Ug zo(q?Hk1?rayak_dG!Ph#zRWyk^krx{&U?~Z4u~#9hwy8BF7x51oTzX)Y zqxVFos<%oyP=^2Uo9n;{0_ds_raOw zWBCDA(0A?e`V({HNaD8EBP(A(R=$9&+=Fafh-_>|R%#E*24tT-OEquH54wpLB#-?; z$}{!o%-?fatNl82jo?!J0c(M;dcaZW`w`N8qpwZ8qyC zj|@Fme1-O#%dR%>_;}NMBmDPj1AoNiSPFtWCd{Jg8~^fQ<4oR_Y}Q{`KA$~8^6Ip- zer@I^wd>2@3hkGvo!o1`%#?Gj&Qf?PdC!4Eyl8cM&g0IAt`O$W-)rBY>MXD@NY*em`<$`lKNbxBUMtGBI#ck4^G%b+i}}Kl{)%s7=otEl z9QB}WwTIoas$#;0zTIQb`VH(Js|zE8_&(0Jzg7GGw*d~`j##`%u6fwBMYSgyf6G5B zUYR+t$idEU$uqpX3%b=h2)e@#Pj)4GOvJbIt(={9SUyi<=kcuL(+~eY+TI1es_M-9 z-{&MD;i6#Gg2tM2l5i_3TB?v@-<(_!Eq3exQ#++I1Oo!YSVdbe#Wo2Epp8{d)uz?9 z1|llxC}XiUrSBNPJ8ea*?O3LD?{g9YMk^|6BG&xBzqR*Db`Ak--}&?TgnjmHU7p)| zZtK}iC|vlzqnlbemH{h#G1gaqAl^ny5E#UR+D|uK6Zq=UDN@J{>F3IcuY-3K*UNWT z?Y?{GhPUtD`4oR0Z`U~aUF)Fx%Ybil0B?QsXFlJy_-?k3qiqL!w|tjeKjABa-;sEZ z!PgFS;V`~x_5NmbW@sRx8b!eVst~@UOK2XlL)1oS9=qZb3d}q_eQyFhemP?v(oc`| z&PBmHnzzO;T~M+AW5H~C_&w-U?_J7!j%ry{O*A%L7&kA0limCkU^9sa8{a+HRH)}O z`OoOLhx-TR_ZH5Ky)7R;^G!jwlK%_O@cFN5X!ql4-`I5GLEe#EG4x2C3embJ*~vTf zEZg?`@_#Oj^FF-cL8Hcp1+OcwRyikdKZ<)R4dk>1=cTFN1|?@88LJ`x=I=EuB@JYjAHMa&7F z*LrX4>sfZK_jNo2qnQDWGVTdKMc_yIK7IJv;nVNU-Ywm32!Ha)#et{G8k5Qzwn?^FDeKhp3=dZ;4h#|egoIUia z&dI=LD&HdmM*CTVs@OkaW8{k83hs*gyaue-CJ#341=gaWG&D3!^P39np+DJ*?a-6H z9o7kt*!k>-zPe^6dS0eKd(DoulX1KTE&QB&31oeO_6pcHF#&jNV{X(ow7%rv!KRtKD_YmTus*OKTKs6_n0|T(XM$5_l=Yf*N;&PFeCnrjKJfrBr zS>(XvkcTjYd;|xZU9n5`XX#OX`MtdX~ri%OgsD|UvmdA=>UEoz!NdW`p}WWFs$%v?365Ejn!P$w)Jxu z8Alst9iWYIFVbh|ed9-~U|usVefqutA!Tu6=YHV~MvFn6`X+C^Pi1ow1Zxos-N`9cae3_QQis z=2{}S#@HI|wc6ksV_R*nH3!!iTb;eu7F=U&H`;4%aE-BD$F)5HOlyJZBO#cE>1!zK zaoC?CTzk-ti7y~`rE3-7Z>mHtG>kegS?AQnz8_4Sd-6>!@)46~?ErS|0Gn=jT5RJx${~sSn?dsZr>E`{|eDoGORR zT`b>+?{g_bt{Xf+6UETPlc)IkWAc-#E+clZYS^?^j^R4?o8&<@@}QFVoq3+`^--_8 zCky$IjeN+7agSW088QEU_Q~AGCze&r{R!MZgZmS>e@4*miQF&dK5?sTe0e$3xKDoG zjA{P;2EOB`oaLQ_b=rBT<+sf ztVG^v+zlhRK9}qG3E}@O3ndfAYyT0k2xM>;*Q&W@d?3L-0?CP9@OKq9L;6IMpJsRo zdD0poH&C`p5wcV8b!hhhwzt<39T0cKzrz|A$`K5FCo`!*CSAq&QlO!CRFh2dMZQO5 zRGhKM=c?FAntm42{#edCCSg}_%`0NR8NQ>Z8LQS|#pxuYMPm=C_APQqHW9QZA7tx>`r_11bPxR04E#%nfyV`BTBy0Q_ukruT=3mbb>`T@Y`O4F@Yx0(s(chKO@HMn^ z9sRGcGVWr-(}GPQa{ec@EnkoHGuhAbAFStC*^H0H=%d-2?%)~aiv38}6aCk34X%Gr z*WLcS@SB3`HM&mTp>1bnaDBP1$NI0|7+kN`b^NmS`D=sg|761pbZJjxlTf z^IT8EzhV4&@T=rc5%|*{E3+Q4FG_ltOWva7O|!uxH3Ojq#To96fkW^oU0t?+lw7C- z71Ti?_F3?qx(5oPzR%3W4ryEKB{6S9XDRUPfoF3K84*WDqyn6qYsiN<@VED$$h}8`d+>T3UQa#2wHnUE`mkO_yhcyE6ROMlR?azJ5dgY}TBFa);6Bg%{-+NS>!BIYvIne`RFCc{gX&qS6;&%Bems*)}9 z&`HB|Y2*rWOKr)%m!9=g@=SiK-}G@ezh#3SN@v8-EAmYIU2v1UNb=l&@|yTH-IRB^|Q{XQ@)e}E~ zUT8NAvu%76*MlF6svP4N*p9FN9Q6Ebtyiq0m9^320mhoYI?+9SwbNY?~1%VyRVU%#A~ zjIk!a4_phYqJdsFF?lMmf17K>q&C}_a}pRy#>uZxH3B$iu2q5$>$!YQf>j~wLmusD zy;^vvbgGWGbi8X|D_DCY{n#Sy;HNwzsdt_Z-i@J`*z1BHusXL0z2;r+7dAV|x55s*-$k-Sr3ohi|y3VHZ56 z&|J`kl&j*;C6auZ_vHt9dSdOLQ_H-!xPN1iovce0W{;N5c0#fSGC zIN0=Qev8L^{u*Z1&y82AKGTT9*3aJF6HzBl;_u{*?rp>{@TZQzpL(Dr4;^gy03FQJ zwfljk(Zx>blewuhwQU(^xAtbC+ZaC z`Aw{&iP|#w!BVq`ISn%Qz06I15&3j9{v7RHVfmJ0zPBWXcR#+D>wAl+|1uf9JNt&WW2~_*KGpOrKQgeWPQCUgidSbHV z(x;E?OShLq_oWYgx1u$3XN`Gdqp|!0K58K$&sr)YCLhI$WNcZFI z;6XVe6TeE1$b9Jzk;Wm6=RWwWg}P7j124GIDbd>XKjd0`D7x32cu&v&Ky*)=FLO`1 zy@J7Re#_3s$Jx5|w|vL=tcR|C!pUE@jy?PA<-1|eL$}POsCX5W&R z>Q6BPt20Yjf-}pXR;)L*wbbI-2S3?uIvQYxL*Gvz2q+iyl}^ZKVcytGyALtj|ie-^LM~w%?BbCJTE3{jnoWeNUe4sK`z# z|7R6_jh#7Ws>UH7d%5W^YHGveFoydW&mMG`t^7TOoZP@#aX)ZZ-11dyx`WK=Y4j0) zAIp$Uo%j|Ka|2ZJbSwAyRLwD7_W3U z>21<0ilM=V+HpotlTImq6Ai{63h^6wiHMeqe4psQDSx9Ae>gQS_D&~HUwjTN3HGUZ z>NjEFqP?4{fzvVFp$5*PZurEn5si*}fVRBqyaDntZsKDh8&&-=o}W_dO0^v{&z0w& zeO^Lq9AlP@Z}}l(8IJ5(?8}}p%vJIw#ds=^FX>B|56>AsW`0?PFP1 zzFhPei{2C7L<7~dH6K6s7lBPNds=fwWHmMb8{*b$!*T2E>x;TY<2Gi!&-n1OH@!x# zf^eTEhVlmYC3juMFZdp4$w{WtLjt(^bU#+YOM$rJqR$DQq8A3Dvy zJ|tm|MOhb`WA%sgr%LXJ=}$6H;}ZSV=^MU*yqC<+hdCy1$X10$H?=TqS%M15eraqdnHK0f5W5D>Cj6O19Z15=GUWgvYsSnl! z_0dU=$Fb<~;fy{CJ{)p5t>Ehn_c2_3;L}nczx^0}+?mK; zc>~+SXHand$8Yb7%=SJUI3kLE z&vAYN~{1rPVbR(V54d$e^ z+--@l-wqxBevS{a=YYBbsykt9?W{ykZ`KIoFIm5%bZSCv^8N_c66L%{&}%-ZVEyGe z`IV{^&teUYhV%sKP1>t<3pum9*e|N@V#sEZ&i`MH@HO^xnXR?9j5%D1{h|29T;KPS z(6^R&*7{#eJ^(UC@zWnX-5;0jWgdr${IR=_;E(xP$R88T;giB0`$zqlY4)bCa$XR` zO!MD3*z_Il_1lAfJ^qWZ%fkK^capzG>3bi&`RGro! zfZu}aT7%tsj?C+oQ~Z2g*`y!5?$cTwdJcIK#vYycW!a;L`*U4#O&=XD;N<;;!Yn~`r-emm93lK!PR9C!Ce=vjW-(^-qn>@+4{=ApkzkJkQ>)NS}^ z!Ik!J@9o_+g! z1^z$#`#N+iY}$Bjq47h!NG`7YU(NL2x1WTXC0-->5wbVea0K>VJx64eSHltc<*nd| z-0`mCh^$d=W-+k88yd)A4r3=0*GJdUwGQUcg6@AGI9iR~B|G)$@!Xfb6{3ZQl^4ud z;^Lv&QxB(wu_0Qx2K^$Sg@)qT)XEzZB@NU*Yj26D1|By1>4vX<6tr1J-d4Q%q-2CS zgz2lWkQyA}x;IylW{?&0wdVXou2e|dp(ZWi-*(UsSOpYl_` zG*xt}b>KeefA1V}*sI8inMG~I>#6O*Hwa{t{ENlImF#b~zn4+p&i-CZez*Ny4X#XG z8b9~qa^@m`dKgy=sBI#BwG3RPvF9rouWW5oZw6b2{d7I)D>*Xm^fHc&S+Yiy0h`NuhLMXmcs4tmscrl?_NQ`0w{le8 zUM%>YPBnH9JbKr6-)R!xCbV9$?kK*fbxZu~XzdE%QivaWK0b|K6N}e67n2=Z&3>~M z8^7}Fv0%sU8W?LGV(i%0<==zf3uwdr!##ItFR^5bOB<5?ci@|M>!~gGLZWAzeA_RH z2lz`=lz7^|f*mgY(zO`6ZvR^B$1ZeVdprc6NF>ptcxN>*S1sB%*aKFHt+|RhG{nfO z0VhAzstC8eY&Eli@CNE*(bWXNWZK24Q*YZ-?jV}ed%{I zzoD^&ez)-(I{UnSyZnaMKF4qQhZoY9;ZbCe=D+z4Uj|LnxHv!UY4TXuzv==DmoZs> z6+em>r3d%c;D4>b|N0>Q>1_N07oVAQTcG8U>^bx+n57vX8mq#kFhDbGY^<=kiUdK8kr3IDbg~M2cr$;@V2= z$!^Zcn;*RryYF3oKhAI6PdBpvnsdS5_xl7jNRYu@TsJsC4)4=%^;rWv^t+kg$m5iL z*YX>g{3^fYQ@e|{Gv`x?EtqC~`904p;lBJ_X5ECoOw38J0#0AO8M=fo(8r)__R`(X z^`-#c#S?s(3f?^H)&tv-90hmeh4it1cp;>Zh46(hY;!reDvGhDcs_Lx&x1Sp$W4CA z5%Bgf<2fq7LK_Cpz+7Yc0&9Kd+$~O;n7d%!g$^p6N6+hfvzgCJXDRz-?_-(QjQo0Y1)coXX<)Q=z1&HO-v_|m8=KG;kAB7?m+#?tTo6s>1;!=or)IvIz}mW zzOErl&-MEomy~`G=A%C=uaUW1T}lMBlAKhco+mC-nQ^9%Rh$N&1n5@i+cP z->GK&1}DTfww>mvUN3nteA5HERITZl_JS~1`TOel9%I}&&**NK8GLhnR)$VxT|YAsWYc$TkUXnnD;C+ zimv6GT**;+rHX+yaCFcoT<|WP#pEFYWBGL3nVVur{}XXcZDf~tj;H>3?s4V35TjvD zUgl1x-6^zBOi8hPZFH{>^>q-6s2C`-AbgbNJ13;J$U;$^JK!ES)a;aQ;mjpwmSk=HIlH zy}tT}(H!29Zu1G|ruyXAQu5z{eBACuW-CyRI~p^ ze3%A?5pXUV(>OoRIE8n`sO-3iGqkQ?T)Hklzip?Iu{F?6WiU3a-zGLkTQw)~JoxWo zy%zmR{!Hh2$({w+^ToWw+#lPE9O@wM`X`=~?AyQZVAGTQ_9dVHzmb0x{(gs{g_5_U z`|>wq=6kQ>jO_Ws_ZjGMq6HaN%5+#GlKCPGHrW5R8N_rcnJQu(9M zwsh|Ak)v&323<(+?wHDVli^$K;TQhXlb{u3i3_hs;7iFDGzSYa_YseAK^4YD`uXu6)&K6%M;hfx^4T)b60zkSEfDY zAl{K&5Z#kM)6+qFszG_#N&bGEV)oF)N98o4JM5C5K)S%V<5pFD(6mV92>I~I< zK%R;IAI*nm7^7`lFp%7e0)uMasiA#zB=%2McW;26hcJd*#?VW={vzr$JToG@@d5hl zt4j=RKXrX^cLVQg|D?a4CpXy7le4LuTqe7pN4Yol-41?7f$MzQtzf@&He=SF5y6*v zFi&vA{!jS8$o?$G_cZwNh;{AY8TNDbjOQB@H*vg~^U_GPYa_Ayi?mN^>BR2b6QTpg zITU|tnm)=I=Xm~}pw{Ru_+IK6gXUaKe19eP1sCaKIkefpJtLD@WBJZNkK&4wKdCDj z>or!VxTw1=YyR&$V@`6v$$81$lw;;Rbd%<2=c|1MTEi5(Eace_$t`K(x8UEy@9*&2 z;z%)h@ywo6!PRg-J_-LEh{uBXBs6K_li<-K9F@l-J$MrH@N3}>-86>Z`o_;Vb4@kzayOl5 zek-RVx@i=@NAf3`C>gV>lN^GOjPdm=U!U8Ux!+A|E#nfexa<}1;6?Gb3k=R0kG%l> zyYQp*I^`Hkb{Jm-?`WMHt7n*t=-Vyg$h8rtbFC#&((F)!rD)(Dey!)`S@8tVK9vH_ z^kMbJmF!_8`nz>SWI@u*GlhT>R8?-1SsxEc5` zR@q+1FG60|CrYY-gXl|+5o3>Kv@e`hgEQrTXhksis`tM?zF*%TuRr|z<0qX}yZZn& z9!5n^YCM>=;?Wa07ToG|mqtf*ZBq^fx>fJ1ta&x3ZFKkeGAAEhQgUv=r}1h0!S@dr zCXAi1tD1GRnsu~d!a#kxGNe!I*+t{HFL*Z}pG@zB9-iS(HY5FI!Mh8qq{oVJkd4PM-|)8ln=1U{OJ`vmO)k2_y{w@J8jpYhMnIq}{8Zxq)LF}kSoNm9(` zEZG~mJjYt8Z%W%dnFHAVUcLRcsqYKZcj`TJ-Rb$=9mp1av$xl2?PXn6%}VpF-|HM; zB3~`OgvE>v8gZBL-VSth6tJuSmLDMVDzm^ZcC2(^>AT|h z1o>bQ?t7E_pKYh@h6{-m5F4q6CienQt>=5;dBvV=e4qo^rID+*gWEK8AsOSr-zkoT zd;?wWH?tNQopmyN%=#kV{yOAFKnIuI-FC)zD;H@SUsP-pEEcyXUeY?>D8VCwgRyOO_~~K{P4a zJQiK+$|>{cc5X(MA179mb^2fN zoc6KS8J!#Z>JsKX2YhCuFFfSy$#H6=NT2Ykso98}^Jr84dk=c}bI$vwUwy~4>-5mK z$St3LzhCNcpKnzQ zwPFmsi%)t+4BovB{<|HWritqlxPAuLiQ%R1=K4KcZ{d1Xc}cn`r=;RbTz`;ra=5E& z&ogyR(-qXBXU_N4`!uVyU9wGZcw_RReinOo!-W8i%-Mn7h~+D_+Y?^a`xlkB%An9gxF9S@~aMil44!{ z*omDm_8p8-{zb_{)+GFI9OdtzZ5v07V}p5fSpTuZ_$EF2cJ22SD^cE!tzV{jK z9f3|{E4$q9tvRJX-y)zPtDBzb_RqDqhIN$u2}|o=59l9Vg7_)^`fB=G3=Nyyc)stu zjC0_koCs6Yvav)vy%Bp9)izZ&P^por!es|%_ocfF3ic+(Q~1%)1P~< z>0#t=vt;U%=llE;Fw9anl?fUDe( z$;&Ir14=WOHROjZU_L9GIfriQIq$%Zx>VPyBFP%gzsPSB*MSFCaITon|KVDsSvkp( zP1ka566e_t`VIEh)ttkdo5h=_aox{LiEjEe*LU()5ZGID+YdI~9g@)l>@8D2vwuH- zA{Q7<#+M?Rpnk4!{JZb@a%Ua95b^EgwWjVTd>VmI%fM%x+T@Crd(Sf=;x*_@kGhRdlHIc%DZN$*)?bw%VK|`jM&afd8a* z5#KvfJh}q;)Ixn&<8PYE_k7nfPTq;Ss)OL5xzSynbN5buZtmh_KE^ zS!cBm+ItmzrGalJ`2Q@|r*Z8auD#DWd=*V_-o^QwoU=xh;;-@GX)i0UMCVb~j4aj+ zkD9M3>b<7<-jDHtsvp)J2N-$!jv3!)e5)lZsWG`b!uuc{v#-pZ!kCMBc0At%0x#Yq zj_~VS)%cru&np@d+B+HX-$BNmR*9~D4Y<0JcNarv%UJ)WmI*I?IMZ6P0le3P^9JNy z1NA6M@kedLM)#%@TSwkYZ$}=sR)O0>(FWht6@56YTap`Be=?+xXAL!LdkmcVJ`}#O z4NupBH|^n)|3~(E1NZHI-){vtbpxEP1gGEQw{L%k>(BJpzfG{7x$r_6wC}+KqILQD zqzlMDFFUl*eB++_Y|yQ-jp0G*|BS(}|1%Oj1^$zrtNL(VpK#{Jko$4gN4s`(j^>$> zJOjNiIKj7WR?m*TL;PkMl8CmVXwp89dd?>3~1 z8f@F~_yN;PV%@InskHU~_%&=l1*0*$H`>me;u0b~E z0}J5eNlr1BGIS9uGvuqTq@RjnbWz4{$L&47WAI*Sf0cWs~QFBUpWZs|9$3IbC$at=!BgwdFXyv< zFixX`+>f8FI^yTf1hL^i1EW9jC!W$czr#3RVNU*f>dRO8nFo`vW?j7oc}U-qXQ@6J z>&H1IV+*0VXEEj@D`Pov)ST7`Fy#X@TmzNr^;tZ;{5r@C5O<`qh zYJiOO_oqvbY$-*?B44!^#zVfQkhh6S zkKg_4neQ)tE~9>IZ%r0@V)n+~N%T`F+rlwAtBZbN&a0ySIr^wMkLCF1MfQ1p?_9JL zoKwTgoYNluJwxBk$ZDe(if)$Gwz~KR52cZ9_>`H?W61yA?2iv<=Ynq8bj{i50%!Ys z^4;OzdDOhGck`Xrg(G|(v2>>xspdR{IX}g3y{~!Oe?Gkh`49MqKN|U|zIdGItW0YF za!YIB(pQ2tD7V6lL+$SJ{21|I?d>=1_1EK(jMw~YnU}A3l$mzK)2DJhk)`{kzegyT zF~36F%I~mk>zFzI|JU>I{GZE+7Z`b9)5o@@YcP?16kmqyyp8quRhjngup%Z<+kXlQ&Kgpf-#0@KG z{{q^7n)aXI+IHwOK^tYXq4iTX;9l?|*(kg3C;yrubJ7FpCZ_N6W?b{qPDwlTnus|s zwmFXZMoB_8SjIPuK8ZX_;osL<>!lMVY2;%&>y_sC!K8$#H>x&jkJ3gCZIH`r+R*!Y z?=kSJ{knINC-Woz{Jp!`n|{FWJNdKn@jPhZPM!_pYrm;~)nCuh$VKquVUtOROI08% zfKQs3L0aGMR{zjiJgfV0-76&?cav&mGY-+X=4N<_ISHo5?gg&$U#;)Jp2(+N=Bzvc zjbCe3Y8Lk|p^rH>PUrLJvD$R$UpDP6e`C8}3Blwo_h8enGWa75pQRb=n}H9qOLN`6 z*Pl;5dX{`Cf=dei#5P)MbHO*DcVw~FN6~v4&_nK3egV3P&%1u@gDCcz{Rk2~HUbpG#-_veF*_dhen`=dd|+Y23qWsVtt zy{|uSH0wu5e?|_tqK`{~ujp|eFoqtBhRT0fYQA$SzpL_uzAGIVeWBUuemql;F}@km zC+~|sW4xbP<8}z&!Vs^h4G%g^&Ek)DdTa2<2m3?hH&I+u-|*>GjqIsT&l#x?n&bm9 z>ji6mrVcB-T?!nOJ13ll@kOkAzde4*?|j?O+fmM^s2cs8%KTQ96mD&FS+y5=-9cvlG9sU?nj6r@0 zpN@|_ju%7YIFE67j3Ye%=gt!?Ft`T1B{5^7GG=JHZ(gBXu-(#WvPNhG^^~3$` z&wzJke-Xx`{>0Pk;A8n5;_&S@_|`*SMX({lW6(Y_$+36H(~)j87%tX^#`Ny12b=yU zgp0%I!N{9_d}NL^z$A`{2V0^AWzV$~LUukH3_hyVQEK4%s>Dwp$>zi3K#4j_UCwN9a zN%70{@38J8zdhD3;n0JhrLUQFkoytEcO87P$Qi9Uwb|&DtOI}D-v7OV6tH(M;T_ho z)TMTg{#qtJyq0nI*(W=q#{YBkS=c8#vJdnBBp8eIpBbzt7v!>5-jnEAd{v^PH``eb z|Ih8sbC$P#n(y1vPdhe!2Yo8;+=(n)e3eu347$xe?Cs~!37^MSD2NQ}dUmWcSJ$4! z_AWdwS2;K4o8`l(J-ewGf7lJwx)=9IM*HGR<@3nV52yE ztM>dcwg~s-e^Cq_AL!b?_(Ys`zvfUk0H1BO%_a5gg$-y=a2LFJPWInz_zttlBXac~ z_?VugpT&uuHfs6Get{>!jeI1?=nBW!kCI2S(`9FlA?$Yso(?4j?Z4cY1)w5@N) z{z3Vp$a!N+%z{pjC*}-%OMx#u*O$vwN31wClW|P}zRXj3tI8LRa4cl+Q@Mk0Q}m*- zS1=~p_a<|sk3asz@57rS_!u96ktc=7la=sl3L1=pi)Y|9<6Gq1Bd=oz=M}(J{!+_7 zz}NqdGh-;?9r>13BiQ3yIZ7|_-XWdOVV?$bFVBJ&8CL>Z0GemL#mA#qBG1RDYl0qY zYKv)&E9ZCW5_EE4Rn7V#o!IaO^D#Oc^N~G%AM;58vw7e-Jgz#)#!IksnByIcAT4u4WcR7gXTH@z+~hRBPR?b- zmd)4(>Ff2!2ljQH<_uh`*lUnrpObWqZ2DUTubG@Y_^+3m8Wrftx|Rd}wv(G@VJP3` zSoQ_%AUCfa`c+yHyuea9dFrQ*+TV(EWno)I z3~kgrT7?YIc(4UZjI4zodUs?SpXYk^1Ne2NhisYwp3?ZCWFwaITfR+S2k_w_+eopo zPT;KEiobpiv0%ou=G1;W>wo@quxSnLX)V&f@cKE? z=sTzP`3EF}MBDORs-2e)_&U0-If38$$x+s4P~NSzPHRb;KIEVNTigG?gS7w9Anorw zto@)~EV40NFE+s%g}=r3Z=)L*Qsc$eEcx^r_>6gp=cP}jcvgC29GX_G({ziib(&?q zxe}H?MxOGFkXY;+8@CRcOZkiaAVp~=0DUd#zj$hYQxSI=X9}IBUhrfE?U%51){EWlnLFKFkTIXEiBF&?fQIjU=I+_KdiLG98_fBF7`~4n?@qCl8hj`o-{MFUD_IE4+NU@@)xae^ z%g~wGw~+(iX@8-JN|myj4U@i0kC09u^ZC^DpRB`QQrL0ZiCgV>b4_Kp#)g z#}1CHFA@Bu4t`bd8P0d|$M=CEt<$sjTSE@(*inPmFNBTP6Pz z^e^6$E+pT~$a|OvxHbF*?v*okBp5FJMCLn>it++v<M2Q=X^rg-hiCVri!Zv#8=7JV-P28!Qwh$1LI6rJLp!_faO|hG1r#S zzWjn?`2G!ZXtTLV=om)N5)CsZ*%$dA;>!>opa;Q1aQHTGP!7UA!6P&mLywG4ZIp=~ zdC!htzM`#5@1DK&=j)7I*!FJk+_?7AvzI!}m`lk`j&tn*<8@N-YV{y--I2hYTEQmg zQ+3vA7$f7CjCO%Bx>L!ag@0{&Yez0TE&7dw;N-`K->N2V%zd}w@b--?;J%yAI_$lZ zzZQ}OHS8C!VZZoR`hAf89}%n=TRw5#pK<=U#>IGaKLj6(Ymc#t)_;BdKzv(R8NFOG zp@LdmI}XP+vc%v*dyIsSQ-lX-CES-^Th^Bif0q6q!i9WzE9$>Ld-?{0i)9`@ZE&$G z9wQGfz{R$G+W)~GP+~$+WSnxCWM9MrdUxkAPiS7YPjByO(EX=2_P!6T^G*f&U^&mL zro4DeYnb7OebbUD(YoXm^RHdaItINX*To#ri`+LkGG6x`j-o}{4bLqTj^8>K z9E)<i@zGsH2cIY9P9oZ(6rW{tn9<+>S*(- zJl4EuFI69IbMSeoX3wDW;(g8Q%Y)2I`!?Fh4=M;^niuUk*wh{Dvz4x(e_?&{BEB^f z{{Dyj)7~un^3=gx$J#6#lQpET9wfSgsUHKan0k;puYwMx!%3f#o>q;1hEBDs0b9_< zWJOD|X@{z|MW9n9$cJ;Puu=7$Lh|<)aFqX}w`N%IZ3;i1#`y1$f#fC~h+{8XJIwfC z)Gp&y+i&Zeu(U1P+URV^&R*IxG=Hh}r}%Bk|7zZc){PGbdjIJSybo{0?SA+1+?!mX~KzMc3hKQFI27k?A)8~xLayML|t?+@OS zU9u}=muz;b_+A9hFBsiVOF#eP!KUSmElfW{iMNIKYs-IV#>+Zv`jb4MzZTgIlfVr$ zBAr{gVA4&rwrP*2@^SZqyUwY|AM)w9qnAt=k=uAPx`V!NM17Ff=doRjuOH7hl-L)i ze0$<~my`EVH7d6;&iyiEuWV!K`5J>0*gp-&S^Fo5m*DS66Yu%~`8V2sDf^N*J9?_V zm6W|{E!R`ncZ#XV_h5C{-CXy$uJaf8ZFy`ha8aI?&s_n3RrvPKMDu;n6Z`D7#Bjz2 zuarp!7qGrF_Z0Z6$YtG!)(*5plI^VLeqH=*W7mXvN&Aqc15)QEDZBb*{5;0b#kuBO zcMCKO3?2Cqz=6@nfP03$18*K)`?E0MA48kaKKzEx<@1~NKgi}0E`O*!nv9$0N)jLT zKIWL11M4>ZdpxIgJp~%Vf4LmHEOSib;2(&+kl7GRpnQ;!4n0e z_+}dZni#V4?k{|I_SQ`gTwQ>yEEC-V3!^ho8#@L}9K(CQe5noOOVL97ceH2c%iLOB zbY~~nYn{cM{W%0Q&GmBjV0+{k$Uk!T7jB)s_2Gw1pS9F1z55^f&mGR;jotG974VJA zb?o2LIQLArY4+VqH<@>~5jP>Pq-6d{k>v~ct>#1ucnZxfcGzx^__0-hBIyI64}WCHUpDQI(+ zYs>{tI?H44aU2s_UVEr_?hCZp_so|f%M<9K1wV`|Z~lPeuE_GXgS~SVGn37HKluGF zzccZBb4L8A4m_4oqgZ-;mDVR{RWx*6JMs(O6^_Nf-gpatKXz4pb$`6<7Wz`X3Go~` zKS|k{^U~X zE3E?`W$@Jy{&e0J;ElD)_u&OOBdWJ286y6QTnfy|2WV5BA^LLA0j1X!aiFEd{dpi;xTMEXIF{#h1VSzrVa6Uoqw(S~B=5iu(A1hAh4` zM}w%~zwmr7GWja~@wTJkYaO%}0aq6U_=@X1#yNimf5PVk@W-Fd}x1Tz+kyy(V}T zzBF_b!M|YIwCf~Ryd(XVtfv-Xv8M8~;Za0bR6 zYn}@{y+Ppl-XA_5Jj3JhZd)7sr{Wjr?`<2mJvh#xO!{?GCI@cHHU*(b(!!Y=Wk zQx82SYGTwe;|rGlEWc1YI*o8YTYJ~R0kWpmYoWF)_O^SC)9Ulv45M3XT^C<^Q)rKO zm0Pd%0|vW;wXzl4wbk4U^@-iFHtxiXop13?j--j@l&$vr*0W znf979?D=J%sogz1*8KM3Zx74g$G46PA~{{d(U(0Z(zpuRSPdQI@@}5_^WWW+@$SrT z4-eiQV%{~r@i|Uw=X9sF7CWjAe}3vx{(!YzA6NGxQ;;(ben)S5qBS)q(aIjvMr=9% z$k@{rqQNXv2c`g@Q6;o2{ZcW3=x4~8B^I-FPQ&i8PJZL+SXs%d)XQ2&ovay*`vOD1 zL%N1R*F&(y@8g@%8_1R2KpS>GPk|d77c%(;J1l+p`!n`@jqgcEeHh~h8i0c`@>C4W z+s^ER`8sk|G)@C|=^D(teG;`*1NeK(8+OM7_#YF7TDxWe!-^xr@La*LG=O0RaLbMu z_?72H8x1UH;dcO!Dd3m}o@T#a0Mkvt#lVzt&S0ERjb&dAa4jF}!!;B4e*{*S(`^wV0N9c|Q{6!(cK){`-&{5yX-d(ZtXhA--vqZwoE z8GU1{`;B_o!R&9y8K{%(4dDrk3vhbNy2l~y7|IK z-~~E{wi_j@9Po1J8x6Z1=rnV@dzx3xp8jyN>2n=?ZTfU3ClzZe1s}ws3{18D315zE zY-fsmbR|{f@3`ihYO!R5>+#qW+3bps?6NVfZR{&E_YzZ*Me;?=bb8XWbi{^Kov^PZ zO0cEBU*X*FXxv%x{Ze>nfwS^1^<`*zmMcj0eY$Zdx^dY=joSJokKE4|CVQJUep!PWnpD)?5 z2=~ydaKH8H!N;`XcMY?*?tVbHH{YlC>FqOpV~QhlT;{4ZN@J7k{EF5l@lXcsuJ}E& zs>WY0`e@gk)YsNFY+pM+>77TS-B@`1tcx1|ihmn?{NXjK4{yzr`}&N7OWWsQc+0VU zfwvV`4BkhAbzAR-VURw-uK{%@v=uXX!DEeo4_a93H1nNx;PgkHInuqCg7;VPzGz(Q z^93&-Y&wOQMp*w?YV@mt`iBG033e%Tf(p^wwGF$g;p=vE3Gu+m$am=`X>^A+zV)Lx zmty&fHHbz;uh0C|$OjYuv~mL9LMwSijk0a!XHa{__sjWw^swKc@8;02a<24ks5H7^ zE`6n!S()tXG~z$$vHt$-oJ|*p=6D=)RJ_><{R_``e@6bRv9sw<{#E(Im5()pzhmj& z(g~G|_;T2P!#s?AueOkxvMr^DtF5X)mzQm0eQ?sl>Vo%WiwQ@6`rW}M)rkoW-}g^h zead|AIiycn-a(d%CjMzCvTG!=8@+G=HP78kk!kas9%SlfC*kkiGJfUIw?}W0KY6rp zD_#H=JCK*3b}VGy_{1keM?KN^P+T| z>QSriYM)F$6%le_{r#{VrR0I|dp@)gp(aEJW4MogI$7`cF_wbJkggrTS=W@ul3p@) zS{CE^6Yzvj);hJ54G(Gmsc@(Lr`q#5Z8`qJd}1Kr4_Y<;Ds&R^ae<@cFmp~*t5ozV z`(N{y9dkLkLyOv+7dNm+_laU>IeEE8-w2P>L*{;*aVi(`XU7=l@qgzys~KO-jlLgQ z{rrf2YHG=oMF+0g;w-Py@fXhWGIDaRC#<^b9(=)BkyUr8X1Q{Unm9_g zOmbAdi3bkIAL#KGTf5KKn~)8P<534=a$n9!G&{R7g-#*5Uvm}yLEe?^Q3{TNUpkZ zBUc+n8Mz9*9DeWH+_UoZ?U#_Jv~A=|y&rGdST1|#6Mgoa%`fqJhdjyoz-k3KzdYz5+%-$8rtKpR zR#3;@aA^K%?saRPz-lZt+pNxCkOPmQ?-neLEZ+~06|9OZZz<+{e`NVS&hv_$Ew6P| zlzgGc+0qH`b?%6ih<7?#A|=C3f5XkUF!xV$<~A-_Htlt2>7H%Q^7^CTp&{JlYZ?}`!5XA7XIGvSNl$$PzZ$=9d78aZy+ zI%3`XXj}7HhpngF&VtC$Wii%t!LD;YH9rjR=XOQTapracw|$Ine>F8(fnQA|&+xvk z?SmHgr7KD%EFC{Blc#L{X&1b&{L>QXa6i1?X?cGc@d0Q>F=^o`MJ&+bql52LC~rjY z+6%0O%Rh6}`1Ucr2h8~Ly5iVP`xu{W&@RUJI^(-1GSrMu*Y-2M#Y-nl(-<3hKP;QN zkWKsGkJlOBe#UnKz`qca)WAjPm_yjFNu^-;OM=QheqyVmKTXOWIc* zDR~|Fx{-PVjjA~SUXCLlVJLXHdCAggrQo$5xn2rhFXX6s>Tf@Dy_p(s^PQnxW#hpW zbDhMz-e9hOVXm)6hIdtiPhIO`u3gOY!KD+Y*>^7*=D&*$Z{9tV=l;UGZ}RRFk&#__ z=p?%K2Jb$@dl#aQ*uKMbunrmw(}54?ysj4b!P3DbXy7v$Ft#)x7>fpeapm7f1DaQu z4qpGD_c0O&2H^8A;B!Cte3QQ3ps%0M*I&Tr{t!O@@-gtauiD3{`h13s}YlT?nl=v01*JnpMz@=%U{;JB|Izd(JY zq$3?E*-u}Rf5#Cz}?`zQIEa>QUXzLAV zt0r<>*R#-ut{J*yPi*7TPft_KAk2fW1H;$A*&6{2&jyCC1H;!sID7p_FiayO&>1@G z%S!guCt5Xj#a@Lg`2j`8;c+fNAIco(6Y$Rt#`(p72X1DJU5vHu7~>rBzc@}8n0dg@ zt!KSjW7qb7=vKVG{Ssm|A$>}^aA7ukx>?gwb6Ass-ECiIedm4cE0K@Y*&M9zw5#ecaZNjOf>mF{q~#5 z1#!mvxgewbT7=r?Rm%Q2#g5WN*aGlaR-jMFk6mzD^eyefcMF`J2!2H632c|IwQ6Fr za>;`38G%o62ze$?)3)k%8b37ccEBTR+3S@W4XwZ<+e~e_;mM*URo$|!ig~vIo1&7u zpoZd5&8c9IiE<$BAb&?|R4w=IUP#x^wJN(n4oQhG4ek1rd17_)&4sb*N!={#>S#8yZZ5vtNenhBdF_fa>u+1&e=Qf)o^4#J^nqD zQ{%1xC&j>Njm5K{7qn7)bGbJHJcFpwE30IOQIm-CH+9~|IelewE?sA(!#QJeINu{$ zP>n%ny5R+r*UOyco7jiFOMh!cYudlmo6)c6>Cmo&OIO$fR0y zr-bVEtBx+X`5JIHG0^(*l1Po)!HTF~;9=PrnOePI4*FKF_&umCfHaev1aHxh`8nJ`+Fw=I6OY zo5^(qj`O&$*o1Vb-i&8NZ}XwI%ej|HZ$sG^^wG#u`s_*B%-BSVU$)x#7 z{lASIdsKZS z`OhSaL|^(|fsMna7*iUYYb<7L>0oTEZT~rhv5mK5<2yZrjLrIy1($8aK>V?s(KnVj zxkqL!j6?Aq#Zl6XLopu7AFX|&J&i+o$7T$~f((3ELq`cdMRp9-2_9q&)~~EFtYZv5 zZsL7oh>&Mz$DsZbfsZ(qfg{N?PvgK(5XRA!0pEL!!}zKx){>*&qgZVQ5U&zOuZ|D2@LFYTK=g!$%|BuPRoOB`fy^T9E|49+% zkNjNgI4Ab^|Cb~8->dnG7U{bq8(8=C{kcK=wsB?kC7Mr|T9y5@x9+tg_htH_zuqYQ zjJ9(;chG*qbBwSLq|Nk096f;Pg3hD#BOVLE^h!Sl(t}^*K)m*>LHpY}=ZCYW-?2ft zpk`jK;$*ec`ug+IN9j-SV_wKYGcVJRbLOD^*m$GCm0~Q+Ct|*XCX*17Z}IRdXp zmyzC-n&cS1aapG-h*?zg?HcjVo!9&8jynmOMz&g+D_x+Cd}6H`(7K_qL;@OP-APar zmAN7NPf3cFWgCQPIn6s+4C;Kqe>WkWEwD+K2j$= zqyUKM!dvJ2h9?SY-{Qoib zx}yW?xf$qwS;bCI{RI5%R zdG)%Z!#Fhzy@tM`z*syX_!cpD>T|M(6}`1S8iH?@fv=%!;O7Cq2=EKjg9klmJSlQY zQqaWX0ZmwWk%{9JI84Dyrhm;D+KXEogYm~?UyM|nCZB&x9NJ0+^G;Rso4&N>NoE*3 zhW@qwzD%4?Hl*|ckM?8G!T_EIw?)u|mx0?taQI1!Tj7LvKf(Dc;3N~DrVb{3e-P~1 z7A*)iLwLS5gwrVJ(y<=kn)q@UeEBJU8-5Jz!TtEc2iSwmL;NTl8a=h_1tSefkpcIcFf;-?{ea{JNbQ_li-AU!)JK{+nzl@vUU$ z`V)K`8hQ)yZBVZhm>$Nj&`X$KcLp?bBz`UA`_77E8Ga4sSP0LSGq-rKW+VpVS>PjC zmA(czW%4Xz5YO)WFvPR;5$0L)DqB<7f#TU{V2_G7FT-B5d@cJv&6pN4jz#d!6XZqx zh8&mFWZ9&bbsO0f8iUap)i<)^DalXXkFX9z&t~0bEhwh#j?s#fhipUEhe~Y2)!2r% zPVr)7$qej5`B7D`U3Oy zK5VD`3f3XTZ_$g)ceylH^%t(~yN?_L)dp8haW8`}B-dQ-|0nm%TBG+lzm0R`8f)_5 z{)i{_{R5u6+P(wby}&z0&Ov*>=Jx{bNv6I0>w`_d4(S?w`bOZN7>aH^z+U8imwlZc za}xhpdp-xfVTfeB@C2R6MB(u)&9!K;$>3=clf6!V2yWQx4_)AhV zt=#eLNOVH{R@yJf{y?5x1#Gl8LhHdweya|R^uRRje}{AJ6>xsY_=HpDDm&)iWiyN< zR=~a9jP?cN8-ekIdN26ruOGfXm-)TMHs;I@dYo2-U#B=T7bH8LH?@Ny{cD4LD0l(dYFX>t9ivi~1x68p(CclZlEWb?z zrjpei$XfVq*OB-wy(EL*7=!S97{5Uq`o2gXzww;mH*^A9w|#`ctIuzOnW=9Aeg(5I zjKc5}d>1pErY*8K(WWeK3WejtNtEehKgrOs|0UJow)w2h76H(%mdeci0C}Xf~_(2y}kZ9P>R+r=RSGl zK^|J}rcInXp?%zK)FiUGdT-|T$8r|#9PE3Ie*VaF`0>K^nTSGC$b)ohA!#5p?132^KWzwp40j_;wIJ??#s_78K8V#V^aol!X56*d)Xx> zjsT2PJTF-k%Q*6$ zu}dcNo4J~p3;cpDY}PQ@hv?hvXBcJdv~Th~WUWh9ZUB?kb=Y89AIgx?9_y9-#=7qD zeG}2Y2?ApdNza_s&>zU}UEP>5q?&+Jk?31VMr_KFrQ%@!}h4wS` z3&tsae26{icD~YSf3Nn84AMFpw8uOj4ce3LEq~|3od1g7(h*|DKX{^vOX80~PN8Sf z_BWUG@9%l|dH0PorbshAJ{66!8kghuuT^GK$u#m31GLEi` z3=*wMXU=AQ$zx643p}1grrYcG9r^OKKWkNiv*kXwE(|rfd7je^On~ z=Ia-BD?Vp^48$!CY#@dzUb6am3c4*)tu=TK+VOqy(74gfn48hhpaoWfSdFj;7R{ge3!JHaVj75UgE0vAs6pw zybnOr&oM9Z-MZ?**R%Y7K)UaUA&pDWA?){`mm)jT*N-!Cv1fMsycx!m@>=&oBhp`# zJGOE#JfWk6@nm!c^fEIpt3>WuonaGwTAe}h9ita9R;?u?kptr0 zi0bSr#&{_-IuDtodRe3V@1>^njVi{dx`AoNnFbbGpVExA=;8j_EtfH8)t@CFyR`zH zMq{bD(b-52D}T|ARnXM}=-I;ZVa6%_*PS&`2D-eb^&t=Who7t`JuA_319R}EV9y49 zsBM#zy<(s&&P5JfMZ2Oa@?%ZzYYxXkCz4!38wat$!ZP6i=e-$ixbT#|-Fz?4yU?a; z1FbW^b$!UDpYmI@DVt;da|fFq4eUB!eg@y8F!>$*^^X&>HyrXqfcbW69vFE!N%E3d zb1m}HU&oC9PWaJt@*`Lt_K+izA(D|EbN7%T?V{5no<)vmt%?C(J2%P5C~IC3@J>Ou zeX=)bTXw5ptehVg_-YL{{z2N7eELmh+sFyqw${ToXu1gc6TSHQ)dk(kF)D=ajt4%H z6VjK53vT=ttWE+}kMr9J{)OSSk@&<%Bm3bcUwVE}jO3K7v_XfIM6dKC;Kz{@KFCyHTQGH`BDt-U<+ zdvaFZ59ajhv%W2$DTU{=|Nmt^$Xm_l-v^mbIrY`bozu*G&OXX~7KG;m{v+VetMKz0 z+&P2KtC@Mpt`M#^GOu5UaMeFQ|9jWZkym;s>+tVgyD!j}blaEs182rRJsez&M21tB z$@=Q;o@4X;gu$QJUSHwe3H)WopFvybdxlTE$)9OA0d__+?X&-v>CUbYZ;5!P3;O?*N7 z8M0%v&%5h{XT}{VW_*)4qPMOyvYgoCADkX{Pk`$z;GZ?b)FF;ym&or@48D!8iudCD zR(_s4-pJy$1N>br*fGE-@4L(a-m!e6b;j@nV?TlSUkqsHRA}d${2ss$*Z?1m?9X>| z>A#J9V(Cq?ZG>mZx)r(pJ{aY+c_(rm9H48G8}(U3^Va}J*#XAS1-y_+yKG$}+BjD@ zf<6o`i_rIqWvd{kvVm1Gc0mPvK>P+@3fEavb^TuCr0nk^a9SMWI=ZIuYk>oOU(p5L ziUAby2h8=3IWNGramn{|S!)tbq(puqUl#iLZmA;1!MtQ6Y2EzB4B$r{7~0;QLQcuw zm1tv6cwjrUkxL?dPI;%5wf*b&FU|FwO~w}heb{w;lis^caNq13m5x7eKy^Q>r z3i4xYJ2mv<6tcJZs#UXBv_7Odn#*cW<-E9V_SPS7^y_Mpg8=R}SGy+E@F{m0ewmFEGDD z#x1i;Imh2Q_fYl7WKE5;@lcC@H1HOW?Ks}>nAJ@kWMMj8)>C~wv>ed5cuD%xl00l( z^iwY%`3L@tOoCRlCcnD~T7mwzDOblCn)Ke}JCN^0dXCs1b9R_>sZ-GP2C`W>g(>>Y zLLbWJFNeP&{29OH9P*r@qkY`>YqzOhc#f&h#&>$LQ~kPbxxgh4yzCq9Y#Dk&qSfM| zG(tTt`1vB>K5@ZW$x`-kFwVJYWTe)Xj>*tG@^9~SWFzx7ehc8c0~@Nkc9O{_u=f9) z8h@UW1LCpNt7X3Z#MrEzrFDJ*zKb+)GVnrP6{5dN4$j9exQQGo`OW0RYsQDyj1SMs zsBz%(X~naV6_Pm)@5u%i@9uoRcdqO?$sO4NKkSG3uDFwTOqe?{_NxWF`{E1Y-65OI ze!xrUYZfsT#WnO@82V7InVpa9vD9d%=ca1%A2la%FW)5kT2i{0Aa7NP+?C;eTV_`Tx>5 zd)|Nf^%O6pR)Sqa3V<=|vp*K(kA*|oQ~hI+UYJHM7(X*`kRByHJp~+I)K~%;ptZA* z+CWwYy1>C31P+odk$~n?@QGwxSO$ppwe~)&@076iX0Az@@c0$+c)NZdOAdwM5dSZW z1M0F{{QqC(eJOmwxa5D)SRJjM;Dm9ljn|Ge{u(12@xzEmw_yJrV4RMr^&ie>2x@<) zqtpebzBhG`^H(Rjr>}Op3!=d{qtoRj&M4=i#UwJs<1(R%aQeRGZfJisydm2Pk(TK~%5L2p~9L2s}8 zhxlxg_o#vMTBmAKU*Bb1voi8%eV6Ad<9}~zV?y@w;oqAYFS{@o zSb}@+HstXH;Bh;Dz}DE#f-Ck;l-lv-#8XtuCjNPHHtv@0gRZC8$_l3^-6VRg-Te>v zTPNfYCmovT`2u@^zOZ0Yaz6UmI`#o~Q9~)l`itJScH%nP;ySrgb938p5I&(K%zoh#CbkBX%&Fz>4-L47f zqEX}a^(ylX8}W+eSII5pNIU11e78P*4SaVc@1pxiZ%DLt|nFdxh!0mg)d$m8i0o~VK!TacLisuTJ3z^d* z=5_(FdAfN_Qn7%@+3ZtAFIG-r`Z}k_JIk5-0MBjYIW2xJ<05w(edi=UXI^?1yw-*v z%-F?@W7cmDHpx!Lx7LI2p~rhLY>)fTqT>;li5op}>lMC^S4O=^>3H#M^nW+k=y+-a z{cf$%?`X>%q%G~o`~m$5m-12SPq-7#gwO57bv6+9y`5+D>}rl3)wBh^BpYR;pzrr| zAzyx#6WAy4b&9`2VmXpcvU5|_{V~FFY@818E?s&r?I@2ya$2}bkA?zY6EPR0cUprWwbbGB&57I{^FJ%LL zk6KF7O{MEv8)yi;p*{N>z<(Nlc{?#QeX}(+lm3@6*2#?Z5@1Xls%IitXuryD-z7#$ z|IK3<>twE9!Wd@;v{m8L*2UCk^mx~$4ds0ZCTZr<=O1DY9&My}Uv}mKn4X-UU3W z>fHa|lS#tWVv7}R)XXFxAXv1ZkYbw|f})}a8#tvcZAlCk6)P&|_t%#8Br$lQXid}} zTGSFmM8FoRSme-_#8~ehQG0r`=P-LF2_WqeDs4%r=KuMwz1PgnWCEeBd7eBovoCAC z>%G74de>SF;u(Le%jqvY4z7&|jPX{D2b>a9H#(QGc2#muY%1A*@enct{@oGOi;}Ok za`OrQog29?yC%6hn`^RN@;@f$7$F>cz3W^^TW@}>ROm9mFgw?38m z8*3A-&D1sNe&tQ-`0njlG;m`v<4>49?}uzWP2a^+jJwX%j}YrK_M58MZ<6Z~orS{M z7~zFDWS5o4IM!7g1YT`qZvoaH=~B**#;d*-VqNw_sRcj;8& zfalWd&XDzG%+qV_nUQnal^u#({ll{^zLsFq97GZwhVFYxcH$ZBoeYej?|N-Uc?Q3u zv8L`Mle21HVr-DnYtp^r)h6$^d<_1c&3n*5wPq&g2V5p@p*_Vd9TTySz@i$$4&HUK zi>h-_p8NlkubE{RD@I^zW^$kRh1-Wz`v`6%Ps)EAd&uvR9|bpy9P}(_Kwj_j#zNW; z=sfYC(R=hS+obsE!_wchWuFV-M_C&no76^~bZVxj?_y?+SFxe-eT#UH{^bX>ay`n~ z1ER;>To+t|SF{i=;sKj8k~XPNJ+Fd(v^F~*`>4FUt}i&j%gcwW7!SXn9l~#N^Qx)5 zmFJb)yN$d(wFcV@v>sy-*J(SskWbp^FTI{tP6PP#d{TJC@6lX<=?P>rFz_o*mtWa{jn4OKG`85f!A|C71b;qt8g7ke*Ge?Uz_=dK zn9;H5gsyXujgl(QA8DZuN4n6fCCWEvILe3kPp+%pCq;hI%y~oW1)SHstZtHl*XUhf zl^s)F@un}Mmx`b*HbnUW!K=B`U(xoh*rXKrTSuF>s$X#UFyA+G@4{v~7g4bBA@xb$ z@{d>XT{+?J^UU;EX8z%RJ%f(Cm+MV@{}!JP?Hijnll8w`yOC?%Pr}FBz~zpBKIg0_ z`N_Jc^P`eE?szW6;yZr-;+{d)N#47nd>qzw%wW z$kuqg`)S6(98f-UK;p$D&n3W7oM+$UQ?}mtyy%IvAIx}-?>Jd8Unsr5v^$q)(C6}< zUzd%d9}|u3w7eOPk)cmhV1YPKEr%2YqcitqrpLqbz zK?7d&PnXLx(*HM*&$xkp67WQK_sN-<%I6i?%W&(VmFM$}=CJC)OVYQOm*6YrvX|ZL zJKo(L=0Bf&EqRkPEdKnkuAzgwuJ?1%lb!AM459Q~HDgUo0Jl%_Ig!t8d`{+b2cO7d zVke)B9a}(M0-tNa(M&#Ty!y|)T!FSYdEZ+a}e+T*++ zXy%afGJX}`O-(0#d-HzN4@6W%6_{adm}hTaF21hjOqX25%s-^ zzLR`UZ*a2=)yQ6>GfX_k9HK!~83+pz|@Tzu|_-5ue0b^Wn4)Ze){FMULt3+(qyM zy3+-RqOl8oJ=}VAF2Yq6@XEL8H#}nk@Bo+WM}Oftp&#&EkOhxuOm6Ss@4-#+Q0JhF zFGn7md^!FaV>SH1c!k$u<_gSxaN=y?3@dY=v##uY+DYGU>3u(;_jdKZUOdt{_zL|N zN1THZokhd%1fPe%Tk#m@U>$LD@g(P9j8E}_#ic$C{L^_}`@B>4ludu#r>^Doa@xF8 zV-tVd=O#I?>rA0*@O4$!WaNS89iG=%v!A!m^y+`$(fb!(j|QLmI_iD!der;m3XXQ) zIqf*dbK23{6P=FMpP}DT=pmXO_5JZjzwh{T>o%_BvIFz1p7i!n38Ck-uYmmJ6gpfwST@J_Sbm%)|6cyKd;rBJZ!`ZQA4~c-hM$k0 zW%m3@`&kn_KTCTBrTG3wYFm_BF}hSR(pD09m4DLsq}SK5j?m^+UgKHt^ah3=edEn} z=$dr;{-0%^cjd3|V86HE`i{gRaD@*gnz{=aBkcs~IuN>=vz(!;YDtYxY-%f1^IW*G zeIhW*_F`8=XRRX=&d(HmvE!XHfPIO#r}Fc}%6ssa_CP!3R;f8?QoZmb@*nB>pNe3e zm_Nre7n;qZJ>HX_b<6V1JWZ0il4370`V+j$r6^X`I?zweV{LK~V=0DL;0wVjm<><*V@YB2wMIfY8_AdIU1Xm% ze(^*dF|nz~pxr@V%;aFMhvv8OTu`20H2aTb&R0=i&Hny9wmwO7nDx{!k&`^&kQ3qR5yv@_MV(@*>ux&dD=y1{#*+vvdfUd(}C>5$+4^w7$$X7SS?QxDve zpIrD=dP;gD4}DPsPZtwQosG;*XOFPk(3!WRFSVz-Xl3V8w2z-+Ht~USN?)Gp#gy>S zQ${BIc2nSBKX51)AUhP~tM07dg8OmcRt#!=AWt4V{kNQX!XEl>Av`h?J{S*u#-OK} zBTSA1uF=pHohDr-+FIGW+)EAvCo|BA z$VLiz&|J>t@QvaG&t^I&C1+xT(5teQ+6zo;LJ~6_RyWN%#BbYV50 z&v_qy=iClz$(GQ5Ry*RC2>fz$FMjdXKMXSKA$y+xB-`&Qree&Fli9aKdBa;-`!g+Y zwvgt&1}dia&*RYVi;)YvH=2I0!7p)CN5gp>M(@I-CJwn`Sd;iLp)<+H+3|blm<8K& zvFYZ0U-w1W%j_oP(C#y)K3egGygtU6J{;l{*7KZX_W?6--~*UvIA20=BsgQUif8Oz zSv)gNu-m=6^g9hZ`wQxwdg>>EeT!37?!m5ez_VZvwim+JGksDMp!Z|gTk>8f**&w= zM;i8)v&}ORYMMT&XZ&+$%rodEY74MYLZ-}iFc4yvkuP79X4w{uYWG{k;56gf5T4>t(@Hl|9bhB4FAURY2!iWxZvGL*ptC? zUihooH!;SVq~QLiEhYTM-wrDm*f9U_`~LZ%&v0FS_(ebW*2hSOW&uO4e9Ktq+u!p{ zyJ&csCKl{Yuf@;P0x0PVW8tGU`A`p-K4 znV8x?Rk`aDKBK@apHMna_IIuSto%ITuX_jUuY4MM_R7;gFB*HBp`U>PJ~lA$N&Yo` z9_$+M69<3xJlLpy17{)s!q*z%3z!Rie71<+j)AMMW#LLbj~Nr6%0~sqbiMzq{56f~ zCC2nB--F}11RL0cAHa{~RO<*7*X1)N?K4`A|IinFu1`z(44?7y!!4qv+7d0*7N2S( zgf0wK#mc7f&v{)hVb9;N@I4HCzsZ7cP&Ry`c^~+W3%{{gSt0+H|G@E9(Lgyd$#7p| z2=ZgZ$D3V?^$p-M`^P%oUl4!Zc{#=D_`Dv!Aj&=|vdb~~_4KP;*>%!+#Ju7G=`9yM z7A0S%9HDHiCmZp@HfJW@kPRl6xFt&7Ou2To)8jh%GM(j^evUkua2d>vHT$`-X6%b; zgFK1@4U`*e;hJKkQ|4rJSDdlxyd2GarfR&ilGk))&ScacDZ%k?Ku5ektmpWvbzUjs zuhY4T!o8n+dBKbco!#L0y1*N+cwYOh{&{u=j$+`@o>4(Ks)4t?)H}1;?BkMy9{qyH z&($3Zo;L#U9Qn@=5FS6*b}V>)7=Y(jepjmceQ(dpZP{L^{%vkCtN)J&`k(tj z_HT33S^a+~(EsEQvVWV~&g%dFDl__F#0S|wdNvpT|5u>@zij^i`QPT|v&R3!K>xq` zAp5s-4_W+)JPO(6=XJ$z8~H97fkH48Yb1Y?|*2 z+Kx~_H+2MblXO(jp7l#VP0!6A7X@Hg{CDD~U;W#;mMr?58R&o32igC~+~Y3{^grQ) z?BC7>WsSe{Ga3Cb?1Svz&NXHA|6HK|cb@(L^+O-_@zFs4ul=32-?M`ycy#(tp;*ekSjuc#e1~N(>c@eJ1$Ny2!d>pB3QaIbZIB^1j@}7n%L^ z<-f=Cou>|z$GUFd+;Hb%r|DoSxYw~i2STn+{*rQRnk&%UiaW#l@!sBqiho@2r`TRG zsp=G(QoU;=G(SB#K)WhnRZW%AU#XB;e_T)Q$NIjCk*sf(t-tme|1Ogc)_B&SUk{K6 z-6j31@!&%jWv|;A0IcN8lrM27*l~Ed{SyPQl>wX9ksH`bJ=mfF-723wh~Eu4@LTQU zxAAEB9p~d0xHbRLAN(ei4+6(if;b+{co>uFQ2zIdjD8rvI27v#aadn?BwxcHnNp&+r^SpMN z|LW&v#?ub?so--u?*wx*GyG?%RPp+pCs`8g4-DHhDi*J%EAsSooG zuB#5t!f-C_vWBcovZt~Ci2K6f=B(#NXFa#tf9|2I=T6Uh?r!c&pWM9d(8{m#JzM?; zLGxbv6P_@5;8XaIlS5Ko#O6d=krCyER7<3MR{`IJ?`EI=QPx1k$ysTxTRE-*zH9EL ziuqNI&1D~{IJ6Cm&isqcdOxCm#6QS=oHLBV{70Rz$;+X;x5lAsn1A6}x;q4oD)>KI zu1CCH!T)sN57P6^NgnO1{2ZPG%}rj4&nRsMb@L1Uv-`4e{S4O)?Vy|R^#=C^|E{d( zp3Zu%#eeQ+SpATUCE5*ycK7i;mwYeJ&hJUSML%D@r!)2f{zbK_=-=L6$0aFJ^>aG9K&m(Np9N^t!UxO9$JP=5|W=LPp;qE?xCqjOFE`y;Gh z(438#?_+*U^O%~$oW$G$`ej!%@*$(|qyw0vXmk=I%v_cFPm)Kw{VUWVFgH0sbNK%I zW<41AYiF+VLiTh~9d#!*rJEXrjo@Yvxwn>E79LJeL*lZQBFdglqTf67;b&k8Ihwmt zEw0lwjrV)3f2sgJ=C|6hPx;i5%Vww7KXLEMo!SS7+6C^<=euZR=VHH#ogT?ttcB@O z>K@Ld?qNFpq>35Kb*y(A%^7Jo2zJf~0}q-*?bKdu)O*aNJ=JY%UnMVhn5iGU0=%!~ zdMwn# zQ0vzfK|V{6&BT*j-^T9~`Hk)^MfWClaBU}aY6C~iy;7oWV7Sufnd*=??-|m(=bRG5 zJFarRufbz)^3KcrGlskfd^>@5Sc6qV&5ZP^=8R?EDk`ZH#dp*EsK#5OXJHeeLb*J2|c=DeuXIBK1!r%B9Yzbek*yYbcDb8gmU=GNvq!f+N!|5j`+EfrE>as@hoq>>uo3It!Re-FM>XH zkLWuUI>$sqU%X9MKK0n7h zmr?mxw_LnQJwkwFocZ@9l+ts&}*Wn$No8ZxLe-f?j8RFV=N! zclXwp$8feV{&bkAX^q8v{ESlQ-cG*-$T0PJ zjn7d#aXa!=N9`Q;!>kQj$2dm$^k@AswGiyxkpnIVI(z$kIUD~I*tE_@HPflN=oa9s zfyUB9Df-jcrT=AHRqJ>YG?pE;zO`T!tf{%NF2$tJuqW|4+LSN-GP?5>bm-;C*`-m& z!Mc9NHb->Rx*j8Mv)MbAzH~;h)`d^|1UQkMnP=>Qp^x~pojy9ig>=9k;Mxl>@0-p1 z67B3^tnG}oBga_V7oyYPU3By=hcht6yIo)MctLBYWYdFuP!0Z6b16PBG*&z*8s}&` z4?K#muVK8h!Ou5`n)XsNq#DEp2CoA*zQuYHqr08Frukf(Z-3W?n&$EQ3V!ERg_=Ic z_Y3(hUHK5-6YvW{w-EOW3ncx>bIQ@SCr7ao{+ged$JW{}I+dw@=_VYs+-zp7sTl9?Bo-bV+8S zI^kMMyG~b0M`{((e-u{wyC)vv{eaqr00<#d`Id3c5Ic= z1IUqV%UQ&d+M{64eaOs2r>heiSH+qu0}F6ld);F8D=IX8xAAF)!xwx0l(F0JlCfFv zjM@$3Z+6@l>w1*E(^`6>8NL_ocQm zUU&l;ZglXGjQycKtCy|)nR!JH`!f@`fhV;M{L|J>`0@AXAd@F*DD>u_!}vk|{*}S8 zJ0ra@n|iV(&|*Bl;ce9swwblNQ;nXKpDgwv; z{usJP`*)=H{yD}gepY?4XeSy9ABmgk7u>IbSEBHWrGeQCg+5nlEx>U2MZ6+D2-N7_ z#QP!I`7)nL=|K2U`*0}7q#T0U5)PIBne;!zO|%pH3%MAh7g<|>y0cZevE-A;J8iqO zJ>N6PXM^CeJ@8mcc7XTX+2XH^uatb!i<8A$szX;jW#>xzh0kKdKKVvm{$MRMPpF2vP#^7voPn;bSPn!dH zLKn7IfTvBzho^85Pv~ibrx^h}Z8|?wAMk{Ba@jsFh%dwk z?s~_o--gfR0}hlA4sTs4-h!{(^)X|gw5FpI8qKGc=Oq`v9bOV|hvDtiQfwE#V*3jA z$)n9jk(=j`8`U-2T<5D=?+dRR-h;o9)2%J!J)M#C!E;vLL&&>w5n2!bY#;l>eD+3P z-r)nuyX;{cd9Ogn)u7`RAn(hN_jce_T>pxAj_+RtxAqy`)4YWC4azC&E6`oY=xPgh z4q2C;46aT162FDR&*Lv7=X&@tHmDXKK)7zmZG)u8ZnORHoNQ1FHYhn4y@5YR9j(r9 zZ(LS&E@uglGi2YjHUA9_<}vn#^fSTfS}tFE9`CB30sKDzJ^7wo3vSV6315#~Ao~P= z4!}Nj&cwf44Sny?eZ8aS!9DcvCVm;roYbAj*9P)5gA1@}A^DTV`?WS|&kW+W#k9>e zL(^l}s94{Ot<(EFbO484KP3PEx9pRt=T%=VdRx7Y{x$2g z#p4ywSv6Ano}@c1}@H5QmdiR>XZPRsrI~&dZB(xhI zym2@ESYNm9N91Syy-Vc78UL-q+wbhfQCg4Pd%v^p+MydvZMt}<#_5ucO~8|mYTWPQ z+=@k98$#_fyn=si{0LLyK7`-EyYQf2(+_{T(AXWvb?~Z~{K3cnw6djy7=rye(zcdo z#5373qT5J2Yhz_qr#Vk)JmP25&N$J9^G6==`Y}GT--h-p(|)Z5A0vk`kv@^xB>FLh z|0thK>jAoJhi&L?K(_#gaz*GCqvO63;CK0u@`pM`U_XkSuFw82b^ElP7>(TXUep=Y zB>SZOrbqH#$6WpyW9LM84cPWfCcdH#`7$ZmP~P!EzYTXZ{(Qdkqk8-&>cf7thBGtt zyUza|A+Fc&D&{hDKfz#26UF}W%aT)}>pb#^KK|R8*Ol)tm{MvlEIuu2QoG~@o)G@OHIG;jzHp&o zlKz8pC~fL{DzKqjq%VuX(;{j;4eY|>F<`%$_uZSp$r9RL%J^zUtML95b58B>tYA}K zTX>!3gu!>-%L~A_1Fj`65v~bV<$jt!Ri`rnx0i^wfmL(fn!ibE?b%w!z21-c!sv7I zU@fc*@2(B(ZRcMzxfPyQt}2n^onzfk@osyL_j1YMw3fOzM8{{&=d;w=KKXmVZgD*V zeDJ-EdDo=dy)_0dCBx@G{3q{xuRg}4xc%qUo!E79&+vUa|LR|{>9t#^zeblDeHQlW z$(JKH?+?qY@6{R~(N3{q6q_qq5nUW?t<@z)cHoz2VzSxa0)794$=UvfF#x-fKjtBu zhp_+9Y48VaNRIBrUPc_&NKtR;ZpGsy# z?*i=wL?43D#2jt0vS-+9QD-oqs<${TW113^d6stU8fDoh<*Jk7^|hQ4KwH>-v+t16 zceE#ct7imfOuB>I3x0Z;+EG8Pz!R+_M@n0g8QDMaq1M$2u6KdU*k*W^_q$x3y~X}3 z@sYfTFBZi{hm_wzr^K;ul11%B=j9u`HN`3J{fW8&$*gM1M04ez1h>Y&>TJeNekzZe zb>+KqwUNhKGmGzO&W+9QVz-Gs)czxSAG+wiYM(7_4UXum*6*td z9uyDM^GtW`5I;ZS!K-}HSi^658&&UQ`E1wbLn{~ZJoGSshTqz}^D37Ui}gBx9Q+=j zmLtj9FK<5;&Tqvhc?O(M1Lx8^vRy9E2oI;RFI+x4j`<*CM_<5ReN(XD-ne28XcXxpg`A`-gi2)u@wV*Mu+1&HUQHy`YOO)>_o-}l9x%& z#8*I81?xrRlAlFxrXw%Qke54<7v*QP4!eSN*vh|Y?|`%Y`X9xpsaZ}}8)FR4U5PHz zMaBnVtVw8NZG!ri+@@v$Qw7)6<_yR9P?j%Vy__)&NB3pf<+Tg(!2v_5+P*e>DlX8w`b=!lRJVoy1>}zC#aLq+(38tkPTKpS=c9M z!;UVM-`&D|qH~?MXJ?W<8;w3o^*-NgTt8vI4IZ?xzYZ*S1JnD47egEMI|PkK@hLgK z_lJj8ew6P$0od)HEaT$rU!b<5X5WBMnf0G*v_5u^r~f2J(y8Kw?%Gp`TTb23{U&ljj#YLf%$i{0 z?6UIL|7`TwiPB%Yd7gVVN7D%{h?|Y9i5B)YSwJ4uU29n?a4NZagIb^s6EX;Xnz&W)BTO_3%PeS_c&WU-M;o} z+e@3jpiSGS8(#W^3qFqcW72puh7>kVZJB%*?VEgX2F_j4z4(5D6MY~!cdAWrlI#6v zfyee20spddyXnt;9=x~F-^=v(nwNvTcsBDj;6grs5}*Idzuk(@pSMD|H$K1M|D0#T zTx2Ej4s!BtKzFnidj5U)>7K6=#^?91rSX{ZXy(c<5Z|Cj-3HG71ZVQ~QoH#F2I&st z<1v1%8Jia139~0lL%eLhQ@rRI_MVy+2{%nUarG*_Bj3?{2i9lUKWf_5Q=5|LOoJ=* zW}*m~isgJ9xs+W_6}$&*MjrrM64+G#GrAwJP2JA9Nn5==>FcR$@L*-%F^gaMn}W3t z{MLB*)!b7%_*HyobTe=yfjJ4xZ~JFJC`Tf>b7yjo_f@AjjabCKr}#rWXW#pseQ%Nf z-VDh;XPMM~WJ7Xs%-DD9M{k&!WgAy8_IvnW6!UE33_fXpb@p@j@yts8wU+(<$wpoy z)Y%vvPW)*2MC-+cOYnGK6Y`)j6ni*Na(=AOD_i>F6}_u@?#JiC7yi3_@pn*%uG!l? zr};z551pFEeTZw8w=G|b_T}(vtJZ$PuTl6_yx_vG=DTp}!@r^*FihS2Q03BlymPY# zN>6`zdF7Ey)=Fjc-BLA)P*eyR)r`WTsb~tq544qBjNxT7F^YE`zZJw`b`FPWR zfj{m$WB3m{Pr0k1;{!amHb!hNKg-#lI>*x$HIDOgihNA?Zw=o$hsMYtxKyr^;D z&mB!yxbUNVrzrFE(Yj9>y%v=F={|oMTL7H0Bci+f>3ZN)EEdE?^mpBo1?Vv`J@)#y ze0o$N3u})p3!^PhFQy+~7ScQoUZx=vg5$q0g`bBQUk}(h+iwN1-NQe8Z+yL(d;;r! zJvYoghfnD9v+5p-M{vng zd-&rV8DE#wzYhK+d%v65B$=p^?7iDt?-!j^S2^!=ubn75$?#wu=df7)`I=7$_$rR? zZ1a)r=%A50rwv{URmICxC$F``{goM;uS}pjf35MB!c(KcJ+S7oPiCJJ=x22xblBps zXJb$oZ=@Z?FDZ10WZ}2)Sp>M0m$ACgzHfEMa?WWCzN0xGjVJFo$0Hr~t$xrg=-X94 zYxy1-^6}l;hRkzbmi9gE-U)9p4&`nXzl4Fwtpx`S*ql4SlP`xQChq5KQ+P3z^5YKZ zlfp(++w)7nOR}b*hb(^oRZnMx&?h13j3;?!Gx*yE{&slwa}2(sXnHiA@e_^vSUO`S zW1)Y^nDwDHN@pQ&^!!fP?E>;5!y42rwlo596W z+6514Hv%4>e!wQ2Z-nO?sKZe{wBG-$mh7W=u;(oKg}zVtUQ#xe1mpRXFkJVP*F)vP^GoUqAnKWxqyJJIlgf})iqOUTbvtf_+8uX+&IR&-c;)_-$6}Q`;fXfMqVA6l9~){ z@Jm#)t9*JLF-vMP?Mlw?HqR9EF1k(g z38I(a)tKM;S5IaVv)FG59I?*B%=M&zKQ)0poWRwxx)V)4S8}cK2}e!+z)=NzG5&QS zdDSp5&*Gncl|xWFX5O)e`7Uy4!Yy&z2$R2GL?1jOU($=A{k+~p=2)@K%jzZ=SS;_# z?~xAw{EWVT{dj%@Io#lSp4b5T1TO7gS+5)#^r&!RU)yonw<~M$yQ0`m{N=LR7eY5G zPBeafY0tfHq+0~9==Qz85+{&T{tNx9EsEewE~6ZnR39Xmg87W)S@6itnK?7TfnLjp z*DvH>a|Y@^PHg4yA90+Qkb^f`$R|qEW7)_&pvp!$N9U^ zJaifKn22s=KCYa-1Qd70Tk2OO;d|ws^j-S+RbqDWxAxH{SGFapJ^!)a$+kFqjehgZ z(kQt_&f2@uVJ@%~S_*F|@>k%l9iLgXOPcSzcrtmL=i_BntSj{Lb9HY-9rk`BmO4fG z1;3A20lFhHNxGx#8J&AVe>y+N_EXJX`!4;M+#-Fo)0gJII_S%su|QvEt1o2AQJ&w| z2}8AZr`+)+aZwMvBB60fPUtU1f0F;;*ghQW4?L>2 zKshh1!4z%&dqW@R?>2b({%e@?d4Jf+>HTSxFRUBtY;B)QuCr=-*(ko>wv7D%>sZ%E z{nG7?v98^$8@Lu7CcaYaB3iu&onw4wEM4{3P05{fkJhx_@QL?U9&8J7CLFRF4)t1F zda#sx+)q^G-b++tKUm>3X$}J4Jn(+VoJ-vejaE+q@4%dQCp?6G4`WM(r~GA3S01p3 z7=z#(M6F1aeY5PGPpjs97;~ICpW;TxoY7F^JoZMpQ?$Ph`S5hprH3^qDL5WF+qqx! zF)7};>4`%t-{rg3SD5^pS*zsL>l?Xd{L-VpzL0ei*a%(IoK6IoB6srd@81Oux8F)0 zv$T%q$r1g6HcOoRrZ3RGaz#NH9BBI>*InA$$ftgPm(OC~PJSMG-^n|uh4f!gKU`zx zcQX5xM-0qod+|j%F#0fW0%qf5O+{9@9;P4F-K$n*KDy&oblXU3Rjwj$T*zLV&#_l$ zAvNa(tQ{H6xb`qdu$OUN&A1*R-~2~lS{LE$UsD5JuyG$cR_m0az@DVmG{u=XTJPsh z_ISsf)d}vT_mjw{!6)*XD4kY@on0iG={U^EK>KcFq#GSNm|UrctBVecUgH0cf{&J5 z_-Ghx)*oF{OMbLrXs`80iM8=A=Q`%AR&sWu&(H1yapOyw{p8Pur^AE$=IONstoIn) zR6-UG?!6x#M%MICB2fMUn6_kJ5un&_p8ox?$ee7w|&8?_O@N*0bb>+_Wo>#OKi(f#+An7zaAO~DhYQS5~Fs&P()7k*#o1gbW6 zUju8J;@-NHJ@7zEItkx+ukz^?@v@E@YLptVixr`=y$iwJT<5*yY;ZOUxMq?^g-;UL z-&S}a_!sAiZCg4XLm{vE|#1AQSpy92X85`p*p8B?J4W`j8= z=i)oxNQ9dIC>mCu>G=a8_PUHlXp45r#qZ_tK5eCHovtFDKf?3m<@UewY3vrb5Wc>u z@1wo%C-7bGwXj|?F@v!Z$Lg6slu=K`=MVVozz6^NdCpV$!s9I2Y3@&=1`>R!PO_6Z z?9K*oRD(=YA9?vi+OG+fU33m}l;mU6ys-jY!4FY*!@UPQ_~T2FcgprZ4o+fx4e_$r z+4%Q0)KrX@pAQf7j`&bv(?ks!^k;cYw}`0G->B>(xAe!br{(1<&iib0>J#9t84n_sr1vJ)YYO ztS=Pd2m0`-uFZuG^0i%bhUTUhoXnVbN3e}Q6@1T)z2}14Bydhsd`5rb-OKi)N8s<4 z5zhH8bSmfhv#Dh>I{Y%xIlTWm_E&Y$HPy;@FgE;*^O~K3=V$93;h!8+qjTE%J#`7R z=%GtQ5AbSofWU6-BCw0sz6~w3j!b!V<#E&WywA)fcsgq(`dw#NCBG_?ML*&#Gk+~! zVLV?DZ-HOoQ~NYz^JrQRXW>NrXXr^Am#7W!?`Y3O@LvV~)ut03c)r@h2j3F#!985$ zz`2Dp7v9gIkK>_d4;%oyZ9A8Iol4uKbEdYy)tSk0T zf=e@(11|qO(Yb#!u!tTr{m)DIbet={kF38}@;3ElLy#5ZB{HV!4AtR;6rUqY=ki>l zmfz@NR*$(~{TLxpj{}3EYz=QPVB5=4iUdBAadq1I1=_=_d;rz$^mOiZj_w78p8a?Eq z`yb%C)wPOQ?eo&P8@U&gU6d}Qf9qoicIol8)3fjn?1=!sB!O3YKFBZE0`Ilz6aQZD znEqJ*qyFyUy6lqHGR@=r>Sp#pMOPQ|srvP1c*^k6Dew`zHDaH~TjHe<_aa;mHCCNb zGO+55@QK%-5sTEEF^1fVWM4Km1+U2->a1OBd#BP*BvN&Td&lZk%BOhuV^5sN^(y$X z8omtLeCa*uk?G>O;o#*Mw*D(4p%2g4{wy3P(Z1~0NBC466&4(i;D5kR!ma%K^&dZa zJmJpr^kDokU?PV474`4(cSI}cP1)CWY^$*c*w@v}GYA&(#jD^|I#0YMzgqsmBfM{~ z$%k6aZ~5Z)^O+4>-EqP;AV(XEkF$*qa=m@|=+c+DVzSR3qmP3XM~RUd1~eVuezL9q zG1(`N)nC|)0TT_u7|`1v>|o6x;x*iG_?CP>lplfTqxaP=O|1;%(mJT)Xj?q`Kyq-S7;!sapvm_AL-0a6Svj0oD9`I${ z+E7k)@uK6nZk$w6Bwn_8KW{$$|-|98h#~OV>ex+zI&!IO9 zWUp7K53g_4N48H^4O6_V6MfS@ky;|`$+c$?Z-_T0Eg2@$3^y2$JP*M?F`#WiWwp#Uh2>&0Lg=^Vr$yWzBEzvnxhaGbc7VFx|BIshl zg|B%)^*qWiKTOS-@d1DlA7G38ZsP+8PTCY++JQCO2lx)K3YOd9XW2`|6v`3&v)ccr zj|;^Sc5E(q7ca@is6W*&89R@iDbW0cZ)fCVh=+tn`Rm%}FLe%q&jdgD#k=?v-^lJQ z;d{1idvQE=w}QP{`p8WuZf5NC6~XR)k@qjgZfjmxG~X+nV7s60M;nsk7;RYDGI9lP z>ugiW)*f&*MKD|0&?kN5l8t)kJ_cFRJL7YV>HdDeW5=XDTtf6^b<7&#)i`ahhF;3i zl(P@kUF6nU;psJDXOh+!NDn%^BOIKbO}`vE(Bpe*&=)d(pRNgXpr_}lX@Rd4zy9wz zfjBCh@2>+wZd5bu$Hl;Rz~tEA6XN16QRF5f+XBy+xEOx%+RfzAUZ7p!T{O^IShoVY zW$B4E$fn76`0co~Bc2b&l0Q~EKKyP4^zmgvwZY~& z2aSR}qdhp(-uL=wZ^Uu7cRfC+?BV5W53P(D|I}K;p7V*FgDN{7DDg1^;;Y_!);=$j7U$(x3M-dQka?G(C&6=vhkJ^kM86 z^IqAsm@Qfq(GPhaVoYa~_zL^)j$=F%SPN%t0J1PK zFh0#|sULDIHg8eH_%_j|;)clMnfV>};X^CGYp&;}*NfmHcwVpGmkrYz2j#9@lS5}8 znsKtF&i)gaFV_60=0e@k*k5X+g+tY^DLxmzUYPBzeG3g_ZWUcWAN)pI>Q=en%5j(z zg*TN~*F2}}vPW}&{}$peGhYU;Jpt^hQx48Y?KAUHMVa|Wd=1fb4fIRUE(9H*@*$is-Bws<7`<2yWS9cNjQDw`}ukgEe2|mNHIgABFb#VXT)O zn_fpF{J#(n#CsEZ@4J;LB1h5pJ12ik+o=xFHCvGCHe zj@zBBoxms`F3R`j+nlX?X2iSpJ|g%B?vLK;%-Q=GJ{-S`ok9Dn|J|9hkKgj$_KsM+ zs&JmO^+;-P>x)}hn@ObvA<8I$C;16Z|Q zpp!U)J+Znvq1i4o13ss+t-yvRB{n?e&>O`GeSFuK}O#4P?4okTJQ}=^TZIItBKdUre zmYgsDlKm@KOP0b`nYno8T00gy#_yEO2K_4e+t#nLG~EqNU3~7Ccmz78s_+*WLr{;( zZdEzX%hJ^e`EJ;+roW)e7bA1LXK|@_-qm&RP{f`9#mqHF*~3C}=q1eY<_&kw6U=$v z07tyL0Dim*Ui=DtxSF=*n+t!UhjPfGh0Zh&(d>+Jc}H-Jg;+}(1}msuXiQi?cR#AJxTRZ z{|uNm38q=-FV%t2mvB5D{TQJy7x=90dS=8u{<)Y>|G~3)32IE?ual`WN>VqlkZYazR0-b?*Bp-g@L!I_mscLA zFJHbJ8IUaFhl^j!Xs56EAt;L}0 zJO`B@0^US;VDB7|;6!E)s_up7+#Y!%f9`(BH=j^F6n@41l1cpFMyJj@D{h8gcdmKz zR@F{91I^m#xV_#$Z9IE6M(YNd>r=U&LN7&F|5G)Px#oQ4MW*C6@u@nMM(xRkPS{>O zkb0ShSXU|aGRjTMN1e_y(|HHIzug(&oW~qjT4%}*xBt0&P!QDfU7BlV3CCVl!g0DcFq!co)99biNqlh->|s=Do2a3G4?x*%p(N!DgWMy|d`C z7go0?uoqt3kjXp!C$&E5d7bcJ6OW|uXa0?vk{95EBzU-y@5;yil;4t*AbiNIH;xs? zrewx}KC}JivMCSJ?;`Q0S)<_DlQ%E%#-(+u^5>{^IZ1N?PL@7d4z5+>j89B`0`iVc z(Y*1uSo7-6L_fpF3vQ`C+`hyyezI(d*0kP^{@D#bzly)V4&AT+PI&Nn{DGa$fc>r1 z;>jjFgDq*R;vTpbZA~6PvWqRLcBtp04dnqe$NT=DfCU({ZAq12r0sw$F>CN;OOgfH z65uwrgm)L9C$2(IV8ahQS5?BkLhLJ#PShTCQDB#?SqS{A>G#D8$w}3qkgen9Ykz?n;RzhlhSiIbUB#n2sgZsR8mJxRU{vD})K9Z`znS}jL-{xDV{P;l zu>bxsPfsb<{5g86#n)4^f6@z&k2$uU67E}+FQC1LX{Qc6)Po24bT%*00iWx>3%x~W z(Y76&-OKX{bW~M)_tyE~Wjrx`Upi{}FZfAM&v*3H zPp8`JwLSIIaIQ-~#e(|DiT2V@aqZPw+qZs7F#nsapMCwPL-62CtEsVp5h06jM(paX{)e|pz6`PRez@8l(Y-&1+V`8^Y_x%k5_`+_AFp{tNDcc~wv%=UcV52L$e zudEJ4Hd$9Y(!{{>4<%{9eVYKHc7t2tZ?F29O@ z)qXSYXX+n3oqwN+!*`kd&PtOL-ZhQ!QkPx!h^aM?G_^nAbdAE+tRt3KJ2bo^wHi7g zgYqLg8(8ZPO*)Cs?RY0LUhSPApC*LX77*dZSTbQIbm9H zd^T+lZHsWI#TB`0oj!qXoRU;srE~lO*wGf=4)2-he)a%mK zLEP>O)6c@b_4*~`;@3$2psleH&^6mO{F*kDV-Y-x(X{vGvHTb5)MOo=Ib=JH;>V; znG5d2_db|np17j0DbW_RXa3wQeTBYDUwg!#d1lYP(DZm&HRq*-64N<*Bld=H)eBGf zjly5E;6)Fp{y=`*pZIk6beXF-bG=v3J(5r9N9Bh)9%4Nd?_{!letx#itKZ-E3FZ4f zn#rFL*C-Y#|D1F1@d@Pbr#lBxTzah(1{)_k@E~JYw%0ku`3SnNS?34pOOEcm?gP}XD2(xUQA#+Jz(S!eWLuH)}4IfVrt-vX`=|c%Q}@9^(7`QtRX&cU>+m@nF6V02qpMx)huW_D7n>T}#PI%+3XIGeOb?mp~^4mVU^s3v;^;VwM{9HNo6kTIm>R0`m=XR{~?nij< z$c5hbD(s_tQmrwNU!z!B`%+k13%|sKb3|k9y#XR#0`n%A7<}v2`5G!*i{@VC0pTAYt z>GxIk$=Mm`cc~tcU3O^-Veq5 zm}Z3XfDul!csY?Az=@cxeG zY{0vG&`=AxKa2Cycp2*_O^sFspUC~L=c-O_GPU>UmXm3x+{eWl`W(h@$uE19jwlBg zm$TovXJ}%0ATxgCXPtW?ekS=^5-+MH;=w{rafeS9WxE2K$ke>t%n!S_c%`zk&U7g6kipFQtd)`ut^OS$y_5y1~UxKEr>a6y8IRv@&k# zy2NO!Ln{uOxkB_tuWNyK%w7onc*jxPkoBC#HH>k|ch|Vgd{jlq%(pDZ*1bP$c*dSC z$=K7&Mnhk8+;wMW?CHhWKiRV6&6*br?SBQ^mWLhHT#S)bWM?&g!W#BbVo%bI_3)k6 z%GAOikAI9c5Yn0C@2@%sxd$JQvAr=(1s*9Q0uWcN<-pTU+iMyZ2R-bwb@jsYFj zYrb>$n4a(_$RQ;s(&q%P=BF7xnGX-CCZU#3&IOs1q~=NbETMIs^sl%=^SPRX5UjH4 zvbz!S0Qgc3ui*#qwOjjYq3h}#XOd^TFE@PGT{}Sa23rET$So!piBA$@U1mB4E6`$rPkX8{&%|`;_VR-3JOk~eXiqr+=>l7`x03cm+vnif1bW=! zQqM_;DuyxmAP*-QPm+H-;~+ZT_cLAvZw_)MoufVO)Rt_p=EGd@s5#mQ{(A)86rah5 z&KoJ;J+JS4I`%;G1gecuZH>X*KVht2WUQZ|J?XzVpS4pwJ-(LTpY*R!(RJy+&h9z2 z0ee%6o|Db5MYmToX00bUThIFXPdFXR@2k*%JAM6^LjR5AS`GTIHlY6`uYzGX_cS(Q zYVzyU^}!3w>ofnwygqaj4#f9K=q8>E(rv8xn)|{jG$IFq%!p?2t7xX!Rr#tY^F-yy zzi1c7hm-$#K0KP;ug6Q&4+Qun7yk{R-ymOG8?uJ+$j*rm-sDp@ZI-G<0!%g$LF zB7S?8-$5H9o4u23**06ccI&D`E7x;Rx>kRlzV*+4`#tm96}``YOT3G$BG2w$_y>2k z4$9PEia)1h=^^sI^1~DFc(}&5?L~{{MnenQt=r@6dslSBZIw&6KYo*Z?ia6P-@Ey@ zRu;`SzsC)l&OUcf-(FdC@&?@>H;@?Wt*h>+e4x|Y7cWGNgRJjz5)+zS+LX?1ZRZ;B zD&K9^H~@?Ekm#*^p6lha$alfz<; zn!3iDX`6l&$E2uZlRgO6l`dz@W^eG?6TLo=Z|OgzOmT*gx}P#y;>QXX`$2Gq#$u za6$u3{lIhR;9_Fh0igjK*YSNP_*#KKvYU1t0SzEb;_6F11Nw9f~ohESQ# zR#QLfV;OyP&fwlWr;9yEyY9r!?&h8GJh zyjosj&sbl-XKK|Zg4guiP{jZ z&*`2!7u?N4w*=R~!|$Fg&(K=BO*H)E`Q!tN7)LSqn3pMGw|g=u*rYn{jwi0 z*Ql8Fts~#9-0```j4p3gUP8J%a#9)&_s1R_%(*gWFv`^KS81Jg_3~M%X&F2mI8!hB?%JF#;#BtiQ2H)4v z!@!mCS@Gl9dj)v$fp?{S;A6o2_9&kZ`{1322e6(Hm_`3yIEm$^zwvDuZxXz}LHnvF zw0b_>#v-F1S-(tOE2n_mS^$H8EMym)K+XXP&RJ#_|^RJJ$Dbo1rW1%J*GYC)pLq1=Thf4SVAlHuI2c6;^`~&(do2J++=J>%k zFdR*HeF-?S-;J_nDB3*fnD71z?;75gKFA>>h45Q;+a90yl)qf~nM~W%4fo>Jh}JU! z+p*+#^f6%DUFh8Zd**g`Oo7h7@%C(8L*CWXA)M{z`C zTDY#%xeY#EjD4TUJ10`t$g>xo0$&V|nK&&Z?)%U$x*k33U4Puau9_-4_oEo?1;t>S>noQ|H+zjQ8b}=S)-~U*T)JnS ziQ(3Gc72PZS^{5QqPO_=OtHH&)!236JV@(Y@;()O4HOLn{k8r-OT(f}`?_Z30^H^e z!@mYsB@u70h>{3$=*M`bPMdLG(GR*ZPuytgGoY)*sg3V~dnA0=(iIx!VQ0hmXv*;w z5YrVVVr6@P#n$~Q2G#n{cJzVa*CPM3nA+S@>Kn+VZU2K$d)hI36fqYXJoCfAm8rvS zG_@kz$SdL(q-#ZXU?*AsIgNV0X~Yewolcjj&u(+foWAUx^3qZE`!M+va5BWl3G;jS z8pTcS^T^`M{7YXj7TKh{Y`ne3{Wk;p;#a<%ZAKp6;$FG;-l0jJ9Hrad&Ak-=K2N)< zT@vrJzpi*%{JNtQzUIE-Vd=CGbX=x2$^JXm&rQel=sv{=FKXR2Fl)W)(#_--+KoTR zzLGxgBu-EBPQ0cMT@)k!To`~ahc3EL@QLrByY@tHUP1j3ut|<3dm6{31p31m`y2G7o$IYI_zHW$f&BbRa z$7eYK|Mz%oV=%{ej?XK`r^DxuGB<7b3Hpc*d-MN(zvEQe?qvR7uo=8VAK|^+$9vj0 ztpR5X19@OJDR;o+t;-jc%oF>5&b#?LK(5nzpY8 zuXYYzcCK2w0v?5TwkTh$+@c%j8nh@TX1kQUwuwKx=|eomxFqu*)7ryf{PxFc?r~i_ zEDIke83Xy8+GYsoj<&m?h9Va&c}|jgBCqI zqdIfW7grw|pIt8;Vt-_f3VbpVf`S6DCX61T+pT`Rt2t-f2J{F8@Qhi9cHhxG%- zI=fa9oLak^%eRFnhJJOkyYZjNnFZDh*W2~N=tpuFTXN+ta`}HdX!Fj$O7Euij7Mu| zUk_ZSmUOZC-WX*)LKHuz!LCb#AMl6Fy0m)j87rP(%ocXl8raYb;p;{fkD3pTjJ4pwNK+__RL%h9Kcz^m_@_tPh{zW z_3-8<zCm9QP(|alW80iAdHEN9V!%M7eA^XB-9y$6TE~K-6!}u)^YHXU{ zmi&}w!?6fB76;&f2Xo0!uGrZDj#sBrcOKF0PZC3}_zIrMR> z*6|7^;U79=`@Vs^hMC8CJqspFkGIav;)}lMA)f)5ES+=F<3V7$26_bNCtZ9sgU>3? z%CP>ct}!<8gT`QDZrOMEM(c6D6~h0g9dg=@_ME{Ob(~Js6f?*1%h%pb*O|_|@6gIs zhXeI6etplrF{+2jI)7CDBQ;CS_#yJ0tMqvqJ^{5b29MB5Ipswo@vkR>|Ec^7M)aOw ztk*eOw@fi-Man0+;6!jYLbBMK+>%+_s^8Jw$4sW~a>IGAFo)o&Vp8CCIg@?Dz$1atYICJXoU*@y6 zwn07$Fd6#{z6?yU^PA+e8UGFbi#z!*EB2#a;$_F2a}{2pJq)DBp8phcLDVC;qxqk} z*d{YZatza)k2h(o3;mjIm$|(X@jGkcl;a5H^Zo?!o6{BY*U(}+w!6$7sU{=DI=aM6 zTMOl#T)cy42XgI%v)K zZ0%|2d2cPhD}3X}(eE7KE1OSy^~SHPeZt_Paf+G0(t0=LXKb4-IvWJ`)Q;8`*=0hf;IGJOARpBRVJW3+#KUNzHfa?$ugP(Zs<0n8%|A zZoyAm&OmZboJ$-1TkU;O_LOD4*$UB1`OO)kM^UURSxjvbG!rj~cCF#V+rn2@PpOT0 zyb$8|eEgCc_7f^Kyb#{MmNlHgvl5oUpUW;gzp0(J&Hj6a7eZ-X(3xj3*7;jrnC|mJ zQoH~SzQH&`jHe?wp6?#tc!vAq(Ol!z!FKLEzIH-^c0Nlx8QHqalOb~TMV)th--&^X z3hy!B;~mrr`m$x^YC*m)S3WLR>l|-*P_k7)J65*VDwfWcE%4c2**b7RMz+QRv)2D) z%Y^tP(Z{`9&u71%{abYVGV-N5{LA>X^7MJWUu>@DZTzf%e>$JVetrIXO@~%)WnRDu z{M9pWlJxaw_I@0RaqtLsF^V2Hah-HHd}DMtdco*$WZjcl<`~iA?CZrIro=dHc0UP! zZw>n%ZJPJ=zAq~#)>Aw1?nu^{cW1q;x}5(4cFms|c-y@C$FV0#-+wq$|JZ;|vi7`&Kg?teRQb=Tzk`*_SctlHFcpWTC*A7nqIZtr|oF9!7Xs7S{Gb2G7k z$$`$p?<=5=g8g@=DK|Rb&yC`5$+vki8}^03xF`qgi@COhe~Z(#)PjIh)uPI8l&pPA zIIWmo)}sAyG+&)H4$;c!T7TVjy^WQiTaQ>NKs#y=eH>-xzi*%))!^rfH4dIi+(Nx) zpKJ1Gd9*fh3-r02cEp>b;mt4bU1AlKr?KStgZta0WhYAp%-k3HOZ>lp8UU{r&XXHc z|4aMc`hkC-ec_b$FU!&XUmCO9_vGsue3|!$os^NUn?1j0Jbq1GV7>QTYG}3IRkee% zm# zrnWNsGF@i)S#`efL3;f?e6Y*R_g5G`XiUekwwZlJqd2i51@eA1>@H%XT^yeV<6&M>I-*i?ewtX<`zQf;iy54T9D7%(8Xb85u zHk7}AKYP#Yr9ZRY6u#b%K6I4x!N-ull!WfuLq%(sR99AjpQTtWia-CX))ywm;_v0} zuSd_aCg7p-HDyV!&xx3 z^Iiwz>tvi3KH*VyyD4bdz&u(zu-_)ySF!iIQ}FUm=-WZ81 z&IK>@p_<;;dEfGkSKkYtXzv7nU(g_*n8EmHLwu5gPfXm)*lpaq06w`;V?fT& zMov`A8!(@qyf?5G0Y7aYaenZ88tE+Q`ouiXE(xFC_;_01liwjf2hYjgV28Gt{2cs< zZuaUR;K?LoG%-24%=rJrC90`!M`wNt*i75VlFiMv^StWit=&`X?#>5K$i9gc+MKch zs_zp_@Ppd7`LR}bAcpNS@lO`r4G%#3tsS1-wBu5pm2h`aKgMO~q4_Sxm7rfEn`s@L zsbL$yxI7)`on@0tSKodLywTS8IX&{LG&bq#mwo#E^qxa2nH=g(zoV=VahOkLjN5~A zw=VM8qS#b(x5d&^-Z{z!N92n<*uAwO${z)P2jk=@@t$c%akAeI>s{t3R+As2xiTw* zzZA`C@T;=g6JOrJxO%J)@yD~AyvF;(GUw-1nZ1jKn)7qs_UlXC$?TKCSf*8tYtkA~ z<{``)y(GE}U%JeZ&&M;y_dtFV=vi+(7a4t=fPWQZMu1hitc|@)>>g#(9m=n*7H5ka&)Zs8hn#2KNlhX2BJrl#XG8HOG2VGDx+O$Bx<>wJ+#@veSn98_CEW3HTB&JZlmDV@Q83J+GfG?P7og92%H9aM(qf9 zW{g?)1k(Uu%5}clSnPCgKSb?kXk@U;o6}6|MCjK;Cqkb@IejA6sT8>I2CU@cu*>+)z-zwKC$ucP6?<*!awnL&+{W}?vgke8IMJxR zH00OiW^&JY>T?z`Jp0|sFGvg^S0A2M7NuUaj+}yruNj6Xk2cOwaBqUZIGJPb()zSLiaRBTsFfJ-x>8Z(zMRcDk5c z-8k)IRf8O%BUJ;SHDVfPdX3opj9(KccOv^vzS=triuZD!1qFT7MwMM>7HA_%Oc&hW z`E2aG@^Wu0M@)NKcSDT-hI~8ik-H8*SGC;4)f*G|Hkv1qo{?`Ue^YQvE((CX13&pp z;MbXjEjjvb#s4(=3?H#Xws|x%i5^yLoA%=Zu*UJD4Xo(J6#k<2pdLyblEOb*U~)*# z{#&;+tV&I0Js!W?!Od!(xr}o$=aXa8TDC+@*tc2U8gXOSvaV(OY7d`$?AS?uh&z9rHi|d0nfi5M|m$6UqfcqN%0lFF=i{I~z%kmkeOT<&pBdgqJ-AS+YLqGl)`a$g`nYYD%S^B-( zE0@mt!AqD2F%oHhWy|8b{rz&ov99iLp;=QBY$N`^zK;}P&5{4kn*V{98Kafk6z~UgG-m!naRT1>u^4OJ$yCe{2@G3G^eg|>5fMY{zJ%oi~P$7 zb?iRwTHhp3Ni2blWqyQpeeeMI*y1FJZ3DdE!VBuh6&}&!%B@Va@StyOoM7kh3z;L| z1AMBx+siw9E2x3wy(I6YphJ5R@htv9C$@5*&cR|_niqF@$NE!dEWGnm_J3N+SRVKy z=ca$ed0O z9OHhTwYMi|+=m{l+_7n+rxVVkUUlzxDj#^%`(2IAHFRt~JB^3v&fIjw-`f&xA;$+D z&G(G&htJPBwa_sM9ko|tTr~&K(ZXrhr3P!B8tiz$bz%at$hfKtsqet%R&(w_a9&(` z!q``6vgWL`-Xt$Xtc|Yl>-{_#T5n=)V50736EIDn4%YW2?#+I8Gw(iW^oI8?I>F;t z;@N;cNT3hot7$J0$+}{a*}(r4d3QTT-Pid92dPujni3O-L#GP#h1G{z6ZGmy*wlu; z_xty9BlI86@3klA!4!Fu3UotTj&o}1%j^rZkQ^5=-=*kx?F-aO?$z!K6xH59;Nvm) zLb^nIK?vV}&Ek^~YjiyMrbg4(Rnd`i2xQ5tUKD2aI&~BUrFL!sJNS^z{{C{LaP)1MBrs*BfXGMUf_xSu!#W@c5`QOPO zDfdl|oVYg9lv;^Sgm=^R!wSArpnpr@ml(JRjxoep&{1;q&`j}_Cu5Aw;@QX; zzdE_Tv zAJwdXGJRCB2FUNj{f^g18prfu^kOqQl0K|n$mPdPxBP?d3k^_hTHiLp(z`FY3dZms zx9!4fd7>Zqv%1H|n4d9gVfyaxcx=)~{QgvfV#jOs;AYNcVLwFb*ZS`3c*gb@ouez6 z^ZlJ%WBZstwjfQ?d>^2@^{0Y%dpGTWAKnW3)UCJsbdONu<emhb zj=PvWVICOxQ00!(O{_4ko*Ea!&k^=UvHHDMeOR24^b75?^=N{+!0)qupqM!-J0`(uVKO{5 z!s+@KU@|g+tji8vsdf5+b))i|a{6lcOg(5ue5HLD1ji*~vTVtE@VbeA$(~=|8}pw@ z`^B5N|71`9K5etMW%@!cR|Ng4cKj;wM>~F%o&R``vu{(4IZ|T`Ijx)bM<)beh0SE*2?};=kf{FwAu529&H|EEJ0a} zF0i)bw6yHi*JNU7#Wj`>tzRD-;@tl+_+jaUWtDH8v0ip>9K7J$y^IXUtNYMR3GDtc z^xtYbHu`sKj~=)5kh?&;*4GQ#q~(EjZJgQ;&u7nP{Y7#}jY-6;LG^L#Yn%Y7eyZ(nks%eS})cphWTgW)0Y zEPV6_CfNYN^2goXE5FP8Mej6K&b!6a_4VX2nd{jyt@$HODRjAVgQ3q*mk6K6>4QCn zyR=^71oE5HkzZ=24*oznPR3bI&i$HMd>@D0@LV;|o1B%EJMlW#rKgp9(O!SnR!J8L zcgiPd9!E9SS{u;r+rYy((Hy<-2)ZC>r&}wG4C9xwKZ0+Eqg=E6QO_9<);5Bh19tBxbUO2B zX`4(fS9%_%F%XLzoc1RcZ?b?kKjjx&RccSsf;j!HQc+mH& zqTd&x&5pvAl}9dk#OT+7$jH)5>nq>dxX%1;^>SX&>dZ8)TF>)o<;zGmtX>R@K0!um zSl8MEf5?;Y_tie|Cmc&Rh%XoT&!qVqoCa}8U7nwx`2Tr(8}O*gJMaHYCLuwjplH#e z%}f$R8ZB6AA&YG$88ldQ=>og%^U!V*f&#^swRBfoY%?JsYHB6gHmzI0sSj)+zk7-kqPX zo-;aEc&~BxgY?!L*+%w)KG=`pzYIOh@5tr8tMHM5n#7p4ZA*@ABRP^x)Eo<-;aHTH?o6ia&;3+2jY>(eLNM@0#h}84RO{5e4aPz%vR)> z`oyjVc-}}|D2fdD{Ptr?TY5z9{vvUwB|Qq@m4z2vjNPHG=75K9gS`5LYj?njxbk2& z7XYt%)eXJjt61bZBOc^1t>uV-AE*G)GxPw<>p zJxgyx6*YwmU77c4=;$K*u{}MiqQ}m+5m{KUrv{epYz_TXpN2gc<;K9)!Fk$;O9G|ANY}NXZ-);yN>IbiSo~$ z@A7qB{dj%oj(X$NyEiIcQH(xqbi8u^f92R`FSaO{{{POu?e}5DzDQpcNBH`!SYI`o zvHaUs&hubz?Vs)69%f$oH|>vjl)e)BJa+~5;~-CNPyZjD8QG7s>bAkQ{bTIMdBOA_ zU6}13rT>Vr-2NlGH0Jsb@OZj}9(HnShwl_;-o-v@?Tzr()$b_)7J4Pmsb*chkG&%) z`rgywaa~uz#~OI|JT|MyxxBSFR5%c#miip@dMIq|&JPcLU*}@#{{8UiFk|=8H?oO! zZ~70rwEy!)&KVDfhMw9%--XuipefSz+##`pC06vGo;7o3|sLv?P~k1+QrKf>JVS5dr_W^T7;FmlG=v9p<*xZ9#1 zM02axM$ZC`FrR;);+o_kzYp8(LCj?6+0Rh(%CKfBpO8y~xj8hz7H91;F|M)85qv~8 z#&y@2of^-lEDF%9)1z5n|K&4+TYQ5)I`c9dA+G>W<;KDM)Z|#c&GK@=b>d?HXONhh z<&SVh2ZL)UJ+HXei$1DJI4Sz9)c*rK_wrf24ximT*jDe$U)+^HJ^$qGNmH}>u6`lO zS!J1ZJj!{TA=UASQ^gy_6W9JX`@5v~lVZcksd~nq^<>8sJ+Bv9Ku^{1^(g)g2L*4AHpl-P5Q(OMnmX6bx34DT6Fs7C#_V{zlE?6a6v;R1Kjo=SG@}Yz7_3e0i z3g;nc9POJq%{V_7AE29&P5AZoRfBD*(!?Io&A(?a*U0|p-;HVLz3}9N-pQ8e$twNd ztGy)hai590c2{~T88Um}_}=uX0h7j6?i9;UyrkSIGbMb>yd%&A+bmlh+=rGoo3R9o z^iMoR&XdqA4z3H}c{_Zoqc^GBoNe@BL+h)(o?(aUhz+S9Si@1CJqoPYT0XPy&?zM* z@Ru z4i4s32abAUz?b0II~ZGbR^zL-Be^(Ol8tGogRq7^i}B#G-!soy7G6F%vM$zkmfyea z?%9w$`q#T~l^M7sgF(Bq1Gqdpf6TA_)cgBotTk1?Go*6=?9 zgYeKNWO={7$*$Z=udDD; z+4X~W!2ef*MLG+eg0l6m;DlX3w%pi-c*K<#d}~%-@C8A6$?6+Ec$B`Wjsy&{2@dgz zt8XK{R`+>u%TIZ<*y_hf*)jh_8Q9F2I#-Vz1pmp}Jab3X7w6?5KifMJ4`02C;!xb%TCX(wvX7=8^nKok6q1VCZUIJtw6T)?r4q;Y=jog{Byl* zfo$__-Zj+S4x0Y2E&Sdxnzk#jWv1qOx22eMmueq%UOmAE7U7ppxo1+R(M^AyD=yj! zHtcoNhm`KCj$ieq^u3W^NzPvF0AHxrv`-hbIzCI^bLa zeQT}I@haj+^_iGlff!h{l5a~*qFzehp@}_!)5IRwJeSs$=6r)$mw5XVMMLn)V;tf3 zD0Nx~T}Um02GFGUI%)vSuQTGu6L;!-@w_T}r1>qiXyo^P^>s5=KQ=6hz12DLS4(af z^LymH_j}JBe}&lPlk6E>#Gb+O@z&+dJaha2Hf62JRVNJWW3Bx#&#RruYsczU^W;m8 zf|K3Ac^JZp7>GQD9udK74Sel{&WU$k-9wY;>+$9ho~k{F z-am=t=)o9r=GqecP=MF!L6fh`o{xa-{yKA*TsjQhdh$*GaEl#oebw~MPw2X;Mf(=d z>>}x$dKBApq}&>|&Wa5m1rC3m*MTp7pOO0BwRa&8UX(r@8!oGJbwl!PJ|*dMPttp2{o2)g(Krde#pj?b^uvQA<;)w84c`eYxxGp0GqgwX^gVjolPEa- zzW3T?q2t|0Gt27CUM%-{$y?|hHT!3w^(gr~#&gsppEc~uMkdYvg2m*=igjy%)00E9 zuV69fn}WM)BJJRJ4fN<|-V>fI9zhn1kj3%H;?a=47~WP z1;E@(452=z&Dg^ok@HO7r1BKAUv;X7<23AYu{GSI8gyxFI6==!5WMg6P5uCrEJ@hJnBvc6%?TS-_qtx%m0 zU6Avpkw5kyX(unL8%)=ov<1 z&6hj>O5~}S{7JdyMC9cb?hA;E_k0>pUO3BcRQ+Ws_5}GB-4&xmy!}Pp%0sM&U$U{^ zF0O7p!xpaGqqRi87UtX9#M_*Aj1KztmK@#mb?S2pJhfgFf}T-quVrxt5i~w!{Bq7# z4(#!ktg6rX-tp>leuurh=(^^X4YjewdcIw*9p3mSjG^b3h@N{AgKfLUq^Fy|zhLUA zInP&9Cn+rXf)j>oOmV_fGn1pB_-=bQhI^E*xLW<7ia z4(X+_cj!zK9agIN`Lz-= zjqaOuM|9u;?3}6XO-1&AP4XulF*cNOY;5R{v|kWipq|qzT@fsi?!eC1{0|E*>}hsB!hQpN?2QsgGZ_>~{b#*Nf(s3Bbk9kD&+ z1jr5b3-Sf>lY?d-2Dw5K*d;G1WZ3w#Kpotg=;cDlZzb|F5t}DpMBI5WP%|P2qhAP_ z_Te)5$9(2xZ0Sh~|D&($RctY_Ypx-zV@*%aezE#jTk;GUST3pU9sy5wwe=hZdOvo@5?3!2@$Kruis z_Qqd-$;wTo=^236*gN72BSZ8>(8pG>5*giu45Vwg7n|`Hv z_OTYF7`P9cwAzz_6nse+6Q^L8bdIQvoX7I4%YFHgp1C;1O#jQ<^l*-a&o{=v=l>Od zKMt(F1-4vzP58Ih+%ts2F>)T4hO#MdeRZ(y)pv+DU%(IK#+x0)Z;Ay$-9OJjeA4%m za`j;bvRod}2V~ROpKjzFTkxK35pWn=1TAvy+YL?zr8sYH%twQzozrmNg^5C8WY4GBjWz^Nw-#8{s(Cbn53|pFof%6!|A5-H64$aZz z(L}V+T9^2~5WY9_-tzv8zx4Qjwdp^YHnJXxTy+$A>o32&d&%;xon}p7A8~7k>WVf# zgKLyO)axvFbYFOwbueIA11($}uN>0)--f@wZ^@w>-7|ih{4pZzbM?lkLZ5QS`1PBa zHqQH)I_;bHFPZ;M_ZeS`r4PLp5YEn_QMxF=e>$LS$`363VvN{#A*CrFZ$MBjviwh{4={Qg?5e9)e^)8 z=J_M&r|J{RkNtc`w#3h6s>l`1nF+vDdqL>9#r=ZYkBtlskwMjubpF-)m(dCCmu!gF zMox*Dr7v~T7x9f4)&W2H^h<^^%Urqf&Qq8%I%f9A(Au$Lu$RT-DU3Ij&&=c7RgKSc zJgN8AKpd~Skm90Uf(1AXEWD=p zPXk*ouYLUY^M8cTMQ2&Ni_RM1UvX&K+K17h>^di(RR>B)HtB6CCLfCOISTLV^^9$3 zRZ z`&!L&uKl@nex{!H=YN(y`f{iHrOW2G$oU4&ZQQ>PIQ{E?&h`HIy4Sx}Iepe9FwR2s zI=l8595<%(fbs`4ZdG91ANpfKpBHn+%EDw#%ig=qy_XpJ!q&&!dv{rk?ZLFm;#$FU zsC?^^4GsTdXyc7TZ}QaaI8I=k?*_)v`MBBjw9vHj?7ej}v-j2q?)|!dFJot6;99`| zjSQRwq*GO2pQN!p`zc-5*zo({e(a}oU9{PP&obYk|6#88-;3Y=wHn+1UgHiE-^edK zb1UbC`s+cyKOp~pw|F4^68eRI31OFlae!>W#A#XEOAJmPgC2Wvz*dvT%rd@zm(@Ma zj{|lEa*|zsPV$Vm_dT1F)VQ`JHAWop?0Dh;!J~YF>tqY?`={Oi{B!N4)%Ey&t#fEi z(D(bYQ?f70y}ypXHa;aEzsKHT{7gkX{dopPe8@gv%;p&ZzdY7CN%sR|(D#e}E1>^2 zcw_u=-1QebS&t3YrxfEU$GSsnvP<2%N;UG7!Y-+PVrnM%aMe?kyQ>DS`rRgMtMvMJ z_?a}ezu=aYL+y++Q8L8+tGHL|Dk1#u4cuF6jT?}UeGs1RfR1}PLui0J>$&_`Mdk7eqX5V(aMH~4%aItIp+!bVX%S4%-{PI_82^bm+Aw; zBaQ8P1v-p1u5y|i0`&vsB8r`Vn*Z+gFpX{M5rO$Mm-3Y!=F8;ZFjk%7$vXX>@^NI9!yz{CZ}K#hDp^>uTt?VrEv z_P%WF$Zx%u9-&_u`aJwng0WoLa)19hzxj0hCUhLL9@*^bj~mavKO4^u7H)X_7`AP4 z-Z?FUg||L_7O%x$w}vY7CJ*eRo~?W|vko|s#}IVS`v!f3-=_b}UQjVzb$8BW(fL#A zwNpHmj9b_W{C+&I!pJxG%fFt9&Rvg=N$;dT+o3DU8&uiH=tsSI0t%|4pwZ%fWhF`PW%ZI(svQK{jt#jkq zHRtEVv+G>FzLxrzi5KhiId7nwbIGL7u?g1h2==uEJ6p<{bUyT%p0HYbp`*^!TFBXB zVZJNn8Oy|z_rzC6=J|a-IyWqdY>9Tt$G&wwzGV`z5Os?vy$%k1uov+U47%p?`h9}= z9UEQQ>MZ8BrIya0KWN=rW@@h;%Eu(1rN}e%Fzc<*#3o1BSo^x$w?`bMHS{>^Av%{V zO|CZ`*mVY3BYyXGbXGC7*7f#Le-(XIztVU=K~@#piWU)Yl0NXfgRD+c7vGatXkD&Y zzl`Timod*~@YmQgm}4(Cc{MSgzMIbd1<>S2^hc+lg=|CF-zq+j?Xh{jKEPlfOQ}CL;Zx* zwD;t*4oYtYwmgr1a;r5$9JSpJ$8{p{!o?c*)-AF<^#j@(*c6sjhYDyMFYa`3tx9~mSu^oE(c<_wvu7&{Y zU-V!Xy&``L@0X!F9=+SiP3nlVB+J(d7kI5Ygyuhc=ntl65`MfSeqYJ&dX??3=Dl=i z&6fw;X7gTl-~S8d-$%{)?B{3gmHJ9UF`lcg9$(IGOtQXEd$D!X^JjCOUYT{1gT6T7 z4UfZ*ioBKB2y&c#_=aNEzqD==rVpXo3b!Q7-FmFn!zD`v$kKFVU$WG|XW16kI+o>o z@;46oEA-^=4tz-pe&zBiC_4l1&ygMA&Xt|Atn7dX_RNXIKuy5E5vmWE)xbI!?(>dA?2tQ==Q!zbJj!mGF2Qwmx(XH6(0G=o)J{ge^7i(Qo;h5cr3{ z+x3k#L#nS-&bDr<1D_Bys>0{E*Ld%9u9X~B{dZ!!r-Skq^m z7{2GTd?&eE&8y^h&zD$#=e;kxdJV>_<1ZQ=uc}X2^|(sp61%u8q@8)H!VJ#Ho@`*_0svl#8d( zN!6$IJk)qD|9~r3KC`yXvo*bD-wbOOT${_gwI1(umS`TbSpp7u$YvgNH}Bz%^wIDO zy2}nIZoihZLC#{$-?ynH*wpItt;@AWi5)t{_a__T6?x}byL0hAOf1pKTB}d1eEfoF zrR#dvk^`a>eb`s&a1pdpY`>b`2+pb-?w^a#2=S~NY?o>X@_#ymp#*(XFPQ_r##iCD z`>>zd=Q9Jj+Yc{~csfvgnJaVp+)HnWuF-j?Wzct}mETeZeHGg(hbcoZHd*6Z z%Fqk-Et&V|MT1p%pcLAdLh}@~YoJb2>dDM>=x`DA5beU$t5z^~337(q-SYsnyDS!N zoegi~Pb1i>NaEBwdoag|O~jX4A2Yu6I5a#44S&J8{%-(tl2`zFB!72(ZLU1FpPOSZ zN96I~SiaVmMfkw^?3c9a>~`a8v7OJ;$f3-qBcHv``hd~ZL#H-#KXrfy=4;61rGefB-zl=l3t*E^$h%w6NZM!j3yf5@wY zByJgO<9P~M8yED?S6?9ec0txZD`$-(U!~_;yG5r)7gLpP9bHA<%xfk`{ubZ zh4KvL_7-yN5W^QURu?w%dY&J(7du{$p2<%PL4&>Y>o|PAl6$XWjAC@Mnwb1B@wIA0 zdxxx>y2OX9@BQSLVHE(g3%!h*%7~b*<|DHt|OkTa72UkDjFp;V8bm z2wjgew&EY<^Ll-iS04xUj`}!6!J!iPKSb}x4Lr~3F#hLx^!zYBst$S{1|PwH74X*p ze3m4z=J-*E(A4tHr zV)(WV*hLS`@smHg^p&q=?X^PZGV44P^>2t?Uxi+ZZS`y-6Z1f?B%cM>Tf8c^IVfD= zW%nDIWrvU9zsU_Q0+t%^UI^Y9=<+CZ+DRQ}+?pHa>6!@h?zP?Lx%FY+`;m3|gF5z2 zYs{xLCj7Twqh`Q+@kHNikA?74{n5w;aJ&3<*F%;7Z%{V0R^Z!&#eW=$g$-R9BY3T7 zlB8e5HvKZ;uEXa2IQjt#yMCMfeq7gYc<v8Umi8_ulC4}?|Pni=>_EK z4CYg9xp{{5WQ3lG@T<4J+_}18sAIC#lE?2Z{H`siwXA{PApR z1N(Vi+kT$c_8h(@2*+OLx{G+{h@NNX(atF+9$So$adW?{e>Ces%)NOEGBL%CL6jqC zEh-Ez^1c1VqMhWsY<0uDUh+%XwVB}62u#1jzSi=3bUJxVQLLh!{HTc@c-<4`I|tck zExe^c&zVcn|KQ=SII&p!si!h8b0@LgqSGSmGC4oJ&*6cF63+Lrtd>ny-T~%4&~S3| zow8q@R=7oWw}U)PdJ|<$r^?(D8t9B@-Jdlvd@XWbkwg~b@NOl%GwX1Yz11s+`j%3k zo=l&`a`q)aWA(_Ze%gC0# zaq2#b`xF;webUt(>deS+5*@w`JhmV!wdmRBh_$X_Z+S7cX(2qicyeCLerPnV06fFv z4vaf_+nqgDVatB}_kLoV=ZL>%5P#J`r_$9khHB6e)j=-7Ke;xZVpJM&Kbp`aU-Zi&1I+^ER zLu-dVD)srB&%{O3qa$%!a(Rq>o~D*#Vlr}@J^P4n%z7KN>0Dhlq&)-y6Zr9a!9XeNLbA)!L29{Edznx3%g;^3CxyAk0T%h;YOWPbo6%XxqQ=no zMXXcE4-k`e&E?*dH-_%h^`aHep)zL${G519I6m&Z?lQ63cyffIuJ7_*cC->Z`T{b) zb8=BjC9?G*^5pL&8GtWEzq|G2y{j)CI%4uVJ!_z-3w);@F>*A%i=?1S_J5H62>q7g z8Boga#5a8}ddfGnb5HJf_wij&Hr3Z&4bQ~~<@mFB|6%?w<==ny;9r>E!(FqzSN*Q~ zqvT_nc^|?b7MQjFV)MD6>s;@e^6c+n^ZQiuIovgoSIs%ayb8x~*JSfsQP((Lec$=q zKMb~g1ei(Rz5G3F_J6%V{(d4}aLWF#Ogr`DPW~H074{RvZNxhcc1pe{xzxg*V5=X) zKd_ddI6yk4wS+ZqpJXlJ^v|_EPCR~$-|e0;&SUQ6H-5L9gL$#r@1*sAJ(Kpc^f$6Q+Q%5goaU+&u-1jjD@K%QLhC#&+ospB1x^Q!HD69;NX&oA9xltXuEN$Hz`L zdW&5ppYL77IqKlA9^_tX4DNF@3aHCcnH%;(K_RrY2ZuWSAN6PCF75onH z|93I+7sofCOR57qz@Efs)?yFtz!#>mcbkbfwqf)9{OTfX-fa`C%L}m8&8w#mr4|W4 zYv6nI9!m~PZI&EWwEC9vEXMO~gu{5!DdjLx`HdRj0NzqyRsVD?wD>XpNA$V|n<6_V zAN4(KlpU|C=&-E0M(4ud7B4XSp{$|Cd)QxHp?pqzhKAfKJ>HjwDq=c67Q9sBQ4LZ)$E*`v$2E*+ z9HHq+Cj-$K+FCR1}b&Ro;7>ppH?8XQykqHLn__&#H=3c6mTzbJ{F>Et`r zg;j41zV8qm%pp6fSK}YRO)?zB|BLT{e{vN5?s`-%{+96n6Zui;@k6>P+ZqK%>6~a) zFJF8n=br(mqi2vpulav)^9kvF0oTe#z6Ac#za!r3fAA_j{r01QUQSOglrP-*#lbfE z=e>Nv?RQ*b`rUH!dGaXb*uCH++oHHmI_BrviuYb5KU}34iM;c6;+qV4s)Mi8=gs7Y zs)zLfoAS7RdY2b6-qnoTZ-u&w@l$!kS(R%d^OWxla81U`Z~Z*3n0TiI*)QgrlzwO2 z81av-_xR9m#be}l3GHtrcS8ng8-y<8w|$*fMQ^iJ5o1o1w?W4#JS*HLwuo?cheKXZ z9NcB}gnZUs-asz zSn0*g%{9=8JfL9U$MnpJ->>Q%J+5&yHa0;y_VH5i0|wnU0)uPM7JM67Unk#FVDi`n ztS_%bh8NfiDyWG+S@jLq9xHE)Vw<(@E%{b$qGKX`Xp5}jco}*;(V82qU%fzFY3f(x z4d6ko0lnHT|3Dv``V1f9^TV1qJdi?1;`EuyPBk91jz_5FH2&Iq{jGI8hQ0{5&uPs( zPF;#;Scnd0-u$Au@d!N}oP8vFARkmue8Swur(exn)1=&GlYu zp$le%@AK4RhBGE^`Gx=8v)1u$_@~}1(LigD@$KrDcI8VxOR{?IyU41&#g&g3{fX*n zdWdmkUw3-1`kVpJ%ouozc3+_fNv|7tl`WM{U$K6$t(5yl>7Umhwv&2YupXM4fuAaO zb^IF(7iP!h>@AK@ZUl?rr7T1Yq#$JZq`2K3@ zV<*C=#`i|=h_f!m=cFIP9z5dmP_-Aulr}t4FW5uq@a>ndrgWM0p*uaj&PQVSS|JTy{2P+Xaf`ND3@cL%h;6Ixb=&KQUhCvN0@l-iwYBezrIYl60S z!kfxaXyBRI)FRf*oF{o}!r!zn2vxLS0{r4Fa*@FIC|>F#hU{N&?NPj_^9ACvJ2lWB z-8A%BOdX}6ifdwfe7MJ>XAbvnqbE3;2s3}-z_yDyKN?%~9D2MT`rXD{iVO7IsDA8r z65DyCGgQ&n9I8kV3vN9n7Ighg0-6gJKQ47jgTBa%7l}*%T7EuEzd&JCMG`*7vE|L! zO1ra)eQu$Os$22JtTQaAlT9~qyg4gMy&Vg9W@zoLz!aEAXL64C3(x0aR}=#(SFjZa zH#2r=sN$>AHRch0642GBS1+{kX{3JF1vYWDiDC1pAGkU9RCOt^_on+)XV+)dyrtjDBW{F;n)3zj6Wo>5a#UZB6T6g6ZoV%qTY&yNgijPb zG?wB5#nC(is7pP!=G@$VVS~@ma*G73w`|AGD6&2>iEw!}{4_uDuwWBst9of8`Z! ztu5Sj1bq}e{t9?+`!(0X57h>Be}Y&2rrKM3K6?W6{W+Z7fURwhg^nk9)moHb(A

    +lW!b@#9N#*%5a>60&q7t5x-b=#6dMegTq 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

    kmJ|=a|_)U)lAC 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

    jOyHE4lt7n!5A#jFu|C^_iPri(eRFx=-IG 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

    L0d>oZQ(RrlSd!;YQgkVMY^N5n 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

    F4%-(|ZGwP?8Ws5{eKDhzb%Z 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

    -HekA9t0I2S#7 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
    Kzv?k2 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≶RXWmSKsE|nQ#_;$bQ&< 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

    ln2vrE?<1ht@UvF=^^mL4 zfM11#YzUl#gqsK*Y(B-=&GZ3)d=W zj^qvbP`20~_+dOmi}3nI4!Wi^5Ig2(e12?}b^i)uu8 zsRJ0S!dM<=-48J!j4WLi>N229pahH@WDX!`8JmWC4bM&(XoHrx2_bm^4LE`ilL|tV zW1-zH*fS#E3&&PC%*Zy(i=YNzu;{hmodcU~Z;0P2#Ff+&qMcwPB4Lz3z3mDw)GDaO zAc!QY-~B-8Em6hUo_ms2>Q${ES{h*P#l0px$MGWSo(B^s> zQgZXiQ_KgU&DEr1F<<8LDaLj&_7oGln0S-MheAdfq6qPrVbljL0;=LqB5y!YRuJ0L z6r+FGkZ=KOk5y35DybkUsu#dJgii)y&ts8BVLnSeLMA@M-AMz(LQ;_k28%pjL&A?} zJy4yaod(uzJ%fk^@&_oXD34tP=H`@r2VB0EFI_^*WhR6Qu)2nkh839@m}E?3lO)6p zUC}CiZ}O9|ePxJ#fqa>0nFvM(ahyp+Me-!H3r?PxOSDTk7$z1MX@iQT-fE`{=T_F6~PP=>3Vh?64lmd0^}U$rhrf<3kt)ArZ_4&un0OChAF-1ZlB8cUIDI zQPMGm>`2GFid_$ofrUr8=fFaZOlH6{@qJi%8UvUFBdb zRxoc7_%CwQq=|_D=2*Et{sXUDN^}f92F8l!nFGILGO)~LTrK6Wfow&-U9kA866FxV zV8%kQ`3e&U$ePdxJ9;1ZiualPfEh3ke1Qy>Kjp@q7y>+n^iSGZgLiOT635}W2i&FPw6C-mIf$0)mh>)l9dIl}SC|*y<4K!*+Cg2Wb#MG;SKrOu4 zqmY!Od@WaFPclkKwwY#JKi-!`qc^mC&y7q$^tGJvci@T3pfU`}mB@(QboijwxQiqt z==8N*UBl%XE>^=NlJlE>LFAZuBUi{{Hjbx7`?uKt0jj^uL-0}gyvYlYQay{cO7$T( zG3E?k2J)24K;SrwUY7EsZ(wXAV~y8GFXsx3>RgZv63V-Q0>Kp*Gx=|^{Kz3@ z7PdqIWA@;`f#4c;eFc^<00-2<_VHk6+uqr>(_0g)s(l_VtGc}*&bF3T5UCUp#0v8U z5%ENcSpXqa6i7YfI|ad-!rl_I8retE!33lsen*K}YAIb?=`F}ALfEZBUx}pp0$>rO zee)rr5#19ip;(w>0JX5jXnL{&Cf zq)hW7a&~$qY$h>@6e2$e3K9+X8MK|P;BB9YDDlqqQ2&8tDZ$(=HOk^ExKx$N(&DOw z6WxS%by^n*`e^ z*d}2fVe%;#26)S%TB~*tFS4GIe$ecj5sen&SA<`_=PR^NkR7WRe;T^O>&^eHjP6Ac zH|#wjqdS2PF~jNT0U3SBKFW+keTruo5>faEL|7D@Q5Bq3VGl|up)W?J5W`f2DEIlE zm!Tm;2n-jj|5gOP5yrO&nj;9_Ursm!VS6spVSDaE*d9dh`KvAm=<+wZoUhA?x*Vv> z-nuN`0raL}wHqcE15WqS@ETbKv5!pUI-Pdoz6g%caJLc0Hp1OT*nUb9Z0?kFOmH~{ z$B|F&m*6}QpQSS4{(aC$39T;|bsvK)OTEbBF!B>qeQe4fL>y!f68!G(zD|;x6dS9;$^tATJ7JM=;x2#~N-IW19BTa2o`xrgz}D4@L=rTD@@C^%~fY z(D0i&mZ9M{0%{`5fdTck(^9&En&6bIc*~gz?mwN70p2;Ei^SKt#YK807b*lY36)_b zm-7lhd=0xr6?FDh8sZb&=AxBV0SBf6(nW#Qgq@V|Yy%e`huN1Y{|d#HE4Bh@4*|1x zfSe<${Sw74R_qdGVhXxp_9LcdQ(1+E*$CDN^0T)CvhzIq(R2)4$AR@t-sn272G-Yj zqpQ3cSZnZ%QH((En+To>G~+~X2Q=q-)&cCZN0kdK?^1!Ml(9>(rxbzZ1K?snP8%1k zH&}!57hPVU%XzvSpv#H69H`6Qx-3}_yAlnLiC#s9d7FL(46b#-U{dHAFn}Z&9D|=7 zHEh-2QQy-Dj~nYw2Hry6jpu3_S;O22#C4l}DPivYyzUUtVAB=0K@&^%D$6+RQ-^%= z85M`QUBC@1Rx4U*nEQoKd`TIT^1?BAdzW8c?KiISv*W;*@`O(;gf$Xd?9}oDKDLP) zPg6HzjKA@_|(Nd`G%J*7X*&q@a#Gj*6Rn%y`GE-uB8p-oW)N`gSuiYU-F zRwDGX=~6ee%cF=P1nrzv5{GuRE@&q~okCb4ZfM%LL6>vZ2B?g|X*GaJgy(&trBINo(e0e}LQzG-y zW+Z-y!?U0K{zdR;4X{N44bL7#fDVFZ-}~8je)hfJ!~}H1vwM65&knQNLnJCXU6;t(DZ055dzJQXbb<%M* zXw{p7(RGNn=}@lM1f#1Ok1h*Fue6UepmgL)&k}yrK$Bu&#%S8J9GbQYflLT^;^M&= z(Q_QSwn#;-0?#7kC1C4=E+BeGFmQX&xFg7J4-ydF9wH!m*tqDB!44aDaJ~7vF6ZfT zfG&Th%UWIj&9y&U?+?^vZ(UX$0=4WwSN-)gq=YYM@Pa1L)uw!HNNevaTnB3uP{S7D zEV$3};K(G()`rH7lyD<7ZmjE;bkBK7#}ku|o1>7EAvVc0u1-q{u@@P2*THV11!!=6 zL|qq=cL(DT`)(%ggvyI;U}7!2G)X-#UriIQ!M2}`v*C7(UXE>vZVt<>VdLH~+m}YZ zVDf01I7WB;E6u6@irV=mO?*qWKgMb=Av@W{VX-8PS}BoL^lI8$9X7Uxt$V}P*04aE z$fhdg`mkuAbGJHA;@i{Mx6;@Gf-#O8xTq$LC#1_40K{(*l<6E^N<_4R^#=_djjlyN z@uovU;5tq{uM4ZSVfj%Sn)t6ymi~L)!W{N1V2O{Bwz!4+KS@&`r^%gZ>>EW`Vpp1| zK_IFZ(^|M~Pnz1DCfB5q@iE^9xj#ZW;swM<FTp|xh)+U z_Z`##+rtry0_qwq4o_#hCEuVcgQgcj!bv1Z!Wbkl#v_mDF@sQt#_XSPwWl$AspT)yB}KSJQS7ghyIrZ7K-S~l#?{!i>!*Ml@WP8R2Uj7ev8=9km3kcw0o>8X>IsLe%<4H0N@FqXhoop9tFl zx;dE-Xo?ldc*}hqS)#&J2!;#55!jN6&M%#B4y%^YXG(=tbAVN6IaoCvasJ4@s1Vyu z&0yG$4qs7k4bT|4-fC}SVi$)|LKe$5&egC}$^llTpmhr9BPf;d;AadEej_+5mDi_fcwAD62N zSw68ke%wk`%T}RU;PST60J3O}s+BdO1ENiKh~x71ssnI&N2?ugEvhtklCJT2q4d0$ z;lk$+M*WXR*<(@mcvR!_&ybml@cGs#yEn?VMop|WH$FcG-t1>I5JS*$F68-)=nEN| z3)zto-G%g*n5PaG@m39Q7$ zz*lCfD>CI*8AO*~k#Z2@J-jkYU6CaZM;qz#)mf<^&_mgLOSTPxR%NM`S@QZUaa|U_ zF^jLwYTBCw2y}Cnx+#kw(5`IjsqD!948!vVXwx`lc~`do{%m$%HoHGt&&2mL?U{I6 zHoG;O-Ii@)2;DRBolIL(RYpoGT?AqE`!$->a}!KFR8@sB!cbX8F^McSc}EUAA=q{x z!aOSWz>Jz5%63i9kFo*#) z2=bREtgl;jG_D!dPK*UUSpta?8Sl?cxpdxPb@%3`nwJSnXKSvyH&=d|9bY-+)7i zMyLCjd^k7NWPT%$!|_z3(}!}^gSm2hu6Q(;Kc35X;1gI zb2*q-ZgJamU_;WC#IRzr&LdfxM&`RIrD?Vfq^GwOsHRb`;pQJRV$w1<|LE3oj039# zwLcg&hcDFJV==f#Og7CqhQK+dBaa+#iI$L&SeL>&JJdKy$+*b25FHT_ZV^aMcz!^Z zfcVONG0%S>kG+z|4j}RrWL%4L?UnnSb^(4a&s?0FuyTLKXhEPP4^Y(a2AQkNDqa3X zm-BTQ)@6tyn3*Nu45wsdMlThfH3hI>gUZ7HN`CaUd{_m=SV0LC*a4;{FlfM8SX#hB z!&FBKGT$mN0zOPdBg45CnrqTj!-}JAqbeI6kNN}tfw;fIXDc}>F|(2O+pK1-p#Kl( z$()AJ`ayrUle#L~EJX{X38A?Gi&xI);ny8MkU9vb0;T^HAO$~9gS7_*tu5wh{?-`a z(?iHNkv1ff2R(w0Rak0$Ga=0#s>2jhj$LsPk`w3(9!RflRAG5|j zai*@Cq{|^Ekht9(2S(7v1Qll3?ejc1NwEl5}j_2Xp{0y|2gzBX3v*k$Y03eL#f0rs^N9j3En?fwBdNrd%lGd<^ND*u1S91vCZ7Al$p)KE1 zY$KV((I%XS@uu506)TL!4@LY!ehcG|!*5xeNZrL4_JihX1_xdAlUr{x4kmc6Gy~An zQ|J$T9c^ln@oq`#4!WLlutdFEBEKr(Ia$D1>UGKAkXc71J0>YR2*E59w)MAIe3Ry? zH%a+arHxG!JASx|9jRjPQAwTOS*dnZ$~~20cO`$Ol0RRW>Sg0o>$ytxY^8jt1o3)q zZMn<0m8e@wHR)D*VW~^`KdYdc* z{ceB#h6=U5LLMl0h92*+g^9F`=OF<4#i86=uAVQKONzmXKS|S=TSqv5LBytq&pkbk zmbTE?u~K!kRQ`Z;*kpa94jKHgk@cCuJ~!f%V;^&Rh-aLQ@3*CyHeFNho>H}?RDNCr zvp?Ozj|D$0*&p=$h0$I7D}7d$x_hpsJ}* zn}fI~b|v}TQ*LxS?ybT5I4#&pT=?n7+obr^c{odLaqN?lBl4Bx#R8`eA!(0lZR*Qtsszy-$e$pBwVsHyc-mKAl@4UOn`-B ztZ&Gj96vLFo=)DRWMD)Y-eU$vIZ##q*`=z^&?@Uph?huhZ7XnMYU>*7ln}xfK&3O- zY@1dPDMAv2LSMO7UU#rg)gq>9pKYQP_R@8wmRHxd($@?RBi#gQ2ZcN6ZQlrzHsZK{ zMn3cEy=r}3jV`ORx)x(nj02785C(A()e0yCVZGG67Tki2%7XQhL2@ZjN(!+NI+8DC80;K-<9iO?8*uM)ryypQ?JvQ|I-Ix6xPilYRRSiXRVDgXF-;!{Wz76;eqQj*1_TRHNj` zlGEbHW7TPLtgqV9?T-<~keng;hzP?tRtfl3!D=}mGNB#Im!3tC%VAR5HoC7@`43jH zcdOXJD$NO9RcUiVFITabs@Tg_=2ex_EyK9Hk~pEmIxPW23sr|mz+jhW=>3PqA>_U= z$AR_P#!>WlY07%wxSyw?+GdBK%hNVoyrc;W^pEPyJ=Hb~1Qw}CYAasDWyK5DCpXSU zX^onBs>4Plus%isu~As*>0p5h{5`-f)hDrAcU5O@a-N0j(r^XDF8cP*AdI;Pcx#(08^CVk5*;*Gplm^**%a}*Pn^{Jb$j=2ai!& zb(stbicHZTc59^HEAmB=JU7$d&+{c_GF#f(#e1!49a!1gSk;=XY)!n^ZEcA6+8MZ% z?Fg`)fh|IBuCR|*+M7PQuD32v)8znN{@PV8(EE$rHw@EN6LmRWm$kY?RBU>b-O}lL z{~}$ku}_?-5B}b?YLc!(30W2KWzG_eD-s`Z^JQ-BVQioHutsTkqb4y`UF;r$NcKJt zPD*-cvX+qSrD1}p92*YuxC1hX%O!M2llie!yk0$? zDg4@3zqoUYB-oP9YH??Ied{<|Xa~hra7z%7586!OQ#E2&4VbbEQ>$2Gj3I5o96s1q zK2vKvUCZ{>fL3~`M!Zb-zFy=7 zwZ=2G*3-4tGqnQkqJ>d7yR=p;tJT-7t`%!&@214-Hb9;!Z><%#(Yd>7o#)?AwGY;c zhp6^3rKN5FW2sI_h3xzQa7=7^P^tqENOw_M2CA7Bv=+NzPvt!;6PKd)7v z)ygGp-DGZ_L*TY;@$Spps>|BS!_|D7m%VGkr-~ggF?)BLvD({KJ&)0-;Wv{K`k$PC zWH<9RM+8AM^HVd;xO(z)TlG_0xfQuS_@x3#DRnol66|V$`|oSl;s?3Eow~1`++Ty_ zTZjR|_mB-Lx7J#69elfzS=G80n_E(+7T3vjb#7Lb=R}De!uSxLG;=d{x7^O2I<>n_ zZmqM~)Mlck%Ka>xl_8waU4*wjuf_Iht8^?WCJbth;H-Zl9`D?y8I zw}wi$Lj9j6d(zMg>4?E!Fk>ujg2dx#B+6)E9zD}hJ>5~h)zOi7T;t`}db8GhS%Wvu z)V6b82M-~hc6rNenfDy>dA9e>B^UBY%9MgZf8@#y3G{=uQ6H%rLl?>ksYKf7|0t z0^3x^#VsSWOFFBIJIh6_9X|bmHe!3d^=N&+uUk7>o@73K6U9a<)jTV?$B=Tdk^4;K zSrLxT#m^?X$hi6O7?1CmQ@A)=r^dxCJ0{z%Ytq0clkXOfaq_PIlsP=Ko4ZfsqY-W{ z&POMkcepuor0R_G*vXOx@bj)#-0}eUcE;~Y92@ZSuCW0>?|Mh~bN}BZ0^^C(O)U{f z3m_61S+A3&i3tXRtW9i-6FMH~4Qi&oKXM$}>^(e?5`+OUfkCa6p|6Z>+c?MFEM%Pn z<6rH|NRLE9jyIEAR8VgX&j?y{&EP->z3m?gYLPuL7bd6SQeFnCRhzwt3Rt*R#7TT@`jV4m`oduP!rL0i zk>#|kg$VT!BDiQ`El8+`Ai=pt3lZudL~xF^5MdaE2+pwRU8=6ZH#J=Kq@@>O4hd6|*+#x2bBKaZ|3{bTzAkY&!c$$Mdm4`( z?h@VJc(kQUbgO-&jgXwE1`iP}1i4xSx^Bk=gjIp(uS&A<#pRS_r^sdFTj;sDD|r8h zySRA&om~Pux)?jVupM29_kZ~mt#`F9IsqEnLU=#g{9TvxbU8qmb-KKn>CH%8o~O(C zx}2!Xfx7Ii%i0rg3enai&RmUi=qF?9+m!JJP32<3{}*%LF^E=8aYrIZ>S$*95IY#T zHG(l0k0`iPcTYPf9se(`b1wC$cI7An-+D*aly)yS8+Fh2h>;}t;H1pt&}6|9bW@`h z>~lTTvpwXVE^)h;Kf(p-UeaaG#|}6Jn{WNBtN6StxV%ZJ`Bw0%H*}Z#x*0EaV?V&d zU;flp{7lzh+Rdpw)>ZSW%e#pc-B74Q+Jwb&$tZQ=vM|uX|qhok!u)BKt z?$MD(X$%@C2=c!;UL+aEyQ?3&%LCn`uXJy5ybg3%uXLAty4ohjAL>z0GBN(5dnrfEF<2>YY`G(wx~q-d<^5d)*NW)wW|n~Ch_k1M+TBBL z?c&h5D-8M19;s}kzU;|A>UP%rk7FZU2H_2373@Yj1Z{hk}#jySLNP_Ooo z;0BNPw0`Va)No3YjnuxAH91C}G)>LMjHxcfF{#I5E{e$}$0zH;h|p!Jjjo!S9NWYo z5rEB^9rv^bhl-K1SIY8GF#;-)HbWkxUDmxNzT!w(u+*%8Bn#>?EE|@gRXI@zz@6S|RZi!2@ncPebpjRU zoR6z=U}mPNuTXcGnf2g3p(@hUm*~ZjuMw&vw>o76bwk`5;%2NK1IG z1+5k*OOE#Rf7+A%t0()krzT6*_OQv4!#&xdp6qZ>b8U|VvSdvUB1?9%4m-#dzD$?p z&6Evrln1%;Gjq`^g`Ruxco(fgUP=0|3B8i+i}ZgzCf}t?dqtP@iqkp&JvDm#)cDaC zr$)cBkKB~a5>kX{$|fgH*=$7Eyf|q?u1g?mex{HeF}kME^FklcG#~bI(KKK73VhMa z__7!Kq8HILm-Ny4496$`60w7P@-NV(?UR3=-nV`7>-By&SJ}h0KU?o7dF;o1m>NAq z$s}x(TlLVWPC$k@n0+-;FE%CPRzrAo9u0reb+&t{nB(VUvZqS zxY+3lzoai)V;Z-BxpN87JM%gS0ww_~-X{=G7`EOTEB=oCp1hU%rW(2gI`5Od>f^q0 zXJ7VBcOpi1^+kMyKInf_y20ix?;gYTnbgo9Fn~I{V@6uNh>10TtWL6AR%LfuAvu%*|z@W_iy&Zd< zSa5|q5#S7@L{n#}mM9Z{5@nMtZA(6eNv5`oiBUqy=bLk`qF@cpI#(gL8p*q2GOofv zttN94{g#u7nO@cnT#K>Xrs#!@ZdDqb$LX0(ZgG=Bqy~vt(-y@aMwnNLFt6lSVO0~W#0gzQyN(H zdJ3D?RhNC%Q{0{lL5<{lj-hdz3Xw2l(zHh!EI0CFX6%|upr~vXsEFGKM>h}FHJVb; z)PV()UPwMzg!Ke*;Kb><5Hvx)=fDuq0$&Vr(E{HO3Vb)n_sq(1nYF8k_os4geyvX3r%>vD`PC+f1>A!OKSBITg)J$+o} z;c-gWCBYb;gqBm`_KX%K7B1PLmap_htI2iAMgS)p;LS~WWTj{~l`(;Bv|WlpIXomK z>2SBKyJ~ogDCp|p>Z;-L_@FrHFbJmFqd_?I#I`@UDCoC`ira<)5w~e18bBcYG*rGe z)Od9$yMHLId2pzBh^~1oR=bO8pB^fnq1t~qwfxGVY@IYWCdwp!DM-+pLt1=;w}z-U zhsdo%*wMa(!S5fUg9JS>q$$u&zzf@ks0W6~4MV^*+(tn{uaOia=s9k_G{Sssg!k1E zzSl;8uYu$1=N#F4-yIP=NXH}|xP3%R;(_mnsqco#{llXF9G0s8Ht_~iUMC`3bpJ5* z&tY=eP!Iy#!Xx*ChTupqskOaD6hsMBk7Jx1eSYXkwYhhwdVZ*U4{geRyfyBpFtIsg zo(y*qN$AMTjb4_re+dJ1`7m|aF!}XRXo|ZaIc_xie#+-3-1EUu_5M(K{ZRG_=Lht= zjFZ<5Pla|L8Nu%zVWZtO!`15H^2XufhT;6?;e7q@7QW!R;cD%0xo)UPi!M*ur6$9? zVyId^RIV8k_?AbPrd%6MZdo>5EgddD8sv}<*9{SSMp(N?l)f=o%ZwZ2h9HqBM=bNy zi2hP?@Nvr|EC*9_M*}y~IbY@+)8~oRr4E>9#pN3@tX_|M0K`)V9Z}GO+qf^ zB*`YAR*D3)>Zv*ajSaWeO{G4i>!8xgDTL&-l;WNVbv;y1*~8aG)LWf+ThUz` zi7KsP$$+W_fuKy!TO(bRz?KpIZ6nwNBiObPni4oV%%%kH7y)p@?igVn9VXq1l!L=; zN}x*90F^OH04Q=UD1idcw`e>@31~XNWzXs0|A$9Lw~uVZ|FCR~Aa_7KMk^F`HU)qa zb3p+VcwT@ei+wo4MFD&{BJjlsJb z!)~-}M>)X?bK+FRh=|xT2t~WEx6yMx(DNIkQljTQqHg_|)PNlJ46$fM4P(^$G4ksX zarB(zxjtH~8w~`TXZunCEx$QhJ~`TWVl>-48VGpHXmJnD!*6PfQ!mzx#<)BrjMqW( z$NA{Ss8Zb8qT@>aH6`jiN#GPaK-DCK@ zW16Cy1TOEMF=`7w#VDYg_eZ5323MCp7^U7HCGQypjGn@$zuEg^6hX$;QR?1Na>*$6 z*kGb+E+1w4^p9%V$@u7BIZ9nIN`5smu$f11N;$O>aP-Y%)Jg^@Le4Kl))LkfpN1#eH+pQS z(KosX*7DA}*S^tS_(G>6>MPKP<~Bth&!xoh&NH;1L>9Ez&OO>sqGK5yYuKWFBoMNk z^HxT+jw7g}c@!rhDIbE)TRA)`+K562sgM}Fwdwf;)&+4f_!DFOd&aWeW7(du8mW9U z+D0mmjAajxWsi(CzZso?R6ZXKq+%^JRm!RZ{PzbT9m@^`t8#*51j6J9bgRMo&*eql#O=W@WPXJwXRI^Oejv| zb>X`}yzbG{q92_Wmyy4HTJ&J!(MzXA4>TSwbWx!!7 z4BJe!3y*?yMg9an3Fv>zkwpp z{bvBHzIeI|tG;%6;MLQO*G^}zo=#Zxqj4Im#(W0uv3&+?gZ<__1Ey=+{jN<-`1%EO0K4tsx~4g|f;sx^n7DU<8+n!kLAU4~pnZ=to8A~_%ogQ0dV4oz=ONp1 zvG(N6?Z&z>tn98!w&YJfPPXj#BB(lf5(M!>6pq-+1=H_McveeZ*S2@U|J`GJXwp0V zA?diK=i0&oAa}>mKiQi+*{i~)RJy`o;>k07pKt~{=Vb5i?cVz3Q(`DD(XCgbNHPdt zF-0w(BHuclJ;XWCF!_HYFXUPVQNkJ~u3@}0LVVa-h)c(dMdLxWEMkokg_!Cgc}tRp zGv$gijpb*u<7a49#LDqv72STrc&EN$JV>35M(CFju-pr{41^&rsBSL$BTnh|9-6g6MEifzJhcX$k_qToD>$%GWHy_ z4H@^H+2WJ$KU3Xzro3Z3yv@?q*v2=|7dP;QznRQGpUjmX+wUhM7_z)L<#@#B>kpIF zedj$DnwMG4wmfN^zvf46PuA78F-TWQS&=pvgO|c2x#CO;>l|49>JwzqP>RdHN zt(+pSpCYcC!f%|y*G@_G-tn=yd5XGeiv08}m`}fbR*Nt8&ROd1vuKPSw++D$Nxs*J z8Q&|Hct82#z|1Ht(Sb4bm{uiouNdfTf26R z418^7T+s~7cdd^rr>HBY$Y)M>n22x2iCt5zr>1s&Xk0V4@VAmJeDgl*|C>E~7S?cA zM}pSM*(O+opQKHB^Y-@c*0K|<&=KKJ`>F@D7d?Oo!ismh6XQY!A{#`XZDy)dTblBO|S48h$v9#EASTj`kEku$w6Jg z=3MVJ@?Eyudp~s0wo4x!MjAwIm)f3nTQ-ZqupI+fiv)qH<)0u%erWZRajdI#BZRqFCL+GJ~bm0zQzM$)>^i| zds5aa;u&{Li|(2h=NTWI7JbA%a@$qyBDP&?PQhoA=9IEqX~`+sj5|hE^B{2}o2o+3 zI~XSR-BcH^w{TkE#8hM9GvD`P=j(E!F1zdieg8jePh&#P7<&~vCRW8I2iJO062iK9L0kAr;K>f~Pi#@D zBvVlV_2QL%y~5$i)rANoUIn0Ef-CT3tF4% zLAT5h_sjropQs02JX0Q=VZ1woZJz=9|A`smNxEkD45xN4)xJ1G?4#OOoLYYE47N;~ z*POf_^vLwoZ{V2gzBgSRnJyoh&OVz+9KrVKS_k^{^k0w`K0aMNHeGI>4p^g;q;Ts} zohD^lTo*F?mDh|+}%uzF6sB4 znQHe;xpih-7Q8;?J@g^tg42eXYW+-kU}<94 zYFtGq&zTtNVXZR@Ph5P(afgko_W{9A&2m1!1Zr z8pKgeCKy*&r#7i3neWM{C;|48^2VS>OMQpJ#>fQ-wd8jS^2RtoO-p@?wA5DvHBB^l zo5>yH+@lGHEKNA*d$c)qrzCUgVwh8-589ME9+9Sl$d1c|OG(uTpRIFT2zBEu|K?fj z&RJ~pER9g#o@pc0b+g#oS!~@b^X-|^t!g|l(?+OmH7d=~B{I)IF*gGUm6C-Ocs|7g z9E6HknmYLca-iB#G?BiH`yW0hy8Rp-|9Q(f(XHnssU5Q+BGw5Nj7kS>Lg_dIuSV&? z3Ow)3CbT)rjW*8-oS0=SJcpf_rP1bWLYoav4w_ADJ*A@gt1j*IGi7@JSGr7@ipDWC zc4#1t$xg<$C^-yB3`4rxNwx|~Ru!JCnQ#PV!XM2}iQ|s*x)0|x2Z!Q7@D;z_z@_Z+8oFV(&{ zN9?28SDadY?Ht(782`cajVl^|IVISU*)6`qd$ZM%+47Ou?6YYa)6KRq-R!0SI|02v zK3hFDTW+2WY`2Q>|B!`^xSPUPGQNdUf`R+((JXjwd1TkjQLE?3b+ZG{u;}|OU;e=y z_5K|Bb5dcbtLO5|kQAP@m7mX1pUsh9%@O~e!@r)xznjzag%dE;w{z4t zbI2z3=DF5Qb0de(0g+0IjF?U8^90oK_Hiqcm`6F~nXT668iW1EEKHKa5>u+1ly;+( z>c(wx(jm#>q@C5ywhoQ?yu_1x<;847ofQ;U%C!WbhnA$;*o=Vq=t z*U_T6Gc-PWZuIeUHMqU^+$g#S0*vKCr`C#soNG&udPjW~h59OlV0OsQ2+ZmaQqW<) z&!9k8L!hwgM|=z7Ty^s7nFk6An;auaRx$MKa1cZM$SMx58^~asI-NzDp zbFIB`+kA|5S$q6O@6S)P{BW{^xj`v`WYQ7!N*Uc(1Sh0mNK(}`$ArWfn{2e>er_tT zeli&!-Aql)BE<0QpO+GdzbEP*T+ku_d}x7saDn`EZXAgBfuZJ50P!x^o~l9k>iJ^L zd;ntP37Ib%XwR_^al$8kIN#Vg-`X+X+BskBn9uH>58!?8e6bZ*!cyek`EuucW5;~4 zVm=V?0bv|+TZ+U0xWW4As2{62+soK4rlS^>CFJq_abBvI*^taK9G|CtoF`Y!kIBW0 zAq~geM7Ztf>iH+t!kYPN^?bQ)E=LCR;nbHu$|n}2f~N=1ZMVaVwY?Z{e6!vl|!r7h2nWee2O1@bivCcm8;VBgw0 zo{t&(ggi=KPdTCq{eNS=dVRiJI4^KNkKUK^i3y12{srp31@eu#4lcWFp7`WE>*MqC zpF0;2#Eo%4Qc~1T@VtnC5=#!87~zBS)V7YQ36?t9w3K8{0=6fWO=J!*RKQ2EJO_FM z8XHm2j(FN&Cum2R#!xZSk<`g4t9|8Bylg7VM+MW7Udlj1SMoCF7S^KSPDwcdSj)vY zX!c?P4EJ4iCzV<_J1K64JGF45T=JBvI9Su{MW-aWWHHza2V`k)&3M}3TAd;$7Z{I% zK$IImSkp_UvFTOQKvvYk48nw2G@!pRy$rRjreQQ{fH;NFSB^qmCb-W*77yZ2(H{mw z=)WLI$Nexb!k+-IshLy(BxJx~mPiy>vpBy9wgO?~z&HB&Ah;wnU?$~*5%EMJdQiee=d^t2(yGz*RxU)Ml1C4J6TuV z6O&SP9z?^20s@v92s2B0!3Ah~tP+8IsV3kzy&nR^;r*l+qZ;8pZ;(c{7$X?MsD6$H z@{sKZy|QofgB8caVV;EtdOSYfnx1MkSm&;{Sc9e3!vOI~?&U$5g<(X<9bP01Us$Oi z#vAAK3MKNc5GM_4hz7F^IjoC#x|arYAum0FA$|uIIwkfS@!mT)+sVzu((=es&Q#Fb z(end^Q&0g+ZR2tSIVAoKeMqLVGA+v@AJYi@(xPUV7t-@_4_Nq)dZfa7q_SgQPIxv6 zYmnKWA$n>~Pcabh7nY?08yaxTE+>C=JAH#)X6Svpw3{<%3T(qTOP?2ieqX?=cq>1= zi@XR=AKxl{jNFDylsaR(o@BdtS_oqighiJRnVh`%NEl5_45*H2pmVF%=USdGh4;69 z(+~4m^(SXgE!%-Js0 zqq6w8U_T0Zy!p0~^*q*gR%6@6czLPYZ^$cKpJ#a%!TiO4056Zwg|E_@E4AMWlxr7F zxaR0GZ9SU%5;8XLW*eUHrOST!Uk@k>zRQ^&yH*1nE72GJ?OCQ_>K8k;&zZj|yHCzJ#%h zS#S{`r{JxwVBuw~dMOKE&S1j=OCBILW(ovS!L%`bfooWJ6$`9nVI<97&4M?wiW^w? zW|Gnd*Dvm+dR^2+Q^vXWL6=Xedk44#W2%#ms4|Kv$%gd6I{p;04{nUHK`jD+cb=KtDvC?;jY&Mh3^Q(ZO+6B%IDq zXV4EKE*R`139DpH3Byn-Yesk`BBcB}@LQmv--Un6f5U!@7XFm`SN4~{5Y{$$KL0f! z8V~-8&tWn+i=U0qH&-&Vm04+B1OP$A;z(%fhhXt@36~3$r$QH+N7{RRG(wk)Xj}jk z%o3dF=i0wOpB_TidpP5Bws?1r6yIoUBpU051Vu2c)%O!|SYgN1M{8%`o7 zwpRzXD&Xo*0c0!;U~L3_mFI_WC-QC@5>yn@4*n(J3;o%PIvjCz1q=8PF54FpRZCdL zQlif$5qS!L+|djh)e6)q+G*_z6BX@e2>DbI4#OWen9eeS(Tc2aCWFHc%M0et0E7w@ zg$oHPbtns$1}YF8zA9LGPIb7IY7=bjudS`|BHnv;hj4puJIcmpF^UZotYck*^_gAO zDX{W5CDc8)Tj!qP9=Qk)A`scVU7v7o)=OV4ST|%(>c$2H`?Ep8fun|~!3@goF2lk@ zLnFe&hmQ)6%p4OQtxgM$^$xKHt8wh~@c6VdLKDJgTH}0})a-O?Qea|aa`>!*so^OI zIy=pn9+)O)24=8X!L!-y;5oU!VsqM`8=jjzKRl2BDln(+yzl~kKKr$CJ`6y9!+sz5 zT^(A<@?0;79ByFkHEs&5$GDm0C4N9#R-A^s%EE(h7*!mTRQB@sVEEhs0RovH1nb8K zW0ccnYeIuiYDqAHTM(X9zyL34{L(gNOQu2La6O#Y{+lk%HI{ z<-?5razO3K@F0N8!5UgF6XF^Xs)C`WFsfLZTmlOp^mVZieOVPAn{DJU1P8cIgxZHY z1@@sWKw$Vd5(uv6U5xg!Lv6QkKWGLOtBb+k6C5qly;&fVvmNkGU>?J&0mV41V_Mn! zS&HR;BP~l%(WP+TY7M#tq!cn)dxJ3iPYXl>>6RQIdS%4wefegQzc3(6gclzM?YG7J z4$2&XTq6K*(x}B8$G$xu6-c&VD6G-|0GJP<4MU-DFc7It_ab4J0TYs1%y{g_uFhtx zEm0%?A8+p+CrMETe(zIV9cH?Fre|lv?Cfm1+uhsCIS>xGBL_*s0SYK0K>-sO2r5BN zq9jQI-T@LNXF<3lXURcCI52=p1_c!1_kC(+?iSGB`}+Rz?tXf@yQ;dny26v6r_xLF zYyiD94VR=0*>oME-n6H}Ip&zwxEIoj)u2nN!(DS3%JtpQ_+taE*J%zD8!v7CSaSh&4u6 zNU2szg-oBR)r>c1ZVGj@911DOXPTaGXZt~=ra=1r(;rm6pB*f*5({}Ve3)>CV2;WA zv7|={n?bRg7o<1-a^A}lyd)a&LgxeW33i@vETHuOx@oJldzNVk;|82HKa<|Pw1;!e zHxw_)cvz-MGO-PO2Ez7LYF*h8}C2D3T=iCiez{lZT1&q(%?fY8$X z*R%bwV_CKEbSIe1A-~n#?*i`I+|`aONyZZKM&m54Oh)B`0=FZ}0M}iOYhu8AP!A^9 zne%=Ptb3d$!j&lB zs8u|7?k$_FFRpauE2eYoP)D&n9c&#tad==T9U1Q>0f;gjH#QjwycuIZGo@-!1dL1i z7qpgjbG!W2WI#Yxg#9jq#7Xt~Vf$5?ob(pT01x3k*i*wm4W&KttIPpsX zp-tC;+t!Wey`o#HwLEx_rP^QV>+ARWWQ>N+ipCN{aBN{X7?R=Ep%@&PW4a1>P$s1l zWlB1EI(RUikxh@mfTcOv>}+0TZVvj*atv^EudZ*gtL0aR6`mWemCkPk7lsRE!PND# zb^Q&p^$QEL1s%#GMz04Sg>rBdeH8jF(Gsa8-5p@#c+?@a6u#sC`Os&yT=U#~rg`5y zH`ANvN%ePmS*Mn0=Ll-dx*iK46TnNrk+clwOc{Cv@R7rfsA{{|^%|hcFaEUrg7Enz z94f!KX5lb2XxB(;9o-qoH5(HTWP|b8jE+p%nk1bd<5S>7ItA);nqY4y)6+RJJB5r$ zAr#Uz<2ACiWPZ9ZUXZOP>!usX`sqfpVY*4YakiOknroymN8E@9-_`X>K=lj~YWI`~$by75ussM|L zblA*eb7?m(W9Fqa=A~rmN(xLm(v=jL8w+M)4F9LIFm6y_GLnwdnHNvW+{}xac`_rN z-lV-`UOHD+Pgk1+-4(BunQZNtnbpoL3pQX3H?$k&p|oVffFn_CS6UG-Daq2(xn@bp zZ^@s@-pXAmN76WEa;|VFw(6}WU0scIB@;(qFCty?JljUO<)W#6KHIsnQ?|X?PPX|Nr<};H$(~(% zWM55~NU~S@jjpd}-%7rj?I-)D-*e9@KU}c6A&}`}={j6FZbhcY$PnE3Po(Qu$v`;A zNqP`~7ITkLY}0e_OIwKs_MD zsQ9*|ibp_-d3j&b4@E#E><;mfq=&*`wVK@FCOZPzBBc@8NH79pN-)ZTByyHXmm04X zkK6>d^lBJh1?SXUuwa(#WwEQndM3Zn-6qrX4Xk&1v5|{RdWn%=n(oWMg}DT>cRE{8 zMS?^EV$Y^FJXP}Vh`cTGjs)M7`z2w2xd$D3dq~p9WpV)0=`8$84A^_ruXORnH#LL_ z$z>w3oGn$v4?D<~vQH5d0m?B&wr3X=JH-URxmf(pV3%NQxN&3QZU|kXw%;QT+x2pX zU#H_v*K{o6p!?n0{o-f|!};STr&@o+Axx4T|7kCGnRdXH{64+2fnGtzJfjK{gyAcX zK*j(Hn!uvVp}Y*LDg#x)G2#S)vblhPT_`l$wcWhjXIY$(&$zI%gI!5VY0-6Re#sv4HtnAx*#-_HynaD>}o)!u_K9tOm2~tDbccQ5 z`()BRI-lig$D zyG?eVk$X-0fRX!6N=UW`O-f|5hfIq2=n<1XZU~u@5~lVElOi~J%B0MO-6^cWB>JJW+my=0dj++O#FX1n)&Ni@|`jH9!G&^Dm>e~Z$7uP*40b6agN=3 z6_?9e-h8iT@DuN-aNl@lN^O1KQ2%YFx$}Q26R&#Cm9b!#Qd&q{v89D7KUtnN3K>XHzVQ+90Pe(;-HV z7Yh)!{xM=&aeI`l&5@EnRJA!OE>z|R)s7r1=})EL5eU~KnOZIVaDvwF}q*R`8 zWuB7s8Ij*MpM6r2-!-3oT4JQFD}+ey0Q$PLRXL@37T*e?OOP8i*bVuolwK9c{3A^3 z>+n|n``NE28)lm%4T=jnt$Zsazh|4budE9unJ$ur6ky z=InNBw5}D+=j&!d%_R-E`QO%U(w3DIV5VDY5HcQAxXN=XNbqB*Id3p^@-(I9cAk)p zPbQg(9>;Ez_)OOy-o!yDy9D^zr0gp5GDq3Tn$U5kd+lUlrswsOjk1ry%?ffeL2f47 zxN_SipL6AQiockBLB5o(l#f~DW2LW_zT)rQy4NgZW63wNugkYoGM4Te?wMzr${qnn z((*GDMduixj(@Osi+qG!-HSdVtuTQYKXFIWu7qpIVOfM(Yq1pb=^;=CQ$>|2b;d1& zh|sK$Es)ClO(~DReWI&23-YYlz(UePn4~)O;M0viLNRW8hDc1)-{7 zOLhz+G7zTuE;A)A70{2iv`j#-N!URLOG99(Mb4QeMFu}h!+ahlMRGnz+_JR-&!vTv zk|hOMT8NjR-^<3qywn&mFx`~C1u<7y{mz}cbSyb497R-JL58jj=OosDQPUMaYM!2( z_gaVEHxIpUmTA_l^)|~j^P1)L991n~*E-NwYSd*KXG`CevSP9Q6Yp)lzgf?zLIF)| zRxtWn3w1GqLS+F*)-sY~uPJ|$KM~c@9Z~~mJSXz|1{mpmM&josdr`6%B>SVtAC%^d zJs%qJJ2{hmH#;ENKRc*$AYvsJWMc0z_7M|2iWY(8iXOPUK9PGReL$c|p+oC{Q=ZVTjP3-4D2TQW^g>t`Fd|goj8F!u z_2(jsplDM}b^b1CzlCWPMUqW``KT%0i@LcqK69*WGC6asY%)E=rG6zlyC!_bnsz24 z;$GW>Ootspz)BlH#C?}DQgzbY9cN^kIInJ-ZJ&Tv@WKB=`X$*V-96bY)4;&{q{y?= zZ^<{)?}RgpstAhm2#qcmxk3Vd_w&w>u&1G`uIoe`#8jX>;Amr|l&8{R#!e&+u?~wb zxT=2oES+(z0$8YEC8g~{I`}6vt&`%3e84!s zVy#Xr(Zb$b456B_xRrg*AX42T1?niRQDiv>RfG=Rri!!`KCr3Es6eg?pf?%Lh7|P1 zfZnDEN6A$c;Z$a2PKl8KT)HZ1S`us5UPU3#Bkrsjjh!UauGL_OsTJx;W zq`Xh_I{{0;kSyxcG+q{?g=a}$pWA;Z|>%#-$AZghSH9-v%eM7Dlf~p{R`XI3X3MQZ##|svzHFRF5 z>dz6~n)Ztni1`;tdX3VOrQ8|P!&SQs!O;LmV;YZ~`WO=)i?o^#D*f2_1w`hNx7f%D zX5feE-m<<$BH4sK0ZRM3C3!#>FMRgnqTUK}orKqmhT1ZvbA0<)FahBGjG(}IJTT|_ zfHvf^qliYE$zLRWO$vEzNb>foz+M?lI!t8+C<9VeR>sI3>hSM92``oSHYHo3mx8tJ zGMM!QtzrgdOc}w9(MuJ}!)WwWWtyBX!GVx^8;97XwWty~2M~c#r_WUw%`dP7y=Jfl z;^ol->Q>6Jzd&${f+NU4_rOLJSHbw@DvX|l9C9xdOz4AMEmt_6ooaugkBsNpxtuld zB67R}At^FOb~f&}k(rPth4Hj{(;_W5W3V3Tr}-ts?T-C6VNZg#Db1>_0|QB`FZ0?q zZ=b^EVbx*+cus?~f6S0K(kxv7sEwbR+H?w3KQ+J;u+L2_rDWp#vG5*imDlFuJD@4o z0G^EtLYg-0x5I$9!T^?lYifC@(@GVz0qQFyG`bO6J7NJUE2)H?DnZLZRHmSi35W;- zh)M%w8v?TVb;xGYiQTZ_UDLv;GOcy0qM`u=g+8dLZB{bV!jhNgp{JSGYV2wgfO665 zO#Qj-u;vQu{DtX)Vf>LN!I}>?NX&4vcvC^z8gHIpV^AkE(`~ZP%A(Y<<|(9R`gtwU ziRn+vatEiD_TE%n(kn}QZ!Lk`+)d7lKMRPU4*pWD)C|^?sBAuq_?^B0P=4*-mHt8&8^mREBj)3%e zpD4F^(#0G4_?8@p5N`^hRjHj)9^augP34*y!KT-GUqvF!d|^lTSYaPxn|y#Pd|0!O zGF^dekKq-g!U?2L5ewLuw?g}7SY0>UT>7G_c`dZBhSd$Tjo|2zI36pgyNX9k0Vh1K zE$};CXn3{Z{BOrY#&h)>L?BmU;Gt~sk0k$1sH(m5h&PX5u`yRn@()@-dx)DS%uiQtN{8_g|~gaQ~E-6ef@N>*o^>-3#6-DA^X8--m; z*ZC((UY|Ze+})aLCe!#7w1{*r!QHObZteFvC1G!P-`o}2Yola8=?VKWxyK+(!IttD zZ7CemZnArE*Fq#^wH9a`eh|~e$Wr;V`hkY*YPZSlS;pHpJwUwnZ)e|;&*aDTOkotx zceEu79BrNhXkrVU#9`=4AzkY7jBu^ecMxmkpAppT5mUi68aq@4ga9(^QKKY?y%f8n zpBm}ZZ{*b~hOGq{&*pz+vR|9zCWHRNk7SvOaCHP#$lHIp$-sbDI;$kazt zpdI61WK~*+0y6(e+qEQ2m>7(6hK+Req?M;I7;T*YE%8xCj$}_K6YNraQ?d^PT-z?c zlcdf?yvV2y{Xsbh^Mc5WcrVLKlKfS`IMvsj5aAgKh5|Ijn}$V5N<|R#9738pNFVnJ z`+v#3(-FWGjJ$2R8b zt5L+^FuM~Epe*fx{%!YWVr|p|&*Hl?q6>iGcv#?)nOoYl4Z}lkOi(uaz}HL!u}q@u z%=V<{j}+SpjDfZ(&BhdmCiRg&h_4bia_is>|4)bHjyu`~g^<(b@hxX`YSN$p#8c1hYuj;Jo%;Fq`dvmu?W1`iI ztIeF1BL=X{^wvz*=m3+&>wu9Kc!-!S8pGNrL?z*tr7g?``SlOjI@@Yp@K~}a+crSN zJg-5o%g(8z*Ej!Cmq~W*`;zRE97XxUX{7L*Fs_THoFLh9R!?zC@W; z>f+sH!iBnLG;bD1jRQ4`<~7=-*B;k?d60Hv=A2td8T|%}zN63`(Y9*i+1&j4 zbGi9m*;x%yCg#0tuaVR8!J55mH2cTrd;1rTTcB;R^=~(^Lw2qw7TN_us^RJ86MC<; zYHMrs+DIld%z{>wl?6oG#*DE82m+Yp`Cf}Y4MD+&#{S!+?*U#^dB^cLGg>!}0pdE9 zwKJ3{AJ>h`#woN|x+SKz9e%rPU&pj6uy#^{biW)T@sJmF+k(n%qJ4P5o*ilwlpG@2 zk3BAtE`;$;X#S^+G|7$qrEH zJQdwKxi_NUt0lcolt&_34T>8!6=^DkZ!1^QbqTFMETk{*~c*=>oLj>q*Ya@GmdwIW+*^f!7 zF86sFt_V}$HmHdvCQ?1B>3LPM_e9>66dd-iral!Dp?Af+Lo8Qo1F!VH$qx185HJ0? z$pwtjBs&os2gZ(lPzDiwrB|7rD@}Hd8M)eIb)cbMw! z&b0YXlip{NdrkI$soZa}y4LAYGxUhb9yiHjYNDJ)b))3g-y8FsF$9Nx+O)o4vOgO6 zgGpaDLob=^6+k*B-n6pgFDCm(<2rfMWFMNs`^Nm!n0K9_v-XH#TD@yLwa)rLFyBJd zhPlL+^ol~evTQ6Hl!n15htM&yQE^?BNijXQwp*pWW}exqa=OWWZo(O*c@`$4a2T#D z_CquHV=p_(3qLYuvDfIZqctTLl#ceyF`hZnGkfRuGDqo^$CY;qg5l&WFT2o7F7UET zFd7Uha=({em)+yZ-Cp`@PdbnX{MJjJ zQ^Q8nb(1&l7K}ENm%QvfOx5IlFFDl8Ar_;N8$J1zCpUV*VK({Dlczj;mnVPolGi-* zs+Ycll}`M+m%ZW1>t6b}Cy#l_HFycZ-k$Ac=Xglix*>4hLgCTy#0Pb9aQ!I*msrkRFgeiE31AxQlym z0e6j;kv#)&mXNnK1m&3e>+A&16G&TWb<+hj&LDcq92nQg0mZa!JX*CHWKaz+uBo{; z8%DLTgw$dKWY@J)4^nUA4(y(>E*jy<0wmO8nV8HNXU0L#){M7Wux2SN@=zG+U9!+$ zkj_|pdOBlbYYOEv#tb`IBpdWVA*CpR#t1>xxa!g1YVJH$EwQDW-vP5djZ=Mn!f%eS z(8Z`H?8@i&3BJ)yW83$&-%;E121WHl?@&PBAPrIbwqm~i!UAMi{$vSGLmN^%S;lzj znanJx587S|(r^$fk)^ufX<|ptQ8CiF((fgZS*dMf{sd%n{2%84sj$uZ0;}i(U8Y+lxoX#9s!vZL^sNeQ=AVqB& zgcnEhrIk4UxWJK48KzL$Mh4oLT}9+Vwe{XzD997WO}Ru7fz5UCRC z_Arsfk{&L}5t98_Do06nq@Ws2kCvgINOr6w$4hpclunfN1ZgEm#Yv)}Do&EtQzScC zO>~6vNIK5Z=2UM%v{~H;#c*N2nzSM*S-p3) zTO>j_77Ou5y6PZaR~knaf}_E$59}olA!Kw+&lX^uD5DkN%58z zQ6_+bolT`$@fV?(RT8dg`Ibp)Sl|;+xL)ZZnbB?8Bf^--2HCl-U1%clU;Ua>wf%x7jK-1Fc#_p`x zYrm=)B(z~SZeZ2sHkJKopLHxMf$YR=owVSfoz zd$Z)PtD7Z2P(c@|=>ld1Sc*AKmor`Xtt9u=%b@py@=?v6`$@(a^?mN8#6yY@dI z_IBQh8%vmE=z^gF&uv->tQM-PgtGV3bslnjk4d4d{$@zCHiUK55GMimRnD4j$uDy( zXxy{;iE%aoV2}aw6&b3Asto4%0rxA743Gmjl++Y1_X1bh_+HcK$K&YN018`gsA&_< z&P8Y}?m;6s>y*t7Xyw)`71~ljPR%4;VaEnRCtrnt1^1nS2nY;lpK0RB@igoVrl(Wp z1lSp1w>kqx7PGH4{I&Wip->)YAmF_++)b;3A-X)mi6#0x{jm$Sv_#S+X634xpXW9{ zuz;Gs=w?4^k|KD`<2XcA`3`vYV5AG!WL0_-tVPp44^glxxzt~0t2P}X3|z}zc@bbb zKrcCaO6z1Ff$$e6)ivvyrarGr`%X=k^vTk`pURRxzoiOUXN&FF*@69vbKMzKgdFc^ z64ru4ay-r{f;~t`Xv|qbi!djUBx0r*C zd0#MnfiL(-RF{XIrI8RKbZpFoYW|Y#TJxsTRU--;6BV39Q#h*( zUva@HVh@AThS2>`Z8Fi5;I+VPMQcc54feuhq`~S&&pZtL4qL*T0?Mnba}xvqTwYDU z!^O;CU3+C@S7aQPZw)#p@}emq!XM?M!%;r~84C8N^>XwYdl_iSw2T>!UZwSvxKTrU z<9v3W*@+z`B=0%-s3Q(+cW^!PE(qAiW^X5+ z1px%*J>gEj5`KdhexYM`vzzy*c=wC}X=K^~Wv%a{qH`sB)>^Qs`aH*lk% z@+lextfK^DxoT{HzuqR{rVR~Lo>D+W))ZKjGjP`(fPQzb3mJ=uF6S~#b2ws-PL8>h zRJfyoF+#5OeF}dvU>Fuc*a3Jp)iaYz)AXLN4>YZW+vl1*`x)MnFlV)u0r?sCRqi#W zU(8waa*%n`IrngMG|G2!tz|U7SythtCzH$=>K)HJnNur0D^ z#NtX_8d)9ORcLyE7Ht4SU+&QNbVh5h9W2Z(@YicKn@a`{-ds1Q=>^u;(Y%LOXy=K4isX}An9PW0B~e^1JRr!y zdeRu#AZQ7#5Fe}q1V~f$geN^ne!RBf@_b<908Chbv69z0wc63uiTS|VwHe)=cy|vu zd(vJ92$GNRT1QD`i)aZ|qJ)h4Lq0YK3m#zGlChDlGSQE#IRw+qO$hB~9T23vH5PsV z{3ACbFH-==^mNXLW@qPAKf(RtX3vXWmX^gH`;`=kuEF*e-GK|nAqYx)#T!)UfhI-2 zA3=P8GNk@X*ykwpftOLt`~?p}>DODM(~Cz~9iC;^`d|m9p{7mbTBWtcdMoFk+Q_rp zL&%n*d5EJ<(~ZhS8@b#ZuuQFYzUO{-bibRr-}T(@i2I%9ez$kO)7|fsPyG(Ll=<#= z;WA=+RIl{GD$Etjp(`4F?$_?Zl0k}JZn;IfWe)Dtd|({pfW;B>PM4*waxAQw zCm2p0#Vn~SWh;dONt5t^VuM zQ75Z~5!w-47Cq%epbPz787C8EKJM0yH?!n*hzW@n!#v*U*B%ST;~J3!GK_u`X_E@&*$R|u9;|Kc$6vN9_8^ocFG2re7=#z zE^kz|4=LfUSO`7M$6xrE$fF{^Qd!z3a+bN6d)VnT8uzwA4`tpk_8Z{jtz_#)aeCFY zJZkm}u4S%Qf}HH@KrNtp)C`=v5_mBz%s^r?vnH6&q$}nF0kOmtFlw+9#g6o~18_6w zc2#>anAo$_=d{jWB`lOo)LQfjPk|g77fnNz&J*>RMxJ`YQ(j3(eVd1WU-1*qCDf&! zZ3WU91j<3W1HTlY*9q178{pYL@ub!|x&@!S$Lzn+It}mU1#O=w4^7~{Ef3SBZv`CB zWpcOj&%BO%3OlA78n4i5K2ur)?qvX5o_6F9U8W6@c&9hBbUe?HUBZ{AR+?KPH|vbLu|hA3_b(d?<=hIox2@jDgKE6W(IX&D37H!(gQ7-(~#Ix|+8P z@AcUp!`$whJN)80vMKgOch~EE$J)1*Y*?Y}U>htS6|W+=hN0=W_oO#E60~j>2S}2T zaeus2xmEAm+K1}|-AH@l1?}}~ACgUb!(U0NP59XT`0`pGyPsd)`eXN7m3RNx{ch!w zzKa#*0W=9(&&q_>@Dwrb9`5FC9d6~V70&l2gyX%AkVb?hZ(P13Y7cU1`65T76u>6( zVYUYr?;$Z)d-9rZzhbz&(d3JY>q`2?x*(OzDT&EFX#9swyp!w6-OU7qorjwFpKun1~8}{W~%$Ny(7#p z?*!50x*2jsbS!Trh?p=wfQw$i>M8_Yv|{k$m;APla)>qvQEhuSZn-?cLZx)^KuEG@ zeM~yR#$9k86`Vn+W`3^^$J>GG*!FF}eHVc2;MQNpAC=_b)(^}_z`*Ka2`2ePSkhM1 z77~PW!r76(Wib4)^V1B;oL~)lXXP)*#9y}o%*qX*7X$2+v1$?2WqST+lc49#z~=e0VxKc-MwhX~Kt~ zII?-NfPFM--rn%cZQiXSmx(!>p&%dg!0UOAIT=`DTaA99qGW{}&8qI!s-~@~%5zo0 zg|p`C6f`$#?lcQ%cgw znyFvI{|}|ycA;nfWw8)6x44Vz#N6dBE)(x?-(Kab4J?LGu48wT-RZD4NIKTt65l_^ z_b;c}@SK+rD>JwtG8abX?8uxGmCuXns3bC%d-ev;e-~bgIr*M4`tMu$K%)y??T1(S z=1QPT=>}h}_x&6F@TSQ8I`XfL>}!B>D!$Dt*JKzhlDBty_HFBGJy^-fH+&+5j;QCP zG7@UBO293zJVu2c%#?gvV$Z7AahlDk2?^y)4v^7C&Xx6?OFo@*XFX^6CvxDk!82M1 z*nm|>ZzC$f2tY9uJ&UF6h`cH0KIxn(v+S>|J>Q0FYRYxeiHVav&)O4hxTU6?gKGzi z{se1}pgWj*W9dXHl%#>lyiNeS3^njWzYIA10F=%x^ZncW_@R2I|HD(71moDEJmT4Z zdNLJza02Vu{g_sVLeDX00H)1f`#KTbV6ikn$$A ztgs7{>O~!Kdsijy+_u_o7Mj&Knm8mK?@wwo(-HpVaV)BH+|{}M>S-Jmpr-lYM8-2I ziWmc}`d!n#V_h?W{}Fdx8EPMKsNgGwz3Zr;Vya5yBT}10SeYKL70QyJh5Gs4meH`D z!z~kcj!_^m^)$AmGEYn!2zS1%ocW-*4s3>jYaC?)mVf{teKGo}L^vy|e;-zS)mBXU z{chs_vAK^m9ew@%fH+>r>J#bOW3XfFM#CLL8;x{~yBOkk+%O^Bh6nA~AIk(EulWu< ziR{D@5jaAkrVtn~UB2L$!DS0%`GUS>3%r)v1+sd6wF#ILU4?-f{KK$!lhQQE3cU)Z zPBN!|wnPbEgvVw?{5r1~<=tJZfVy$rt0gI+ezg+`Lb(m+P7aO1r0D^&fEux*`ndPi zU#U@}me+juCe8&kh4M>7A|bFw~cFE|K27nZM~sBRz^ftnZoAKUv43IUY&aMsB?adqTS~T)_NaFfhlT?JtZMbaD># zDSa!XXqRpE^lS9K`Gw81rZv+w&3#p)T=QDL6)7Cyke;9&YaYuBWy!BNjNSGB^G6nA8Vn2T*9>L&cAai%<9qP-g zwo0%*NM=P3EG-}t9xeb{-~!5A(-{o@Ao#xj1IHu%5EL4fVU)(2VyTk=8@hIEYqy_5 zb74M?dI`nU^Wyzcp%6g<}73K91%GqNq3sXkb*OHFcx z(Rh1xd(kI7kJuI_z24;iX+ehRhb-sZN7fwdn~!Y%Ltp;wr-uf;hXmQ;Kn@SmV_*k^ zBZKTHK%;`(K1+1}&PzP=E)ODOf6ba#mEy}QYvSV#ZLp{@*gmoidgU-bI|8uUeypDz z?~fekXD9k{f}ft^2M;>xS!Ej*i{}m-v=+SY$LMq&Ld#$4XV>|R_cA}dLuEa8`pMJ2 zJmsg)`pNJ7>^Wb4@24yL%JY8qqAxG_>7PLe$xD9Ed%nEur?2=j0JVF+pZ&%!mGi&y zTW=&j4=M_e%`4Kkd^y8lGE>2%XE|XMsQ)pO-~@h{bK8AVy}^?e2D0%_Ci$z$|H;V9 zMqV)HW!-D~B@?{NFeAAK*cDCqs-ku^hIxgdRWhR$cr5RlD?P#d* zI4}7rD3JoEddZp03OegbleOr-tZEvXWsJUO|_*--u5yu{NKH_X@&D1wg=eD@XdKsJH%q0!^h83 zoYF8Zg7{A7*y+i6HoMR!7ueDz$dPHwQ@Gws&&4+XOPFp5la9-6c9lh1d9~hOW-Hg* z>_+ZonN4rAa+7ru*^8~Y$X!`?CCe=){}SG=jQcIDEdNbc?H#squg&hWLWT-*@3Hcr zO&?YH$z$*zfZgONn>}si>o}nCttw2;>!wAg+w>glr`zmjR%Y{|jBoBwuCKAVDt5f-M&~X_LpRQMdA0k!>^|b^VcMjl8~UF$ z+ju8==`kK^8C{Tmve+YdTk?UCf0^_}omB~u2-+-rJpxlD*JLYT*n z;LB!L^W~oX*cXd%e<6Q9hVUU#Gg&|rE8fx`V(27cati@FCCr`J{P&vX_o%$Rd93cl5Onl&d zRO1{WS7+>8oJ*=?<*02I*(2oAHKgrCn%Yin!ntn5HJQ8h8>y;lTHQT?!G_8ph52D0ps!m!>xQU0yb}AP(WyU4f8pi&u8x+f33KQV(<1V-cSI%KCuEPD2dq9TqfX3hlK4PrviEYdY8VSfgCgo?P z?{^wO^a2F@GJ&=J333=kmLpOT)b}A##ylK5f7~{42rstf%Nh|NCRUHpC;%8J^kSf( zaSb(u^TaWo1KSWZrV|VQ5rV0yg?~V(tlE@#avwntd@TDd9%>p&G--I@R`5?#%dvv9 z=NIhxYuJr-Z`8VBq#> zRp1fEHm3Ir^S+erV!xd18sbo$?wQ+TgRf$5u~)^}@~1#1b;3>d?f#CB#TYsJSFjfg zegMhz!|ABNu|N8hu^6^8*h<@DBsp5vbjD&^I%BcqL@AvhRRkQS=VZyBCc&xF;Y`Fj z&y?T{sW=m{(o#v6h@8nfMt}yuJ`M4tAKO#)3PTImDYh~IEl3p*#jZ#9n^J`%*@!?w}yIJ}ORLqq1Z<30$2x}w0$nDal z>Ytvw1xQEt+%L7?NcNya4@>fp#8`vvBfDY_#)um=0(0hH@~k9>W7s9nN%DJXTOpZ~ z+NUo_1@kYH{z>f1JQ4gw%wNU)MF#jD{}od5uSzG^!5fmkF7lS7Z;E|K<3)A-Lt6hX zYrZGhyK0A#zAwoKlKo3C4p09r$-yT3NaRqH9%AH2COu5`TA_4SWwNQ1xQu4GgV;$>Ey`=fvjJsVCI}LD?kBJL zjGl1~bTOEax4LuVi^3 zZEBn#RX$^e=HzEb_!}E<4!)#VNT|Uu)XF@6Zb(N2v-+^*s&@#EvqS_f%#~SVSEh}l z;)D)ucFH8~&AfPSJLhKS>4)gGrJj8`cf0x$KhL>~JnfKajWYTHT2|lP!Mn?w_#1D; zc^>K7S?F-$30enf6|QFlRsRc(yb4lceU}bG2hUF(ck=z-H7(UOb072u!DC(4)51OON!;B*Ix^;5_0WWbS)~ zvSp4UZNxzs^i3VJdM2wm`6qhZ<@7gtyV@u3Tc9{iq^)I65$6=|VV}?xC*zrJDz-EKif3Pf{;8Alsp&(7g)MSDFe4_svL({M zKTGKewKi6_jGZ93x9`|RLy*ho9iOxP?43$V8h(k%Sa-zuCcc*Yrr*H{Jjfhr%u!AEjN?pJ58!%@{0H}pm()ZONJlV` zk$WYpJBvOn)rTZ|RH~0i2AF$HLxNOsA$dlsE)F}cj42kbE(l5mKl(qqASf@(&`Xm2 zRT69@UlWK}LW2OjP!I;@HEDfUGK|SwP`;sm6J{4er|z23`4N%%8`sH?)o&9(#huDL0dHing9F#INlzjRO3}rx&TE1TXat~UJQF;k<$1}|sh@6}g<=4;MXq*c&Adjn^1>%HAE>n|4_d6?hQFwp|l>|FYqOp1ChlRl*ZUTD%e77kTG< z{t{m9c#2!Sv7zR(SHf zmmX>hK^V4vM;7~pa(jSGj!@_KFD2IpXQMymjaUl{0dycAe>gt+)>OfQnU5AW`X4f@Ncr2yI zgwm%hg8VH=-V5a2AbAexn|mrqo(|+rQ#rwAr&wZTUML32kKgkoe}>I|j?#mbM=-OB zW69+Ln_g@OFS6MsR(@&I>tK?Zf4{QHU8wk}|84#D-n(oTc`tbWi{8Z4Z)>;S;VMDs zeTHNMYO>PtzRl2}{L5w^+VFkl$KSEz30rB?XNW@tyt&dnu-IoGoZ|p*<|uzWHL)S2 z+!<7V6UddLWDjIxj>{LLEzDOe`i$h4ezx3CmigIje&trb=MG=WMVnl$0-;)v+~jA! z_EDkDBiIJwGW3Iy{J~FN@v}{3Yvc{H;B(JY4gON7dd9`e|1!uf3;ZW6U(s`6kX#yM zR|LuBL3R}_3DQdfTL`b!2d)SvT#c_hJ5=Z*x+3s@uaERn7=5U$onZb+oMz*n>uUOk zpZv?uKJ=4+``N*movP3*L1^})00#NUAYB@SXK1ab1oT2Pvrd&$pU_OWaoMhs--en0(*86-g&x6YLX>GpT zVK0Cdh2Av#{A`+4Q~u84^WmesZ6O$J8IZo)&658FoHylxPWxFC)m&R(nPSf^0|RQPHr=0c2Lf332mdZbe!0Fi%=_-BjoRmkGP zWN9c%LY&N=3FNndJQIZHhRK ze@w7(qe(TrDsCGFqJ`S z^6{jv=DxuF^2AX*ZjYx6X^J|~sogGeAq!!_mEMrJ z9SJ$wv=--8k+E=5(~oyA=4){M_X7=4IDw~BtTMk*dVHfw4HD}lA}S$K2f98oR1c`F z)?U;!J!?kO)+eA+sbexJ}aYZKaL-~UfOZQFdzr)|Xfw3QbGn-yRJTTOW@yG_3n zbm+UIoxCr$8Pt6I58#Z~bZIMnGuSWKH~3Dn+w|i4-|PGCXAg+??>Z=d;MPCrAlTv@ zGyX8?Tr4HTE$s;XxUyrpo`U#v4DqsyCrElCtYk)Hf>|ePV7SaoIaQL=Fex5FEUYTf z_9YUZhS4TrDNd016fr03Z!N|Z&?{ADY0sed4_zqv_Om59N6KeQ;Sw|i`W0QK_iA;c zsYlVRnYpA)xK;9ZkUx{_9BwnL))NFSK3Ki;eksBigKKcgGc_V$*4FRYXud!BF~J^w z5ToXCw0&-1rka2iY zJu7XMuFgs|H3RQT@K5P}UxE)L_*cC>op(y`A(ldke$%GGCi-ix*VYeSD+O5L?K%m{ zbdC)0l~9Z)NVr(W9xln~{vEN?0V0b9Md*01On=@*G|vs1u~QHMX&|=wh=6)?&TT@Ass5Z zi_F4w!4NUc6NEq|0%IaW8MNRAUIeH;tN{Zz7(H0CV3auF5>r_j1%;Up(D zGG|JBhO|4W5!*$n)aV>Z&z9ORBs&-DUrEmsd!Zy3$i5dtRpW=>eTgI>#mgkQR0tB7 zTrOQ#Np_`FoG;jY_$IBC(K^BqK5l-?xaEt1?U9n19_Zk6&K;@>VCsg$VqZkczV z5KEtcV{AkbI*-5!4@>%xbVD_m-p8c!q}V59#?#F9^tbYbXC-U;304pj8AL=iL_~j( z5$7S;@ve~o&2UYF!8$=;OY9p$OyACmrEV)k8qS0=otfDm&m zHDmGrB0erQ23!4chXUDq4l~JOlQjiHm^`OPn&cRh9c@ZZFccn-|Ch<1XfgytSk0<5 z>^S4Ae_qe2Ci$7kPB*nPO?HN<{@i4aVM>=6Imei@&75CQs`ot8c@A1xBy}6hQ_}XN zm~H&e`isc9)BqvOm;7DiOWrQtgEH|dlU-@Lt}z+Gg|5?QuQz3lQrCNvDc)id0s$;H z*)rqZX3|@Y+(8b`W_KInFA)qNctA@MIrCv<#pF?wK4Ro?lRjny^`hxRDfWy>e#`bI zs?GhqQL|Ki{tssEpScQNQkA3kk{SC~Q~Zl5ykZifN4!Sa7>ef&Bd?qAEkkgC^c|DE zZPI_3?C+-bp2^-dwSQ`g_*+owUF_t;ecPNPz`e%V?ytWLM}=NkEnnqBO>xcWv+j5> z`u>yGD$-e%R&^pCK_sK%6TjuTFf{2+VRj3oa=a|e?tz91)B8fXH%uQ0<^C}JO(+kB z>BFHs6sC`c@grgOcqosB>64*65vEUv@>G~U6UuMH^x05;7pBjJ^7}Ad5z6yn`bTP& zKZVK5p}Z8Pe+}g?VftPu?}pWXhUlMP4U;!Qc|EMY70TrJ_At96#CTOHFVHX(?P#UE zaO+61yX-^`Gv6G95kU{84D2|WOQHd(sH=xY`6iG)3eQhR`HnSC*eGY~(a=(bBIPnLT}$}-~2^yWU+qX?`1%jh&mh7p)jo7ue6 zRyM~()0)@KG19b8m(_98$VknxM9{>w-q*+R7wo@b4vCTAob2uZ*&5BDp$BuZ!f`D7{hhZ;FyTBDpzeKe9sqI3me zG@|syD1ITz{usr7h_XLN@~0?$nNT26`iegBYLvVY$?H+|pAp7IZ%1AKh=}p^1n-XI zsVIGhP!m!0*+_mDCCeiW4=#<8t0L)%Pl~di5)o|FT)ABBj+rZM=(J{oWv7}EC-n@2 zE!;T`Q05|iOd&_R%^V^K7V*fpu{#G7o!B_RcA}ztYN;jKX!m{HO+>w)T|A$<62`gj zYY=9gQEa9G6zE>LlZg6;+Tmnn091|FuY1^N08|aC6oYqT_ONNj>$htrs(LXlTE9ux zH5(-BH-euUjntof#;}Kmy6e07XvR6%pwO(PzY`jvE$?iAl<{Rh(N`eyvpa!GX1TQ8 z?qpo{4l%cj+@|U#U0pd=mv)%49jFpx)akg%s>^UED-XLca+Q~$Y|A@Z9n$B(+#_xG z*QC@j^FZuK9567U>}x|$Lh~NF6J@yhjBKB ztD3VGucQqzd%)yr5KW3H(P;uv8Bw!Iyd~Qx*f8JnBM7wIZo%$sjE75|E$D8z8HI7R z^_O}x5hpG6X1L!r_uJ`y?GnoMcW&fwsN4QwUV!u$I+(8WNeel;NXMi|CBx6?mW{;PaxUxFlEv{ zQCR8WL=Tnh=en5Eh#W}w5mFZDh!xU_y2$<7mj1SneOjLFkdgfbIXub(bDHrHR@R$& z3FZoo=BX+|n>DuHtg%?>S+&yEwTAhi8yH^ZYp*w7*8aQ%t6oM($h9n6;XLrEm*Ml^ z?`f~#WsRB8eAxgm;|*hYna9h>ZN7|GLNv0k4twp6fm&EtOU?>MjmUyuay} z{aLZH8>qh;^B2X{4am`42l{OQkJz@mbwIAJ0~NYACmnB?)N&7&;_QBAN^MZ_HA+=s zE{h5;DhNa|4{}{_5)qRqex|fMO$#DM$D8fMy0cKpQ3wI7E38-!>qckL53{V?`)nAb z|98LaapkRpX-0ht^-~S(>`Et&2!e2<`gncb60DEl(WsVY=z9Jyhx5{+`OD3paoE8J z(JJN9|BkdAflfW%&3(X^@xTt*G`k&wJ>Rb6HC9(pb!=PJ!%dcp%V96l8+9wg;3dv+ zS0aFUuZK-IGex|8JoY&Ct!^x+ZRz_&yP=QWKx_xoIf2~uG!P_v9MkyobQbD_KG^Jv zcJg4;=YA3Kb3MoX=H2fk_uHnfr2Wy1zUhaUmTUL~cCQ7U^`58_&|F;c&8+r8Jaq6Q zDnVe=33sf(PMNp`U1Ftyk*iou7Hq@=|46Xn4b~-htDLr$N0SMDV{2=5c`7I zC-sT?^wn$~|K}q&{zo$nbOPjBevbZ9BLb-5{3;i$rqBDR6l6}6XnMW-W#l{m<1?$3 zzxF>rvrqXPX43!oqO+yUr~j`{Jt5ssN{ID$@Pv5h2(J9?!P(+{&0Xx{t?tgN0kAYf zcT&(fK1^?`gH(UxTsJ^p;y&|1X<&b z?2!1+P0M|FT!mjIngoG4G>!+PuL;%EC`hWrcs?QGJCBLj3X1Or;2h`NPwep#S8`N@ zBOg)D(83e+!ap2P?c-ok8bfq}4DtDR+p8!q#Q7)+bIdyFYc&<*EG)1#MHoorun8sn z3u=5zBwR!mHQOTuU#3b-=_CSoicD{88K9tIeHx*_WCuXTZ0^<1c5}?(5&mP8re{M0 zG0zTChDkLGYxe;8orc@WdlQ1T+(3R9`ZQ0t>l&nQSfuXFsS(RaZxA8@-GL(#pzH9+ zR1YqDgM8%4!PdIplKbr+^_#it9`_r$-x2rQ>wc%X-!Au?y5G?K)=N$vb?tqmwANPv zYlPFuO>7L4dddD$2`;BQi*u?$BarPBQpUHepl69Z;s(#Er^3p?i=*~CBXd{eEsN~( zsHZ-Bq(DSi$BW1<5j$|HZA2mXs*jD(82o#H=C#!#HYJ16g@V(l8bOB}!aM`WjtY%I zW4|LeSSD8!$bo1Kznj`&o*rkvMfsaUxkWMCwJLLzpXPGchq!6W5uO}{c_HCTin(vA z>^O(@wl7zp=<4#BA32%qa5OW85mYn+Ibb(p#MLNqC+?>;(r0njk;l~XVfysA3n7cGR-- zTHeZ`^$K#2`6fe^fH|DB0=Uo0R zIdgMPZiI;ebSjpulb$|jWmnd2oF~`2V2;N2!95yKo9|QorIJHCT8PO%Ms)R59Z8oas|bd8V3N9 z4&oO~DYa!H%jK)fl+rj}TCSk15*9dH=!#|DQW{kt{)P?bO;#iU{GuM8Ng1`nV%9MP zG_IQ&CC<~p62wk`>Kzp^q8HqZvOdI*|6ApZCtt%_1(&M{h=Qp!WmWp+F=OjGpO3z~a-$z0J*$+(DcTYx1{8 z!5xvgDMC}Qsu)!0GdW}t6q4VgM#c(3UHeJ-1ui)?@N=5ul6fpX3|tixPp|9JHJ_X_o#Fp7B#@ z;9B;z$z%-qKo>@x>D30n3(-u*;Yhw<;&^rT80lg^Cb}Y`8|W^!;npQV_;OQ@eZI4V zOAxLN*KOaa?+ zNgVbQalMv9CB14AJeT(#(@F4R-n%*P-$Jy==$E-qPX>Q!p8cx`7m$}naW#ir$8bs` z$mb5r1wYD}e|>6N{4CFFwD4JqW9rj_w6h@E|I4%>xKqx*Gw&CbajowDgUdNLZx%rKmZX z+R_l;sA_9Klp!~n+M!^I1bbzYcr2IZWNA#Ma#ZmF%5aykn%>Dva*ndu#gQNDe#GmN$!t}m+Z9=4bTu@7eoK8@1;uQ5ma)4m zw7_?>@7eFB`$?|*D_whoHtMKHg))mcX0ll5*cuFJ53scws_ccJdqFowwhAD5aRuSC zMXZb49Q>Q#lI7SjF>Lt(pY-`;NBy8<^ozfed{wVIAl1^a|VVb^rRM8~H~ z4~kSmI-2&NihF;~`-gacqZ|9rmF#@LL4}>XE&&|q?p_z-&e`~2M|kqVpXb0e#C`Q9 z_H&9)h-P0j-Ej^V)^5-V4@^Yhk!pAgY{1g6olh7*MC#f{z-_;!#-`w5*zyzo?7fn` z^|ODj*9RsC>GhNJpj>T}Yt)Ce8+RD19Dw1t!8Dzksmg55|eAQ20 zb8op&?+y==#l%jqE!XJX2|;qAyZg1?ogO4Vb9V|BH*rvLKL-^fAYhD;VLHb;Er-U@ zvV3q`o~W58DYuW0JhW*^d zd{5szxED`tW4?-TqO*VRdF%U*xqWM{=eS4|vYKMXSGVGE~@ym#t=Mf*=VmzgKFJ#@})?bbKv8#E_lFozSE zUD(V#9_`ATm#g)rRx{^&HNR$EcGHAwzNfy9`6O-8%FE1No%zc8o6SLx<~@zs$%&`V zF&8>BU&1z9A#)OdNq4i|r*>rozitvE3UOKtCK7Cu$5EIVo#qqZOuK*X4USu?P^X&H?h=QUB&E&E?N>#?a)}X zs(DE@SCqMJV(G$UK!NeM7^EJ7W zJyXc?6=w6Z*uJcouUeZE>6oMC%yVg7`%!@@ncnPUbH zH@}@QiOEc|)naqRu=%85=_Zq#n%|k3Z-P%PUTV%qW`6eB#MBn%JD~fU109!{Kh33B z@3FhC_6cIXi@5OJE3<=Xo*DK$c=i=%$>fga=V1@JvFH5T*!*X|G-%I*x5PYW*D&6C z;qUglTILK$_I8-A`K`JAlKqm&?aZHM1xz?;jw`a~9QPK8>g9X+^jme#VTvK+nYz&4vV*3^18``%&{tKn5V(!=0SLzIVINq z=DD)lbIm9H<}O-hKAyjCvaw?6RTE~1*WBUeYphc%-MeuAnde9{b+P?b z#G>}Gs~xj}xnl9^$4=Rk;2*P+lbd~G^Al`L+5Kbt2r_#FYkqTLwZc4j%*Sji%!l$z z%>A^mPi@YCxX4`jW~#6!P&8kBUAmTeLf9YDKIS&sF9bKtpY{YZ=BI35A$B!evF+_k zuj91Mk=7fS^;+HBKlTB!(!v(&1p9fK{RrF~oopUY>zh+T*sa-mOaAXuTzgO24;IZ+ zz}{1vFKU@Dmrgm)nK5Pu(EOXZLl-SJZ;s3xwxz$E_~z1yV(9~oZ<<9enqBVv-aNKe zHUGD8#Flv&*=M-fez<1Ts^-eG_CND0jD>$S``6}&xc(-anvJ79wr2zLjlJ#7XWiz8 z*i*Zik4TrTu&1?YO>Vw?6SH9Z?~7M6&sQ_r3|V1L<7cl!Y7QHkyw2Ps=0Rr~=6@Rt zx%oZ+3Ue698s^J2_G>m~-(<<;&Gzr+&b8&qNpql!d8V67wV8+hO6Gi06K22l{q|+Y zJhpAy{AYITwyubza^lZ|C7HZVs>+85Wg>~`Z;d;Qz>%{83tMq~ZSw@=1qZg<(kM;7M2 zx;YQJo%;|TB^u&>qo0z?}aOzZk z0IQlcKF(~q%(;nHwfCm^lY8HMq4EFj{ngAT?h_NQv)_rdKQ^;Xk0(x>IDP7^_7g4F zp2E#OTDzT5YMdmJ_+QghNc$204XD)KN)Es}kY|5T@OTR*1GP$#P z>X|p>=B`}4@F~9itlxg(VE=oq`8WGSw*T3E3j5?=ZWeF1koNEPjH2cYT_(311iN)K zzfPcMx9Dq_({!$79wRIB@A_0j^RXL|HO&!i=DdXq^B-?m)?65~-om`>a_tzK*+Wvn-8Yec?9S-U{=d*2#Wm zVYUg5vzFQY+uUrF*D{;8eJ8gt|GS1cm8|_8#(w6I$X(3YNVlBa!(92>H~;cx^VHdS za#Qo*J8CDppO#IYbkpQSHu;)`|6OvE*#d5Ez5!#mWabnEX1&dW(!5ZvZjQEFWnyFV zc$+jAvY9Za4>hY{{?9f4vg9@9Hkp%`*_VKw&3$Mt(`J7Aw8;GLY6~C3WRvGE%zW{} z|E_$K*)3cWTsg7Q`zQ8wjx`%j^Y}0u2m2m*so8rm^EF3OEPN7Rp5W${z`WaiaB8Io z%m=DwmCO;S6Du#?(CpNjC$+g4fHwH2m}mNWW{u63eI>K;-od;inGYYAnKUpzpMA~N zI9uc|d?fvjo6HAiA2c^>nR$4c{j7ywh}cK!)apykiNvPNw?fU!^b&Kyw&mNKO@w*C zm>bJ$^TB2b_R+TK!Xsg7awGG1^CEEQqJzw_FLslkH4a@kec*={-PAB|kxKJ?G2eGH z&l|I?T-Ut&S-f~}v-LD5PBm}H%%jr`Nx$@9b9oT+j4^kk z{V?y$rR!{c+|=@wj-Og)o@e&gV2dV?nK*j8$tm;k&D5z=D^DD|uXz%g{g-_wK4TAu zGhduE-*Pt_wSO+2{Kw+S!=?_MFo)Cs$E^57XX2oB|GjwP#>I=`Y5qGdL;3;(#4vHiWTXMU`U%?9pB^Y7+ie!BTO^=l?qm=EhuG$&42 z)qKABy5)PXa+;pKC@dfd!Z1s^d;uC+N}KAi_Fmh<|{bnoFnFYg{w^7JUKCAAD?#r z#GYQnZoce`t$o_toi+QwGEWzCBKE08_MvQU?97r)&ZztrA7^R!)> zEdG)Cg2+U&cdMhJQybXRJ9$giSh~)_Q_Jq@n3XaAf4TVu zrrCzAWOkeuo@aJX#(osGQDX=5j>vpZ+?>pA19KD1u$|31njK#IF^D;n_teye=AGs# z_70zV$bA3DtnH!OthDt>=71a59spn->GoaA%4Vx(c7KXHJnc@m_Om>6CfB*qV2g_U?PFxf{)yv&>qUlgyj7 zHBaAFCJ!*5?zhcZ>DDk`Dlpwc&7FRdS*Yunmm2e#onuZNWFD;JH>P%v(G0V@t_|n^ zZ*t8~)a0#(`FWWs#?$}fJ}$}U@DR^qZ#B)Yxs3VY&i}ZFcV1on*>R4Cc!bRvX&2Vd zUqk)&|G0}w@)>;Ln(7bmnrq1;JdMq%uomW@;%WQ?+{fo^ z+`$#@;Tq3kXJeL+U2HzKT9{ve+c?`){S?=m%k$XXLT;_5@nK7z#xYKDiVGZUseX+k z+*)1pOK^nqt<+C(g$o>P&HQk6!y{Z^e@)HL+g|-1PH=%M z+*pgguYQOVJcF|xl-Ib}QSPj*@%~P7iZeXK?(3BM>!_dXBKODML#}X&y{7sFj&O}L z?C!~U>|<|TjgN7JQ=H*^JRaBM@#}H>_R{<#oa5PXzPIvvoa6TTtp7gBQ(Ok}{5aoN z4mMzU`^hsn!4)oX>ow}<`>P-0`T%)=gM;MOYt?r;a)R@NW7i6j!($_ur#_YYUCf z-YX~Axkw)368kOn-Ak1Bv4;mZzf5^^OZ5vpjs44&XE?wW&T(ri#^Ww7@hqtiYq+C>6etZc4T=u z%flI-!~U09-cIV5xPz0sSso7Vk%zd#-p(2y->bZf>-*#aXJ3(_Y#m$~!p!nw;X`>vA=AA-8ws_TdD_4=EpD|6$o}s~_WOoZ}1!kElP7oyX*0H;oT| zD9_-ilxti+C3kjLKYUtF$NsrIkKJeFU=Q`9XXP1O<9Y18Kz~p5{a?_>1+H=WlJd@8 z>boz?8LodNkFfKK9PZ8he=E=8`1i82kMgLNr*ZsOImg96OJ!-&pSBXcM`@!4`7+K=q@oiv7Lh;n;i2-off;xQlC?WAmj>Ee|Jw+&+Zm?I)+$KR}+xCH4H zJzU`ehi_Hh4Aqa%W&XI1nLl>Ulij1#uP>0h*m<{H;G`!vk5<2Uj~wCnz49DRE|lG4 z)ORkDr*Vig>|LyU9v6um9Lw#wRGz`!Wpag+E9LfaEbl{dijxn^L+qJPz9t;U@s3x& z#yy;ygXC;p;N+un;{?{{V{(N38F>!ppOW2a^)vGo3p>9qj&76-?B6UmPh@>QE62FH zMIK=1PT4z2eRDC;h57ez`Zc-4!Gm(^Wc9;`!kC6Y@MRo|J=A)Q^Vp49=dCYg|7gcTQEmcwWwM`b&9)y%*&$Qa^o3p2f+p zWal*2_xJKNPHH*B(O=~eF8?lvr)#|T4|xWM|CVbU{8#Rrp?--|9869w{QTx|yhIMp zWd03#2G_X4)iUMnH>sa5m(#IVlIL-@LJrPieO8rcaJ-saWBa*M13z--@b0z_37do=h(h3+Pv`&_3i7Rb%-7pR|`?Sgf8Y_lD(F0g%^S~uUNer6sA)-iU?&)Iqo+sA>m`)>79b3a&jv1iuX zI>)|QFYD2`Z{}ki_84#ew4TM)du8W6tpEGuX&hfD=eWK|ZkTa)sxOrz99$;PV)t^{ zG4oyM<7u3|UwMX$tK`u*|DYV2^{`WNtvrjPRCdgI*(v(8JdMpM6mzPbJcqs8WcL#FozKhDxWYNkzo5L4sPEq?M>xJqp2Ha);p&UZLvz2{$^DX?;yjm! zIJsN)&HZktZiDm-8trugRe1v^K-RR zhI=@8PkPkB`$IFu<}-4{pwqCg55{tAr8JP z`&X;)4&**gaf##aDQ|s1edkd*!5JRl{QJtiYt%1)Aop+A$JY1NblS3RlFVAAXk{$Cr zwNr^ZIDJ8RhO-yt5l&u`!;fgZ_p&^TQ)~{0U6{W!uY4L;IK$;D%pcdkWBwo2_~iHU z40it@S2)A1kI}D{Cu9Ff9^&ZFa_i&jXMdrO{Skd!V($~``~Otl!x=8H^DpI%PpY5d z5C{KOK7(sq;p{)kTQeG8y(%X-bEX!yp95TDbDElk`@1m5YS`D4E)L9ZajkP4n=iXr zH_Ud~PJuZZ#M*AB?UdtL9Gc@gY+mCUx35<}U7|d}zBxgI?GJE?-5b=88_K7#YYr8( z{S4=L9*4`7`!{NQje9sX->0(U3+%5fH$J0&i9;NiZ=Kox49;mutxx&exGg*lEi4bDh+b?m2-Os7-Z>K!O8P0IEz4Cb+_;UL; zjjwQuiyf5@aj=W*e_s6>_p!UDa=Ra3CwFh=KP$&L!P!2{AJ_Xa|1YTTA0YQ|fy;6J zdgZO#)sGI86P)7#b`DbR-og6dY3v-LJi{rTANLPcZuevCRN>y(hbb?xcevcRi}k}H zuJA0*j!@tEqWVQBcW{2JJd2&<zfS8h(xwQ&DBXUbjdo-G%+!p(ctkGjeu9KJ=K z!`a(p_dfdP$kRA`hn(Z$Jb8rU^JTkVXs6%;c?P@hk}F)`_WkN-?^bU28yBXYJdZ;h z%qdUb$NX`2kz8Z%V!8c*`rajSf>S)e6?VVM{4Z0#i=(UL0w;ahTv$o#dyO39^n>yM z#~+ft2bur1au1iOZ1-~)rt9R^*X8J=a)Q&3$wORxT=u`Ae*6i!kMmE;c0bup#f;qk zrd(ok`SgXnyk2>U>zm|O!T3y$v44v^z%}+BQa|{d@*d7^lkI-Eox%s?me~)tQ~Xsq z!4)3h{Ad|!Eiy~pI{ zBkDUplw+LW0S+E#{^oszol@Mz*-w~1_Mc$>1NuK@{@8nxKF+YYzS6?{tD*8Pj-Ha| zu>Z8|KFaz(Lm#KOz}~aUo8MQz#xV|`Q(oZm7xaIie)5tWW9L`$0B7^E_n7+WujL+g zUXe>2;^q(O;|P~{7Q4UE_!@_}{UgTX1Ut3*!*P!NQhooA%KJF@vs~fgZ*u!_^&Mx? z!s}6rV?4x}IhfS$&-g!9-!tFIwC>{^S2#7tHQT)X6V_)1^B>zBh->qCTw(tS_4C!0 z_i$=X(PaB2c3&&EeyVHO#Ngdxrfa$w3`$P4^t>ixTw~_7pT08mM%B`p5d`CIKsX6A}uKy5cJInsltj}(8AIH1P6?XQJ zTR&Gn-BV6*u(v$K-oCQ;jQYWWau4SR%O%bZkz3EIU*j&$4^>`Z=Wx0CocaZhae9RE z0S=Fpz30_0&yagKI8!cheYV`H)KA_bCpbM<9^&d9vj2km;XCCXF3y(=oL($9f1!SM zi5z1$kq0=uO!j`Meu2B#zg&5Nt1IN@i|W_!mt*W-DGzYfm%W$NkFJq>xcsPG;^Y%@ z>t*%hPs$0-X5=9*vG*(H|0(5NT;m)kpH@D?!S!-DukqfE@+?kqjceTbHT|2^&&JM} zKhALYiuyI4#on#zJHJt0d`_Om?&sxv?7QT~Z`Chxi2W}rpT*UeWaoG4$6uDGadNku z_tAHS$P!QRXA0N2?4oBGkOlt;Ljm*;Tsifm5vtDnbjxank;XfJ zRzJo5U*!sCf0tYTP(S#O9AocQd4MbI{ZswId_lp!e)O=psD@tOaA>~UVDr|$)OQfxuKm(Ji^{u>WB6_US^8%EcVw{?o2X2 zJdI17W6zwx!rmX|TrdmsOK^mprgC$w*@Zm9uKC>2PC4#kcU|=h9OLF<^_}&U$2i6V zTwrgB`tJJb_i%zsT;kSJ_5BUhPjHHdxW>NuT+>d$Yt--K3|H8Bt@5_{oYPJbPH}Fw^vc$ z-CRzwzm+^c_BL{`Lj7u6c?JhN%Qa4SmD}cXRXY{C%PCIwk>_z7$mT>Z3;pB(xsS60 zBB!{%R375;a=B$bH@8!Ig&bq=N_l`2?3&Nj?c`mhd>ZFh%Q=p(kw@77upGWt z<13uu_*&)j*h^)9LvGJ?avx_OlPg?*LT-ENXEXG1{weyn{Iu+Eq<($_eH`2}{-miF-J^N%`E^ne1+&ete7E#p!Kwfy*z*%}v$!ZkJ;m;{kT=Q0{G}euaD3yHk0I z%P-5V&D9USAtyK~zFK{2b zk0>v3hMQZdpL|z&j0-%6gSKE-^1Qdd}XXJTYV}B?0gJ+fZaE43lJg2<1v-%;9u~R7@ z;OGU}d!72;FPT41ae?EPl{a@$-}#l?#R<-_xg6cX>*Z+N|FsVI8@@$;r3a5Wp-rif|YnH9p1xp2H<}_EkUnm--!C;1qlRRzAcr_V&~G?7zx;*nL$l zaDp5At6$;}2hNg($L|bIaD`Ls9l-K%gbSSEYCInM=1hThf3o#@jZbibb93$xn-6hh zPA6dP9jJbeyVy4;M_AZD#Ray%hqjZySb2bJJTuOhD6ep2&O2-8*Y0S%*N_uzF4ek_ z53##k_77(LT)B_SHRKBWYs#%d)Q@qD6P)85k8ruR#)pS$ykkz|VAppB``G^8+)gQO zAIAFO6qk4&*El#_eYeT{ae-@G_Va_LWE2-Cqt)<@O#R_i_As*&cUdr|dwv8Oh~Aa)h0O zBG))NRBoTf{0@^7TpcbCuy>?vk7Kb@6w1>$J4()Qb+kN>y<=tn42@54ge#n4_c-+n z9N-#9*gI46OL2(f<2AmIqZ8x-&hQ8qxb-H@uf)^1!hKxhIqXbp{x$Yal)bYwKOcuU zzzGgus!a`PBl)ka}xI_&QF#{*gr*X zy;4nagE(KsqdYm`TID;F-~xXb6nsGyJu;B?zx&@ zhy$G97zbyopWz6XIK|G}HNOJ;*y(C~ggu<%5EnScHBPY?Gk+Z78YkF$vzC|R09QE1 z?mINU3jzK=^Bjq|rDPjQCrad~zsaE&YMy_5N$qw!tr zoGTYN#*OpU_uj5N#5tb9ZmfKWW9(g^@yId(VJJ@}{;QSKh?nSI$B2VM+QrRAN zX(#V8d4BB6W&dL3Iqu=`3gyK($Bj$W58tmm#08$g*_F!eahnUvze;W;a)x8<_La}! z3Okpwepf5+;PM0V46bmAYuva@BB)#?YIk$c#`iTPtElN%pU-@_g3d|r8mb3DSq7nBFrXng)9CwT@3f0k>U{zdLwukrO?H!|iwsXW3Zp2f+O z@_O7~B)4y7{9-x5j=2Pg{d{CF&X>#XXVv#slBcncXK;XrxL8?z?-q?OafGuK%4c!0 zs%($rU)Y|lCbw^ulQrc8`)kPq?5-<&pJP1kVt+m5`8dZT?5(dnxJ}~=+{e)d%1d11 z=I7P-&9!pu{TE|zBY6(To5;;s_3O>#9xk_&OC0S${|oB7JIWD`ca!IEy1VS$u713y zJdIO4gL6E@C2roK@y=e1$HCrmjte}(6>i_j`tGBC4+nS-$9RM@9NwkzB~GyuXnrLQ zaO;cehq#L?oa1C)jjyq{pX`50<8vJ2Xn*B7jt`VaxI9P>a*fYAavz6>$Q3RQmD^ut zd56mhE{~80*gH!0?pD7zTJGWK7`edyadPt>)(20IeZ2A<=O@UGd)1Fmmb*B?vp9Hz z@)~Dvl-u`de2r7=oua(NK6bxCA5Y`tRP{6LM)Ewauzx@6dz$hdPEMB#9GoFH=2#vM zvHK?Fv)DUJb{z2WL2czw!}Iu9CxVsh{`d zSzKK$JKt9BTq9581m`&Zkn+ZNSpKzggtL#xb7Nm8yN{^veO&J1@)L4_>rcwf@2c;9 zN{+GrX?cLX>t%1CzJG(W8?4Bb?wE&*22uIK{2UG`|c-IL9-%z$Gqm{@BIy*u&n>G(R6t;{c~P!~+~*=Shu^aT_N%#wnh~8Ln`Sn?ud7 zz#%SiA6K}*H6CH-i~Rhb()?W9#U9SEkB2zG?$a6{;tq~*f@3^~6I^5WOIn}y&o#d^ zms1>kS)Ruw4xUjzzgu}9d-urYILFOrxxM!)k8pu!ade+@=Q;JAugKFl#W{BGSKfGD z{R~IgpHn`EOYBza#}6p);tJX-Y-GdK+7YMkTN%k=kE z9^+^~c@8`K%Z*>DU*Hf22PmJx39fMcdgbkTjgJqMQ|ulj&*K~izg9o!Fn^pMEZ5jS zRPMZ@eu6WcAEtbS>%(RHJ!CsYN60g{z!mn6RNne6^T#m`LgfP-9wmFfQ{OvU?%@I# zI66joW*FK{2%c!0f=SYEAuj61l*ee9pC{s2d~@kfn! z-=I9g(HrGC?4K&Te^S51(>RWlXE-@c9%1)%*?!O4PRW__3=ZBTS2)G(zo_q=r98z2 zp2rn#{Z;+=Z1oeI;~{ps%Kg8oAHGHI+i zhm-T=68rC!TmMksd!L-(_(FMz%Zp|IpX$e#$bDSm5@(kwZ~jaD>~cB6HO_GG0p%l{ zeozknt?|yaavx{c$t4axCO7}X?U|8d9DZ7!!xeV^tA2I8@@bsjAZIwZQy$^uE;)Er z*ndEt$KiwYoka_e$MBoqhLOsMaDPd1l4)#DitvHz%YZ&G=UyEyy4 z@*KxMkVn{iOb(_rzQBDP|4?~_-5<&AMf7ok<5KwmdymVWy(q7lYTU!=kChi=|3q#s zQ9pP>jW9B%{rH|MRellzj~!x=7c^s@5is_NG`!pX0c&tdo1vg@j!zan?B_ggu~ z6>gaGWY{VFo$?UZIK^JAe2Bw8$=>Q3pZ!_x;rcIfiPOKy%{9~yMskGff5@}A{Fhwg zWYMyP{k6`T8ec4tQyeXo=W&gFdud)XB@N{Xc9+Q|j&XBs^(!2Wy-$enfZ_XI=R9LZf!z;7v(Yb+VUI@@CZk^y{X2>xQEm6 zcpUDg`8k`>#{qVBSKi0&o^pj#+}>Q{y}gvDIK%VU-&?uAh59+}<7^-0k^4BuC3X*0 z-rR=%VRD3%!{s?#9wEEisvm}O7Z*6k{!z+DIK#nq8eblxJj2m(va`K%{{%V0&WUn? zlapl6XMIkVyV!XHeO%+_4(g|;DDUCqGT0>f*)_7ioBH90sg;PA6@g}qzk*4`SQ-zxXV{t|uc<@EPaKf^H& zzN~x>M|gy590VF4-K+i#cJ5<&;~cm5Rlme3_P?V35U1GNPyGV-aE(js-mmek{nZa} zf-^kC1@;e6KmD4<_i=^?*!zZZ@Ac|OxQBy6d5QgR$^L=rhd3Vl+sX?ZW9J~&=Mm-8 z*m+dWagG}u*5~`mBOLrtp2OASvU{-l&J%JMr`Vpi%ueCYls68c|D+t@0?*=dsN7t% zdtto)l-$7?PO5oQ*w!Y+&WJE0C%y!Nc|jpOXSA! z>cyL`=;H)O+bAF61UKKPeuiV5 z;~W>b#ufHY(RgQD%|9M{J9!Rg*gaMKV0-1=v3HgW?7mKJMC#`_#NjT=XU5)DuCUvd zTc@$S-Q*Z&cn;Tig!A3i4^C(Kd&qqp>?xPH#LY9*Pxn$D;cy>$7T1AX<7!{IeWu2{ z`^yQA4v+`fdA;ntN&O7>aB!gVa-1I|H_uW(zEO^FiZh(y3g_56TjTxDFdk<&$#b~Q zWVfrn_gT4%^IPQtJGaTrH#2`cjRQP0&Ofhyh2vSd{T7XPzaZQ5RN5)WLtNgj++{MB7d=Q$KxH?qlb9xx)Sna{Ha?doRi;KB$yO{s0au;XLN(--t1&$}=#=F%ICgl)Ei{x2c;~E!>m3Mj?A1;wo zTrZV}I9o;b-^2Q?D)(@?mR#asZMpeg^-~<<8qeW;9rfM!(QnFK?5`{5xWFTvZ=yWB zP~*K#Z}bBXe7XXPE7zD~C1owbv{ zt31LL4in|>ZpK1E_DS;G*r&?wmFjz^$z5FG9H(a} zZ(OB*jyu?Ylk#kwpCylQd5#?RxjpB}vpBdwu5s}$xpTGpPEXFT`(Am3{R`#r1N1MF zXK-|}T;uQ(xpNKcbE%x+{Bn7Oi!0>z2h}g%FQ+)WQl7`*2jt*G>Q~pueH>mVSJ?Zg z-2Slo?x*Dx`!~w-ILPGSTJ`f=~ zCpg6EcsvePXnylJ$H9#n@2sVK250NY_Pp43ikfogGqSs`oZ%9WaJruI@Fw+x4dhuI zzD9O3<;iR1X+Rz?k(ro-AAsm z6Ugn)YkY|lobIc9fOFiKRX^=0k8pCZJd5K)WakU&JBP^~TpS~3xIA7S;pmNWc)P~u zXUjQG&y^c@C=X*f!tQzU9QNKRyLYnw?~=Q?c(+_&|9x`vF7>@jMmU09TdlJ*d9(3%Q4L zT#o&s^48bYk6w~vT)r&N;p|tk`wjKWdAW;=U&{qfUy+;NWd6UAV;uZW9*pzf%U+>= zP|H0W{!uP*_9waZkowi14h+v>-!$}>23R?+?lE+*v8choN@St{^!v5~^9ImnZWA%$Yly`Bu zr(ED@FS+>>^}W627-##)103!vdrzpJ>@W9ljSCzepuF)@=6|3Z;u_E5@F3;&xZjaG zKVx~gkKKcnmpI3*C)JM*Q6A&)P<-lr4^uvkE1covaOLwjI70TH(s<`cxrY;6 z;viJsdRqMgCpbJx`2bhg{ki(p(aO6xJx0#4f2=$j_i^xy#%ISV@8j@zxx~&1a`RdB zYaHWjTKOCqGAJpQ*D@4iR#?_eMIafAmr!HwUszT@$@8jr{Bds%<%b;$%Gj?;4+v$Kz@|9y^JaS7HylBaIJmh$Ech zWIP^cH&54-==_!Lj$4A0=`GL5gWbA{acm&RvT$uTZJArHp> zlI$m}v z?vlIM|Dv4Z9FK5xkMh7-yfEImPoBX!uEzd~^7e%K`8VVg7lk~;$wRU~seb&h+`}oJ z!#N(|=v(Tyr!+qLww#Xr9eExHkI4QaZqIk+9xic#lY#QaV)euC$su+gm1l5)Yn(r( zyt72(v!BQr_MVXEagP0^^q*AT!~Ropfy1B6O>-SJJJrv~F?L>(2jl$LvbRkA;tz5U zhkum|oc>pCE?2*N?TUr>voZEJk_R~2SoT&@Ki)*{VrMhC!0G04b7l4OUE~Zw3?4x`J$9On)pxj?o{R;PRzOV8jj`x$BuKERz zaK69tIUF4%yQ`^R<1S7QR-WVd5P5{lL*>w1r_N5rVe%|a4wvh(kB~cSsP7*sXSl>8 z937=RTvPr0Sb28rljIS0Pmx1&-8wskr^&N8c$4g`qr5y@ zp2qoG*b8N4RXQ$*oqZ*hu3G zoZ#rIEDzV%UPsSP)z_5waQUEI;_Mr8a})K0Z_>wUL4TY-B)2wIKYdtEaPcj9h~sa| z{$}cX-;w(`d_=CW^If^Ux%wgQ;b5S=z|r^Q<`(MLIKtugmCs`DG1+O+e_Wo%)e~}# zv!BVMv7eNKEj2zF$}>29O0IDBwA|WC{o)xp!RfQ|5PQ$b-qz|nmE6U_3v!ODm*f!+ z=jC7*!%|H%H18eiZ(c3xFp z;u<%1Qa^T9UD#iUusbEs;$V^N?5w`ukUO|sCTBQYE?2n1t=DOMva0eJXRbWJ@mjLC z3%3VHxL!y39L}4vyQ}){y7DwGaE`0>lsDSyI~&L$&Txjk4V8~@fy3Q2KJ}E(;%Z~r z*`4*-L=JF>XK;jvxZG5Ie-DlKHAoYWNlt;M2b2ti=yB+nNedR7r zaDl!3ls6A%eQ=C}{gn@Jg}p=QAE3O4z1PbnE^zBm*8f1|39j%EM+YhQ4pZMfl=)-l zFy@aV+&rBAamu?mI$q9kjB8wB{|JruPhfdC!*e*FR_-3Det4ohjiWcRJY1eCH$wG; zNDgsynmmKu)8z^mxOJ4qM`tKcaES-F#*L%Zcg|G5gI(Om9v)yHH;!R_$K!E09*@iM zc`Ua%iR$NxY_E%KC-+i$IQC_7>m=ndj&X_S zuz$Jw&dKVhSIE=Yd%v9F09QD|-WxPN!4Y<^)c9GP;(DB4rM&${mX8zc^py{AjNMbz zcdk}Gjcc6YlEm6Y>E2pOU@P)OT-? zdpOVJ5@)x_t<&j$PEK%sn>@tvtn8nmetf&!$Kf4viM?EIovD6!ubklM0eOIfugmV6 z)Q`R)Pmf*5InJJt8)vES{8SEcfoE`uhd3Xq@1L#l-qUgqr_aa*&al%}KgR*~o>PAY zN0n@^lWnKqMY;24ImCUOy{x<%=f9QPZ&Ba%+J@Bo*qDRtH8&v1EjybINw2eh5a4n)_XL*+*yuszKcA-$*!{d zUiDKP;&^xEGvj=3xyI2xa_4;-ALBj_1LY+S_LW-~s_*P4$GFCGI6pwSdy)G7L2?(z z9eIGGV`T4Q_48xp7zfAG$MFgDFQGpzcd>VpT;TE)xtY*EM~<=kF1f_P`{dT8>X(PSL?4$o%X2utMRwn> zes-7K#om|X0+(Nwy(`rZ?xv4ZoMZnU<)d+azZ_nr@%~rk*|EPSJALK(qw+Mao|flu z^o;CYt$vB8$9`6Mj_c>-#s^q_B}X`aL7v0qFJ$)`^_>^xE{WRvzOD z4{-e}=Kmqqzh?f}{S))Y;h*Kkht-e&B}X{@4}I)TthVs_;a#hKwMg#as3Dg)U0H6W ztp6%D|fC_KU_ne#@U*3hJ&@_(YU|19DY>e^L6A| zT;qA{uBSZsnEKf!^32$q$`y7tms=lKKiWc$vA?A}z`?e%_X+jA?c^@baE|@$m5*@b z%i$+AzSu#Y#TA~%>CVc78E(%m@(fOQm1`XADYrkRzPp#4U}tZ6fP?*H@6+l>IKtun z%I9#2o$J+44^Tdh;{)Yv?2bG??jIuiH?X|J> zjQa6$at}Mxa*6$u3 zRd&C?{Bak1pHp7o;x@T?yZX_r9AoEpd4Q8UWbY33ox9{7PQEA?KhTb{?&J#uiD#wYj6efY}Y}o)A<_4gBK58Ja}0wc=6!HgBMsJco+TQ#e)~m zqQwI&P(0Y7c<|!Eiw7^Bix$5#=Y8_$XWr+Vq&xSr2X^r9l`|Y*`*!sP`#8s4T;L(L zCg^$9JNRDQ#4he)4-av0pYEN6_u~LZIL2OI{TQd%zf<@2{o1?OeNZlNh#PmQcOTXs z;o=c_gzZ%J?pAL-CUeESNgUw`eA3IaX)}!jPDdh$ZD{_SWY2+c!v772XnpS%oXVb|U z_NSMtkE!=&kOS<@B=@mDvur)CKA2T*Vl$hZ;0PCGU)A1tLiah2a6G5>5f0~;-6z$D z^U7@;&o8IgEFf2(QtvM;o6?KQ18glJJ5Q_6mXupKSV~T@y|i3;hUYIM2c?&ldpKHN zE^xYnTp#G(SxFADx3WCM0j@r)KE_R);VzEqybrsp%8loApRXpzI9)>?m0nABpQm42 zZsTNKIm6Kga_t56Q9}-~y{SCJ8FpTz-%NW8`bs`WUxyiu*XjW1R1*d;eA4XM4yAHhap} zYwY{V0gm>g$Kio;<#qMRLG;)+at{Z1gbl8}q5I%q^#&)0$b-^{%FdhghtcEYa5=^9 z5pv}%^&W0ur>(t*%~7&7q(542;2d|${aEb$oBI>x2%D4Waf<8jsJBnn9^wcO zaEvSOst-?5@8cYIu{l+HUiPQSwfA(NV}s4<+WXkMQnue$pWr5TuF@Xk9FMTMTD$v! z?hD+;Cf1(f2wNZWKJ4KPhqx&3v3-r6XXUzgv4?#eVuMp0mG>X<{_-AY!vB4>h%KJ}ve|e9y@*WrEJ+`mo{h#uF>|q~=*x(dL<^5;8zr4p;d5??o z9^3!p{h#xG>|q~=*x(dL<^31Dzr4p;d5??o9^2RR{t@rT9`+Hf-A6dY&du5fIKlQeyzdt6OH3w^Sfl{dw$Q|atpin$Vs{5ak<~C-79pT z;SP=`XwR^FpIrSvz7Gf3^tJbJbiZ8S;sLq-gYM%8Kv z(O&sUeS&>#KdQZpL!4tL)n5CV_dOF#veIgrN-~rA))9(DGKKVj!WB&&^EB7De+TZGfu^eLS4|?oi z`yamNPwmap)+`hM{x8PyEb@2ChK81P@w{g6b z_6&!vT$@sTzPub_YejijdKKB7O1-tJ+{OjYO0TB9R#6|XE*l)IA@{Mprd*j?y}gzk zU>CnuPuAi=-yvP?qYjgxxfjoPpdvyPkV?nJizh#+U@Dor`X5VhT7xO4S9qU z>`kwGvyt{Lwl|h@oZ{LH^qXimIKl}oaAijI(WdHsY&PS4ILA3oHrHOab?~1C3X4ZXzL+ov>eTXyc%%a|GqrHXW?c@}v*qT*+)YR_d zcn7(MvmIq?Huc`W@L^mP#^9oN7&g%&asc3 zs`?DKu-8)G!{$G7fn)5>se6B4?I8~LlLy$|Uv}o=`wo!X*fMg4ZEVl2K0R1_3!6jb z6o-e&)p^txN67}q$IxT%So(R@+sD!4;AFXv)6-;YKEA&rH*k8k9O2?Td4&B)cIVf< z`(L?(eLTPst~lyr+`wshkG=Etyc}m2$h8G@?_VezoL?pn%KdV=x*+`(^f<$PY+b9} zUPyh=lUq2tNltKnyFA88BKr&LKEG4$;sOt`b(i+)BI-lj#08GAeYg6&>~U>T-Fx?F zH`uvX?&BESi>Y@fXm8;ZCpfrI`xwXf%YIGwDUNXTp!U4nACl{ftG6DJBWxa(N7#Ez z_Ws51d0g&b_X#;K{iIx9LVb=y96zOffbFMcdr9>!_Hm56<^Bxs!}dU~Ev5SihuC>m z`w%DCSz5jSoc0!uUXW9qU~3um;Y-?m9KS60aF)rItKNH6Zesg&IVt^yJjT|WvcIhE zt+(VJPH=(EPT}${)@Rx~IKUZpKG$BY>)!f84seM3 z*dA%OS5Y71CicG69^(X$aE5EE>fZfIy}_0>ny$=%Y^%LVpkkn0<$w`P<>Z14a_xU!-8 z0{b|zc^{5ul5=d&%=;R;k8yqOT^!6U z7ucCsZfv4^XFfT?_Wbgwv?F_)s!wqThYM)WaDl6v@qG(vZ(#@bN-wN^jO|5u-{!mz zcX7C=_5wSL$@MMNXE?<6Qrd^u#Z{l@FReYm-ZF9z$F5vpYdN{TrSARZAIX_e-*j5wR(G1+29BdO0TB9x{dk-H*vU@_N25YTidEPYs(GntRu%b z$739>tKHj9_wIUf2gi7b!}Ya0+pCXpfRhchCph0w9+!JV_M5toHj;bT-B>Pgj_W(9 z_czhr#s>FsgvYqR-j2G@Hr0IxhnvYcb~l&nJJI71n=P~taN*1LzttC8%FWVS$uYLJ zkw@6UwVidJVuQ17)%QzpCtJJFZ!b4XH{}GI9po`~ca*(db?^RL?qY8jxxiK+*8}wq zZsQcErFTpzo4sUHdT)7voqc3`5A`{2VtYUB33hQ& z?gwaZ?5X?oAUVc~kw-W>SoZc(A08riv3IDPWBV|_UbffA&avH6pB=Bgg`*SX1P7r!#_nmd{~x{&N4Pjc`>6CevbV4L{9L(%)AQsUCy`v= zPrdoC9AfW$d4Lma@6YeSK6Woq-^Dr3aeATl+5x)vF5-PS!$TZgtlc?Ky>*G)!UiWe z!UZmH{UF^ZUEYVIOXUH!FXMeieT>`KyIo#{RYHQ|w+RR}NR7-~fC7)85A!wvJG5 zuGikcIgYS(gZ2yuxO$}Sog1|W*y_nW9Ac}j-o8nD6UR8l-p$%a*xV|6N9jJoAr5ZW zp5gEgxpuVrG?7E>-X#yQb&u>Gqu#n#ZsP)Hr6*{w9jiXRPc}H{%YE$KFWbkd53rB( z$F#>ddR!i3`w7`Qo_pNE*^}CHoIEAhPoRHVj15;`k@I zzy+?Kq2B&QdxXtz@(72&%ifuM&!2J^r~k+W&L*90;@=*sSnkM;=*ce#3N zMLER&O7Z}wE6es3>fO5BD!qoBVh>wa@;z&6Z(wUJxr0Mb&T)jDt90+Lt-Xz{hMZvs z+gGa(H`3n15$<7cW9?6=VFU#oiu zN7%y|Hop4Wb^Jcu!rqqJQ=H)H|J27#?FJ_}!P!pQE7$WqJIet!yU2Z9V$Jjkm zZr-duY0EvF9wQexI8AQcqTW73jsyG9o)t7CE5#I+$J|}AosEVmTce2_kJk1aG1*p z&hZ#KpJ?~*(tZA!+{OOqa*k76yIZ~cg?58u+{gAvyLAu02RCqmBOH9Geuy*d+^c)< zEA1_u-~>BgYainXdlPhTeWSgD4bE_mtM{q*zf~XL6!)u={}SogcKfafDNB{iwb2pn8LSoZ~LGeo{Xyd+a=<`v?a( z#xb^k=6kV=YY*!_#s;T2!5J>F_lurae?<2IZsQE6xWLw<>aAaO?_q;GIL8_G$Lgyo z_rJ*jPH+!9ziTgWgzJxS|A+Pvn?L0N4*!zv$JH0OiG#nj$2h|y?ERzNeM0vMZez!q zed3?zQyk*Tle`c6IG99z7iT!f-lW=VPw76#2K$p~@8c9(Ppfw)*WSP}j<7w2_8|_j z^9*Dy*<6$#37Dxfk!x=LB0C|_cO|E9O4ugxbmX8oZ>!qXVGrGtUksKoZ=2nW>r7L-fXgy=|00PoXoC0Ej@=^eMNmSr`*KhLUMww z#pH3h*JS@y-A9YdJ)A8e7dTx`ZoH;GT}h5{u$nwB_tjua~(q~Abp;21~P-B9}wN7#9b@7qXw8^;^V8MZc&t3!I+#Qx^m6Kwmk z^|pF+*c>hA zrH_^C@2k&`mm?g7@(}wc$?ga0 z?vRUePvpi&>ixUuanz^B)&uk(t50!^!-uqwar~(4f1=(=F9 z9>@jupQHbb?|D(~VK(I;{r+n>tTi0}VQZeag& zIl>7Z;`A5o?w7g`ew9O9OghKJ|GplUo=mQNr9PTmHrSm)?&Dx8+4@?2Qjwe3om!5u zGow7l#+LnWbf4h}`!i`DmOFO8Rd3I#y@Smha*mxjW$!!n`NDD+dyCTJVllb?J-sVO z*jkPr+bhu*d_N9xu(I|c&av}<>WjMe7LHeu6CA86kIQ~F+5bWJ)*5n*13bd^TH5PB zs!!IIJEhl^bDV7?yFaN9H<3e}ZYF2gY#}>8t2bN92B%xegL2=R{ulNBwsIRgO*zBi z4sz{R_4Y1uh|R9@pmab#R`2d68yxK}r=|Cho!``3d&(`G>_d-({p9NJ>N6bRcz^Bv z(g(@fjt}?p*_SIPO*0+_kZg? z!5((n+~WwR*gA^)fB3!F!#NIdcC`8d_KuNlYbyQwOt^`iW3|UP!XxY*r`?-G_XY0a z_;~FFc21BRld6w!gzZrK2#466OucuK_6|;Qj_s4RJCmyqaDWpWWB(NOV_aZ=3cl}D z?LF+BCRD;Mz1i|3;pVQ#``s8-Gg}poE1c!-iO{ddk@Mz96u}G#pOu@~#a$fWAr5hMR^5Bg z>E2-bd3k^nY|p0Ne}VU5gS$AyL!7^;-kn|d#Y=LhbSCFGdsVK_q275-4srOpJjCgn zvRhT}z9n~XjB{)cwb$oVAL0n-c!<5X)jM;kk8ulI?`ThOiYs%gx8Bnp;QW2Lj|)7; z;Ro8id30~*au=sK$2oT9<$a&1H#q-7POG@@AA@zx{ zOnrz0T;LwIYU)SW#(=RC-94sXdu(LG%ztm^0+{VSSa#ngd zxwZt)UtVtEa0NNR&PwtaN2|#GlDf}Vm1CT)NsqI2=$BIOtuOa*fvu(ao(;7(vD=Un z9N{sJH|6=u=sw$==VNCJxxfb3UG8ca|$Fs<(ELeQe_h$Gd4C zVRv`gT}k)u9&!gKIK%#)+N&$`zP)6F4epow-rB9Y`V=>@zmN797kFH{rQKge_u0O3 z51Rvc{;GV>fpP-}IKn9&VRMjrZ#ABeyVy0_3mhEG^H*0NA0o#%I#eEG?=ab0Lw$<7 z*gsr*ft@4d`kLyUBjpg=ZFzvBqhx0-_4YAx8%M{=8IF&WYaZWoyc}XTl!rJxQFhl> z@0}!faDg)%oua+Aj(T&dY;b&<+%NajWqV!qNk?vB=L|W;@mX?pJ@wJKvcYa753r9b z>#Mi_tKG*gj7TR4A7PO+QG)veSgIKaj0+WXjjQ?|EOAHFTOu=@^u zxxYuhje74xdTi%%g58f~Yg_dNZs7Q1?J|^3Tke#eN6xS_pIqHpeSurpUO;<_%|i6MsP`6@ z1DxU>wieND?W*3zO&s9_r?|l3qPlMcx;Kl-5q4|x5ZjB(&Ti@x+`h9`` zCFK^5mXlNLtw6tr`e0?*V1G4vfaCRLXHWIn267t*8_OAXx0Gvpsn2n{^w#t^+JSy= z_0CRm8y7gm)-KvB`|$m{$^lMxlY7|gB^TJh-oMY=GxwfDB47ag+vi20mr^wa))u*S*0S-==6YO^6 zak-x%`v>UWIaBW86c^=wmiGFAybnj%I#2rud*{pEK|KEgxr2)fg%Qd6kx=aqS zeYrfq&K0tKu=?Oyxrw9eu|s{fFiHq3ZKT

    v#%Oe~- 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


    q8#-10knQ9NnXgf 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

    #QC|mQz9fmR{J9&) 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
    )33U5(OP$lOx_UNhg(#N}{FeZ|q3 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

    _m$UXWWV~nFG^2EO!yXU!^M2rm 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ΜscH8TY7D$XPi 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%0A(7!S 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 K6r6O5~hvk@0&VLCwi+VtA%nv9`yXEvM(y7j3E> zSyUwh_x3dVbrvaM*fear-)|ZkkX0M%bU+~!nIqq7SlzI>$D8fTSBAW)a$IqJT|-?% z-RAmip)Q-9k!`H?X8SVLrZv>cG`mb>>b-O1st$Gv+&m}3ylEpc zB+w7h0H`1^6c?wjynjP&eW6~p*CB4z_Rr?cWnrb}h#3Aeb$T*~ zE01!m{gI5`JQ-MlCG-pQ;G}$o^>kBhkV4)c@;X0#7bYdNF>gc%ER(VD{%UF~La!NV*9j*;hn@s}4 zh9v7*giYcqt5{)kjVf%;lAY~=8E}MmZ$~S*{2*6!+BPfe55k_H{$Fs zj>tYxk^O|q>}%reuaC%HeQde*Y-RQ#wJDz^s|fS%U~j9)es@aq>uEFjdz_skk^{-a zZLP@tNNU_bJS6 zTgvGVC%lMXpG`DZdH1anIQLc3~@I>l5<0nbH1Q?F+DJjnzzq{-h5LB z$~XeJXKq~YVRAXGnjL0GCTmq#Q|85K>4U2J&9FDl$bG3^iiciWZdN|t50l)f`6F^$ zkttJat7;pO*l+YOUnV=8VB>@Zm4*9N%2(ZItVA9tr?WX6M)jd_%KPfJ{fh5MMx$;2 z6eLqru5rbwb6iO}MruX9Q_87Tm~qPW4wO^yW3k_)H+##8`xTqA&^2dM*z5e^1e&cQ zl83zsMy^H5^U_vK40&Ti<1i(3AQaLAiWeXurdyBrpPN1ZoAgQNjx68LK;z1&qn$a%^}hN% zm(h+V=B#8)r<458zug?oKAZdd0{r;G$N;57*O;`{l|^peo;Shm+bz)}l4| z-450f$rKIEj^t*6Ngb7Cb;19>yx=$Ox8V1V%sq0!7fO{?y&Y+$e0^j(L;8+LG2#4? z88ca0$`swmPUsq$fzi@V^TQ3>z<#;3lE_suW!1<^d`CbAMx;p1HDz^WL6WgB z#8hv~h{S%AIfV=rWN+h|%F_MtyI}=ZPw1{prYtw%C$(>UTWZqus0pc5Cbd&isdW0y zsxhf_I?b(J>C}m*E}FG)(TV5IS=>B#*@@>ZSa|k{XD&Fg?d&s8oVTEO;+b<6pS7gr z7)~yn`=(0 zt#2)UqHcD0;_TUT=d_%7?k7?wE?Knj#JLMvo9CW*=7JL!Eo?n;&Vtm5OBO9WaqfcF z=D8=HX;-d+$&&6$7Zr}9A!b1`Rr zan@46%+GILJm*|(<2@vd&g{LnjtNS68QG2~VEUCp_&X9(-}XzF;ZZUmE1>1s0R=nq zEtBUIhjcpI^o09d{wGryl;YrUlgjU(P3l3zkwq`$=PPO$DChh~YMiVHvQFVqPI-+w z*2;VoCUVGNwy{Cx1zE8-l5xPf2$jPYBvM2Zg+)V_ZX3WGcUjPchRQ#Oa#O8 zZ>(zwHVxFP+bEI8UO`)2C#9fX#ucTM>#8?-Imfw();#EX`W={FMh0CHObI<3Fl!7} z!hRQAeoMK;wMhwtHHIK5rCf!-y|!sOcf-X3+rY0}Q$I}#qHfmAZ~!i-b=$99&U?s- zYGy#L=_G{Z_EaQ?3`!~2z)_&8$k+pqoM(a`$MUNtGVMEKhR`0aH7zEKeUJVj%HKeg zDCrEEYPt8dDq5e-p?gHDvu*W2J)*%{$@EG`fR9v;LCnoCdHfe*R;T8-4#;N#lA3)v zFp__if~-d2?;M_xM762H0Ptt*GomS25_u)d2M9mwNjuK2Y^F8L+MT|M*YCz zoGDjsb**;AN^2cNFk=lqZ}DKKe&_P7P4b~KT4O?|wJntMT$toRb;Z0Z`Vp=cV?ec$ zYdcYNV#~-FUmi)>9k`)RUH80d)t+QzYif7$+sJQH?xaHD_YRt?l9md@HVfIPX~W0| zsS^DwxLluA)yj4`GiUO0h^we=o2%&Bq$2-dxsxHkT{Tbu&-oS~*A7lDf}ERn&NO*h z;bIP~eArcU8`a2lYHX25)GXB)m?q*O$dWo0>+-l z92lRBRap49VqAoP4;XtvyfXHgBW3vzCq1|kp<5O@+w|7mu96*W3rsrhMpmeK)a12S zK%1$tDNGPj(Ad*vgXtBp1E zG{aKFR*H$%$EVx9g=i;3OioHZf;;JMnHv~KUTXHlfE*wb<6#*_FW5*KrWa$HYPAG~dtGKzm3I54J`uh}!1R{0=D+PGyv0f>4>fp=%C`)o>JImH``R7NLXaB|vL5p-y zBzBgV^yj$ADml&$j(;%oNrdujJRn%ARs`5=V$xvah)O1^HDSR2)~cnR^h)Y*x|Zf3 zyT-@_H9W-D3XVYQ7Qxm6w?V%E%&(IpdgCA&nGc};1uydkTX-n{7Gx#p6;Hz+65NaF z3Qg=m0%p;wd@e_WO_9u_YF?LfVBJ__zWbav^RUUOYShf>eEYF4vR z!%gT75D+63wiVb$r~ew zyAVKoUT{FE=hE7GZ>+pr3aDy*I^v|CiQUYp<7Z3=X<0%jXp}2Jlj>m@ZCRQVKk~*B zgwZlRWc?+cp*CAPD{@gEmrD0|V}Zz$B5#cG<)or~h{8{ng19dm@fY#N${$Kh_r~;~ z{tmn`8hXY~(-WmWBM+r8_VnWxVY%@+MZ0y zd1EWHaF2oZ^yoo)%95uqr}r88=x%SUe4BwW@py;Ba+2DWCI|0QOQ5yL$?w)mqo&i! z4Kae*vHNVFkt|xvu}0RbLqNI75We;ceO%(^jg@cg2M`fP<5`#vo_ryk%lJzfU3whQ6M8>5#xgl4nJwrD&!h71a{ znOxgpzjUfqql@(BWmKs<#+Oa$NFSKpP3a;89Dd9{WMn-Y4f8T`U#Sn&mhYz>WYzz4 zkbM)D2k*@UP=w>K4fIoyXJW#HE0*Dyi|I( zdM>~|Vv2Cu@|RNAyCB6S>A|cC<@r*dT#=55g-ld4`D-aK@?YtqH&zBp|a!)Cc!E~?u3Lt-~ zKw5)w880ozF261Xl<>yN8tp|36KLf1bOg!yS%+Qp@|(@)Iu3cw!J>RdKisWobE z_Py(1ue5``kJg5@ntS%E#zgW~3UF;g4DQdhas{^yaC?E{?^*%(3|A7Wzd@blzdFn0 z;Mz3gU{^&$2{~BV89;0Cp0KpmAE*2&o^};4*3fv{l?@q&?RtHPhwayy$mH=Dl%?v(MMZFBp|LlW!lr#LFmg;} z*l)#;EW1SX*oj3W&Dz*e!^F&P2}ma;C>r^ari8=5*cgL%LXnHo0PhpS@|6GuksPBu zjt>Kj(FH#p_$`?la8sv_m3&2iGX&*)?~4q#wdu5%-yRg9Ad>&2A3*Z2MI)cl7Vl0C z6QMQ%rJ-o#^P2FM z#0$X_oW0nWX&9x3cZl)jw)Sn7OM~{`EyE`CbNF>JkD)Igh-88OZsd-O$PjQi^of4H zKr0rF=#HeC`J&9nLTCf_u!b`RcL8sV{1^uk9)H`;-Bh|xOM7`DaU>+G>uPoL}2Hw6_S?ogI0tzWF zSLWY93UB{eng3$m%DLN&=&5Z+^$;U}t1NgKS$O+mWx>mnw=Yz_y@a=TU+ZZm3jL+B zsw+w6?emp|uHr2)C(S=qS!N@tlzFnU%+>yIZT2eKSA zSd++eg=$xM);f<2yiFRj!9L)ORVkk+MGtl*?@t6ut9vL*SGKd#sh4IDOfl~hy)-Z7 zps{<))!1VM1m3o!Th*DWx5cNR;^^OoLtN9ZBu%f2+3r&C=el(hqJJ<3F8E>9CFE^mAp-HYU(H=*50$qVh1#eF6ZP|0AAb4{toOVW{@ z4SI_MWL}Ef8n{Y>$OKkdjROrJM0y`VgbE%a3p4SaVeSgTJN}SilnPmBi)5lKTk$Y^ zCu!Bg26COs35$_lvSf(iTLo*H&h=@_a7)J)_Z$h89upKM9HZD;RcF{mOMNvGf7EfAwn+lS*s zl>g(Z`n^MB&Nh>0Q~MCwKA+>H{mBkgeR!PPx=}G5*!W{7tBwC{YR&lnuI!c(sr@GN zF=|)m73(+CHyTHP#?;##0hTOUIMPVJaLN3|bLP!TrJ5Jb%Qr8aS6}<_MasmaMrTqV zOZ*V3{%{J=42HtVQPeZnepZbEAywiMq^g%x) z@!|gla#L01hlKq;`@c$_)~ljqGiS2jVW zjV`&0o1b)W6WYDCB5l;Tb=i323fXLAN4XIfZ5{DO+HGuUXyAVa-Db#YLekcrPdHGX zO}Qfrd)?bA`Fa`%;yRK~GSyQ~a>cJo+n(${a?avA;PO_E&-z zA?X+uH)QE4*b{#cbt+m295k0@Dxk60#orjXrUd?)T36z(%s2qaC@XmkmiG+}GpMykmr zY#x!Yr<~9~B4JD9N(_uh*!W48aJ`JH^1Cy;<3=`q%B9?}U&_C_lpAfz3vro&NiJp3 zru1g)up+eX$__<~FMg-y9U?$5?Ax|G{TrtF#QQtlX;GT}=uWy{Ev z!W5Ts=g5?e|LIch8kw@^%PxiBHGaQ?ZNgNSa$ij0o3pwm`O}cBpq1rpd;Xhjd&=2f zkF#YPk_A$Is%vVs2eqMzBymzXajO{z9ZH%mlv5sujFOghsT*8smAqlb^^hD1@W~8@$7&0$(GfRQX5TEI$dZ=sCeP@ za*en6& z)EQ;CR*oLGmR>NbkYo1YUfU)2A&rj+Bl6CljAvK%glS3LvS)M!6mh$_a z%J*B#?=P=>zo-2ED))X`3U=+2|1)-N@q&4CTJ!sHYogvw7(znvHS|GiVF zb3A+ppG51C_YMi~;w_o@Jie3bV&a~cE_>UhQ*ZN1T#Zr zn3I2yHTU@DswP8QGyb|-x&xBnImN(f!ljHB%L=s+$k5D=_n2no~1KqHK?2n?2&&_ zC$lbLe5k*ii{~X%27olp9xSMhrNcF!^mN{Od&*vh|YRJm)cjB z<`8+kDpbO_J$NFYq8-26GcpZ%ci4oU__8zAYve0^o-uMp;E9ogdQD#L;q7gmM1oJY ziM@Bb!TbQCnUVMH){&R9hD_cw#+Ub@oJS}YL$LU~%4^q|{zTW3N<1r7U`r0GEFI1u z{{7Z^`KjvAM3XlT?8gg^Ri$~I*i;OY|wxS^qm?IwBTqnETb zHuPkpY(ut(Vr#WXwxO{po3$14Knj~B9e71M@Tvb1k(oDZ-n<3p&f32R13A}&_rri& z(Bj4bRzLPR`3qp>Pm;-|>SIH;0U4+v-e}_#x>4~vDW{)!&(%*k`-m*s^T+=Wdfv8h z)~tDLi}&w&%}m$x%(#MZ%f$bKpQf0XXx0vX`hPUF3m4bqi_Htqn=^m^K29lA_L0qB zy?M_y>?8lPMiwnw^e&CGl^dz5*k)I{*H!YKm`BWJlLfk^BK7^G>hz{YXZBPie3*pz zCs zKP_e0o^lzJuC-O9z8I$_O>C@4d)cNXL$$Rc>3kKoT~eyG+}=8y)Kka;5sR&-&{*cK zS5{>Gfz4V@9H>aVE{&FA|4(B!+aw>33Nh7;AiU~Y&LB=U3Hn_J{a#6+&pX*;m z@)d7SuAY_DStZ}suh?h%+F$$LqwjUTz)j#HQjx?Y%*hRUfdohk)_IOo9RegsoN&Sc=K+lnkf=D- zx#EOMfcyV^*WPEJ8whIs_q`AHW}m&+UVH7e*Is+=wbvRhFt+ep)ate2E+zOfT+R zUDj8vY;XUVHM@R#U231RQJd+AhK(pMYblp)%^GB{k3JMfAKDMYe)o+5&Q1H-(9QFz z+9{_@pE9|A`n39iUTv9b>fO+(^3G|115j;fk`MNOq*XV&s-{LgEs9xI{oEQkp~Ng} zR@L;G;qQF-`j9haPW_bH8TbRwq~@MpUo}bpp?mwj{xbwgmNo5^s>uS9EURYv%&F5% z`}(TMr|J4Q{#eU2huGrTzQu89rwum^3gEg4|2>yZMp{AI)957}qTS+Z?=S*OJ483Y z%K?9Gnd^DT!$jA{0z3h5Y=53 z*@2vd#5oxUr+r)EzG>ewYQT9Xj8?Yq*8y9ciez}3IORC((r3uBT@ld9?f5TzSqsus z9?%_49!9;Su^XX~rRruIetrnBLR%X9@by38S0Y0johy;0Weu_yoUJF1=vI5*v}{c8 z*m9!0xKZ5^*Lz4!5w_hJwcQM7L)^~-zW9hPfu|9iX0l8lAxYJm#$>;QYL$O6J->|B zxRI6CXqAFn6MZ{i8jm>7Q9`v}dIHUt1X%DD#y_f*DBJ4HOJ5h1XZM9@jyuP6v{!Wm zZ-;XBQMx4br?tv}abduHhFfKV+UjnBw){)CDtt|7F`nIA;M zLPITgiB37GhqT~4196EnLf;WugX|Si`7$ZjFaJ8D^5s&l;jE9!&kiwbL0UoJ^*0Og z!0FN^wa(%EcNVM|uSgid3GCD5a0aIrEOXgfbH2grB7rCFf;yTSofiw}9dW-~0w?__ zXYlr@*_F~vF6&dAC>L{!dPPC6S^@H1D^mujL(d4I5DgZ*W#W3aU0|^26mVWeIVg!X z3Alm6bpeat#nTHP9_sSEN)u(=g{Juf(p*I|Q*P-A$gYYqdJX)4aifR0`8m3vF-vct z{g~#0N7*a=#9oKIGj%R;1tI` zjcKL-@hINP^b<&=4iosg?PAlBgwAQvAp__cI8|~5Jqk>32H>ac92{De4~W(m##~~W zzo`g#t@vQmbE>)IUQ3}rP4Tvp`2+FgltEYpDBfw4*VrI$-$bdF;~Z@U9q=rh1Qtw@Undp^hf!*vn0acS(n=7|R`w5O~xw6SzC_FP$Y!U^a>uC!Tt(t#kFTrX_=@U zmF%xhaHT9q>=pEg9ndX}S*FK8+eLIsqbEPzB3diNO#$E&c0hMEcnTbdcn9#j3ksF) z1BIY0ywhD;)sUp_fhmiz2;FXP$S3YSpc~+a#D$Vn&OVIB@QsXv`}|Ph6QnlT0o|O3 z6x00xQbmm(=;~4|pz9hudIq@OA{{qlya1#A6q-JQfrF;1Zb(pC+$dskA*2^Vve9vS0pu|` zD1vH+-||VeQJMp~Q7P1Uy1X$+;{c)w#NU?AKf|~m5v9zkO zkDjs9f+Q`^2*5W*ut=pn>XHQb%RdMgx_f@ax=icjsp^1*LP%Vd;2+2Ur{Wgu;&gjI z80!^`+x9Qql!(U@37tsPJ_>Onv8iuiKWis;mjmizb`g#X*-WUg6(g_3Fy!wHc1QbU znuWs%8sfWb3~x8KV=JX!V~3$v!9bUQmHxFAMG`fM{xyI%J*50N`V}A`s2`FUVb6Hb z>WVYHrCit5X+S*IXtA9RWqRit%_t7NWWg!bA=->t#i?ucT(~)6Bf_NMDjcxoG6@<} zGtM4}6j=(q@lS|fE9wF@7|mqGO{R}aW9UPj)1HUdA(#eTU6aAnCSrR6Js;b}Qg&4) z3$n?<%psRvj0F?$h1xR4*Ko&L1N&MHTOPC~%AxR=a*EBdU_qCudP`UpNc%_?Xa5ot zXa6ckO=b~w-fS9}+)3EX$`z6AUy|h3wSTo66Y#4XMQDw?)imvuzUcjoM=OMFaUDR9D|GRG)TT8 zNb1?ZO0h@NtBtY{FBE$L-nPfZWB^*=H906j^9=(R-DQ9+f@2nd5&i!#rR<)(P`m}wfT>w2 zwx3%1wO})1`pbkW=5!~s?|SOe*yplRI5)HJmf^CyRMo>AzJvoKM8L%g-kL_pGkP4G zuS4{@)ryZ7HF*g$l0V1;oXS(% zYoZ$8Mq?ex%!MxHrot_`=spAIJGvJ34SRGB@o>$>^7g3Oai&@`H;4Li<^2ZCn1Q}; zkG^{YeXo4Lw2u$;eS7pBF&nrULUu3SkaEItsLu{y9a_|w1o_{<#)iKynD22VN?v#H z)YfLYaDF?)d{2VZVbi$rZ{MI1h#fo_5hIByXT$o`$r5WY*Pw(soh5NSV@!J*vZ!?y z1rwYY<)BB}-%~C`Z4c%H>p*0qQ0P3g&ljw09pmnQ#m(h|0nD`ny1CTVPR@^eRyTWE z&6MM&RjVH-%<>{*t+ITcFtz%$Y4s;euAXtqw5bP(C-#Lft840~RSy)^Y-;rhu)7ZA z4TDeBr%f5C)wJpXjK>lHY``Jc>>ute8g_l{5p5@udU$*r=hy>Kl_#S*J{! ziiljgK+wl;+p=n^CZAR{HMAVpO|Di(YO<{ANq?L&Sps0eq+DG$4fH@OC$eS3@GPOd z3M@n!tJbl=05^=D#g;X>>hviReXP(D6LjS*+Wo^;aStFhCEy37IgB`IBn{10y75H3 zQVLgw8c*@9x+xV6MjTZ8r^@34uDjtU#n(#892*4zyiK>1&mC-!MHM??f-;V|eV+=* zT+jJI4A*@@g`zw9R}hv*5Bdnc{tLd>+__JCZ07dKCIDjbUH!k?<7EgdVyeb3$+B$g zsxRYNFy%lI_{_CO{_V&>cN+=<*dbe%g7r9Cp4VRw;PEvIf~JLIGjZ zzr)TM+B3sqqK8DMW#1`ay4N0fS9KiPBb!Zux}R|L{X_wW_Y)9Z_cVD<0bOGU4k0bA zqz+4=&ZDtbx(Qka)045ZF{fOE#Nl`hli@7)9f1rFU zX1|jsLdB^>yBD3bL)11OCk6LVPGL)D#OIKoIO}RC^q7@aAu5<2#%4NRMNL7&9vQkz zYooE_4b{nVz}VCHCCC0V3>WX~oC0>K3p8MQv=PJn7=O^x#-vlQ?{B4cI7G`D+tq-2 z9il7d1DMh)W@YW8D7MQfpvPhXmoQ~KR8$0fPzXp&*JawB0(v|K75SkII=xqZ-y^?o zmEU-X5A5i#b{FHS3k#1sE8;#GC0M~{j&F4c&|=y2ohu{|n$Fzz5y+14Mw>^5Js z|DHGP^mJA2wCWR1pHe%u8XKN>{E6QmU?bJiYJe|FP7UxOFQDf@u}$^o0UBb{9!Mfa z(|fv+hQM3IVa$@>vRCHa1@9vz6|xYYWSLNzj+Gapa^L8fQ7p<6PYea?#`$`iaMTSi z&MrOd2QV@E$i#y++=D~XQ9E_uB*-$ml$>2K3^sTihtboAMo4oc#f}>!h3!z$U+5IF zOV7Klw0$;&&`$tRPP0T^oT55&KHAu5P$?NP7{0a)Zv?#J%y{?(V+ALiLZ){P!fEil zGm^YnF3XfTyNAoVDAPWH%S1`2`goMI)B^PPP(wpEF}6rgPWOLo+9{+D@KC?GNu=XaR07PEg@MEL>|D<&q?L@{ z&&co993YdWLzm9=xSS_Ah4i)%$ra&r{#+04wT}+!avZuDZ(H%K8-yrl z4VSLAK0>}n3v`E%vcxY;SB4MiAbhvU$?YD{epmz9<| zh4d;TErmlD&h_vt^T$a5d%y~Cp^g6q&>I!9((%&@+2w-l4j@ZE>!b3(qn~*cm+GrO zx4L)&uNZ{Gi2!_WmgmyXl2o4d&{x=)?ivh)X`V-v77v1yM5uG=61l;rZ8JQFX~)Pk zEu8^^FP|?|d}}1Q;h|HLh?yTG${h!UR5!ISDoB2lIKfx?4`NG`2ejyUJ5*H8{qs6z zZz)z4wH?yM^eSPuyy}nbP9gOk2Cd}kKYC10S-omz+YV_xV5KLlUS$Ko?Z4pqhT!V{ z6R8B+ApA%n)6&9#uA2iUp{@NnnlXEMO#O3I`X^G1B+mynMu;*OAua=0JJL+ElMpbl ze9na$C9AoJea->nd(~pTXD;kKE-o=px(>DHz;*#HcyunN8|7;_K*1A;Y3pl-fccaf zyYcxhG5B`;6ZwF?5saTy0@%BY4$KN4hO7X*5yIe~g#pu(pbtGc*PB#QE_mcV2ag?A zFJ2CeXSn)H%yssuE{i;_m~PCB{bSf>u>sM+tyGg_SdZkxFLJp0pvFEBbSaH!WjYN3 zUGl%~wSPw6*o9CtZjhLmaF1{#lOQMvyu^a=h260?VO}jNcZJ0?R5TTweQkCe;(e=IE>VSI45Bb zx$Y2%Wb7eZW++ym@g6;6rD>uLU?W@W1BG2^fs>VkerX7H%yoqao{SC|^8;UEG8}p% z18M&-pg9h`hAC1z{NX#DLi!E{f+s9l*c`-~-ogHOrt$EK0gF~D>Zm-?j>K@}1Xpnh z+Y_KVfvYj+3kriso45kn21;)h{xR&dGW^qQ^lDRk1ZbiD!xrKoI;^s`v@p48+|T$D zEFkVCCaO?EFhSeD-YM5y1>%q-hcZM(l}|t3h0VDsiJ(e)EtN@aJ(^DLjYxjq+++ef zG2Mc_9o!KiEc{Q)=E?c*)+UhhX5sbEXSG76Yr~-${bnDQQ6t|LjvVO)F>s_7Y~d1GYIED0*Ky{cdM?3C;CZ~?>SGYod$I(&5prwlO6EaDWYH6vO%PaCn|13t2 z@Dhb|)fbHaXBhs~Ut;){(Dcu|<7k_N->LXMJ*jJ?or*{+{))72u{_?OV?rPyjMr z7VC8iX@v~iZT@F%TA=v`D=2XashOcJeLB}ud)KDV!R6vuFG9UEBynTIcJW>%rhK-) zi?xj@(p%JCcA@fMwcE#1M)oWDtEH6fVp=MRE3u|J6py`v>p38GHSYZ?5us3y7l=tK z?c#2WtTnwpbL>|_1gV=B%)31^T(O&YBEjGed|aySqd&*elx;$;Y^{&DB`(!vX;?a5 z;?k^ko>Zzt>nDZ!37uSVz?6tzw6+PB5%8Rw)1?Fapr@_yD=tXF)~4)8`a5fT3%fbT zp+7~D``fNFhrXNb5g1kIE!i1;>Bij~-d+|mZ9OY@|BuYDU zb`Y5^nC7vUpy!n2bsX{hKy;<>K)6I7Z70HU4%D3t*nWcjvPqO_pHx1+96T#S!;Gig ziE5hd1u+$@hGrpN434_b9jp{?x}>2U+Bsd);L$74(wXj+uQYs3h0|7215ux=C(Qo zbn|Qs;a>u$Ks^AZVS=3mn#3wl_Qpb{cG;&dkP*KrxSS`y-^P1c7+||`ctFk7g*e?5 zFg-m7usfvTIa2xEu<}##X^njPi+uWf_~{Ax)P-n^0P@%zXd;07%0bXwUa1Ap%Z7m( z+vRuLFp#)_>5?-*kV2-{4(fH7UX-s_hF>o_0}bCeNLRi<{(SQwzdZ zpL*rfHQ}do;w?fk+0^o3i;IO}T;uKH|Kw>^+ z6)bRb=w8F!I~yA78mEx<=79#lX9b{Q!~&*Wv%!d;$)xSWh)!WY?YV&A1dLS-f*^4` zVugk)0Ljpd9C8Zi?b*iHqpicRDFUzI%Ak6AEK?`cR!ttrl3e>aZ->JCMlc*l=H!|6Q|7=t9J8$I8S1@HOeH|lrO1$U zMwkmJW`z%i^jF=XJRicx+4%rxS52#*T3bCcyvZ|{6t)%Gwr$IrQH{X>9$8j;%A}cc z%iKTIg1O?`7~ZXBYu0{X#~5^acJ6H>|(UNqFnIc5r?$l-?Qn~2feB}-gGf7EIPv^D#5NGCZid--3N_ zDh|y<={HG0z7Ivn`|Xf@Bz=7sT8xD#lmO4PqdhMiD| zy=Jv?+!+eL9Ea#{R-lYma<0M{PHty}x^QW|1wx!7*y*-!3nA=dpau(Z=@^jGrDQUo zf5DNZnWjMJIuy#5TLh!C&ptvvxHJ*3V}4A>?n1a>sLl3wVE|IcxEu&fCwFT>?ovfs zY(OXXQAMk`RQd?1NY&j4iR#if(3#`~p!rFR@j}5|VyF6<4f(6?`N9d+fx!KV3>ez_E;`xiHqDz%0woE7dqOzeo(vGOXy}AK<*qQ;) zX#!r0aMX-=)DF>KC9_gUOVA!6wiWTSk{@8BoMLs`)iH2kKJib3Htf=2X;2deHasUt zG7Z8}=l78C@|sSYGcZe-4RF=b;Im{_P0UD;`p2J?>PZ2I=1wLz^oci_P7GXhM{&QgQ${3aQg%+_^s(~E;k zG+od<9EN2|R^)CNH35*_B6Q?|t}jF&E{_GJ;k0%3nrV9zvw%e_(}rzRX$fv8NUEn1 zc4GMs4aQx_KK#Mmg-hky8e>M$v!SELm=_H6t)j?7!00SA_Hjr?f-Z1Fo5{+#Vmvp; zqg?96FPi4Y#c(pxbA%3|n43q%70w0K)IA)|SwJ_1LR?_@Z2xo*Qzo0<>?i0uT{PP(!To}=Jh?PDNN`-DVbAg6U;!ACaFJ40US1|$tA#wt3pgIc z<<$UuaZ{KLPypACze>`GG8VD(ukvaWg`Z6AcKyG zo`L|Hn@jVujza|j^tJhrAn^X5%sp%$yBqUW#QwyDTv!g3Ix~}Tj$^GB1nhP=1vIxk zWRWp%YK)kk1&d&Wa%2%^POx9WsqzXe6u4vha{27Gz@$B=eNhO+ddmQjAjHVK4U`h> zZxOy~Ok!dCkbwS5Oj_9lOsW(@>fnkMRzdVkjY&L5X=W-2a6{SX#S`&FB`99!fiuI& zDSq4ZdJZNBCWB7)VF?bcad<hC*ulI|lo^ zfPD+DznZ*&ksAv3Fep#xUXsqyTr=#NcTK~`(2#RH$#G~`1_}vcFEz*DMhzyAp7B6f zoS-X2ETxq21Bc*#jS69d#t7Sf|3PlF0f^^h(iEqr!|Clvq5 zYlUT;!hr1n+_}1sNxc%9pGA&G3AjDfk`SX~KQzGK0&rf!i3D!A@5yx$Q zO6S^B6izXyATo0=``DWsAZ&2OO$A-Jcr(j?#Yd)(KY@U%kIp8KHj3^FAN7tVFD|b> z!(POL19B8mx-nDIm8>~8i7;Z_;8$0&g%RA0sor$B<73m|3+S)~Y_G0pUFDh%=-?2_ zcwC9UCbDdPJ)ops>r9iuus$6L8uuhvj2;u?Omn+IPqc?hCJE-S!TX$0&yamaT8k1c z1v^YcC*e$6pBl_|N0{M`hAHXcz7<@MA}#dads@1Q;U!CexGRYg5Rq1jOGR))x~_)H_~iX#{VQsu%B zkB#BS!SwwRgRvL0edH%ftd`=`W5!&wOM@9q8^B^}22^FArEI{{U}`d?>^NI@O0*texkoHHkr8KOSRpjxV42%vjbru# z(g5^#9RfsqZePPN;vD;Bj5q`O;MWao*-@@|U%{vYc%eyXAUDBjp%38cGpE-}a%xy` zrqzf|1=gO>#$!h|9y>n+wRq!Ki^0bh=YGk9Z7Va7vHkQj)i}n2QvfHyLH0ODlhmeF zN~ERSqKP8@RMs20Nlx^IygIJH)R(lhE$q9!l9$o1pvI(o2y(B;l?x79SdDm$<+gCD zYN1=c5b86h@T3TGN55jX3JuIEjqFHpivxV}y`ve&s~0=}p+ZQtXkdwv%4L5$ZNqdCMv%#zkF;|{tjt?yw2NOAZlubgnE$Hhe%wbb981D{WS-ukPJZmOQ8qfLJbK4Hm z-I92Xf?T+Jg<|C{!G#_}GyNY|!F-cPqfQ3Vd+~qoIhDk_TUss9<9+TZC8dF7lo>jsbkv)3P z61Qyp#4>I+$N2>#bZ0g_7|y)?gPok(%oD?Hb31@9c-v-vn? z)c$SF$IbyhcGzPS*virQEjv_Zq3|}MAclQvo@H6F*zUnYtXM1-!yliw#Z=c#!9$$^ zsz`a=fE$eZ1PgsEf7`H?64-}BPcBaaNvj3$^-N5^~xr>=Jw|+|1 z^r-{1RD>JggK3)|tL^jZ9eCahDBPk900P*5p7t=Q<`f;IRZnnwTJ4k>_4Jw9D%u3CiF)h3{nlfj~UXb5`LFxDGKd+xX&UoQEes1x zl64npLe@-#G z2=$iYW>`rN4xD1D@k-?p9SpS2H<@a&VZrIEfW8Ln+wAU8xvlxO!E7l`g&MP!O*kGG zz*L%cieZA$h&?UYpk0JB1cBVG*zj3wPA(jE)1ozH%Sy{8R83gp?pfk|lm6O-r*&Jc zG}OBa_+dN6;1T#G)R}na-wIFh&XiMsliinP^PV5AC7uF@iO@thIr5B%l{aV}>!QLeC2Z#0={gIp1bZ%PZ( zHv{^uSBhgm9K8tQdtmfJ)w2Wvw@MZFg~bb{xS4&r6A}D}U@k`mbc%=Et`guz@dxZW zy7%^&p!lqyD1YELSX@%A{?3DmNjkq;)$Em;@&|rH+os}x;mD2@q8RoXSfzmGlQN=I zfXC3#iM`$FO4r)BfzK461m+%2G}KIXjV<&Jqn-aG6nac5bkYKDTlWl-$MXL34vj{e>SYvF4bJz?UV=fV^6}F zU}@25Fu5U;7Un{Qz7jOHtFc}oW0gPf8>^3=ht=llrVy82Rr6}8*&Bl=+0_|U^FAw} zyP7=OiWb*NdIJUhwGgq31u;EHgu81QCUHW5^n<;WH-FUnfUWIsQDtDLI zLgJ9@*kC%u+Ro&pxwOok1a5~_+viSPSuEbd6Uw;+0+pKjD&u9Vyh2X?Pa*nX_m2Ovec9fkK0AxH;tRIX>2LOOG$YB$7y81Gy{}OIK#CUM6;HhE*6~+ zAF)kV5U&uUL>ZEg(613l>R$t<-(~UqiOUFY*?y1Ge?j!aEKAne3!Ab!J&D>1BYc_DOs9Oh^5MXL?0#*qkUEB+zdV>8)tgPA{mMRWSt z-@`hDYZ~X07Ux?MPzh5j7rPgYTL_ECXpji>+e>VCf-G1!&l*8gG$Z)8fH<{g1yKoq}OrP*x<3xc&OH= z$iFg#0DVCqT-*eQrb3tAwbHoI9nOk7(DTz)FZ^6v$ z(ZH8ntU|ML{IN#!t^9#28idM1I@MTLQl+oero0v98qy&Y(`IGi1>D0ZD;=161R{<{G#*Nuv??F3~^__OsmXVmNwX{MW?*}nhw>3vQfn9Bb!y-QwS>`Zcy5dt9~DHv5WC45pl z0ojlsGvN$_C@s~e&cWbuU``ynWM%mH`6KRRt+t9mS|#6|!{|!rUih*d+L%cmp0E%V#U5xO6Ul~JZUQLaR_1S}3$%DDe$u)Gl07E3{Z7%pQg5i(QB z8X)m$gCMtr_CfA_Y+pcbg`7-K^#fF;2^+p3dn9H#6yaG zd-QIx%gYmghO?vmBDa^EU_53gMYTp^cm9{@{*ADEilw#F2iQp+-Tkn0;UQe-BL%z9 zvcTEMq>cY=z%2~7;>lpxlz@@jnabQ@RBLfqi{6KwgAoK$`C)JsmqKAV7pf*^!WluY!Mj)KeX;xn zANvvXu|TO}>3x~*{Ua-o-jzl?g6R{~Lhp;i-akVLde>s1^S7q=zoK`j0?HZ%D;Ug* zmGC^26)J89VNr!FEco-u`Gedp?1WU`&U8dTQ$2D67Y>9o#1$0&d|&|pO@IgRuTp#+ z7Ye)K2$I5CQ3N>j=!xv(I+SLB&jG0}i9`Dt?Nk)RCxQ%esR*GO7f^VNh{3wFDkHu{ zHm2!1xpqzopMSvJpnGbbD4u9w zTpu$*tj0v8H;Uqjv0`2a7|xEU?uTJr%qe6f*Z{w=lfp$R>~%rP^xF4j+Z0urHd$~l zaB?G^MXMCJR9C%aj6$(JYS}6+ffoL`VrFoY;mp)jnJ&(eir8hsF2wc@J%MEtc5$+X zwDY-a6Yjd%_=7B%WWZcuz~q@Zgd}ojpHGvqlTE9QrqyuG_kt~qHSVf#_IHH!M@gpE z7RBq&*m#RMiY5Dn&-QmeQS#&+C1mWt8AWi>HPY;T3pbpjME*gV{T&qn;A}a4k7RmB z&f}w)@C-)ei9U7|P0<*SqEg{`vB2FIVsICV53^2!a0sDBZuO zru`R+=3|6lO#cG~X(ZF}y7OP6#pV)2?`fuUr3pqbO2?$lA!DjP@X549}&$ILT{F~~N=^|_=urE6!Aq7;Yuv>?n z!nXr(XQNZ7^!P&*(2>eGhrctrQ_augrkhUN@;dDaJH0;Y6i$qKIbrisBgM0|QM|+% z2}_@JVC%gOp4RBlLFLUx2OW31>98ZO!-vBTZ3- zvCYB^i;fP_9Z$y|JBrn7xXoto8au;u`~*6N_Mhfv?8euGoo|!Q5t_{pnfX5>3`+7a z_yuASj3Q5|M2P8$E+ufvNT&bPC?wEgGy9y(i-f=D1(6t+M+NJ?KdRE1sVgG$g!)4G7StwBL)V42{CvVI6=l}47S%A46X+T zOPt~QG6xF1Y=p|BKZ<2F#^DqRzL8{5D7{(X*y)Uh=SkWML8VBbT*nT;qfKvJaS0}2b57vFXOQ93}*@BAD&RwVmHC9S-3~G)tk{g zhSBI5g`EdL{?C)E2gBb_<>9*$9f$Znn^7#@9#cI2G%5nZYSaQjp9&G~L<~I2kCoVC%a9QxoeB0iubuAtcsqLah5x4}IT-O6Yri*!Mjs$y??tW|_X< z%IjM~Ka5iDr?OX}`woEB-9IXDboaM}-9IGVuSGqyejJt1{hF}*CsBg#_0Sj0Hr+oU zmI!A!y#c$+0K9Y-;pyvS#qYO*h0q7CUww8fosqOrc2>npH$bk2`1LeuUizzzRWFI0 z(6$|wfZsEXS^}*?NyJOJ2F*)*ZESqQncl?)p-;Ptmv-AhsGg3UYeusr9L=)_7|r?l zqk-Ba7%3ghZE;2-bg+?OcLA+%H1~(2Stp}ek5OYZ_n;C+b9XqJdr=aN=IwAaf5Dps zjArY8qgg@bg2kF|MzcVfbz~Kbh(muO^yEkb=C}xGXyU_~XV7g6(S2UfMHV?}{xXmQ zx|f9LzKRks$Jdp`c}Il6@;n4Y*aHC({|14jc?i5GkTiFm9U}0KAn<3@L-Y4h2?(@? z2z-c=JOs8k7z$jThrr7re_w|EM-b4e+-{j{#eq2irg1p4QAvlrwvrBeQ4vU-NqQUJ z-Jn@8ixNl&O@-}^28qpiNZc4AvB@BTX}BMNH3qi`B#ptN@Iyt9YYA)MA=Ja4x1kcK zupvZX9ZK@3urXs0_$Utnx$$>Ki3@-%ziRJ`aI@YfcRELj0}sqb1wsK$+19Y@e?M&}9yY|2*mefvZpn2y6@0 zziUte1T+QO&NK+LsbpHR2)BnrxB`kREGoFT;DsUH)>)?6qj}A4X~13XD5giGnaG)^ z)TNl{C>Vz{kb7NYpFpeTHO3;NY;b-#3^XZ5ZSzx9IOI@AMx8&C=O-4^2a5K1CJ z{MsD7tz3wVToA;FBh`OfIls_sE1ioBIX`jXGU5zJ2&?@KyrYK4kqoh=Cp^{Q=kVFD6i2(-=;@-B`RW+FQ67i zc||zN?I>9ySL{ig@YNEW)vcK3#zC5e@13J2V)0GDp-Xnto zXE?RV*Jkc_Co_ua$w2{3v2tU=^me%B&Xs#z5zz}V6g}pTfqOXSWq8j87$3NhkS(Z( zKR-bw40&-l)t40kFr6geZQ7x-v0 zTsA0g{l79xZxj~~0vWcW9`L>bl|Y6UX6faBB}yVPEDOi;K{&$CX6`%ZI|doC)poWS z&Epu2UI$$vu8#?>dCdAGFwq#VLf7HMf!VMmR}NAVYa=QGV*dd-;$&ioaa1 zDSpWiQ2a&I1Nv>K1oWS;*A%}BB@xA!)@#Q55MJn-@%Gfg)HlkdWkZGW7KY$HLM5=- z^03+8<(hFg)1JEh8SkATW_cE$XQ*`cFugo45jyP8cux%tA|u6H;7$zXyum^SFkTk; zXfo`?c*1GKXk`6;C}e0xJ+%E4l|Y6?AsKd|BqGC2b(##14b{S?4K(PtUp_L_Fy6-V z&1i0y(M0>@y&=AL3%+^#!8RGLn!L85d6T!jPHmT03{}kcJSqb1t56GQZ>!U@cMVGR z+YfeJV9jS7V^5Rst5!vL?Tutwl%Dm)dUv0Bi09QA<4T2ulW zkA`U6j1pmq@h}?e13=AX2AQ`78D}`%i%6*hEdLu0%3J;`LR8-qR7DEjfZjEh8>Ksq zWoL-x6N2R`)B~2!pc1fb53zg}CDHQVa)w_1*B+#o|AS}jyYF0mkg>#!xx$Pl7mjAt z0Y-CI{%CfG+>@2eFZPl8vhjRisz>x1Pzy(NNv#qMuMSh9;X+izkX}bE4C(xENN=Jf zIsrUzhE|_$4~KNqenYx78dA}fW=Q8A4EY>Mw7-Q&UnEGwOF=K&1;9q5-G}Z&v=?c# zcWJcGLPemx2ep9qf)MQ-N`znX4*+AXGU(h0bhHTB9HMfApd#Gxo)BJ%)ujjJEuEd= zHB0kBSUMk~9&l(yCE)P>8G7mb86{Xc`n){mYSViUdIz^|s=*4~f3rI8;5=>>DS|$> zDg0njzYG0p{O**FG`Btw;&;2?C(8kC??xrycTb4ldXz-m`c94J*0T@R-1=P2zTCR} zV6$26xWU8%)H@z z3cSMMw1mU?ScbC*^)Q@WsD$BU!{O{kNi>|!a5ztd!?}FF;XD=%XTkO1a0b)$MI$ty zZwYa|PH=VMrvmx>z6@0HdQ1L|;-@uwms)f%c>QD41G-C53Fv-Uqj|j*CA>NG!>PPM z_g^6I__@Ow#`du^8(wmUGF{-b!kRCy7U|>p?fTKRHOOADS~rYI-dE*A(qZc-@kJf| zz5;_?$Vb82Z^wzznc|b_J0oeY)ygjX++$1&nv$rz8_`%1wXrO&oq6!fiK%xGp)d1_ z&i#5>B*F4yEN?CVd{L~G*D4nuCq_Hr{A8CXd-m8h`!!z@HkXRPWJwHbY@e1J`?c&~ zI{*O?Lq2WCaSzS&{Jx~m%s`BQ1sM73RG*f>0Xxt(nlQ=T|2FQO6>q42PVy}A269Qq9uJb#H+tJb@EpOTsM1K%|KBTJ}2+;`%O0!Gvg9D`zN z^$AsV1EDgt8hF;#SIwyZ${0UR8Tqx_b7ERJuA$ z;;M3u>jpFHr%exIt|+casRf7cwq;GKs++P;$;?wuQE@HEvQ$toomgAo6huk3*|LPP z099yN)g~`DK7d4VW~=0&R*YFTwt zYNu6ApEghWcP*=`PI?<=S!OK5EKAa;14GoPkuYg&S=BXDYO7SdGtSE|eGs5dpE5a2 zP!76Go2PIAU8*F-xuABiWz|GP@c! z19l@Ut8PY>iVt##geL)i;mcw9Q87wNE&0De_KqVCMcfd}5hYCg(|sM#t|vTtkLw-v zg>_bp)rk*m!g&_)Pwf*CppXV35@>Nizf7vvoaEzHKs~_yFzef#y5^^Kw*l?GV zjnQ$L=10XUAsl>>;0W(KY?soQU5<@F9jD+$DjgCyF8zlbV>%q0eh>h{k34n(^@q^d zkzCGY8XG}fZ%M6tnsl{$;dCW#7HZ5RMH&+**++yBYcxyt9FihPqDj7}+ug zc&LSguzyFl70VQs@ps zyawN~*`*V@oIy;WKV}6uhH9j5%lq<>6;K-ABzGm^kL%{Y ziRkrjLatwFYQd!{g!F$=rQ?ABQrF?Jw5c%8RKTMZIX$_EWr6Tnj!oZ3Bh27W&FBGV z8&^6mTxNB(61Y&gY#&WO2RxxtX@J2aGpu9NB;(oF`E$dPZ&-OxG}lMv?^t;eH@8RS z@8OXEl0kikX#z-+a%}n*FckmwigpQ;=N!v!K$kSZ)NQl?>;8 z@Z3bE5%DKf<^y|8Y$rU%9hWWu95tXfg&Pu%E84CqWbxy}nbXx?;jXM!p}^m*fM$B3 z8s9n23|xG7WicMU6J6pb;%E5I5QdwqjYoyf5IQz+Z2GN-pNHY+ALZwh7Jjd3l0Tl3 zKRTNvRglZ}xiQ*<0BV}$&x!?b*Ha%BM1z;;4hiMUr#@!$Kkl{qe}tl|K{EC2^KnUj z%TMJa`z0I?FH%@$LCKW27(xiqO!~0s7RCbSShibY^j=1!5uVh8H^3Pa=wc=ISQdZtC_OZL!F9&fJ#z@lL0A*Eui8BcA zFdT>7HO?R|bsY4~bXvFL(k#=@5b390_oM6(u>BplpVP6XRX?b{#2G|GaV_c4MDx^f zeWjs;dII6Ii?|MWIb#2!kNriA$HOh`+d&_bqrbWE6eo!Qp=#26^O$|dBm;7TNDBR! zy=by2e?t^OY{54NmrGYO(=`YGiOBB&48}pXEf;HxR87kBRHvVAGwQ~vhE0)?@gBS#fZn9 z#Qi%pW!b!-7<-ByPyvmR`vl+JqTU6|yvVkO$3y1f)R?KJfiDe^1sz@Lw?DEHsL6z; z-X7IopHDICR1Jq|5MFWN5#pLC*zwrtbMc759o!+0GKa8>{JcJ1vpL_BP(D8A9C;Rt zIqYN=;uUA!7WNn8fvI}nRt~1XDvU9?AH}Y2He9Q_kfJfaZF1H48}}*8j{G^ z%~TL1oa5*{al&((9j3E09-`t`vfqkOUU)T1^E~G`YNa&7#V=}1QZ4@86>FtG#nOPb zs{wvALl}`g%m5Ax)Jwk(N2dX55xx+h)ane8?H7B_iP&nIogvsCeay{%h3I2gSE!+_ zIL(mvK5Si}4yb|&1(ihZcYzYa0omPxaIjf%#IQ$0Od!2W94`@v2aE*+S}8v5WWR-7 zN+HZO9g>#aqY^K+8<4gQs+<4^Q@ZqrZlj+GE|snHIZkmU z-Y%-G6(dD(YP1^y+=4M#qszA9_1Wuy0rHDP#MjPuRDA*H^*z$tD!Q*x9;?DD^pq**=m6 z?Sdf*J_w<~X?wqF9s1day)kAYU5}lc4@lVy-HwpBo%?*12dv0trtc5O&FkOVPJk!v zqgApqYmi+u|MMz*O9E;C1Tjg!C_t$WZD>g#LqzCIrK@UZPYWX|*2(e38f1^TF|?IY z^zw3SR7mDI=D4VEkSVN;3Wu1&ny7G?DO?a09&8F%M1_Z#!nUaJP*d0$6&_{^*GGk4 zGld(Y!oyAB_Ned(Q@A54Jkk_e?S>#nnZlx|@Y|-aI4V5G6po1szher=Muq=o3dco- zCz!&@sPIHnSQ8a`rf@-2SY`@WM1?;vg>6yc4^3fbRCuptO4moF_eZ50qtXpg>Gr7f zp{R66RQgC%YOORxeIhC?ib|i3N{ge??x=K3RGOEkZfsQgW>j}vRQg_2S{aq*qSBhE z^vq}hEQm_aj!IWVrRPPZZBgk3QE6vXdQnumJ}SK=D%}{BUKW*Zk4mqIN_Rx1S4XAR zDns9Eqtc?NbX8PZ9F?w#O2H4U2TU5F+Dt$gG-5!;`7?tjbN?(dft<{FUuSBIqQR!<@ zX>nBgdQ>_lDt$959UGOt7nP2SO5cx4E2GknqtcqF^b=ir{din*{MO$8l4E9F?FrMX zCs$2}IUAQ7%D}!~u?m?xfOWR^b7DHnE;B%zx`8e2q3!zw#3VjIvoOr^{upXRA}Dop z2euiXQeCT!rHD;Deae&?nEvp4Ze9OK!jn(aUqBT7GvD%xSi;&6o2s2s6$VT;WqDzV z75xCiw(^1klQlrhV<##MAvg!xwWn6gHwC``hORz^8Al8947vqYzW~!te!yV1EE6i) zF~NfiRg0SHx@mI&7s@q zDJJb>YyMuccm`WdM^NZ%CGvvk%Lj#NKpi zcDKYmp~C`Ha3yO(Id9<!wfLUDyc>_br;65=2q z?PB^#9}=j^gLS4KL-z)3Jr)@$)gf$0If}`}m8z)0z=BwC!+Ant8w*UPQ=|HareOtD ziad@Yt|-t)(s8>Gsf_-kkMYu0>HO#b*xRG&o+kAHMGA?3nB1f3f6*ZzxClOrG{=(G zZ3`?fqX~u_cN4=Q$R52%LNb*}1l)dPBySfE+kLc>TIs#BGH#zWg^Fk zJ;6TJCFNwCk{Ds`P1KYW6Ab0O&3M#+egmN4nFVkzvNBfTundy>=%+(w>Zb5`KZ*S< zJdrCniO&dEY9Icomnf%3ue?Gfi^#EWkEg~yq@Acv+DGn;lbxnPfrJ;L!9kW&G}{D4 z+VQwSrCHunVw8x}v4(wGB+k~fYmUeIw~Tiw_rTi3m9%3HY#>V#k{iDQW-pMLQ?#hC z3w>e5yget$-r8gZdrTJ=2HZ@q&GACZXw8$R`#aG+(#Fv6URGuXJfQbiNs^Tm_pr}f zIIg3EmR11KE$rVUr_8hjJwaKAA|wnGa5mXGp;RSZ;SMh6O$^lp>%Ci*0I|iWOs9Hdd%vLGm`#*g?wIFk>Cm#!zFjROQU<4(pezPKKPMaArTP0 zn1g?`t36hZc7QCOSR$b?sYvv4938xisivLj;DBa$_R)JMl_(>XOJD1v=~+%PeJ!9V zo_*verEwR*p3)x8^U85S&`0lCX=?NkhT!usdRhkG(Qok2VDJ^}uOT;$0E&$s*#WK+ z1ZW9D!F(Rb*9GK7{Xq6uy``*!jv&sM7^N0xutCt-c#i1U^e${?m~j<5?bBF5e?krV z5RrVB!|MjL@evf4@VFguf_(|~fejGbLJy|l87qL97KMYV3wR{uA_17iO{v zd-PtHwpck@)s&1Q(#@9zLd)y`(G=*yCXeQL^gt{Ca&RD{x6};{Fw14SKMym<9*`IJ zSUF^I;yBw!V!!PK6;_pV1$ScH_zVAwjEDA-pMaPC@lJ4ol7qM?bLrDeALXnx@+@XQ zf91R{GrhduOurB2DQADp1ZwgE7k4NEjRVMw0}}KAWB*wAMjW|d#@vm!zp}_H>2eA% zdv7BTC!HHhQ!H4-zG5Ki6`QKf_DPh(eF~^#kETg||2SzB{r}RG<#;8`W5>|Nfaur= z!0a%c7YhxMNT)NL{Wx5Oe?9!AzS{_Ry=o94U7xJuQ zyF?P}d;y#bza$y#lW0$D7fnghs5I4Nzf3o*`XPDc-fygqOj2|3F>jO*mDI+q9M z#M^?QYe6RAA1;VGBs0NRg?dDeOI`X^AN^aJQX)PI11iLZ-ESK=Lfx@xL~mJ%+*kB4 zLh5|go{!8)m?q%=vh|grjLb1j_n3~5D-~hk@sf}jIi-( zhwB+xJFM=Q}DrGMHypKxK^c$JEL4n9F8V_k7Dqx-AcI?=6WN*0_ zcj>?S==*8qn0^3G!YtuL2LU=O$qAR*o4REu`I$$z ze9o?&PrM%>E4^=zp&Oc%l=``cpjcllr5u}nC~biQ{vp7vB&KxfT8+p5cyIvuQn2o~ z1eiUBuGWbB(t{(@mukGh>Xkeof(N*^;ww+n50I|~Q(g9zLHsa>6Scg+i7@)%R|Z!W zV)TQr459)I94&?pmZQ{;%vVqnsU+tx{g+1*+v!`aTOFI?y%kUs5s!()*(KY>`^?F?6FwMl%Yplf67Oz@ zNM$i*(0rWf+zw?mflDFYN~phZ^-J?$+z7w#=9EavMV!KcO=8BQmR*d1vP3-;qvikgX01xN}u<~7SaZAyLOqRCBf&;cYUNuTHP3xvRW!#t? z@ki<86kdt!-=7%AYUro3c>PDmjIBHeXP=LsfR^o3O8> zSgnysEIum2GNAQ$4?McVf{-d{mu|p3-53kdKM*eC6wOUyN+C3=CUA*Z%6<4Z$Ua_x zNk&Z!?W`{x+RcKkOPOpZY&cr_qV4X?7mf4|X)9#;^b0HB11~9F29B7Q+@c;X89YDu z!sb8547kYDD|TeT@SQJg^>fwg_w6p7+cW@A^qb`yGFd{XKQ&Py2_N{vPU^C(6z3Gv ze|vOdfLsJ;B$aV%eP-Zp^Cp>Y$n=5Tnd*{Qs&{>1kMpz8?x_m~47a6Bm@3XRHc3AW z6831iDbqI~lMdABcvd`iSekvrLZ#u7Tw6R%5)2zPclq?{q!T)HuqCd62gK5(L>x2@cMQ#k~- zx_prwP35zhY;+|AfiQpI@kcH0%w(x21Mg*~Yh!5)7C8&uBDfhN_9!Sr_hga>9t+bw znXEXP3w_XStQA;(&P1=uWN}ZRxLmMocZ9XW(dBv50nnPC(mg}wl zYcX5{1EGSnk+PQ5y^CN1igtYAuFxWqeeG(xz3Fo%%cYyJJ3R{nd}QI_# zccz<5nHWkHougOP+pv>~sVK#MVj(n5muev!n67S0O6XvpJH?^|Q`jR=@En`%Vp=D9 zB-!u?orLQG=<{w7^a`llNbEv`@DZ{JGRhvC6JxABU7ig1OqW4^!Or$#CM(HmgmOcb z(vX6Yw}dXAgH(<%j=fUYCGF{|Io*y;&lifcpk9ttcPpFV`A^roILF+K8_oG1E9pr`b)gM4CLNnL;?C14bZPVK z_H0RcWjyXq1b*#^x(6yah15M8HE(nSwcbFwTM%!MmpV2*BzCjA58T5;=z(2wA>_qr z)}>S*l;P5yiUg~XmJ5pl9X}fqX3ZSfXPy+oB&4EC4bG!=2rVR>T zBu{3S+G068OMAJoube>^mp-=AIQZ#l2luf(9b^QD$lrE7!6%`~E8V9SHT5O9d?m** zbN9t?!(o4qZpS+ihv~ss+JX6YGxk|%;uM1=v<<~BJ)KEHNW#A8cj58{XQc@$lNHXO z61g3h@OY4e)o3FbzCsGeAg9o7pv&j=IZR6n@euAst9K!#votG9bF*}5lSdtyEWK&9 zau1#6g|53r$D708jR^JE!amlNyNz*Vl<{G)Di;`R>1!dD@TKFl45D) zbTA&0WeNK9gtaw;Akvn#)Ekl7s~ z;~t799Fl0NS?OUd>|@}tEP#$QAE#CqXMV6;CHw9n*$M%x!y|3?4A?D$k=hE0@`QMR z4Olz7vdeI7~O&w8DFLJfmBq8EEMIbU}9}XI;5ykXP+zN(UNxSD_Ew~-D zE^7K@zou)#rcbJ-tMNDdlww_Q#CmF;N4Ln6tSrO2objl$DT~ukGaVO%i*@4<^{OHo zsr~-I>~OPb0YAdoswo=^&2eK*?T5n0Cg5ER77w*LCWIEkjZw{ws%A=rfK(kX;uVV* z&t8;51?>YGYg4<{nMFLb!$2EMDv{fa@u4W#c#=V5K}=&UXkaa2Yk=i1!lm*@rn+P- zRdU__UXD8$w`CzMtp70exZK2DG3&0h}4PM5ViFYj8zJ?6uSvt%(-|- znz1MAZX7yXBVV~F#9=}7@kn`ESH4i>Bitn7B@_!55(loFjiG5e!(f!g3o6HLD3jRSoWV>5&;xzO+eTz)PBF!>%@Cp_%SWm=6xs1(jVjY>N%U0- z3MV+lr9=Up;f0!BJuJ+X%6F;-69|tuZFa5si2?GC0D<8Oa8~0#^soiB4YNjT;9S5s zrvdNVo7%M~_vir&`42-17X7DzxKlw~)077h`IjKXeWvRaMC2^-k)gg_?!!8pJakgZ z24ZIfaiJ{+?W^-4z92Xf9zy#}uZn97=#N^+e}H5N_+LQOPlLw()Zlm-ToSRvfT0p} zxm>5_djyEvhXAyHNmtM=mK%JOrnrNBcQRc~Y1-0|WZ&ev>HL|2-xb2g8c0OcEiH~*BS$M5Vdm58WSsZS#R1lM(mwOoE55Qps7!HP~ z&lWi5WgPp%H7~U=204%yGr&s!QbG~%*Cc3#G>IS}{@?>x#j$+h^OBC4o?SPt+ zr4$R0N|;_lr^{_4Fn9cy>2#BH3iAK}Yzq0k^1n@uZKei<>Y|W7>!TVknHm7JD1=e` zKL*C@1J_s()p*y`z*{`{x{S2Ix%mta?GEZHgZc;k z5%dSY(!e@bWmoW_HFxk9w9jOfPL<#eT;hn@B8rdCi_Q4{*Fd;Bgkb+_ zZ;0&r==1gF^Y8YC^sD?o(|VQpTw+>pk3M%fBbfeO!<=Fty;K27it+Ts8R{w^yY`y=>kAn1~(@%`_t-~^_n z@1^B8{U#~@+XA}@%%NrsF3vNeoi%!};N*SyFOS9qh(JMg9Pq8Q z-1&RM0NuE545xj4RKB@j1b2jq#CJsHTl33{|6t(!4R9d9#)2{cK%IN!Y9>H?H=E{URW6}^gq+*u9sW>+J zxaPor4;|>!tR$O7QZ(N5d>yV!TjbGtis>_GwY0bZxu=^sk!V#1T+vZ5v`St=@1u?} z1ij;=AtJC$d}ZpI=Pjxz;R>AfDPyLka)Rmde$}PVEeYW&>}}XT7s0O?_`fhuEQU&n zxUm51ZY4c~ZfR9P!0vF!wc@=vW4S%-a|whRJiEZiNEAZX76kO%JWu{Na^N46GB~^d z9I*1sfIZsF#mXiwTO?R(1!rT_;_WZjqNdXHu@@~cL9`9~J9p5vq8~hm$ND!CR&I)} zn&;6A1p!j%sqA?!T{*9tQ3lNDNimGj+DtOsy%$uO9#$Zm2zs!`?hQW|O){U)!{;U3 z!Ateq2&i`=>RhqrV@5gPj!yZ35BQ0#whR)9Hrc?z{vO>V8%`Ml0Cb4N!y$s4pp?tx zn2#n<@BK+7YPI8VGD}{x`z}3bro1hLi&&c1xg~O$gWd`Uv6^ z?g&YNT*@iiRZ?Pm^mVi9k2cQn6v6tlR1zlHY^qQKf2IH6A z5lkDx=CLkXs~|i)$EyfC?2M|vgX(vL)idq%h%z+N-E*=PVGLF4R0IA4Ah=Xyz62af z(cxW8=gMUngd06q*pz>Y;lp_WZ9K@ReQqeUejjbWlPQJ*ICM;*I;G8Qmo? zc>!yP3t06l670vzln5z8Qa+$p#(qg>nOIZR@oc__<>2X%6bV{B2mG-QlY(P?+9{)@ zC30YUqcB~@^wDf}>$k$i;f_9@on%_-cH!PD#k3TUiZtuua*p@qU40A(z3Ickv{Ohc z!@+Zv9L?}-ZfE#w{~Lh{r;ys4JkarRx0RL&@(1V(y~sallT}v&4%5SK7bXSSKX4e7 zNqOJRaSEm9AW;gMp^JCJ(hKrS-;~lqdU|%Z!*s9PIv#U1)7VHi&Mg}sBNiVZV>3s~$^?BQpx^iZ*uUGO0=l))y9u*|)@~7}pzbpy z5@uEW1k^7qce+jXLfIaifaw=dHC*~mt8%1EsJ%@D9jd!!@Y;lb0n5=<`T%y2UGzj_ zw`^rME127$nk@s<1oZqYk4yGl#U5RylAu6w7xPCMmzJ`>4N}DpMA@g?n>@CUqY^ym z{JkjLV#`941jTyQ5BJbA^#k#7@JWsXwOLNVsHV;FW9FHu{CKeJ#MCou-);3e6`Kq6 z17X2VpuGJ(%9zCF#q$lI#X}UJ2loSXn*f3i2pF_i)*hWzATM$4;}C{XfTE}IA-B~u z7|7=V@)BAx3$sm`c1Gr&@Fik^y^EKoMR?pCXP@efuDmg$M^}hw8|uk+IaDF12zOB_ z+|d@N*>{SVs$}j^@{K?~6bD%M!s{x3FI#rE@&6wXEMn0xBc;&39?GSDAnifDu!)IX|AJrfxKL#gpS8 z;HlbSakPk6Bm8q^Awd&z%ON02IOWo}d+`*tCdTN&^gCdhQ0 z&tQOZ!5=gmdaoELs7J+r}i37YY_-PVc77v*IUlP=%SO7_a%frJ0 zxR1e)Bkq-mPIsc5pCDg-aIN})al2So_Tjs@!ai~*1jKk}nA%8_R)?{HkCd?Df}qxLU+bAGv?9vnuL^&oW zaoB{JAV~FQ<{Ay6?Js6r?_*rp(6Iub)nKkECR+m7S}<(rPO!gu5!4-*n!4d!;Fgu* zR0^T1_GMHCuh1ENm~JQFW}0V&$JldCkF8<}6yb&O;YOI_Tn@Dh%cld&N-;V5wx@j( z$B?Vy73@>JCun%ZS(q=W_b9HHZK+gDAn#9h3wMp4bVR5)FgH@TmZEzojO;5i{V1}B%L|0k9~yL zr4)>jcqdAG(SiLve51qD4%5BV$~{gYUD9AkQhcEy$(g z(K)eJcFV<+Q9}ePT@(YZ^lAnR8yiXj5874Lm+}jlu8=*IUJ%zGsY+MJ0(!20t?OcG z+T6eB2J}%%rzN5LG$si?wuh#1$B8Kf7A~j^0q{cd_;p%vj*T&LP zdKkhtfWL5#sZ!&BnynUmG#ZfIodg8IK492N_V<>?p)rAXp&Y_wCQTG6;NXSsaJP|8 z(h-5WyoZ#vr+lVoAk>sZV-Nx)prMUdy9g#hZwKfW8(m90F%iX57jjUvM_)EuYU-ng zY~|hrUJf;Q;;4uf8OY%ed&cafaB+PSEr+&JU6Kw7=u{7(jE|w%F3NarmhIz!p2R!H z;O1r7r$?<`nw+FT!7{4!%IU~-S%SuTFyTs_Eka$;#|3j@O1H`MtD-BwHcT((6xdh)M2`-AVpQ^GrG{N3j8pLVJ(rH;bKa*s8OpZKrZ8~m>?aO z{%!}3g9_?562~$zj8)M2!5=RAmLKqC`m3CXa*P=HE^UR^tTWgiO@D3dLwx&nC}5mm znz=lYfS;W&eBv_|w{l9DOn?EZTS12knWtlo&~IT{UT>vEnWd8abCo5}&| zBe7|OLtF-pOosSTgADOr@{aq^YZa*Htbi^PuRVnHVHhlFo$?1kt^deU zAU{sd;?5Lj<}8&<$=yv^JQYRRf41XRP(t|IN7J91`fy!34Ll%2y}Tcfy@Zj;P%l?J z_9zNm>al|H6DQKNq(2?IR{QV<$}UNgjLD9>sX{U+=sHDNAY-r!-O zyokSXn#M(nzcno~57#+H}5DaRc zC_(8)i+iavjFt#w)tu%h?PETHyGLWP97j+4Xqt<2Cl!}QLopM!(s=nA67Bk8Hn7f4+yNg`B$weErcgij<-sRl^LB$b+?lj?{$-t@hCOq$C~>!qBboAKRScyW|$G-0Q!`j z6I;4VH#fG+Dutscz3qg>7tPNretr;Ktz9}1x}gjQD;S1X8Q16hfCG-yF+X4{kP>Qu zNi(I+AaQc+pe+s$**N z>9YRwKi6#R*BYHYJP4g3A>yq__>Fkz;Yf;~-mmsG@;)3~7Q>Nv+kBkzI>H7!`ZrL> z6`P^1cxGRCEgV%Um=mlKD#d%m)1#_=BoO0Fl09s5~O(3zJTaSH|@k|&1{c- zhyOp~{scU(;>sI`Z{Jfox{|RaY(v19V8BdB0$y?@-IjEdn0X9jBHCbO5$vUge*=V3lX+tP%?pR4r>SraU!q{7%*fZA)84Eiv`yA{7&6l z-7U4jGvB<=KQqXE@2xs@>QvRKQ)ertpF2ZB{86YW!}dput7$q$&A22E6hWQ(x%%L% ze%@F78FS#K!ckp92ZB)zyl8eFDuRa!PZiG4FMyEw8M@@*X~n-7Nzup2R}s2jwylvc zhx}-9S>2QTN=rO44b+|jR2}+-KDBj3 z!J_g*$aaQ#E_(NnavmmHZ^^{`YO zU^GQH1d||`GyA3&zgT%M;|PZfPu%=BDYis1?)4qu?d zb|~EPb79}~DhE&nMQ_5%HD7f3uckqNI4t_L;-W{U7yT28@?aj3odF^>S}fi5>mumV zwSys@s(&;6WBw}EUBzF~?cWBiiDnOd`ApDSNXXy58o;B)UjguC*w6r|ADK+>X0l9J z64Pd}1ez;JH$Pnj8b!Zo^ndelj;&tm#POHp9hhva6$(!xg7?%j%t)kA?sL4JYqd_L zuuNF4Zy52AJ+T!WHyz&jyuslpaFDQuK`1ie6c9|dWR&YQlxV#m1(m2wN+!71z&Rwz z9$J<&IZS3qK8?e;=QPzc)X0gyuYb!HWHyOIyBWCpE_>0m|7o1=WWr&yLi=b7|NU>b zZ!B*|Uox%#0j+PxBoXTgZNOCVVHSiI0~<9k!GDR68lrv%6UOp{=L=jJ;C!K#98O3+ z@v6Zo9{=GGg8yhH)S7+6E4JWvpE#T#;Ch=BW^?#tm`!Igdqs(B2U@ziGF_!EMliP- zG;PSXB->g`)O}6<)t<~YUlA}cv>*J`ZQ{YUtaL}JWj)%6cOJbHf&KJ{=HE=$orYkyiHGc8IX?X^U->j*ZCSrpl*hQ&xw%l+Ia zJk)`wVv;??D8Q!a;Yv*?qY|P%PeIX%L6&GOT8$icZeY`=Z)-gryq012W0hmwZ0H+(FuoUj z__>vW%JC*4n(op8H2RIHIR3&Kq7JcKe88ooyOL@qk!Odg$z`~^ggyKvYTx{-wc{~K zSa~5dgdgsw+1k=K+t>Luk%}+~2cTbChlNSN%B08f7ota@FXPsA3^LQ=6ny~pkg3Fv zyR`T);>77qLy{kW+9ql#=Wa!4s67X3-iwF6 z;lXR{3n%KGmv_{!OxEzq8uoS|_`pQZ?c<A)_2m9M?Ms)b3GL#z>^d;*_O`zL|6J>QLmcBKmsHO(3E< zkSmT<2Dp?F?qx(r9%k?Op_LE{JS0aPbVj!(xNe)NF~ih&6KJ-B>!6><^_yUrTI6hE z9f)I}`#e)mf1}%IpZy}Q!cbscROHc)06D8B&FWC4TaDT3OSoh>rCtqOZtm8tnOYJvizkWYrF zQValu!CyHUGaSIU?^TIZM3^JEXFQmw_phjz+u6YPQbVBYS%uSW*kFL{vA!up2W|8 zbzO%#CuDgX2k}8B(cRk@Q28<1=&oeSI|z2pHAMXZINBhlM`Vn_#_kgqagZ@^xMb>aacE+|#@4bq3_M2$l|4?(+Qm&p1@I`uecIWEe}gFaPm7h3)RozrQW41V&(AG#SF(e5QeW zdr-uFFH8l_NVu+-&of279~3EQI{)!+_=w?m4s8wVE;-B8eF2}bf>Gok#9H{VK?Q+_ zy|Q?4=2^K4aZzH5!_E{8;vi0H;zvb&?h5R0xQ%6_xhiw>eACcZAcR9~!^G0Q#@pCS z?B-jzCMk1VY*EfCtXpmp#}>MxUxW?4p7*eqz*WLE$y(XBqdXDMli|8h3i78&s9z6r!LH1-B(r3u0r+eHey3TYR`2de|5&aGV@#iqn z={G&&Qu{c2QsH+!E?rMP{ier7Zy66PKAd!jiqZTPxESr%~w3kzG&6%%C$-Am~u}VQh4((OktCex|TDY#bJ*Jaun)sdgny?jfHz z`bI-Rxwrn+_Jss{2c#Er!HFy>Q4Qc3@r>J%I+IRE|9XD0=Mqt_0Nv{6vrBL0P-l z7dp%=*!SiD6`LNwVDf;7){Y5bTyl{qa6}5|%WRIiEU)lCQe2jufl#NJSX2Z>`gAbVw(c+fh$cP*j}2+!cMx(^8Q!P} z{SNBWQ2D%haS>41hJP*DJp$9G&hcSvnG2Q_7cXPF-WF@5wkiC&cLLKa?D)Rv#ji71 zJ>A=n`q$Y&>S>@DBGtLHsFmWL9x46^5Vr*|ZJ+LeSAid@W2!)%nxR&7zm zf&t$=^@|?uOGM9ed*mc8z)WWruP&v}$)?*&T}r8SF|VcEnSNcRInrgi1w@G=(D;;i zje}c>*Xc~j6X9yn6GbemwJp;W9R0dllBra>tKeyMy3L#vv&ryW*u5sKu`by*^)5`? zG8bI}kZoD{i#2h_rRc@*rC1r2e_v)9QZWLc34wi>qMhE906=Cfk*=uPAW^IpmdVG;YJsw_ppeyx&W=4faD+B zs{O}vh668%8YCV@=uRjgF3Z1vqVRnp|NhtVKG=sl^Y4Ez@8@gIw=@6#Z|Ee>wms%- zyS(1C{`bOKo%#1Kq89drgbvI=hn$t+24XcB0J4GbK{;Y-n`qHrbqYIlYag^3i0*Wl zByA!z8_K2^t+73O_UvJ;{^rBBhQapg7yMm&D zrEkGor$PO7B&8yBeeoW!tGFC6#%>ZoS@O1NP<}5^t`)aggV<YT$Myn@ekeTGpq-<=d8N#rlgB z-27@6Xm+UZ+SmM5uVh(%d%C+j-O>8CxQBITSrzuKw+95&+Af|{iphg}3bcC*Ac8r# zE$iJ-_c+z8-S-;dfQr}u=qiPnGdQNl5k+D%wGW39?&z`rIMKxrCsi4B08W%WMXY6$ zL<7giaHMBvn<_)9mpIo)6~XauvN2p!J1;SiY63{Dr65sx0jxHZFtCVCOn&D-8fX#= zqRJ?NvQzOw>?SNof>{enEomF!xV z4mFaiQ}OmS*%rBe7}ZnpOlM0+D%~}$80Z%7TGIh?7})X7Ot-$fSXT~jR@P7Jy3*N} zwZ)LG$Yic6ESAo!ZD}ri(Vc0&D$^ORw&1Bmfpp;o)6H#}mh~-RpLM$dlHGb>4Fv44 z*$tg7)9-bLCN?OnX%tU(wb#`E4)nF@cIh`2@6c4ZL*oKx4I!v>qAR3}wsQ3<*H9PW z)YL6QX&ReY0aeGc3Wk;onUyQt zs=Yheu>>UpO2j)dtCLqr-9Tl%{Qm^YTG5;5ay;A^JM*tEn#)EdwK@O#;)2&Z!`EfR zIF*Z|$Zc>XWqLN}YC|>*Jq~S?U9gPlUTALPa5b$N!}I%G{C0g+M(>4Ka)8ATwbo}( zm9azbhP@0|J;S5qJCQM^=wY})(bo{71PJ%!#HWPmwg?i5zL@Km_J$Y085VfNR-nHjfEBLd8fMhS|~9IPmrnct8hw z@SX24;Qs>fP%JdEM`s?U9=8tR)zs%oduRkg8S<6HY25@lK7xA!qgFTUk5Qr_w7EO@ zOno|7SuBz8wDy>0!@qb0N9;I{P+KhAPO9H&5D{ZgfCv*EMypVG!O&cX=~i%SV+6&?=mod7Km4jyA1)b0aB+EMOxw~CA+;o{eP~nAA<+n zer=^fOItO9*2%yoS1BZ|u{A$cpxXwE? z1N%Qtu{P7XVR%e4IYY{p(vTNt`r0Da*{`8g`5Z?WUK2EN;ya#!n|?JmahZnd97a|_ ziAn*04ujj~_Zi&Yik&^MjzBp~7eP0Qj?o98rlCbxDL3J03K$0^OEWE(Pm3{YQJMZ3 z`!u};dJlRZe#2dWBomnfck>at)Xb>;mz&0ou?qS&X??zFy;+)geW}*P#6ahm*5hcA z&Xd+xA}z~VOs$Bb3ncA%nA@-@dLcF+jD^F#e7V8qKf=jjUu1Oa`|_W+mH52m{igOc zB|h)UfBqOgL%qtLI-O~ztR8wfayaxbRt_D72N~GYB8Y&cIiJJy;TTvUWF%QDu>1^Q zz#Oq2p#FuRS|N9HnEr3T+}>Ek+mu89f;kA{M_DW|G2l1Lr(+Rhg}=5J#2rx%9kR6K zZdKU(KM-`gf@T|jjhk7#6JTAzG@cWtvzOyQ9ocCvpqnDcrm*1(reB6^c=rj|a0SID zLJpAlkiq0EgUOArvU5~09hRMg>6|fb<$t}eqcx8MeJy>9Tn&Z;MCpcUyF~@lqam6% zo)FC|44O+mY|#7%gXU*n9nGf$H0O@#geb7rW2ofLwbL*|9J;b_Q@gGdn!gRv{Ok$Q z>^AXJ*1s7v-(t}G$g89Ix1w&3tnb47O&V&upJdcUn`IS!Li) z1ZHtR?hq*MR>F^n-IZ*mq%xP8O(C>5oc>c7^$K0^0 zK(M{4L?Cdf-;56o%Q+mpJf<&Fis?v?>q5R_2iu;O=s?-~;O2v~{XHURLZFo-UqTra z0MdBl&{&@vvb4=fL+jzl+{zKfG*`B^XG=-Kl}s7ACe4}Dn!7_X08A1xgkVPOf;H?l zatv&1e-7QdH6s2Cs)Fv%jRVH5LV!*En47hl>s23~vVbcgRO)Z17HuL%K(3^}SgBCT z+tqCP@niHu&lx1eSC#D0+Hl5TSYH8S&~v3f;>%n?TA_y}T~m}vE}xM-u34|RPry+M z82!nTned+&dX|~+pAkRc3WMB;F5eQ4`U85@?fJAfH-XAOlV0b>RRw)V=yGoa!#?dd z;{$sf6DgZE^kZf@P`xnIEU52stxEAAuL($139$_w&Kk$n#A-vCU*#!-J8`6-GZd^P zQ0A#TWxklFjD5)qCnU`axnPY9MuarD_9`F^vK+`F;XzfQm3|<@@8wKYVP8boYP$R` zPnRzUU7ixUO#99FP(YWM&;`viJB0A05`+PV1l`s{QUhTMbVO-GnB#fEWI#z2JXM_i z4(S%;yumQtD5LQbp=bn0^=; z!h%!@p!-Ew^5}ZqYZ9!8^dx6V`rI98(sYuQw%nHhrVeaX4>D2Yf5BxI}rR? zXF&p8$7I6YFUQwPrfMV?V}@@}TvgK9Lp(xj$3qUjpxu!6D{zU>tMO~Xqff|L9@FlX zd)afw7^eK7_u@un`<#ULwC8NWsjq;74Y15&;){HWO)y}Lz2jV0!#HHh4ERdl_;eO? z7|y8Z#|?c*7->%7=;G6sB-gnnhsan&)BYi1wx}hYrh|9oJ9ra1D3j-)?n^Lxw&rKg zgq}TMIJ#rlFeLY{gM5k(({+srI>JxLzZ#F+|^||^mx8QAA<|5bm-Zl4*da^Mm^a-Z5s~C_FG>cq+5nI%FwLF7w^{xXUM6f9U7o__KQFA4nUH=& zZ{^oV{BY4NS#P@hIrz=!MYl)h-U%1oFLlZ+Bu*Zcbz;}hH**uySIRHKw)f=vxwHiL zE8DD(BO44ZU(Mrk!>i-+SVUOvDDn`2(Z?M+mg}djk(Azz>1b{^kj%atQv5Dqt5N09 zun=7s@FO6)EE^mr>7y9J33>J$+>wLNoBAP9eJqlqKi~_f`juQM4iWbIh7} zP9=Iwzi-d?`=e;##AEPR={JOj?Y+ZTDKFYSo(8dV&q9GYy z>McRWt#*L=F(gaM?-2!p=x6e%@B9yg`eQ(S5J{LJhe9$&w!^iEG8 z-@;e8QJqJBLbt(s>64&_I-ec7vj^MT0Gx3prO3B&ql`9ZcWyDw9oNlamHebvR?dme z2j30?@sPAAm=ZPcQ<*+JB|b8QSemZ)(q!281=|cV+XL@A>@E*tv%#vTVRVU2lKY+c z@*hQc%?+ObqnCmIvdk9j&`kdzg4(CB+?f7o`$n9b#MIpfc5z{=APy*5hdhvKK z&gIkhsa@gpd7?KQrZ3rsX;%-LZhaevbVYqdzJ~E+g$4PBx2H7%igpF@xM02Dz`lI&u#eAgAVFo@2^^ zY!WOjm`&Gj&SE+gV)peDV%B05hod_K%&JauT&qfrt07xe0okUHY1K)LX%)sa@cB)A zB0#SCB$2BwMo!J4ugZ*b;;Nb+F#|dsv+9$;tQwdFR=(;_8O%;@wpAC;HZ=$Gtsc;7 z;bwY3r%$zNe(kANjj0x3w(rvcW~b6AxZD$S!0~Y*DQ$$#xdE!YIM=UCGMv+)__NQ2 zAV`1YQQKur8n_Ekf6!pfqmU@gTWcg=;c4mv!4J2l!M@2N5%?^E4 zE5QS1>jB(=n$7esS9VhLJ;7d`gM&1bs5**5vXjG72`s^h*{NVwx~H&IY#eysp>FY?b5|QR1>rsXZuBCl!=Ku zzcwIL>r+fMpp5`wgpzDPNgiS(4urYZgYdh40vFk?kD&)*FRf|dE%J2;N@IGH&+%qn z!L$r+KX3BYY)Z$JqSNuK&*iPsZzQhvsmI-_RHK?*Tf4oM=J`xb&@*6uz*=-Gd+Ic% zb^Rc=&mOLzM84`8fRRrdp<$Q}OCtzF7x?sH*KLGa`vY#H+w3+wbnzs8px-CQmxidr zZB8Jhh~D3i+R_%bF=l!q5-7$BcZk_cH-?PmQPEr|`ehCnW&5}A09|1W>_@&3%nSts zd$^X5=HJeOZuBfV@38ns(aH&qtFzdl^Tsqqu$3mmm#;5)*%H2-mwySrJow^KdU&`X z8P)zT1xSb+-bk2i>ekcYfHZDTcR>13cS~3I;=cXu@}ZcS&e zSkttqIn%zldtJJ-<>GW^are4(XUpQX?&5V_>1<1vHQlilp~$8DVc|FQKWi$}nN4Rp zN_ZW$W)^4RA7lLw0ZV6205@}0OQ|MTx0mw0?ap?kJ6cZwkw9+0gh%I9t&7_;snYb! zb~PuvTb8X|vS{g|+7h^+K&E4Di7(odwxrW*_U`tkjrcS?O#hi6S!!y?mC6myhl|KAr*> z#R~h#-)rE@Whq;B%pt}xX<}Qr2$w%^K34|r1NIxA-x@0Z_lKW}aLog3WHvj;;SW21 zQW5k8wobJ>qNrg@SZ&`60aT(>HB?kXmcBSrohTyPH`gb2zGw=cW(tGB#&KpMFjKg! zDjRBM`9X}M(AMB)>WVTP2;Y=^}8qtHzP}~x%xJ`b`FRM2neM~QvPgqCnZrQU!Xe_R@ZImAerITGQQ{l8ZixmL#mu^3~Rh)s9rHmgl+sBZO}o1`gKzVQjk3# zZrP50Hv2Xo=5A5GH8jL8|28mUEk*zd(NYLGkdrLNiNaB zMA;Xi&x$9#p1Hq@oefY~ zIR{lWtmqOorHJh`O<2H8GhLd5s!!G?(=k}gLsUm2G#NI`16VG^;`u>+G0M5hrdM>c zBZ|aCEAjNexQ$*4D=MOG5g)>|gA{KzJ2a64*U;m%1xnwn7Tk5pRPFAD@w_HKT#Ts$ z?=~cx?=dl`)~ROLZh~zP49CH=NU$fj$Izx>9WiS!m}CgI!y?NgIE5Xm!cv649nAvw zwU^QT1!(V*ORpU28pu2sp z0F(28&Gw}e68W52Vk?p zaf znSN5(*e&_S8g4FZ>4#HWTB(@s!;&f4%%XJChM#D9lWM6B7?H z4M81(H_wYQq>AanA;hyPqQlY|d%oPXcMW?GiR@1LeQ&@B6_LL48+=o93A=`VQ}FqE z0bb4adMu|xR(72YRtBjD^hrsuXDDfX-u5Br{HhmHl_L5gpac!jlLg?vBp<+_*#3{m z^U4;zNgx4!Swnd|gz~G1uWb6f*qep*U1viEcsA_zl(j+E*h7lxxn7s)ui=jQSu=>1{ZRVob50hU zRoFd|I1n?$?wqWJgmrqjPGrg;*uf(l>7pE`@)V5tis`sO4N1*}F=)`Nb1Oy`JnR?{ z$GD&?vI7|&_7i-Y%Y3jfb1%IZA$Me{rX7h z*Vfw#@issf6umZ0E-QL%dbzylwJF_M^xBl(T=d#BxvTW+eWhO?DSBv?ksw3O7ALqZA$Me{rX7JYXjtH(QAWX^|HcV8rVyUUYpX( zOTX?c@p@haYU`)}TQS!`U?b9Nt}mfC4L)0?5(X!;K|m!mixCUY-5a_)*0dMD?#OgB zwPl*GN_VstMzFqSv?ib;s#9w(1DHjzn~1euvMbQwE6FT~Nd8mBbOhf1FvJrm&|oP% zrv}vdGf!9Quj%eu+?Huhwn0e_WqzilPCg9VMab-{kZL+O#F&jMCI!SribANk=N(~BE~Zv zE$NQcGRah73_2cC`Oz;3AP=dV#|W_Sln=Q_as6b9=U=6TI<{ry1MGpUP_@jO5?tP1 z5RZ;ID=hsjL5uQYIzHiGBF0`8RY`KDrPJk>)zKoBFA7$j-~lrjva+I~3d?F=o$g3V zKP#;;b;k?~Yqzj@-4?2xVg(r!@?rKfUnM*rO>52+PqnO0u4xm5W?7h{&6xZ;kpLh| z(QHeXJXBg1czt)aYmGMfN!pO<+h3JsQjg4#eKQZQN}i|fqg91gJ+B^SynL8{_0%x` zwaKXaLY%Qdbw%*D3g->soyZs(VS-PM+CsbR%| z6ITpORm;C(DjtFoKCC$ses;&AlFpa~MAB9vn!H;^FlBfLwXm57UO z8AnkZ zw{cE@#vWym65!M!u489*kQXvaXZc}!v@*u_B@{WvUUV-`uVpw7!_k5yt{lcfhvp3- zD?kH#_CiWb*l(nZj?p@o5)*We&-R75PSU=ZUUv*olQ9N-X(8@15<$y>8v)q(0M~er z>EB#!A*5Ig)<6$o$oiB0K8;RNG4H|bfC8DsUO_8ecIbivY(6wWizglWkodI(m|TQR zt{5KAzL2h(aOmoOdP9n?8m75Elt>dy=K?(_-0fw!!*2oo^8`~@KQ0Z}gA@yxFrYDn zx;lm;e>{aaHc*D`ONH<&^5Z-bjB}YWhA~v<1E~J82!mFIyS(^)vzYSNXo4f49>|Ed5I1w2 z2kX=lV5MhzT)|?-o?5a)6lRJ!rk22^36ZTn(+`|UwS?)%>)g89T3y6vx=+9TKHe(E z9H^r{H{mp@C2_^B&~`U_xMKhcHNjv_Oy&pXpgecSjCLV07WBP>o&xgt4)Qq%fvKUN z^(|9OQ(4V`WgHn%<8rT@n9z;uK_XvVNHVA@>2f&GRxs_eFiQqt(1+J?;4-~GU*lMa zhjSqOy5!rY`OVOg1IvQcx;w+qGcZ%wQ%hlzL}UMOn7vRTu`gfhSC%d%5jQCJ=7MrZ z!*Uh0Gcs3I(lS@+yHHW`4XHfD>i;rmT`MJj(1)V4efVX0s*Y3)MBy%`IW9+PmyEP>kh8M*98);yE;a_uBxW< zhicH3M65wIz~+MKau9F6lXF!A-5Zh6;r}xH9rk?OGw7)X`vST*atuBETn@@?umr3Y zC$1{N%RKc?rhgq*mCzh}huLLJ7GUpjbQMtw;jb{EgC)aOb6^iUh3@`4zZ;B8CH)v9 z9d2j4^6wuFCs~84pn6|b24rt!ngQc-CD+!gMokWJQ$g3R?#Fl70-*87n=D-M8ezF& zDg%^FF4Wt*K@AU?mUbQi0srV)mVp@u)T|dQj~L7J$5n8XKqY7&kySPPw9$oC8#eo3>t65!LxUGV18z`_)ajz405~1JY-D5=ljl=l zBd~G8wkqsISb2tV9iplskQ`&xEKJ5@C(($#ZLY6oFts8q%ejW34aV)BszQUF!88jg zKu{5kTmKiw1`TsJNChA>V3|TP(HU@QX_Meo2QD}>nBE6hR%dJ2vt|2&p3R`B_*V-| z1Oei{ekjgy<)un-oa;D>Y1V>Knt^>1*7rjV>RsA>f(P(+PoImOUc4fKolfh!5_{yM z?5Vf2gBW!YEKvN^Nsc?aao4wk1#=TJ$_Si@uVBxvMGf2p4&FY45%C>YZ)bgrr+()k z)sAC4v6kE!bZ8bWE!cmS=U*QQXRH0ah)H^~{4P`NHyGh?-|Ec2|AW+1RrD7yT{Vk# z_Qjy0-YaC9#q`XIL_O`q1$!L zwolmutLTfs3pXumCs@WD_jpuQ(N}d39J<3EYGPp|5(b13q$80bc_W6CIE#T6cacYs zVFvO^(3R_@E5DBT`K~-dU(Chm@kolknCr)|-PRYdC^ZW~KayAn-3!E(1@J&Qz;QyP z5@k(#0P82FryrFaOI6WNgPz{n7XzA-&H|V?)CZRv<1;Xtulrf4%bt2GF7%EZ#>fm{ z;J%h~)mxElGI(GwzfmOaH*Mc2^;MNP$f#NLE*bvqns{*Gkm29f=c;N4=|0pf`UZmP z=tnuED_8-MZ54ed;x}LicrX`JvuM4G-{roV#rAyKI6)&~@}>ttO{P7ODH8^+5e>Li zbF6^SHS}O^93Br1HS|Evr9F`pJ(zPj#*Kh(OTT(u!u9?U8UFpqtDvgo6MZw{t7=qG zvrwe?H&AgI-Oa{=DWhj$z}=QTVCb_iq|ZFC!&%f4gFFt4c+ot3O3o~}zdk3qFY@zH zF0aShxy4R3G5r<|V;W+lQb;WN1yeIk;gXY@S$ zQ@B;iJp7mdES`sPiN-@$Y32}nxRW8+3y%E4bXfa2sHz&!r%5_Hf~*sWr^U`iFIZrl zv>n02m>^RIvmfv2Wh;+r4Q=lmhci$O(>0h_2rY01UCc;X`vKLh2MrP?zgNNaCOh+= zU&5fkAF+xZT7%%QSxmE190jYo8e$}t;>2b9Fo5uN@aZYEc6ckmii z`8J-JHkkwh`wtnQpO8Q^;|*_B*h?NZA8*D-bl6^aJe0C`9pxV21g^@B75 zn79bwm$py4dt*$$z!9JJz@6hk8{Rj!aAFlC3fedrNOaok}kG?qNHev=pg3wj;_$y@^S&v`gdVG0If1xjxrFL))rr^yXbnA%#dKDoC z3Ba*j9mJL7?;6;gFZE;WuiLR-(5?vf4GE5qGJQezXNR854P%011A<&0XZvjEJgCQ9 zn{nibY4brq8>DSe5%Pqjmuw zavD?>J=cpZYS5N_?IoEi*j+u*d29<6Vhes{diERijJ8IG5al@m~@ zw?CYuiC-I7Tfn#mnQPCgW|_EisCX&-wsi%1_loR3XO&+ z{xn1po_B)c1JhC5qfz|D6con9U_e1=C7~=P%kc2;)j^B4Res@j5??-~42KWQP?*{{*1wI zkKo6ix(HDVID_V|W_}Ml^yPIfk6_gcbGfBfulg@UeDxlBBIhzZnf24-Iagi8^l6!E zg+S=b>u{`a8iLASl**3>m62g6%APa0O1*~;=UmJqolI}aVg~RH*cox`sN%+OE8g`- z)0yu|XP|KOkgyRvMTmVP=s}N!#QsW1?8if5-#DGvhcvOjK84ti3$Zo8M}^p525_b$ z(a3RR5@>I-<#avWjoi-l9K!O#wHv`L*u^8q0q;}m-c>6{0# zZ4?_%J=aCKL7h+khOM}oseCd##|zt6=h?M%=CQ=8sH&z^%<ph=m&OR5aiQokJ znB{{UH}uK+ktg~J4qx86DR_0J^1KWLOE}r30s0rYKR2{ z)pLS9x@y>g8za)OqiF}Bm$(EzCAJA1Yc|EGEQKqxH(@BZg!6y@i>AZkG|t;;_F<;A za(IL1Z=I^9Phl^{(*I*_T-6osy{ei%saM!v5Nd+wo%;E&;qyl#K1IfwnKlW`Kjfg& zL*6l2Q_Wi2Arr)7`+}E%b{PlGbx8Fc(BBVdl3~H9ZZOU}n%K zLO~j59DlHDUoF~#S$D=@SQEXkMLfs)}GT$X=7gwq*j zCH_OgCp&9WDlAc^p--aN_Ej8@I*C_=5rA(#%5l5?1t=J!!UeoW$xsJ`?$7mOj*Ufz zz%HQkiXUg$75c_GK2cj=Tc4<_3-sN!Az}+SXz^64#;MUB;`m;59xX^AfPWQ^$LGv5K#$}yxO7j3K04Jgo#(#U#&xEs94hA(Cza0L3;Q=yN&TJ*6r>##bN zRt?wVkgfNbv!$J8)H)CPRh>4tZpyB6Digy?SDok3JU_7tFXCVs1qatoC+OB}LMnsp z?Cq6fyzC%#QE((A6$M#Bc5vl?x?1;S=TcC#c z!Tf1*R?wHzWPm{{`;E`@Hl{wK66vfmWuV%}dZThb0pfT}D#i7+vWSpiK4(&u9}R1r zE|4LbS20c>NaBt2hX@AH?1-@|0ay~qwk;gTUDZLmr;AHL0O4-gVNa*qbFU3y`KboN z>oHQAC4Vn~aOX)tux1Ak&X61%hak6M0B6&i(UCKlK7=4WGcS?#;sUz(7_wTjL+`@E zsPoks^nbCkWSKYmsCF49JZ#F$R1Xys80r~Jmq7&4%Z1APyO8EOJrj|gXwY?>#c#~qSG2-eWhvwHf{(E?|YFwXT^?KumG_&i+t{>*>v_$ z4Iuop%ib0>8+z%uI)mP66j-}XGi1PZHiuL-;<_PuW7ViLplqmDm(vFU@*qIfA=all zg`X{^t90g=I)gHUQ|K#fub`JB;*h@TXbGZN5NojeiCvf3cQ51 z1%n5@1C0M5#tk)7?A1}dPyZCdf~LNhx}08sFvO0G?ERJuZ9TYjFtnEe074c3w_X?` z1_=F-jRsxdrx-nYUPjh@)8EaJ4^ud002E7S~iVwN!47xZ)^L?f` zq@GV)D?LzPgAWt?+SHoUA~6th8%Lc z&0~6eT@31qFFU@PM~|;VgfINK!fpy6Np^-`Nq7RV7ye7_<19Cl0EZ}hxG);movdWI z!FaHvlM*2uH&~#eWIbL{(~zjEg%D9O#!)DJ2Gl&-VC4Db3j;EpB^()Kk};05w<@8f z6TlKFbs5GX$gKoE=;&S7F^L$CTws8`PBw@*!;ZN>;;XZmMzt14o@fMXhz|yOfCnJ0 zDx}OAEzko%DrWlv=m8Fbo=!pNeCHcXQws~4x>GmxechBik%Y;brha6a`u<5aWxX+I z>TD97KgNY@zk$6ZW3D8`kOEEE2nGi#P8n5)I`zrjUI@aGJ@lGYAXt(@&S83|2vl;%o1C)LIgpp$ z7063*4@AoBj?33;f>n%=uSy$+xvAC^IX_<~;&N z`$JLG{Rq39enbZf^!sWS?bAAiJ95zNt6B7Y{d{-u%t5F(P6|~_KgK#)HZ zJALtA^B!Isbk3v}1ylu74Ed*KLPUoyU>4h#&=QEb5L)BR?cTmn$Nh~?{Zum_2DQiLwY6lkI;~X1vWn_hR)sy<7+|ZYR`{`=wD=2mJjfN;xM1O;Tz@#K%Y0Mo?I&Mr zf4SXI!KCa_BlvbP%-jC)%cx?zVlnUmShw+1bh(KzaWX#$}E_+kt5_5?Zo&eOUX zQGwFNewr~xS(j$OYXE#+*gIO&p3x1^`9ge$1{5ko@NwkYp`L!Yqs{asp*J#!1dMO_ z+YL6N?Jb23wsC{a&0qkyCz~Qel#NYAMdXlMrr-gZJA@R*)A0x_Qb(5=JU$(&C4mdl z%}e7LudP9!An**Z_lV22Vf`bQnEGEXtgp`-_8YNvqYnjO4!F@ejvM7<_5U#t?h7DL zB(*Ie*kfQ&-2qN?>SP17ur%A3>?s(Cc)%YW9DIf3OfAFgJ=(zW0%0L>scGc7pb<_) z>!6jZ(du)+Y#>2raie1Oqc;~wlAu; z>>Z}PpM>>9Zxg}HgZLU!=z@GJmAn%y~Fl} z^!?5Wd#6p0WG3uG6?9MY1l!lynlrxg4`5Jlu}>m~F~}NcEuI$Lh~$FPUUrwhVK-!R z(<=mD7O%;!j+XeWV{b})Fadi_8?r6QwiDg<8wL@U3OsFElWt2HuGySv?@V?{xC=tq zT9WxsT`iq$$>#7=cT2LXISh&m$P=((9eZS3=H^YZ@{vwd$flKLp~t9KRv4hfmerhD z(~*sLB(v$Y(qy@11${(mT+iK+YFUq0#f1uX1l%kf?iI?iq(VH|6((&Dksp$bOfBp{sOA8${%3>{)97gk0`w=pbWap79n^PmZV0uNy< zJVIxuLYA`YOQx}3293SX4I8@%a-seH=h-{J_7eIRB&q=y2gIbnd!xB<^5`xD=#c=> zWd;x|B*Hbf*_Xaj&-8AvgJMWa&Fx4FzG5If6+rqvtcao~6BmVqz&gM<0oF7KHwRnB z4rN~qyP!~&K8RMFXc2+l;PY0lr4=#6(fq4hJB?Jx%)3fkxNnIXqC8G&xA|1psy4Y91z$s zcfECf!$9)`JV1Xy11|V)nB%y91SnK%vAFssQ|Vq!KTpkMy1GB#%v>A=;IRh?fC$kn zSW=_;>c0r8^Q|Z+hG+SK!>>Ha_Ph}r4{n>?0p*0b;B)^s4H{2|aNx&2lcC-;JzgrP z04!8}GnxLm0MAAE_)xfn_6-||e-0rciVgZxHIsfI=2;v{6w|#H#C4}0fN{GDga$3S z1tVS&V+pg>ueep86-Kn_4(F!at!ZFzCfGF7H9r^EmQ0ShX$ z?NP1)wlYS}4vzC9n&50FU(`Y!(HJsv(pf1$MZuNzVnrbFr;D>^FQA?Yow3Y*{|hVa z1Z|jrHgyatiE)Q`h*r3CMvCbQXfEgh8&(fc#jc^f$oN7J*oSFv?>IeR`}E7+;Z?M8 z`~a;RU%?_02c#ao)%5t`U{rBJT?x%Z8B4NIRe}3-R!yMWcz3R^Drl99pXd1D>`06m zIM;!+GB-u3=0LGE$lf-Fn#}g$H%nzH==lO;e-tV-u0^-?;%0j(*qdJL$lm>+aE?Ka zIGgh7Z5<_DI@=!<6J3)_^Zi7fD2`>u%NPnH7+@b>9QEw2 zVyYMtKSN}m$``{~-ea-%p)b(P+0hA1u$qMoF0tee(mAhIL%7Y)h<=}t8ja9Io%!^!;JWT zPEvY#wYZ>^I%0@9c@u{T;LR&YQN#|r8j-a+ldJYaaE^+VJCO=utEYkx>@{}&w( zXSB7?lp1-JQa>`KzGF(g*96k+%zu_U$#CqFCyq;C=D)(L!lk(R4g*RbLuf6Q z_6SpjkDpN_yJ~XitRbcpOh@$?*Ko-sqFg)Ph^wTb!=kf&>WtOk911pt5lx6^O#`*Y zYKi>@n(5b5OAPLBl3s2Ll&jPiV+miDd~K4KSJq2C&Stozl{f|*G%ancN-#1 zf}Ys3;6?De-dMC2C;T~>(T*I-nQ|^xF}Qpk%iTR5*J2j#LLl7+-~?kLl6rc6z)qlJ z^Bn3Or}7~&jf>Iison|p22~k-#rExsj>9oY+QHNqLHTtqm8Tfv5U~(QhniND%dP9Ocmlh$qAKn6xlwQm#MhuheI0 zOb@4)y2N|l zu-EC<)l-#U2b!Y_l68BBK^^GUgK!9$opCHGoGU&f!vnrB9`WhsT#TNH`0$t+D9|J= zdobt&)0-gIgL=^GB9hX>-i+a=@=0m5j^mi>niq<%HLY=dnw^585Jx@g6R*8;cIYoy z0az5Df>Q$ZO+*`2IsL(wTPAn*j)R}p^fw~JEFwQ#IKINaEG|>Zp$)>;_Oj<-Ny@eZ z=?n!a-d|f!G(oFoWQ*cv=iV}Sr1ZUdn19`PiT?d3SK-a<0OXyD}V5Um?-s=)}3V2%V*;IfBJ z!{>v(nsvy=jp^-0sc(F*SgSD$0SkQfK}_1*Fjn8okdy(Wzai>ujYeY)b#*(W6^Qe4n+@gqeP?!kG`gy;&J9tfT^aem6TItSxn@+I zLZ2mnl`5xadeEO!;PiVPLGQOkmDBI=Qu73S0cANU)_1YAiD$V^+s ztrp^_gMD2yBYJUTKV+&nN9kiyz@eiXU0{g=B#lv@8?B3Cd3&;|uu?&R-A?r?L7di( z0~u_uSms_M-;4f%&WY}D2UiISav(a+;Eo9S@)#NEF}a*A>{0bt%_<&2 zY-X^7ZvL&o=yu3b@aOb+G8*M5n3vlKCKb$>6q3-hCnJp0lQTzzL5wO$IVfulP672e z=X(6048DkkSr}oc&-I&YYc;!&D&n#55H>aVE65~vkOm?*9-H7etu{-?`n^H(S&gRl zU&M))W+D%ZbL}^heGJo|viA zOa>$tLjXEvFFdZZQc!Gy&h_h}+oF_n?F(MQE&=Y(2WgdI&`17YQ2mk!1ws}K6=o46 zddN=_rK@bFUA-=8XVi1$>W7Ds-j(Sl>@_%eJ!X&TjQ;ocx`DI>iN#~BXH(^D*V33a z0MrQT%BK5@%c^qPMw0O8ey}H9=iBx%Wz&y~O9CnmdgW}tRYL`in}b@^kJGxc>E7O9 z_$ENJ=g|XJ3WtC5pvvi1bV6?DwHE{*7UC{>oFcFd z{(v|L#^D5u;8#yRpotfHhM{NnG^K&Ut#GWvr)PTv$xo4wr$2)Mt8$vK$Cyq@Aq)6) zdcy0Xob7u0m5frO45vc}dWKaw?IE9|JM;prhU%&j4tzG_&QEBK100xYWLO;9PAQD= z-+NpT{oTRw`~l#H&d~-}u2i^7W5#qphAh}4;14FuTG@1cuUj}c5HE2=kdaa4G@$3p zOFhV4QBI$yA!XBby{;;!r))o33lxC^ydtFdn6goN6+_z&2;Zg@ZF1EqOo$!Fo9l6p zn7pGu{+4s; zzVOw(;{eL%; z>OVwC#^7k5v|x$e-c!7mf2cvICg^dTTh?Emac624Q7{pHl9J?FXAz{gcFP? zfidWb;R=?ipi+>PZ|id##gj2yb?EW47)iQTK>Z$*0g#XMOk*bC?sg5`h6sDq`;#t9 zkM#@#uqsDwWz&}d*D0GudcyVnL){Y7S9@e>qxHXN z((Tlvg2kR+=qMlO5hw#kXk#ptB&v^@@!5s(!Dc)HAqJ#F?k|UCLPAsDF>wZ zycx8GvQp_Onag{6V!&fR!DU%MMC%%qO*i#mUED>^?W#<8e?GRg(O`qu*mi3o_1{ByLV5pq_NJDy|?LyVHA-T*T zPHciz2dwV}N`>m_%`Y1&NSORdQsMZfaOwtB*sQRkcWNs9c`6mIF;p1UR5(yXg+FU5 z3_Je+Pbg9wV~tEX5xEFQ3=>m$WYU0nM!@J$GYCN#CZyo=*rBWCd`GiRkm|*#0y%ii;7x-w?Qa9#1fE2 zy~9y>Z3Omxt;SaV4%HRMsBuMwgg0+DJNziyfjziW5{K0ZT1-Qz{(EtoI z|H2R`p-gK(2wRK7MhXKY06He0-qC!~`=%GwxjSSZ6w3b10+#eKIbb<-6uT&WtPjNf zqveO4-B)Ise{ecXbi_2joK4ZkP!x*ffq()j>K%si0X5M2Ag+=UUwY{DWPCgaKD#)q z*%#9K3HIzI)Hea$cRGf@8~aykwR<2}A1yb{T`RFOS`v4%4s`l(tR6ZkVr%f)Gx7d zV{Y5$imy7lde?^W!e+Tpi2W`)rEIzjJ*V5zak?8o7igfgP)jLOxa5;OMC2C|U=OMa zSw%d75J``)+)Gn!9$}B#`e~LAV@b6y z`$JrYECJOeW+l$u&8{2^{~=Y+9$ne537MWQ%q<&Zjo3=ymX!ZiPh|*GsKI5e zn*TVI=m&P9Og%$erH@pZejGzTv?2yPGKEXwv5|zQ7`#m4Hk7d%eeMFbRPJkCr$n7J zs5$iabx>NAGkrwXkW4}eK*Qy8v|-r3fb3&98_w`48>@>VtCQ4%MCk+>Mth+=^4J59 zeq=p3EeJwiD~BRANt^m{Jl=?Cng%EfVF1uk7zB4S;hZ!dr$rpULd46*+~CLw8xdD-GAw)i~ViX5u&T#)}W@Jaf`w%h(l7c}F)P>`}?DVh{)31XKO+v^(>t!p=r%j0 zB24$-xWJQkRM*{kMq%BNzz5eE2z#^S%;N8QC)1w~oB{{91EOJEH1Wx7Q5N~`4ef2|j;n&N!IR0pJ+*>K zD2_{W)9o#&rYvh?=EUjF*CpEoI$4$`GwPJ#I$WK4-p0=^TqTSTY*{Vqvq2v2a?3dB zIhLf!M-gON-_WU@vVl*!t;OJr=ahM>K)Ud_Np-FtLH2ksdH`2po#+mW%BhLM^Dcaq z0(o`!hK}ZVKIyk^V0vzN{odRoP?3kbrbB13&o>2>@TAkc;|ay}lPR8mrIWr_6efMI zfTMa>0a{3wt}jn8cOK6$>Dkc}P|#p!Thnh0kTFW;+sAXJORzh|vRcFY3h+A2?tY48 zZPeo(U{XZ9ybtFo!L&e6?Lyzj8oBcr?(_RXMnc*>eFu!-`smLd{o^pbRrGe>0LNCi zfzR@3nJZ^Jt%0PsrbHRO9;{UCTdJJtOMSR3_J}1hZPz3L1S#ZgL-ndW=-lI$PnYyF zf}K4%>o7fRrGWZtRf>g`pb~>cS>ycbEyd`5YZ4v)Y)Cyk>yJtFH1R`uvn@W5F9!ssD?1*nBJD6OCdCu9QU() zdfQ>T#6`R}Btj%8!rWNl?xvhuo7@VUhCLMgvr?W?=AVtRmE@*qo)6Cx{TGTnc%jfG za>`n0JjzDT4>oxsox4S;Ajel6cReF~jGaB9;Id$$Dg7+0FG|tpa{a1`hD8BIh!UG< z;CieySgU2Ri6lt>j^P@i3qV*0A{rjq)@b zeiIYO0Ib-dov5dXevhkVBdLZc;~*vxs5s6>Qj~KWp!&uU#lz`C#9~{nBmjTGSry0A zgHhT#V@A@|lYmE%P3 zPzNMldlNjpFRM$k2}Lw}D9!4KA<9XW8nry@fQ4NB3@9On4%BZqg?P_+;1&bcXS zca@?oD94hV#|t3dSOoFW5F+x_5j`9kTNP6Zg+S6rBa_0H`@n5*0kuO*Q<#ib#kMp& zxPk|$EpLCi$PDkbV${Ll&w+6o-PT>Bo__XR=TSNH;$Q%lisQb6RU$R?nDYo7Kqe1o zJFL(kpPp)92X*X#J~RWfM6#zHcdGZmMQypJh1;bCRFwY$kiXajkbA_Z=P+Y`$09xm zW(Vd=IX4`GeIY1iyeAwFU_>DVlG`7g2z$1xCTQ2D8FMQ~)J(eIFvp>Qz-9ZgSiUP+ zDV<3kfX1YEm`4QZ*>ZVX28Wr~I@z=*vsWx`N@u%E%J299p(tX>&$t$*3g1kNGu&Bg zus()qhUMOXMR0vj3`%RTfkyV|6FsgN7xZ3}i?J{67@(LBe+@Vxz+oB-11hdW6zYd4 z-ciPdBO&P9(@$N)F!ZiRe*STe^Mgo(jq6!4EmuI#0s6yx#bKQHGA9%81gexc{NVM8 ziIr>$DU)o@bcbi1WOrKb^NCpU)4a|m&FgHkLvB4nk!;cwDIk7xlNNL%hz#oJ7NJ*u zcW&rTw}yaH>Goh~TDn%}f2H%ckgb>NndHu}&i182k=1RPjEKGw%Ua!@4BvL;OSdN5 z&HF1hbY{Z#uUrxozA}V$Wr#~#Dqp>=uzp)cLYN|Q*V57uKwGADX^2}}rnM=6+n!0~ ze}!G@Xjz|4uFi+Lc4pQEg*r3q48*RM_9SAS!k&RnO(t?SKPcVlj^<1_aNTJ`{qCy` z$@4>1Fgn?;bZfk;CAFqmPH+*+TGP>;Tpd1ygJpD&|rZZvCiWIy1!sNSc&} z)LwyfhjW>(7*-WD!&h^WvaCYiWphZEOU2Y8SIq@4t7oLGfLCkG&0hp^By3|I%?#Q& z3vJ9}xfelI&>21+R-=uX$Z(NyRfRb2OB?f;n!voGY5;IRkH1lkn#YZ@Sz+lS5~Bip znVN^KY5)(pn3@NnazNNQxZw^ITLfLJnn#s573KQXDUyU{ULbV$6{1^RACP1|{S@&8 zR5_$7=-sZGPqjW^RWN<1p9j=@rZ-~)tw$JTf(L{Zc<_6{&nORw2mSy%A!F8I2w&}+ zQ1d0F<^bm9JqHJ`1bgFJx`E=ggN-?D!zzxBg zBbe4pk)OdMs8R=S8bYv6$uNd5y_L6VAcJqSp!ZIUxdr=>uv zK%|5R(6{%a?!UD7MLET%^GCD@$4uw-Xq; zTF2p*4c7~CfuPI#X=w`Rp&vi!8&>BdwGa=$Pne;|jMG_T)a)|wz@1ZQ{7sT5Z#RB^ z09HqNc|l55P@AjHN0Q|M4EetyS;6^C3*oI$!P|HMPnDCZf;LJI)%kFYq*j+{zF)5@ z=wDEM5t;{ZRIhL-(~oMieC^Pd)V?D85L)koh?8VN9=`ADd{}Of@T!7oB|5VZz)*_1 zVNM3vt?cayQrLa%_1Fups-CX<`%rgFSNGzz>1?uX!{T+BuB*a}JX_P*E7mkEYRt(nEi?riA~+00cf9aib)Ik5ef9(-=i#r}%bOB7tZqLMNYmL&Te72dQKqYP@%qKtOs1`S+1e$GmM(fr zFkTq5HQ99A2{1EYO3jCC7ZNsTc(o@FV0AK^z5ceZq4 zIHQY}mY`W_^>s(KrK=;^_CL`PFD|M0*3x5%_S2cg>5L}%G#xi|#RaPOlKpOlLNo=_o;twoK~@uzO9IVeh~ilG$umx@k@JM5ED}?CNgmD$#yx zW^pRh{Qox!$&QXpHhF?Rwq_Qu&UCdWOEEq$i3~0(E=gB24-43f@c!iLmaYuea28{0{U7607u57xc8(^Z~YSY$e zS4(Tl`py!h)*r9{vdQ%)pm>Q6ukP;1WYeoRm>+1mW>NjgLugNDo3ChTYrA4`d$LpC zp}MB4MT1#d@~GR|5*}UB9p;#z=WuvB=*pOrPg0-3Y|HA*bf+;1a0J0cxy_kQIRn5# zge^XJ-<)Z0Pj<*@M&S_G-r3fIY64qXRkqPnZwGRdqf z2UKZWo~D!6mE2JLs*uz{sca^m?_<$B zL#X^){VRaECSMOf4RP>bh5-)-5FWz5<9880ftUs0Gm4F*um}o|!Z%EyWcL+uWI!pN znNwf?UzrNHLpoiud}n4|OIJ4*UkP9*dcUzGD3S4i-6@vU*%i=bCJeG^nd-AFt2x=; zBEPFFE1T47s5%@tSy88A$~Se1UPD=yh(drlJ8#XMW99Guo}*tIGbf(&*4(*bb2Zjn z{W#T{JNJav+|%+_S8cJ)8zfH?$WyJkx`9k5ZkI1Kr|S3MJ?qhzxp}yuH8vXY(YpbmD)fWgnV^0#Kc9(CGUn!)RX zlHKWzniz498BJh)oEc4r&w011)1W6^5<%lrRuqWloj3L z91uf_pJ!RE=>jnc@Xps{$Ip=B!EX_*RtFi57Ft%23g`m(LL{+Uq1*+sI0Dt%1!xp9 z7QXyL;RW+=u&k@sWU^A_!a{rcQdg1*i710wZ$w@qq2QbJwkAl2 zxVCmBbpvlkhm*3iz8Mn@q6o@eBv6DB7b6){OJ}lMpj~8HP08k~vR%n$;rSP#i!G8x z?;^_zWeU&6|r0!ShS{zEJ1yvMTIEvZ@Fgt~-DUtPogr(`%R6{GA#N z$IfR_K?GS`y@~0&xCa1E2OirOO~TG#A@}-hrhkII-Ge?$fAIV*p-b+O+X9G0^>ZsF z<}d_^@J3UKYRv_t`)?1bDEcJqvM}V>=RUtR1i9?H=KE*D?+z4DKmewB=TRuSU=`@? z=en?3_4iD*ub67cssZ>8;r26l@{$_Ufw~TDoDgjwGS&^Uz7GB%d-kr#%Te6$+iR>j z%YR@%-wMz?DY$qv3);`CU8pEMb^^c{LLCYW^DdCy%AWnf2$S+z_4(aY)*+Lns};ARQkqIHt*Zj1+Lg9)cOa+g8tqp+9*E#%lo(vf~p4{n|^ z%m>ADHqP2YO?}2w{^;EX#PuNv1TY7Am)DK6SR4gVH6o#Ltq}Aj9bqbh38PncQH2KRaD7zh66H{gMeR*|{epRj8 z{%+?uVBS^b?@?v62T$~isuXDw%H!dx6aapu(@c)#KMi_o(`@usy@Nhg4xO^i4*fwa ze7CTt;!N{EU5~}Pycwi@D4h4zKQl1Sm|HpW2-w)UNP9`uK$*IS)jQ}GxyZwIXnX_Q z0AP$n?k2c*AYdPQdi(|>wwJ!Zo@!=?J}W*PBdSSX>cX(WV&%g#t3j5A40o38chS$R zW6Gv6n1chJpFkY)D0@RNtjN?BcL{d3u?}1Iu;@I5rLTguBm9g7;wfa*(Y>7w)5r)c z1Ri@0QLI|89-dpUJVa9UnCSyk;M0P`OfAsrqeu1Z?cNSk5v63sVZrNAN!0b2&Vbh6 zNvy(Bmx-W}0DfTV@LAi6*13Lb9kM2a#Gj6U#seHp2>JsYT_xKiqqHuj`b?J8vppfBD%ywZ=doof;>uE~P(%Yq4`s+4OOEBiQeIVJq7; z*a_-!0|6F5H~{D|=0c-R34`BGa}0BPOF5Q=?a&TPqRxIv{xE=h_F;WS3f_lK$|!4F8H8`r!tbS2U2UTntK(*J=T{JBV(d`MjD**M}}jzv;nJZbsDa?#MCi zfI;KH9eg^PAF2RdFan)A8Iewm``z>;zA*w96LH^oEa!%-SHie(OPH^EXrZr&J`__u z^rn;|in*$XVP4UfSP;{{yJ{v3VsuE&+@okz&8$--1e0OMe8MmUr~t041I$YMf?zZm z3>T?+r{j(aSr;a$`evDI+E1nsBogal?qc^(u2eI{_NIuEhH>tEBA~sZ3&Bb>+bB;7 z7!RA&2CxnIdG&{^W5E$qXHhU-H^_J?hmPp+lJRIpK8BA5!=MnFik{FuOBl>0Fh2>h zOJ7jsw9f_u1*=j_`+9*jcGjdU6F5AeXu$&0_o3GNOz*&g^{}q>Ad1XW&ED}SN7YPv z27m$dS^gRs7sliz?=l! z8+y?%$CLOckL~%BFqT3ffS7utFQfa!PjN*36Z{&n*$O^C%em^G=$1$d0DmeX%oG5^p)QT+qcAB0;L+YQ{-X5W+@ms2_V25tZ;R0_;b|xRlR2?B@;uks%U)5JAgdAJybYz{ z3;G$^3n1`c{bCK?gB|7#kCw4&acZkl)%vm8D_LtmoSYa7g8&3+cz;z|HMfrY&Lgcd?E zSWYvz{697wPHQhvBL7cE2l^T@B};E!!*um3#`&p+$!U0MMS3a1xBV{|9n1gRnW{po^XWN?A zbO)4Q5i75fkAyloQUAf(RS*vqtN_#@E3a~;LX|5O+s>3$X9iWY*{cjXwY)Bu^Y*Ut zVp9eTQ^u50ZWStUodN}}17&Q10vC2SZOB6~Q)s!Xu&gZj0#HGTPEk+-_s*73#Y+V$ zUPMY2s(8`kP{oT*7W80-sB_`=0^p};&84Q`Owl#s^(>*RD7gVDAD32z@}khJwybb6 zqQ^Sa>fj^tHBR9Fm>&Dl(sXf{s+Wec>Ga|*SzHKL?72AA2EwWcGzwxz3E z0FfRjjTc%ct=e4nWwZIsn9E*xDNrK+I=tq~IUb&f_T@jGFH(72og=C^Pu!^CjYvH) zcvDkPOxeh4i!7AbFCia5UP;Ig$V6IFAwra|7oH;^&?EDn$V6G6kbR3Z?CGOO zbd`uZgY5AuB2H+b0(!Rt+rn*r!HuRevVB7ixAm<)=C}sAob4Zpd@Zt5oxD1L^Gn$I z}Gfjl`Ciq3HSiol}WxNN>wh28m$pt_<{!Y(X*5gmEo^Sn(Q-s}&)5}sv_ z+!U178Z0Pb9XM2rF2t^dUXJo;W9@Feec<<4>Fa(3hWC)+_w;Yy2>-wb-q?v_7 zOqW9+==ij72tOU@OzktDNBO?-6tXEr>o8LGWyhrWhx@rU%J#)Tb(C?y596op_tU~- zOe;{pzW62RQ6R~pvJ4#w8@ zsnv#f*J`|)&UPS}?#YITNwu)$s{Duv=Ohn_N0#_E7Pq%kwy0R@@ zi&`_5ZCU?6+WrJSuHwoU$Gh+M_R;k&z*$J_j7dlaGGyYsE9ti6n|aRv&HQFEFEisz zLMBOLw`8{g$BSfn*Xq!=C7UKO5Fi0UOhVXXTe2;}8e*2Pge4{dY=Z)354+iHEE((n z`JTGBx@8L{@Av-yd?MVpmQ$xrojP^u)TvWeBP(hl1nib*WNxWO<__1$Qf8r#su+z- zjNZUBx)oVZC69-#k%NZ%l`L#DH|s~2swSfn2@V!(k1@dYKz6L2Di>WY_+50l7^jXA z_CVfza`>{1Cj0@xjr&lSi}6L*h@)LD#w+BbT`o)m^$kb6T#PGfpA&{_pA!-Z!=J>2 zAGxAu#<*hhv1djRBbMiv@x|a5i<>W7yqIJ>GscyAW{guujHqV>Kpz2f&z@9N@|GL& zM!AdTYD4V%yajWMh>qpKc3tkw#`=ZXB}po8 z_Fo+7JPwj28fp0@Q8M81Ufp>7Az7fsR3PkBt{3LG`r;zJYZG%o0n<9|0Cx&@9GCic~!gZ>SRR8tr z2&c@FqxF$ZMSbLyiLu(>Q%wAOo4B)>SYZ=)6%%W0;=W?ypAshZ<9|=x=8wr^b(>?> zXj&B1_xPBc4|UGxrN_jv<(X{mLLQs<*G8Y=idVPbtPxkkx~26hgY;6Q@&7VE<7(#x_*d*pHtW(L#FI#c$yd`rNWEad`IImG9q27U9s=lg}R$Oe0K;|v6 zo8M$2F|U|my_#6Pv9aE`t2yR&Ea8BA<@g#Pis>$$7SB{CO*-|C@OYb)?!f=YRPL!M z!y1^4adW;2IJXru5&w`uBwrs zqDJr;9thM(aE4nhnB|L#h$);!<$~{bQDAWM2iP~v{l`ezca5v%qcLj-T0<2i~-^q8QlRCK0UN1Fs&^Kx8| zNHNA`Yw2Q)i%=~98br=Hg_~~YWUi_VTM|>Sh834E+Kf*}uoZd1-!Qh0hgo?cvBbk% znlG>-!&4+RE*L*8?WZyb!g%OKH{AGLJKulep#NIC^MrOMOK*iwbF^92@D@VJ^0}=Q zeGG9d=BY7#0wC~kAW^`=3{Pd-GWeG~^@QCeLD;8$!;V!i{g|kekO1b*GK}FjojQ2* zF9D<2VktNA4E&+I90=ozqb0*x$+JN&v4NPE?=o~FBeGC?frpO~o~HrN(^Ao^$4bgoTnLsYY#7jO18w?Y4v|tiu{_f1gKni$17)2kI>$<`KEmp zAseJa>Ll1AbOr1n&0D%6{1`H1JXN;cBuO0wfnFj-GriI#_E)k?LCKR@)4ypOzjuVj z$;W7?T}3BkRz9-vB|gTD)OZUUKOt^>iFH>hXtdVI_ zOCjL)>%Sacy&bIoA!BZ>mMVG$`9kjWB{)|n=odq#q{sxF5_q#X^p#RA6}9Fa7aBq< z+~e?iv+ugN*kw0)e2ahXtL99&xrMw(?UtJ1yIcq8$)he~=eF=r);SgLVL*a8>SO22 z8LYORS$LPOWv1A$--nQMQ&<<3;co?nLnz>TzMI0f77E>$kQ3BeA-Df@ORTL7&_P40 zM=3|;)vMJ|j%tJz?+M9r1%#(lf!Z-eccqdh3dd_)pA-h2#nh8WG0gzX!gakIdu8j;SNy5dU&w8PifR;Xb6TV=Zo%Kh_e!$o2S5YQ{v&7W_nT> znmS*{`7wkyA_xUS@NiNNXZez)7bOp36Qi8{-?tQa=D(r9_Wx@NTsDjXFUJ)4=`j>| zF~u?I(9YeS^g77;+@NiOSDG*26%~}d2Wy>U*|R0@+y_NYC@*cT(HwB;()Q98j1HN{^9L8wi~ zLQN^uRTgT`nHFl*#L?XwR7w%XEJlSzkW<|$h&_FHKBKcU%W0)cdJRQ7FY18L|WMbnn zCQRgsacwE=y{7clTKbJdI8A~+?*w0Perc&UO{tAq>TaU|Qg5NULFFuR$?-5R&t;0t zg8!94$nH_S#>x7^lgAem)#t@XTuk@zKUv17xDKe(=nvs*zZ%e=d*W!h+dvwe7~*>w zjc8|^{MU%d+4qktq2~FX`dJ3}54*hVT4;xCOEMla`gw6Jz=Sw_&Ta{+t925opPtvF zhgkBsq^oMH(v|DY`$Sv`Rn=u@8J1Yq;L)}cJg%i{oQK_Qc@I}5L&1}6nc~3x+T=dL z+)I;T<+L*}W(ZAw9UqO#3R z+HO9+udE@Y zTE+*_)Mbp!TO$=w*bHhLAFQvW!)bhkIDMJL>>Ov}=x(zRdkl2Qb0`e7_F=6K$ZQE@ z2j9V?lc%atm4dfgef&tXi3-st-g6ij%WQAhIrbK3GgLCw#kM~6+4rgSYEDakE z!lVojsLvATU!-%^Qe8+(H-%q1f}G~55?h;D%N3Jjo)$`D4P)iaPD>Xi=BU_cRO!g| zHL=pR@)x#ZuM0|)a64?aeL5!?p=}yzn$^ecuw1d(W9X__5xa=_*3sdu zh9{d!_G7XQMc55iB8_SV7q$5oYr(V0e*CP>$5Y9W+ni$NiMo_)WV{5o+86?qm|hFYBo%AikD~o1Dg=@?xV}&uEVt8if-kj_&3hBlxs? zoK(1@bj}^-d@Q)fqsezi8OMCyPN3cRcy5{)wMO^y+(kaBl&-Djx^PB~!09JAlCegD zN7-ra;;PMaS!nXBxgTa&O8RK)QoWa(=0G0BV%^uS1L`L0D{u4aIP?{R39w^?9Abk&aC1cqg#$T-(^exG^10alXz&5jMj%hcC)B=%vZtRndaO`%39(G1#urzlaMu z+Neh1u#OzLj#v_8{JTcDWEqPQ(+HRx&6R~uX$BjrpXA%f^uMB@RH&^!hcg=Pat<0* z6t;>*KDD8EGO~1ys73P=Atr|s!+oSeh zLojIxG%VR?bAp*ZP7W#B4c=V&Y2IP6S~WW3l#oVYCaB7R8NT4lT16#u2^L3`dm0pr z6BLUD8DH=Ti^kjt4P-K$VK287XV|QfrWPaFVr`p`XObbVIO^X|g&1nptZ1fjEZDX8 z6TMiK!2%zjDe%X)GwZ7GoqPq__!eT(&3?uO5xb1RsVYdaf*-lPg14G|ac1I2?f~{T z=VQ4)%lWz!#ht z@=_R1){6szdB%)w9tzc$R7^-wEjuB{@Z1<{o*rRCbni1A(RRp-dY}-JC6u{tr_uP1 z7M~XyPR>xz4y2HygU6< zlI|@fU6Ws|LO-@h>zVpt~L8V7F&Pd=h<$rf!LP4cXT52k|pF=&Nr5Tm~++;5v zZq2)6a41>Gb0gN%?#F9q&sCP3?{e*2Z?H9IMdb2r=9M(h-7YBhFXtv3YrHcSX=FU<^4{cxU~Dz96Dc4b51-slZRQ${R*ez zFfY5FN~Yi*l=r5ZXaH`uCh*$pEdjcCUJwyLBg9jv>ZBsRq`)3Z37^wgS8}ooS&45P zwdX@;650nDhdEqB1waBc^*JXUs3McE@_lipumjXA@xykXeZ>cf9Dk?v8DjeB@<@go z6m4!6pJrU1+`~0zs+^P2Ht2kw?}33fo$`=pVI*t3weHzs`}1H)e~d2Wb#M}@ zBBmiXAyroz*lTkS3q$uGi!CfM5Khi*uS%kvF3$SI6{YiJx{R zA8=DR-0Zt!aFNS5ztk4O$$~Mx5>(J+yC#pNUnTK%dteTr9RoD&baDI7c|zY=8ytndlp z^Z3{R6~{3l6I%VX&g6qs78dzYQnSCFQPR<#!3sZ3ipCP4;l^lO$Ei~n#UD=LO#l)D z|Hac{e361|w`2vUXE>hSX$g*0;P1jM65#YAsGBS(Zt)e=WD9Dxg8CZ^s#ZbK>~o|7 zQxsIKHS?{$*@9x|U~*4x*AIhNlM&9#$zlk3A*4GKE(Xed9I@uaDLMB3KZ!Oeo>FUBIVv6bF=j(D1#? z*;6IKY?Xa#`mK~|*+JB)32O>Js>u1DGv|@nB+Smzc$zozZUp!;nl1vd#U2AC94aJmNH7KCv zhmWnCp&k?Mc{C03ze@)Xqiyhr;6Hf{ytpf?y(6N~cznzl$~kpi!Yb~mG^I-Ix?Yz1 z1GMHbs!&NOb%ySQg4wlNvdlbsu17YV5SIJBUpe|W4 z62G?{n`&6eJwZIYXije2@wkEtm3TD$X`dcqu(#khgddv1m+L>}BEpQ7GU{xPw zdvzrj=^Cjpb&stu=}3Bq`qWf8lMl{RhXnJex6V?G>8HvjRcYsxBV51VV(^Ip-7s?wdVFM7A5C#4<2VY*$f!Z} z@NwsqBP4D!x4K!ugXon2H?`!+FW5z&6h;bHRf>z6s3oUDLhRulOR%-2j~U$Q@LzpM z#G9FRPI@2he!41J%9XJ@C3r0DoUD|?sUfG%nRz^nTzVFM%|kMr(`v=v{#}+E?xmK? zNkIbv|K%Qvm?%{40@yO2A++lhT3KiPXJWJ z_1vGj0Z(G^rI7ZBK(L5rQc901noXwZN)Ht&Y}EXjtKuHPQvK5noOs-`L^)W_Qz*qB z6Y1DtezsCFO{3sJTZZNx&OXLG5ZsXn@o&sF=WKKISchX9wH*bAq5g@77`r`gX@@Fl z6~qPiB|_Y!-)J|dgeH_imQoI?l<$!MUkKBJOr~10IEg=J>%+YU#l=O$TZm3ARTpMe zayeBz6%tnEaXXvBgR~R&w&$gi!uJpS`b~SD3cDLBYhZLpQ{^h3za*dq9k;iuJ2JO` z|Bw?*&yza?c0h2G=HVVfx}`m@u1X4vXQ{ZYJ#YM)h*b2-k~8VBGK}hzdgkR!qMWux zlvp0BLVPnLS*)~*abl06ui z&g22QN;%;=MTt{`Qt#A*OihJb(^R%wsU=_(mz^vH8Geva@P-z9Bsii5iw2*wo$Usg zm=nyWvMHY0+M+ISka!b}VXm^`ox%U$l$@y~_~(pz?U};=O72mC$yb0V?uZ&^?v^z7 zMpboNb=E0LG=qBdmdtX%c(&_h*vU#B()_a>i`u8`Sp1o~H)pPyTAcr0Ip0{T5&kALz}ldGOtJrm#d@!6beBzgS1kFS{2 zf9JMsl0CNC_e?~Q6nKZzoq&`3>5U=C@V3AN@o;i{i6AAIMV|M%rDJpS&<|aIo{d06 ze(Y);a#k8Q_KWq_+k(I5iPMjY!On09%Z`40^uumGEuFV;q`3U`|G&MCWxTHw$D*~Q zzHy{`VoOGju<+sj@VrA^5_kTX?wkA1BVl0gm^IeT8Ho}^<;!(T>leg&;OejQ0-l?l(`LL@5=ByXTL}4yHZf^)l@rKZ{=(W;f zQxWv&-W0!B{HR-0#Uyi!N=k20$80Ad)bQ!rf zVWiTKIO!oLK36?Dt76DG%^bPzdoGe?F!BB*a7A!#QePEBve*4A-xM{ekE(RW{Zx8f z2)b5Kzx8ItJCW7TTUa0GPQ?8jPRa3PU<#$b7r5Z{ge-l(v(l4xKZo(p(d=L zw-wKGJ}>kerB@VVy5UWBgl=*HB8aH%5hqpB~E5V?6xJ+*jkhIHveHcmg740aWvLXp-;Nl357OZ#r zB`Y27r|~~RcQpRpcRwxoN=W#(v<_CrmYtn1TcYSYQJwDJQq|Ox9+nlJDsZ2y+KGt* z>pe!ijZ%2LbfC@ZAp2gi(4LJg9!Jwy(ALF>0iilgg&O>+o?4Bia6df&NnycN?LNlm zgtrx_d|`Y@I{yc?&{S`9-KK*y5qyRQ2@>|dI9#RlJ|)y-J|n2g3F$qJtYgT{Kmdl^ zUuEJk)c!0-;ycvlm94(O1M{qsgan#I$HUO5bu>0JDj#vIqig4oL2WWo^T_Ot;3zO!i8*&d`&a6A35ryz^Jw zS!)8*?&4+k#@oWW`E$=)wn(qwYPg=dhK9MiT2Pr-W!|PpmPD`N>+1FO zx`;Y@sa7xGI=l*AzhLpQxyy7Ra1zn;c7~W-2T;5j=a$6#b`x~7Ti@q;m`IFrcD-q53S-&QQpousg6llqm2w2THLwadq`DPUGt5@;_^evi z72c<~*&D#V6`Z0DSAfXsK~oC1Ox&vMHnvGIW@QE?Po{rT+D}0h>Qcig32iKC zJmsZ9wpM2Ry|*sz%jG%g;6R&7v~(tlr=5P+Omy!Y@;*FF)0kk!gd|7{y$1 z!I+#XeOv~Mb@$T-NSQ=T)lYOi&pQHrLLJ-O zQ1EVZCY?sni>+2{%ZFK;J0z{mT3H?5&xL|BGJ?+*Bu#UrRO6ezLJI_IT1arV*~1F} z+IOw{Nkw^u_0O46W*aK-LLD30px)2+XonSR(&~3fp-V6XOmu36SLpRPr#VlDBxb4* zV=h0G_8TNvv%P|r{N^r5Zmpl@6!gMbv(A_`OY~h+O1(fl3O5Fb6>oQC%qaUuSrqR# zC}w4kWZg01;c?Dc8WQ76hunHqN?_d}c8<1{ds7ohnuiiff*WY^7nJkZh0kn%JTzWS zbfXP;s=@y*;eWY;;l!K-_-;m2oSCFEnQ5dDPf3(ck(n2ZG7>nh+3ar|V^MfLzGP=k z9F$5lzhba8I^`hE@PP*TU#IDlOlMaY(>G{(G?g|M(+d)9`8)BN zZrgFO-qglx3_UGaPpNXC#TQ(tbeJgt-e~KREPj*>y%xXhk-0zm-9%=AcmFFY)Z8Fpo5waBx z6drD7Rs1d))|iZ&+WPRPWXO9;f#41fGHyy1a8H{LZwRZ~eH=`L;(P_aQwt7$rvSXr zV;}XEnj72r=1w9X$rdGoj(kXmlO@U`%<*8jU`|0CoQ6_RJO9*=t+)`^{8Ac-vGpQP^2^h+5`UTQ$0*z4|k@>ZZ8r zE2iqjwpC|!($6m*wXs457av&$SP{R>(N0m|DPp_^2uf{vS%O(!p-{tZnKh)6^rTsjb@7 zG(1ix=<5jj$q7Tax*-}8yC6^hoCUDc0Jz@(_>BP|!7)skIN4UY&s0&7BDnoStL!XR z*=4HSY+AYJL#wR*ylrKVsj|&fd04C9Qz54v&Zb}D#|t|6m^;XHI?>0x6EQ%;7c8)S z2H155*y9EmpA1S%wL)wl-(xF>R`Ql+AXZV;LUFeT5sQ-S} zj7-EkJO9=;xq;!{c&}wIqqf9@Y+~;nrz@pZ40oPl!CgXd z(ydxwTGn~TOBx$nsbK2DvEKCHuF!7o}=x0IktR-!29Us{57 zX-VUK)r%GF4urU&xm4}Ci!B(RM6Kjh(x^bqHaOSV)+18){GDy^2{uSEPsd34ARhlI zr`ZxOumlHV4qaXtX@lA`QaOHl+a*|2!zfCDcY;hKO=&PQ;gPtW23*Fu-NsC+n?VhC zEnb+e^LQudvpLOHr+B)z7)5`x1gIaRhgNf*eh@3DJ2hEy&G>tZ+vTH-NMxIOIVp{| z$AyCP8qLt)Eq?7@K)jS!w{d$WIIl^0_MKEAjT@SL{2`@5R`jBFtyC#e$g9GMBdHwC z3>=yppIkV)K!pj*2G?O+fi8;^3m6~LNAX{MR2Hy2 zkHtRyO@srI<#rawM@5A32m(P`<8k?Q_;iTbekbokY@^)Q01Q^pB zwejuDEHy$bCwS7DCKkN3sz@gMPICBG2A>JB*vF)h2O-$9DuYKQtd4ekI84&e>c)#G zf#A3y38pFFC3(7?yrvr_Tu7UO>P*~})4`gH?vU_k$zaGdI<2bi>YRc(g9g#Z(?>d; zNtidt9n-h+I4zvzoP2~kH&c%q85fP+5}+Y(>hKC8H(92HcS58jt5!^X#`)3#36RT> zYGwV3?Si~iI+Kp1tHkT$j(r(lhM|{D%OL4QA}r7Qm}~q@Gm@b?YFZ%@YMWrdIuS6P>%z?p$-N=8BO2%kn;n2B=qweLVnu!c~=l+yjZ7yTc z%tl{s`W{i2^z=3pQ|T~6eJ16$R89iw;z61nSDC#o zEuGk>cLxH&6%umug{OI0a1-qZGx5wSUw_u(si;^W_@#s#jmuZ&jVw<~fTzlGf=kr` zTTHw$nbX1^HmuCxKv@W$t{8q@Va)GnHHN8+SC%f!&+@E;aCAM9X>tbn92X2L^dbOP zK&Zb9QKDj5hL<{WQsrS8V`|v{s`F%x&=nM|{+!Bc$PiZf`0+{~?-Ao?^r@??_B{}G z*PLY=Y6P^s+2U~ki|teZaGufw2e>H%PvBK)>X2Y|WwowzwGwPiORYX8r#$*Q39)lk zUT_C#yB0fF`TEl<$8QywGWA^&;?Rl`i8@3)5AmGoD9YYNS9-j>B7;l35h=^QDBa#u z2gg|J$$L5WEVRVss$9d^ju`=|NbU;+y+x!RkPvT`ASLJ^kUILuxB7EyRUVH^ zZmo1+zIANg_%C*HY#2Mygn{5H!ADrz2jew$_1A5wOIS+%9q(<*3vN$^f;)I+kiV2* zuP9sKCsGh{pE0I&NPzafetP$6A(cLxV`7mhXyO8*Xt$br#`CL4#l*4w#!tj^+tg`hQUekjUs)XXSCi9TZsJQXB-agtwPSa#2 z4a?GfISk<|*-iW-w?SO+#hJm~8-F@8J`kKlVb6y6$F}hH@*;x@){SC;5fioNTnG3^ zyt!8C6Bc-V7>t5}@!GM8kEN@s(&;qiaG;K-DzynH@1zgc5b8SdsNK_4gfi_*Be_Pu z+t@4TA59n-c7XY+-Z{P8orKCNGjPTrnYE4e7>XjmKlD~ffa%s*W#_l-7;PEH^?|@> zIOse=&(ik%EKCfsIM2(K(2X$rTPHz9Z8a4gywK!hE1x*_9%X?_3H)h#i!4AxS6XY& z_vyf{?epeEnwJ|`kEq?ss)nFWjy@fMbK-$2+PqmdsA8ZW*3V%&eaUogO!`T_$ z>06mc3omLGnQqs2Y=<`UH5d*JS%izY>40BY{B5H`4eue&=?9_}pTy!HTk*I&^M`Zd`%E(mM4-OD z>N7q^*DtmZaLLlLEVN#K>Dne5D^*V{P5V6bJ)=TBjA=XfC17yQ*?pKC&aSAEEfUl! zxfw*1kuyAJUo@+2L%c}M@n zeT>UECmx~_`8~$UsOwY(a|s7NE!kP5w6Xg+6^w8ty}}R#W+r$&5^P($cdholSenDB zrFlEfl+<$_^B)x-)Wa3!Svpo~i{#jn3n;g0CF_nC4{tP(4zZ6E{q<7#=>(ny^2Q5C zzZ3%LRRTdgvvVP1M347^mOw?9iNnhW;+)Fsce`=fGIpQk@cd{}k(j&V8EE#A2A&M? z%x&X@&>fGzG_WZBtu%4R1V$TqtftC2@j%6TxcxlJY1cC}uWw6ry2`_ZAuRFnJs)4l z)upRg1UW3u@J`gS3_do*8vmZ*=9PLjrKip^;i=I7>rcTl-^0`)KFHFlG4E6}c`y-D zX+?A*i+11RDWAq9a1B+ z1TV8SQipqe32=eOQ@)5y^oHow?oDGT&VbSut(30u!ss1GEkOe3+k@5KW9zHeR#$+| zD-v=>a3*IZ@MbzE9jri;@0@rjqjTT+%E6i3)--4M-zFb_S;3oDd|*6`O#K@@9+>@Q zMFtnsT>tWlLH-atzanF8h#RTD;N=y0j0>@n7Xi-mtciT%B1_<3lfa#LUU?ChDIc;2 zX2U}2deKZ#Imx-EcN0{BU`HZiYg|!dbfA3YpH`;rOl@QgWfmE$XEfO6e`}h5&@{ip zHc#O~G$>Tqf}R*R`7&FA3T>9a&HU!CV{p`^aXE*BWb43zOgRXe8##RQ4M8pS`enIx{vchuEpH(pS=$`o8WmYJ-eG6@UvHJf!s z>!89#JJte!CTAq=LRsCvH~W>!ryuXdEvv{lzb50Y^zkCU1Q$z)FHkmii}GDcrNM2-QITNR^#F)As6fRWcO9t$yZoeZ*GUZd$N9>Cy;*YZ86+{!cGVpqGW+dZ zVS)eA0-w)q6edMo#cW?RcswO<&0#nNwCd)I=mrX&ETs~mGVM${;+%M3W|||SEXU=B z_YtQseU@I|q*y$gqX53_fV1-WWIq=W=VY8Uh)?F6&qD@g(K_e_IKc*upW1A3eVMp& z#iB`vZ(|QvJ3Nf%O2H0u*n-&Dzy_w=z$^mT7cC zXBDDL1aX?m^(u4lTkD*R*B1@q`SOslrPfP8KkNz#(%L91;@5$&>I$TCTA38<}5s) zUp>I*L9uEOjeTTo2e^Bn`m6quSgOnKIF3%I zArS|IE-M6DK0ro@fS%Bc`5e%=fB~wOI-8_BJ4TwK4eV!v(h&26qL z*xh0k-2FedEnO3}q&uiIU*GZg>Zd(pUVVivy8XW?TK)@L^trewdmAV^-{d;#e0!+G z0yBM+t?*u4VH)@9#t!9tGn%8{=7oD!ZL^0n`>wQAqj1Nud6?6d&O%gv&>o#uM)RQI zm$uf0dI6vDI|D%tC-Fb^>G1PHnm83h2*TL5IsI3*+NGx2@6>xnwF|cAVP}HUMt{$t z8ROP=`l{ZM;AOV%Gh&fmdzA(BYXhkFXh3`}h+qOSfO-_rgGT{c{c8)T*P$z5=jn%+|4q>QP+CgcDqs%0Z zq!;y>4YV2s_(YB#AQ~&CN`f4fRmvXflC)Q*oqswoOR1~#kaBOU1fBHEGDf8i37+Ut z>pLwsh5(bmH*WXVR-|Q}5qh)I#&W>=&Pfa(mZjk?SeI5kGvKuW&VC}tYcKqlNOo{& zdAzC&I*NDRQi6LaIp{!sc{`Q$CLcaoKe80uRtuARKg8Q2@GKWgCDhs50odoo?8N>6q zpn4j+N_C}M_{;_VlE_UX9zSXGaXSjiE@mGv=>uK#?`a(r>`D~4+Gnx2%R3&8KF0N9 zsh_U!LGtV2A%~8=rJBD%zk-Sl(|9pqO$CEzObjvK_oc#@z&QzjObm!lTRfTwJuJ%z znz$5nQ>&;VjuJS}CqFP=E6%>;5nbO@UNiWcI#uc^E7$utG;e7F8trC!#*KFJyhq3D z^==9qNLCW;Jz9B*^%IhIQ{0uaCz|zLUb;#N{@liER=-Myl)JOj(&5)gwVUD%*+4IP zVJ5lmv%RkRp0Pew_SH&F1t~!YpXQ)(FzAcr3VP`h!*9*~6pu!DXwSp~debeI3csUEH3b7%(`@1uYi|zc=kaa| zyh%ZH>`c?QMegPVD|nI61;2>F?_&Xc&sXkM*7vqhvV6YRP2mcs;0m5-9W?F&rzDcR z6Op*xlJW>i*@<0EzVR<09RyEsO0d!EOD_uvZ-0on>PP9rsbWMocjON>^$Bj)100Tq zGYOBGDS=<4a`ECg^>?=A9~mE2zGD;!Zg6w>Q?s8o?$5)UHnLdItq1<;brRr_W}inr z#KOq#3UsvV1Vner-u#B-RZ)Bz?F9`60B}lgsIMSTMgf zV6JQOu}8t^YGfP;Yo?iT{a4NqGN4qlA79sD)DY)v4{dphQ^xI8I+=r<$msA?(_eYh zC>7#Lj*;N$6q%7`0x#oBup^IO@|gF%VSUM2oofG`wl9A$eOc4wV^I4-@j$=0bXe)8 z(91>2)yU`UM!uEZI^u*XvT<(dp`;%5G2l8LYdT7ky{h<{)Xw`XsDgr`Q2i#ADO+Fq;u*Q?ep~n= z7VgB&t9;z21dQj%V-nyujAi(clw#jvP2L;-V1Zm^fLy=I$Kw{r_B0%F%I-EY(e+9G zeu!S_6qnoEeOzJO0QRwlo5JI5c~@{F?TooNu7L9znaGtxDwBoMtZeD?s*ddo@p$I_ao!aD~d>AS71*;tM(roCAc@X+HCU z4@!tYWs=8NY8LONUn0NS?PZBg4_dEc6!?I`>r)s5PCXy&-#^R{O9m`c_<&QS~A}>0QO__u_0qLb5=r z+s9j z6yQYMOvojcwzYq~HA*M7OMIK> zQY=E96Msj<@!dFro#5o0@M#ad>rNen$YV+`zQrT`PilB`l}UmxQT&r({`)qY*k&|t z9u^smfmQKiZtXPS3LhCGT6mMwQ*eRVn!TO~aUlyS&UiHu;-cc`%ZZR1Oj7oxL`Xf4 zoS}})xSf+nYbn^BW|(*Cwo6lPU*)Tt7sJ!9@^QB<&!Z>YQ~bPXm5=-N6TewykbIc( zn_%2Yg2Q@e{$_Q*!!C1Mquacyj)z)Vfu#mlFwi1d!4V+z@yB1JMqA6UXEzL-9j2Z(B)&dPh5t1iP`t%f<3z`jZyp zEe7MwiZLE5<9xuch@Idm5`_rvG0KSG8ieR#CYn^(_oldL5c9MIc-RZ8xy($XQ9%)+ ze-D{?y;^E^@%6_>1s@w%j&$apAu~4gS@Wb5&9Ayq{4yDQGB~}E9r?xkP{CF zmv(~ zY1_#DxDl0fuP*21{uILy(8i&J$42uOq;9i3wB&20&OFw*zEWtY?8eI){vyYil5)n95=v-s*p^Z90Oy+v?^tL&I>8zGv8ULviQ0BH_61w%PFA9#$w|*Y=id(KKT~;|lIFcf zOX^3a+FdW&`hQ~mPIPc;3I=#!jI}F{(s2)XRtebjlCAoLsrv3RALps>2E76UsjZd{ zETFuLu9q`~L%5L3AZPoV%kqK?MjxfpMg-aQ7u&!~rh%81`MA_Hpaf?FjCjr^nFk@N zt`qLFg!_x5;YNMl`LcyOXyEoO^RZRolG!-V>8*r^m-Pwg4HGXxx+RUEY<$H+>7-M9 zC+=D1vh!$MBCW6XRSV^6LRpV%^q2^H6%ZAVKyW?N%#@`uL8mO!|D=Vu zX7V#_>W)zEnbFa1i#uP{35i&JUksmo%Otg`;Dmm{u2;T3j+1AvB>*m5#^E%}*S({2 zaW|&FZoARPZggUunMMPnayW0fpT^tjc}wp|6qffLWjPqa!BLj4YTvN1o>W+~7}|s) z(oNxd4l$?oQ!t#)M&XxHEwLb*brIA7(X zBkUI*WzTW-7}W|on}%xzf@@6g>1DomnJ-u!t?Zk|a1wT(5wrKEw{4q09!uFS>YY}L z%SPw$h;}6{*giT(Gt=1VPlM(5D0&EY{_OOsl`gUj;xfd-_~ydT1b6K9=OdcK`t;@IFOin#uLEjjGzD+^j zH9ChYj|TnJ2%v9_K|g&I=#2+0=sOj3*L@6G^ZI3dc)Bek zIG`iQjyRKs>>1?h_bu362JEjC%{2N)=kS5LDPiqcvW|i+H`4@{FUuRSYsQi>EZA6X z9kO7bGGH%?z&@oL0&E;h?v5s1pYgWj`pia-`WKy))~}C_bp}O0^3GU2VB2{|+Yzi* zf)9<(;RQpK%k_ADds=X4=~0YPiOa|6dP{>q1ajk`1-V*1>;>;EC94(22s2s?dJbEd8xEY#T$umb_*#SS#2YhHS^obp+g_9ZSdK{B-F!>)8*PvMtYpuMx&N9(&xlG%vVq z%&;+!c&jHdE}@~J1a~Ph1wA@Ie;kv;McO=GH3O8Eb=Z3J096d(r7>0->`Yo{4@A(e zRcO1%g?-91HDHLgNF=?=|}Pk@{WeSzwwMQn?kv3A`X! zsbkB9#N6>A^G8|+hx*+W9Hys6(Ui7>wOqj=UKMh56~4ET=ajf{9GRvQ_cr>1ZQ}~M zC&@~n*Q5i%9F{W7f=QuZj?V>?e;zj$oV^?jiak6{U3Zf?=(vRIgWxZzke6(|O0|O1 ze%54mM(Rk_EqIgd7RHrG0-7G9@mig-G`WB`JV=up8+|-jN|WP5bHIuT1)jI@??Y*_ za|D|3j!{ID3k^+Pjc9TqaeLudnk+1#$?+i%a~K$PTsQH%4X2V`7Z7oEaPk{;@=y zKHNxKG$d{sXIr_Jt*kfuMD6Dm;#S;^Rm2Q1W4x{N2iD=V^>*{W&b7(ndCBStw%DI- zG2+Cy1!)>G)cVL2Y8PgT8eN;%)5)B+CEeOS&b<-OG`$aa9fbEK$s^Ib7u|N-yZSiW z<{@np`wY!Cji;0#ymKWuoEB%&5ea%!$)&_0x6&O9PcAO*>YPekIetJotkre;2^RVq z^_|CK271@{93C}4H;*rfx#8?AClfd9$}^czV=AmEMs&*bRq&56wM;ms9&#*q$RJPoWM=j!{9fW~(zrPDeYPp>GDgZM{Trj@?Ot8E<;cvZE$HO3b{l%GrfV{e2{`Lu=lljAwv z$Z>?mg(2ETdX>DGtIqz>K0GnW*19dOMZ*j&HTSE^B7z&o@|Dh7+OXUd?pQL&#M`Jl zR?p-#z^XnAH6^NmRpXewu|4Y!iqab_r`|9X+l2;QkBz19m9O}#PI@s39`+Xz|;L7ZNU_a zDZ!7abg{FqsfvbvU3YNh@fz$C7cI#%^VP9o8vP4>TzWjGj+d2bdBLZM2-|ZuCWkP` zk4L{}ilxkjCzx>}!2`}K4wsWAlj<2y^;%Nb0O?E)q0OF|H+`ZRvJ6wMYRnstjee%^)QD&>=Zd)Ovzn8Z ztcIoBPU^3sCD}=TzyUGPmotz6%_n5qv}il$HB##wAQQMLsx};0{iG9B4U2OMl>UoV z)(>c3v6&4M4SUiL$XrTgov4+;#q?0<Ge^rI)U$PbMWd&?plE?nBAv!ch zk)Cej$Vy*ujvk9DwGVTLA$a$MPy**PoWEqy3^raF8%B4QwA^3DhWIH(yZL-^Y=}#X zpU;mC@$)5|rJV6RjeBOS-EXb_dyChDir4R(^1M}!a|~Wo>~J^32i->6n+ERW*a{92 zFL6%8{Y^9|DJnN`GjvarZ&X0+NQHQ)i4#_Hx1~b-vH01Y3h_wsb4x13qq>!e5xqWT zwT@k1wunBWh~D3r$BpAcd@$d5U*J~y$^71!)o$V2#eyRS!>M?%(PFrrk)b}A@5@on z8Qn$Ad)HLk*5lgN-HmzNHZH{bAJJBRB9{keD()?|btBt)|Jb&AOWOL1ZR<&G>u_Tp zYsQ6mM}7W3k}*2jq%##CG{%f^WNe6YibH>RY=||*&w;Taw=|JPi}%NdSihu{G2Sa~ zWy*bv*FME-TT>o?Ooe#E;Pt!l;fFHDdBlsPxS_}x_meTUTgJFI72@XN(EmOa;@0Bl zU8xYiEq>mS3bAt-W87YJ-l?syh`vBXIkBBn(Azjj#~iL<_t6G30(bn>pm`d$7f0;D zaUotZJ-nEgA_(f``GbNBCKf!rJU@Rl+uT(g$|+SAll{a5U5oR0Y7L@@VBAsU=G!^onFYu@xN26*rXia=-|RY9BV6zo>$!aYnpj~U@gN9 zP+dAwrkDJxP4bZy87BVF8}4w)1_oBpFXxZ~FU2}OC3hWD8$a|4!%o6KqO!@NC61_Z zR~-nwujr^Ng0&vcS0aKG=Zov$l@-M!jQ@Fx zg@?~d2wqyLPAnHG)dHzar}@AF6A_tn1rO>K3wj!e&sX4#lu) z|MeJHe{i{N=Z(9hptsrFxWi-~$CX^S>u{6U-mIs&c)-oMN%Zn7Zg$51E`{4I-tL%~ zJ;QP$giaZ<6~9qh(PVozci#xPC6!nI+p(3M>9(`e|NSGg6aO(Ro8#2$&|HudJixmI z(j8;D`q-i`mgQ@=Tovs~ zX{OAhlv*s*?G@5o5|e_5R_Ky=oflGbiRRY*E9n1zJ-ru)Erxap*KXarg8Ugt!0Bfk zgUTH|PhlJCt0~mPs5_KbF7iUb*2-!v0(`O%BxtP0acrJ(Y$L+H ztfz(96&x7NS0TBCB?T9jG-f^2w6TraSjR>O^ra0@Eluj3KdE` z))eYt`sT!4n11FlP}h$slzOfy)JQJBRSI?I=+gQ8rb3NzJ!=?L<+75|8X>oYPgb8j zys|T8NLQ8!_LO-anZ5IzrqQ91a*M^@f{RQB-7tLG1|>>0cwfjecvQMtn!?)k{v z=?g!q?yjS9o%FDVH!k|9%2Vo(${kjB=h3;tke<;nyzWu!Yhv*T*~Jxd=SbO8tV&ed zI702Bv?yQlk=Z*($}R!EbXaZ9%=0D`VyhwzOS;7B>h%VX3|Zm=hELI?*BVs+`0<2L zLN0Kx@EaHF;UmBQqTfHY-!JO-rS|)I{r>rc(h2fx10_eaNNrqp41U*7=&f;+_*0Ax zA3caJA@g7<>ETg@5KV)I<)sk1$&7(GwvnW+xtEwy}W5; zY(`F=F>-Rl$jKW=PVN~wdDpOH&yHN8xfH`gL?8 zMN8*4E~;Dbzmk#ux{DX`m^RPn%h{n zbZ+h+5{X2DkpBLxdiHI3-2(eS_0m=5b!(?s0*OSpaNd$7^A?@;57|oAowu~Uj&HWia;IhJl3@wwop?Rr~#PBf+tXcMHN+Nq;2l=DvqWSukR zh;!0`b<$B4FS3a>w*24I!b@lx&PE-K=wv{xSO2BmlD6jE5^UHYjH?q=Z&)*Xjb6lJ zhAL)XWn&DUdwKGRFzi#7U!wYZr_hauE<$uC+gw?_zOqWNoMAH7I*~ziQ-?+9{zMe_ z&MTJyPbUiaMSGV<*`amraTnt8N+ma-YDA_B3Lo1H_;RgzO#X*uIoDNpQsCuO=(;>h zae-I$@Wn4$8a|>JZN)=0KA2z*G|18>2z(&@t}7Ar*9ehC2UoIzwPkGV!Y2NHJjN5>i$_*I;BuV&q>S^Wy~syOTSnsuvYJ*ip0j> z-K*H}we%y1KDob!;MXaR^V7}DzLK75vY94R;&s2yp^_}t{9SWbgx8jKA5SNYOEse) zX`OzH<<@o|eFnA7?HN2~eqK*3>4zkE$`E~7nOAk6-_d|=h4ld($ zP>%Lrq?g2@mDdrRzluRhUEpmQGN+e>Z<@PFn{x!`t>W0csI&MnZF-0Pen@{`r@!~c z@Vi94(iJ|=U6o;*uSi(5J^wd|UK|5@ThF)+AVHysX#a;I+Np@XstElzh?06A3a3Ni zy!O|?5%iXXT``7uI;WTXaviK$WrqF4ZzK{<;xzZKP-4$q_?Nxf%^4wiZewG8gP}mP9_qj+tJ6F^^FVbV&%G_ao(c%_mVkvi=r|gqI1uy zXFd`MQk_5DM53X-egS``RNKx)Kbg9C*<7Qzr%Ex9L}Kx>`lWMOuq=@{Gg8+1bKU|? z^%AP*E52SL!Q||+Me|m&2ETLmYg8g}W-hyM+0wb1X+Ak5*~VpyNNH9Xl}I#k->@W` zt7}{_Z&9>wI;%c0I+2J5YNV_)bJ;V=Mo}IsmBn`XsTZ{ciy5i zl~!XCCG_S;F56JQ#PnrUvH7@rMU2=Szv}1AuW!&1VsZ0jix-pTHL${{L}EqbyrpxO zM<2tn^b$;97OAM@9h*ojnyb)9M})T6d5J{h+`8PEjr9w&OO`I19o1X1w655`SKNk; zOC;)+*3V<9GW~gG^m9RO?n*^&eCbB5BH)IM+tyt_ixvw&?>f_|A~N54-F#nvqI&5^ z*V-6>dRDCjhqqU_;{}uW*b)~bc$k})JkvhIr5@kU$2+lx%WMNvxaW&vx^65cpInmM z6DPZH4Fl~MpQ@(@=ObMuZrUdmo4|B!&SrTOfF=eJ~vS_?G9F4QN%~Lc! zsc4)Pq46ogq%tuajajz%XSD!ZoEf1pnJFGM-PDo2udZfBqYI)g8 z6X#H6P*=9~Y?fc#PD?H77#qqREx3{~?WjCF&9-9(wmyZN2;@WrAW)|YxCXFxHcJ@n3$~khL*cN8RC9= zZ!oEYPt;dnYyqQ-jq+s=39*VBnHph$HQx9~NW>QTX!jX8{|n(vv}g2#Ni+FKt`nj) z!;5~4EO+j@+K$I`h+F4Ip zg2(7?rn9q3(wagUA$$ims6y5!w!&wyF!m@+m*)9`)wF5!YGkE!TDsK)vt0t-WZ}iI z8cCCTi2E!_V|=gP0ppBe@j&TQOJ?dMl2spIF5`*ee}uyK57g|#p>jj4^f4jC*&GYB zb;(S@!2|;-R8*kduS9#M677AJm6d!MLti~$0Qj~pjkdxYmbbNM)PR^6<@9vfF}t17 zo;gTLN$#V(@^o6Vo6}WZZI$q8mjKO!+>8}34{h3P>pwWGKHLK6e(KsBE>K_7$uX^v$wjw04Ij_RTPhoI3&cwhmIf z+)U53Ii#aIAr8&vb-OOMbI}oxMR&G#k*HbM#T`+qF#Yyc?#6F+a_$85wf4C#W4bXc zQV^Ztr1LSuCT_4e+)o?|5_GB+hc1%jr!?=;>#Dj=vS_u)_Y^BW#)_P2M#A_KoI#xT zQOJtd;kvjg!p@z5hYZev>!LSGrQB+^Vz1{n7Nh40m|Nu98VTHT!5#fZ2dOo9kw+v!(Sc5ZtUUeLw3*m&*1Pk&~$y){tr7jfH6i;bZ7_sTgDTdknIO9ejX44-mjr!#6Y>%#3^JTrWrXBb1?9`Q{I zeX;sNitMG5NFJ+Is!lpmldhm}Ib*g_9-PSsWSw?JA7NbQ{2NjORr-=}tQqaxX+fW3 zR^qI9wbg0P#&%x2$?DrHIv{_dC6D~Mt)162Q@B5olcA~@)apAdr~*MLiy4v0Yi(RF zI{8X@TGnp$s-z1o`B;88+-a*`kt|V_Hx|=3m8SO;(|^TuVGsodfKcAB|339>zuFP<-~vlxVXI!e@PTH%bARq5?0Nu zz1u>#)k645DTLP)!iDX9cr{VbECz5Zf$)0^;qDlMu2JM2XYxTt@K;rr@#gLA$?5ml zT7AdVGVc|xBcG7}__A<(3;SMMZC`1%-JIDU*4D0KrMHf*^x;jdzRxzbTG!QRMf}L7 zX54Qpoqu$t4{s{*2V3j%sFqjfmI)q^0?(V=6dq2}7FZ^@kV_e5&1y;3ef#{T-0SUP}&W6}+14)l}ysyqvTg*7K0<+}$xcwb-Dz@Ev;( z2NYm7je;h6cu)0UI;(nuyoTsJyn>4>)@ocO=X4Av2hgd-xh&#+1u;b3e#k6z_@UFA z7JSf}cP>v3?(khtoNDB`fy5E|ze2a>DUaI1&$DpMUF3IX5^wuR zE!wSO&{Hh_T3j4sBYnL*)TNMhoeD-$K)Gu0qztze9>q)`W>ZMLXspT{zMH`j{1VuC z=QJ!Gq$t+YnM|=zW<{$fSy(#4?2Ze zY5GQ+sX~%_cBe7pN!w~STV-qTh%b-K;F~29#Y3~T>Fn>fNZf6a__P+oSsZH8p%$I&sPj#{?+nNsbnr_l zjzdnbOryGqb6S1;1fhu@6m2Q7nkAht;U^ftt1TIP;N)1)!v{`3&S}kPjl~(CiGn-| zQH`6EIOGgqU8|3c2=OM(KkqpOCMYR+a5doc3f8vfol`CNpP-jzeQ`dIwHUw=qiy0G z^pYOlZeN0FIK(IH&(YP9D>e>CrPiPzmH42=cPeoX2IjCJ)*xGcrmFJ!;}7eja?WWVnDPBqhKdgrztdv2;9Wb>b3zUvm6_9Rp)cy_dN{i;mi~zs zEEBv&CRp#5;TgUE^b3S;83x^u&8}%SVYhV^;Mzi=5v_3DvK93il!vP7W+k9S4dYc| zsrUJdjO3|7i72T-&kgZpM9^QWMoI?8<1IXcc239j7{Fti-yvBKT?nPtJk7x6q6Y)f zhlgLGAn0%LxdL5*9G+>(I49u>4DgrmmY3>9goaBIVoVN?wD`8@CC?Jzk2xSX(CkZ4N820)OCalA7w3~+9IX8aaXmjstH(iMoK53e zP4PH+ol}Oe2ch7a7GIoy!d?vEYRz{34NqtV?L7aJj&eLa$#KF}ErZU#3_4%JofyDx zTQbhJB%Z_ou4>8PPJ~P%nopIPt0F1E%gsDQ6x?K5I2HF{KyYJA9`~Y`sm|mW7;8Rv zT!FQoUF^GMSa&=(GKUss%x_%QlEL%HxhV`RWd7yjb9hcSJA(`T9b)v}04uEGxbsar zKD`_tk2VwTEI*zzTQ?ap&z?qgVXuUeZ!ns#uPqx?7o!fTIb*i2C8Ue3%RpirQmhO7!Ruj2_De=8xh1IL3Xzp9@l>Djo+ZV*B*nR0&S)Q6AH8%NX;Am2 zNb?(;*qm1`9n`AsOOfU`>3xhcq3??2>a5^0?qmN-rsmkbMP{aE++lzf%rSpT@ZKV} z>U@RqnYgU8m)T03R-ke(Isx7oo3m{Xn^Bn$m8^C~v5D(l3N9~#_WD>OTya@T7oG?I z^&^ftu*er4jl_6#lb(U#GjU=k+wb6Gi~(OcFfT~S2Dc1b_1Ta|T4`G1qKxnOd=e7X zAv=7F+H$+Oz2q9HW58DCFv8ecKAY>|_?&`E3l^xraANRW>^+LmK=8>pk!0#HRyx{J z^(iY&?54GgZ+#b&xW)JQxSL5Lyxm5KU~B|0tuI6df=@*W3abNr4prbqiD|)d0>j6P z31<^o59J2?xZWbJ+|Y9-5|d4K@I~1`FuGWmw_^koiwQpP~Z9HOG|Nhj((Q1~;8g}}b4%LgT(NIx7aEyMA zp-A$sNpT4Ac%q*bu*n4A->0cWiIJ4(F(}SSoX7k$Du5SM*hB1)3-5Q@CRl{RQmveKz+ZLn$yi3 zJi-ihPb5pkT9n;D>RF*~5u;c=&Z*d;g}t6An2(2TDOwqw3dW-f1bRKR77r+J z4?9u?!Gle@;{PT!fcuY1cdkt0n$!S;|DekR0YXAvJ&|AE{g=9&F0< zO(UwZ1;JNxg1#p9l=YFruBJS;r3!esDTD4*fv*%Z|MNtdHvh+zJ|X@thsWp$cV&tK zo+E{)IMQyJb2^?VQ`6^lx`&}!d3CBFdBLBxrK?i|*jpSQvcwa`pbaU(?^`oz^lKj} zKRjH;0ef=TfL));xn<~aLaAbvD_0hWji!n|C2&>`NYKKgOqqkL6(p?yk88FL=yk-J z{JA?dfNQlxRb&r9K9_ka9$Vcq7Ijm2VFhV_z6{`vRX)y_T=Z|K|Nck{ddU*aU1!XQH(CeW0nU)TohtZ4Du)}IGS27m$J7A2+kHHc$W`GtP2A}* zsi(>3;YP%F_a<_J-zqyikQ!iHINb+w+!!UI^DU;=+5n?utCco)ViH*>Q!4NxOx=Ze6CUB za=e9*I$xoM5X?HXM|~>F1Y1T8xgJWFqQ{rBSl1{5e^h^OR$zbD<;pBRf70}=nqIp2 z?9%jYTKD1QzBx~36hAh#RdM_i@fB?0hww`@<_rsTGc8IYztQGVW?rS@Y(8B#U|%F& z{HebLrbXD)5v`K{?AP7#`Y5`d^MID#TovE-QNVa-J|o#?ht*s}KurYp1>Vdf{e& zKM5-Mu_5{6iJa?wC?8(iPM4fe723NKltNc4HcuqTNu`{4m8SP=dMPLVQq!MKaDX-u z8vp1ML3B5GY@7@^l3Mg0EwXS!+C0###64Fvm{P`kTQ!>>dxXDVe{a+>rHuK8reC1x zrHuKSreCCWUs>Vvlv~kjr;|>Z;JPunXwQOu4TEQ_OG{AUj5U!Ork-R6^0Kmt5=eg( zI&1XO!T^jCe7jkO>@47H)MeR zz?yZ>IURH5y*n3Ip4#(1bME4d|L*ztaB3HDuUej z1q<>%1zE%H^j1lL^OOC8wnHa<9M^&w(e{J_V@=%j8oF!;8QpRl=C*&N|i)nIa%re#aDU=y9m!!=DA!6hjM z9Z7JSav=0URgdO4d_FW+e|RE8D7tUqB9g{B;_l%BuOOxstXst;{Q_?QZ?yTyukvw7 z3Rt%)BN!+na9X9f*WkZ;{+c#katfU?gHJ5ao+((L427ZfsmIZ3M9pw@yFYs-E@V!< zK1&@4&MBrX^wp(98PCIp_6&ZK40#xQZo9$doic`@_3w@an#VizYT z2cpLdb@Bwx*KwgYfY(;!aj{pR`AGs%>f$99=CEJt4W#kB`TCLqqz0RVJ{;#PQ&POV z!pFs4j{iE7aaaa$QBuEfu@~ay6&bj=0dKcvy1iSd}R~5E5L{<`anzM`lh9o?YSNpcMETCoc4IHLM^` z9bPZvu4YJr*&*qNmr2VX_&SE93umr}^_G`jGQ31TC>&nZHB5T&868l1oU1+#bmAej zmA*dLOx_|y?>I8DHbA{7zzLyk8YhR~IX<6yi$)T!Q{eRz&@Wc{&Z&4hIe>RkAqq|T zkz42WGPJUFC)6gmMd#cwt((y{dI8@y*uFA@hsr`M?_!W}++AcQY~xzMzdI}j zkEOy2!ZrILg+yrlk1@<}f`6)jtdDvh7x2M`Lww)1#g}PPmG-9z23K}T;CvOU%LXvC zGLJ%80c(>K9uM;kRct8>s{~}Dl|DLF`B+_+!`KjStn_)s4TCGGnv(A>Nal26a$c;; z^C;L${g3z{-`ER~}}*Ze#h^V9kyi)Opz_f%Q=cF>zRnoGX7 zyEbZZ1FQ*^QS8$a#fG1b@xW>z2 z&kC|HhDP;^PR#4u{EArZXh>Te){QcLOy*8aC#lOx@<0UqH;l_8-E7Ht9^&38=O#9L z?~1(hPuT7aFgB3$75N*L$ zimF+AX7N>kc;TBq%~pCRuEfiuoWw!hRuz0aXNx@IW`wqQM|_lTE`jpeP)Yg7U!dWu zw)_???~cd0?YyTZf#~| zOm$nTHw$UWYWzb}CWbuye_Ax|R_70@fOW;IwhhJn2cwqP3oY7#L_U;~#m9SjgNgPm z?$mKyK^S2F1WrpDKV>)0w2as=-8T4a1klK5?Gi&YM+DkeEU3N_GNc|aDC?IXO(#Ng zftEZ zc(dZs-dW7;jdK-@I|?6TFuxyU+)=`%J&@fT(FK0BI||3?!^!hG7VPg{B2T}}$lH+! zp}i~CoO=G3MZx+f)JZ^pb^TQpv!!&D&5Rm2eC0c>Ji98@`AtHzz52oRf#pl?-Ew?E2rf@tfE< z#|A2+q31CXB2{W&z^~PH2T!u?t4iB`N=;B6TJmO5VKw{y_ReqEHXe@KAm6C+Cc#>- zwyL^PmwL2y#Z+1SZ?@9jxKbytTyWn*>k+3E$)gSqOymbvx8*6oJ|KqYlw$ZnGDo+F zK&+?p>VLN_yjs$N!s(X4^96&gWXK3ltaEZwY2T@t`X9FXJFL#(#@nqtZip%fe&poV z3g0{mBx|>JyNVUh;Srj2vbng@7O%XDdmMMXIRA)kItWAh+Jjdzfiv4?rtg5H0dodJILneRzM z6ml`I^nBZrU`I>>XEL8_rY>n_GgkHS1Fe0WEPL&Lu*$wM*mJrCb59H=va)+T8u~*b zB;~}Jgw{b46t{3IubF~-5@FgMk2lrEa?F(LbHZ4H?f;H#rY~+r2TX!$v*#u!uO-h2 z*}%iTW^&cBT(Hlv^LYAqEzoCTpxy@j+#s063v@~)2&p2aDG7Yi!=%x+uE(kR3X-`2 z?eT&`5T}^oBh@^#>c`rc`WwG*n|?oTn*HgJK-WQKMEwtM!j$DAPg@otS=BMPlV%F( zHc03$KqUm8)8l^pT#+NX3 zJc@vy$EE7v!7L&oxDfsBc-%Ph2(E=CcKIyZTD-(iaUw>4aHTM+(e?w9NcBnC`3F`0Jm!f?l9;w9e3%|Pv&Y0 zntfh=x~^)!1wj^k9ZZJC7xe_mDFQ z*YGK+NZ#C~=y=*-oOZi$?{_9)XGzK1lOgVifd;}Jax|PtxTmDlP07$cqc(l+_(U?1 zNVxxB_WlOEuByr($IspCWaT7+R$@e$YXW^9l;m< zz5qTY+w~ilZ$hD5&N02>{d9#a1P+Km@D=F=15k5m=9oPlp(n60gy;!ro`tmE9+PQ= z_w717%1%P6syVa{!7%cFP0-`ELEU>A4FHdX0PMw_5iyo&dS3aideafazYW2Gd<2C}qgvMpeLcXB*_) z$iYJ0gJSBVbT7k0$1b4zkic{wBoI)Q%5pem_H_DszM)Ofwb|Ew23yQvzGDW1&glt# z3kg#B4*7$Si{x+ad)el8w3_B_Lvx_5@g$qDYNYqgVmb+E57U<0q%LC@(*EM9acV$u z{H-$=n+lJ1;6lQ;7%ra zIT2eXTTX~deCofTE^pE5a&(UjpkXx|m>fnZNg;FLT8pu^mV z>D$E!P;p<-?N$n6&}dlGHKWx&~#!Bn4^j%wdVu~|??ne5LC zTu+0^71A`zAuEm%>%TAzhi;obWV19OuTP+~te4zqq{0>?ZR6BVizjso|6r!~hgASm z`s_H)Pap=8Mm9`oM9rnsu~WdLNDzJc%s6XXG&7jBQ|jyu8U*M;l;0YBqXS2@hFQos z^p3v3r~%n@UbZckr!?t5Vap5y8?fzCrZHPaKtrPHGs9V*&CY3JUO3I;K-+-En1|ajS@KV8lj`S{USrFd*u5x*k#Fv907v*;I&z=>b@?Wy{<; zsmz^XIHWlkbvoUf&2%VJI3)7Rggu>(uFt@CF;m#LoV9HzL=@Qi3-sSO6rf!0%f95Z zwAYaA{0O~xv5RYG*S7vkTyME>2wUb0H$xz5qORa=Br?ZL};r)n+hV2^3&CN%UU zm!pZj>_EaGYk)lr%sj*%IDAbPT?8zkWs6b=Uk1K7N*%PgMeiTC$Nh)Q?j25(+q{Bj(GJnyGw+6673Rn8&K6q4}dZC z3j(cX1QCeSeRz^$L`u*N=yZ5!P0;#P;=>u!ZF6B zb;r76muDeVF!pqMC~w|djJ#ju&D$?|PaKn{7SfA6hQTDtLqTuprDoZ$f?~vMu&uz* zKq(-_q5>EEWH`)2ENd4)cf?x1+kQbnMG+a1F7i8=L`a)YA z6Wh;edpcc_55nJu;*+|DLyCL<T=qPkKJc4I*f_MkZt_U)j{v_hw+|0pj<{N>! zB3T*7@fX~zX2THIqb~FMbMi{l+Rq^Hv!~PR8;4n*dioMg0GqKxuW#%J*3-o6RY(Rh z>Dk2tA<}95QqWFBN1qim_mPP(d)`%(vxQzlxc6XEd#2`N7a=5jz|17SoUi^Tbo(DG zvMgm?K$aDW94?+_MIsTH3q|q-!m4XnohP+9e>ktak--p&DNhrB<2YWm4fz9hHR-@p zc?OU_>{)GnOHC8v?KY*V^VP!47o}Pn*3?$#4U}8guo{7uB9>*sU@0pbs0+YAzHM2# zVX17(T4ln3;UfsWRbXX9ZxsX)p~Bcy_)eQIo*a5he@+d(#m5c3RhW%^H8m<1B7q$n zdP{fE&{$JHIjEIRZwzB~T}^g$1=g`KwF<1sF|`mZZ9Vn`8ZEN25!#CJyFo&_6(`J6fA2KK>aj-NN&as*H-i` zNOI*y-5_~3P%rdw9-ckPifn-J;lJat`Xtx^a3H<(QPcrr0%X0SQuJ()Xbb??-An{m z3%M4wkF8ovr7$qjND%t;!N_6yY@9xjR`cky&K}uO%0NT9~w^60jCY)(289kSp{h*nnO6P z%ap;I>0r6?scoFPGJSvM5BE@!ujXmCV(Bh(&aVM!!4pE)QIQ11yQWKMxP(jdU^=Ym zd27@rM!KzNL_+z3J51RGcYBWqZ55Jf9z?0MF-{aT<#Gb6@r>o$1Y=kzbZkYxu|#t1 z!2432dqCC+2TsV&LH3-Rl`p%;-*xmBo9N9>;F!Khx?C+diotxdE2G;@cXPQ-^fjO# zb|{g7xsniwo@*-@pHf>tYV7KAQDcvlhGC>bYY|-e+hH|?n^Op@H5Ae*jkg*g-77#E z0OO|?Xb|qt=KctzTQAPc2M=rsYj3*E)c&c-KMM#CVX6XBsbt6$`h_W^!?#B_hlK{S zh3*%mJOV2kftHBW#r9rHz(xd*6>C!JRvV<$%sg>c&uy-0YF@Oqwk1{9wrE{L)A@^5 zH!Nyys$R6Zw&lFmm1kEstXb5&uC}q}tlEY}&Fg9#YZk3_v-F3i2lCJ@4b6*c*4N~V zrka=h`Ww?(AYk$g>UiW=bACdxx}mG<{{LIQ==5qAEBpMFqO0O`^^Qzp&Id#6U-E3OwfHucx6Wfh~P_;TKGb7{bh=0lQiK~ zkV|-JIxCnN8n6xF1t>}|Q$#fl=vdp(V3_+P8qCf^gV|GPFk3HVqONvj^*QK`gM^%^ zg)5Er)|pi+%Av!Hf=Y%sMK=MARyIqd+^Ox_mbETbD==Bph>mT`3id9(igN?$BATpO zjT1oZ6{&rfmtjv@wj%I~uo(hQhje5_D6LdVe7C`xI}_m4J&sihNut%fFh>%kcUc6C zD9of7S`Nf{1jmS0)Eqj0Jj7#5zhrvEGrQWj3iP9>%tst;xRO-BTFHp@ml?pC`s#*s zZT;#+D{JdhO>Neq*5;-~bq&?2I-E-2v%F}hsb*DOO?AE#UUR&d&k{KK*yfw_qYxzj zIYvwm7poMpthK48Y+Pj>HCZ7wc*%q`n}x!ZyQH>dwbnPMR!L5QWvxlcCg7Y+#W~Fs z=FZ6)C0~=h!aIhKMjU)4mF$520IR$4&Fis zz3h#0JR0Q+X=3wcBbGQ~3JULH7t&`T{2-Y`VsX!_W z0!x$mdR67{VF9W*!BDK?Un~qFrzT(oo#25L;Zj=@0e}_VgOz}=3Mj+b7Bnx9i9^tv z-~m{=V7pMn=fLIZK zC^8CJqhKaX53*M~3p=&Nwc-3qFX(`=ts#p#`h zms?d;1rzr|A7K{5zd1qc+;9t)kQskJD8^oTRIHj{drCXIhP4#c5s^LQ_YVD1@*TLz z8n30LwrS-D(h7S}k2)uz9bO@Ui7TR2qALIrrOvo7(o;1TZ-&`v zuz(lzgIA}yqnU1Mio4tc%m0A9Ep^OHUd2p6+#}RT*Ej+Qf_TM%#T63$I%o{!Z>+q6 zwcOaDhJN*`wCD4#FA;!IM!g2d9I_fkoAVlT!_)gmV$vgxuSgPeful zB`toR9_)BMQR(SEu=je|Q*(|2G{TnTC~Z$>KhVQ&x5%_2W4yB1iM z)f_0{9cmv2N`>_YoF&%`$JnC>FuU)A;Zbvr(gS!9_J>^=oK%kI;l*gK&pOs>lWQ~G+!41Gy`p?N)u&HoRsz7vm%bg27-fK|2BFl<5mHm?L^H zt1~M_`=R$BRNNk?DxwsJ!q#^XkYHmbCK_NYcEpFeQJrysy_goK0bW3d^wDAVsBDNf z#7Sb5Qu{D|w8eRZ)*Cm5##7AFJZ0mc;q*F{*s7WX-kmM*46rqiu$ujr4qFWx0k;h{ zbP|doI6zuXA<`E!q*f4W|yH!l}z%k7)5n$db4BK$V}C+xbACTN#W@$ml*OwDHS- z72R@P&HA@Xv>ccGU6q&fZEk6*tzX@omx4L3MxNQoC0}&wXRmGm)nXnKu`O$5Yi(V+ zCX|f(YigVI3w=f^ZOsXQlBHGP7It2h;F1&&wbsX0 z0T*B3A_1lo4wc}HF9-UjI+te2+3kwU*@ed}Cq&oo=;OD13FGW1>C~KZkS->((NwM#~|Fs(swe3qUC z)fW~H4*=S2c|*tBp4SJPRwQK%UrO2!qCq%IOBEP$+iQjJw){E*@|AU zM!6e;8_-b*B;wGQ@SZ2)1I@sF3$p-)_=rEl9cCBOP*=uw9QwQqn;D4HpSRMy1wOmi zcDZ(;T1Y32*~nLO5A95Cxn%_|x!+iQA=9|;y=FiMEkp!AQxgv*?=$IdA>DQmHnM9x zywI0r^T&}NrYE!MePAg-FghuwPq|E`xbW%Ufuxgo1}_>FV?j@-7Iq{M3T93J(a*GK zf)gn&=U6!mO*-5qOy}ezx%78F{f8SzJKz7d!#*h{N0HsP42U@ zgI^k_4$SALxoIwa$VUrtMswjXtPhw`e+R>uG^J!V^X4$qOkj65^LAv06Sy7|cuG&; z255gUfxUVHH|0*?2{VD4Fo7p?2HOv^6f+o|l;{$?&2Q?$9QImf4y9+9IoyqrOq#>? zZ00>-rkTV3Z06698P4HS%;EQX4hS11b9hb9;qu%$ykh2XIp*+s&TzjJ&fyP}5?y-9 z^3h0~(PFp`$-g&qcnl+%G>6^U%qPN3GlzL+nwtBNDRW4IXYLl75mLTvk>8>S%cI5N ziQ1pd{TcQ7t9zA6r2U;PT?&_(S2_Wi%Ol2naMRgl7-PZUvxjb9HuG?hsZKYb zS+>Yj?FOeWqC>EfIT%npIsLM|E(}?BvF_^@V-Jr#6PVH} zGmUNk3q`kQi%O(&z(k#XG(0C(xoPR9uqBASwEM3x-;lU~?p_H{opk^wVGDasth^#A z3JoxtkV&YI91dIEQ(;=Y8?A0*&pw@Ldm*?#`s4b3xi5viN7flk*CF5(!#ZJ9Ncaid zGH4Z%%(;hSThKsHVV|w&_gS90G-^8fB|6%Qr);3Q1#1ks2KZh4?qx69twlvz#ww2R zOo(j(JAzghL3?3L43|X&rhxa>U_~!%D#;#VT01O0OZeC8)lyU#u!rAp=hLOU-ik24 zW4Kpj2OQ>T3D~Ws7UW^nFpOt*I*p)U(-JeOgP0VS40h&pUM2+azHE^JI}l3KU7cX1 z>0Uu404#e^x}!703AzUlF5D@|gzl4k^;!B+Cqjw+IMSDW<*np{rt6=Hi~=_E!459X z<~=5PFl2=QBoqWTW(z!r0%65X+4L7BJwS*%vgyBdcAZZoKffqO>TVYhfL#FN;zr#Pr7jw&e!<9 zY^Cd@5*J-;c5^h4VFTeb`jGQ!3FRRG^+Ijc>}9ljyX)()cSV z%ThRB2GqqTixl z`ikz>n2^l-s3~`ql#@yAMOl`@`6jhHTj@rrM88G_+A*c^rT=UiAChv?_#TvHDXbfp zSI5jQ-IuL&pRVNTtse;IlOHpUK8}2d4As^M#K2CkU=M?qy92C@AVh^}S{GLzJ)p5T z@E}mBIs@S}=@Og+rr#qHh^jrfg6Xo2E+=R|^|AUWn(l#35oNJ#$-kLV{0XBFgoO8= zSRWL+$nGoOTCOpx2XspZ+96V*9=p#3;junpS~(iFf;$De%5pQ|Y@wde`3nlQD0}_T zF0mKaxL33_xIsp7cQ=gVMaK0mLP+PJe^J()D57V)2T|{WPys09(L-_U^rD<_wlI`+ zz;&M)-@;;P>BLruo(s>QmQ)2^78tHvfky*iS0tJ0fpyhqaAT>DA7al5B8q6DLw$UV zVZ+7CLB#b|$!Y|p|K+fbN~u0Wo#X7B#GaZz21EOG{VQ%+0f}3Ce;J~_3(=xWd8}q1 zVDE{|;v)jVvs_^S z*_SPIG0Nb~^lk}TF8y!Q@(!JgC@Kt=a|`bZ+t`sU^^@>+pqn~f_Gl!MX4OcwvK8Oi zM>pXvWO_oBONol`su=vN>E~HPnqily(r zoE{e8Mgg4<4ZmWV4etg#DtCV9+@P4|hKZ|l66cF80No@WVotb2ut=U$0qO_(DFKf| z^-!XDOf&n&<)NPh%}kfkee3)C`)Lpj&?8x_vnOFjCo~R^aF1H5r5#I?L7qrw2LhYj zn<9oq*u65hfRLS6LVp1T!ONlQBB~opR!=G`V;v9$!q|zHrK}4hZ^N#ky5V?cZpV@E zLTZ;sl&VEoc`{IbQL06}5stN-sWrX~+8C#*>OO_sDyl^x~^ zNY}KsX#E6PR&!lVO(UwqB+tm>U^8Z9vJjl21n1h)7v_lRI9C|A_#8|AD^h#Hg;MnO z$Sh8TC~to@eTQ(|0eZ30!NMxYgtCFqO0wxU<(8k9O}{xey)>IXn47*dn?97AzAT%5 z2gb>_Fd~)dfBSQI$ZRjMoZ0bHiR4uLN5= zup*py=_)htKZ1+L6|fh`h;Rg?$zGf3C%`WZ1K)YtEcuSesLgc0SO)(fBJs_B(h2qL z4<(>RHS0huYVJXssb6GKPKm7`d4i@F9*MZAU={4ZESNo~N_a#YVF?~YQ%pmVw9Pcs z0#x<{Sy zmd*6lsk8ibWORwmk^xifh#$2%kSh*iNN-v`i$?2l_HIT&NUyXU7eYrwPiCZvG4z`< ze)K`woclQnF>gW%5uXVne$nD`ooRUhL>EfwFKNy+7fG!3k z=}lP_ltaKuj|cVj9e{r`a^Yt?-Z{L@R!}ISlBx@HfoehhJAR&EJZ) z{u+T-B^GIqzyrqd1DM?wRDN92L=}89wk!>IVrAIDr?CG5g<+W|9{8?EqT0)7o9POL z&G?vPGTsEYIT%g=gu7HW=0bxR{i`{ne|qZZuUDh!;c0Q=xj{yc!RtUe82s%R{7#g4 zSU7eW{B1J$pLfP(TMfw@ zjoOOt@939LhkhX6KbBcISyt%+)5cNVhR5n7M?=zVFq^%Z0{H{p>t&|h(ozmqxlga= zZa|!N3p}6>7E4tiwcF72LfD--tg;h|ug zX&?ak&!niHT(CEulOT%&D?*^`XfZGoSsG7(L7Q|9I0Gx=}9ATP9 zG}VN8eK7!He~6l2Rili}d5P?*H>76(0$beN3Tgo;U5`DLJd9SZL}8}aRJx*qD{Mw> zj6)-$%L$bc{|lg&@U004kr{Tuph8SbL5RYfNqdFiDsnQ&G$(rhdNbum2sdn?jhfeH z(nT&OHxPThyLRy{>^ZxVkn0JOPYBW$Dc{yCy4hf=?+v#XWbl~O>l-l#GN57l3h6js z^zuev^e;ga$5FeGUft+|V}qjZGMOwU8nc-mmnex&2{2|tFs4H{sx+jMx{Ek2f=da= z;mHn-A-|yj|Cgor0D|9_o*bCO6f*q*T(pQVFQRnFTO>D{nS4QWCwfERuoN@h97)@X zhC4y|Bg_PrQu!dWi}B{icOqkw4W+<986Yoz84J>V9j5hfhOL7q29wk+=bN^Rq1Nxw zLlx%7c-#>V`3_L?lbm26X^*#ZPk9P*mZTUQMXRa?g>Z*BR3K9hCm9$*6{J_7Aq;=J z4FA=v=yG3|8PHAPfSzJcEja8{mI)o>7*>C9lPUWms1)vjA|eoclzhQtZU_E>-~%?6 zc=TP`iIri?VnHi+>T|<0toTd382~>jRbO2EKK^I0K*ut2d1ozO9&i-BWxqco9 zJKerHXjizJ3Gkolbj_p8+hVey4G6c_()`KE{K=cL$;H4uzotGIpvoNc0F0XEAl+;4Y z5*T3w1+a%(wMq}b$@TasvaH%QjSWqvde#`E*s=sTXutvUS){BU<7^||5WRLGh%!xk zJO^q@Vj*r73pl)$1k8Ho1gtx$ZJbG@J_)Ye%p~N8G0aHz1`QLtJhgTmQlXk?c zzRUHi?3qmO>)*tZC+iT-lyTwLXsDQTC|ZXZjZj(dto097e$o6lxyO5+^{tp_s@YlRkSZ%Wi|Y z;Y>e}xJHAg{UP6Na`AVw3mZgg0kaq)-K1^PT}7BWsWa)vYsUdsdpgq%FgpMUfUrG# zI(@S%ZWBFYAsidtn89zK@CFo0ii}jveTzN%v`c4enBfftkEwkel2kPhi(N4v67s~hT4^{dZrXj;8!{i6Ds zmPP6MX8c)G)7+d|olj1s1xI-WR6!*i%}DNXR{ET73URrjogf@Qd8*GEefPY+0M#qH z2KPF$>C43cu|qGmx^$KNPGDVMYIW&L+0U0-UAi*+`AVxxS7bk5ZFTALNuTV|<;A06 zhB}>IX&pxmhhA+RM_GEgwI3}yVGh02+K(O`dbxERIrL&{KSt!xOReL`q2IM;FkCf< zUThsl7Sju@MlC#eiJ9H?m>peF45UG?xAt>l`AVkC^!FcHaYpEpVubvnKkBb-`s<+n z>eXLk`fH2+IwD_AiNFU07o=30IiL%rh(lwo8TOW&11QIW9qKDaS%(fH?BeEQvM&v? z|Cm4fi$V4u@@HQeWWSz2`^(4%lrz0t!B_)Ur4v~0kabI5VE}g-=vD;mg)##B;7Ooe z__K_#7p-D&U7{Swo&12{2rZb0v<`)^weWB5A9@rsaX!U?v zj?x!}ofcIXylE0b>p#*N=gKJ92GrOucU6=wiTLzJ@VhVK!{GqSee5$>(@f7{ z-+`xN`YD__nWkeLbmO{ACH)vTFVh^k{l1E4Vtxa!lxx>PsB^kX#Kk6E$dnLvMEzLv;CS|hpvQfy# zKmo8{I%%k>ZeHhx5g7(|7?50103i=uqPO`UEL6hPg2f9aex07?3CN4|AWc#IJPqi!LP=%$toBsWL`LXcB~wW5w; zdPFVo-TO6ChVEsMAq(h!bpOn>KBj%r{axAa2X8dpUyl%Vj0Xukt$1+gD{azs zw6e0YlJ+9t+*jIMj|nr6ThCpuN&~|Dg3$#zed;>+y@%(>b7BefyLrR zqa9}pD8?>OLfET2!}Vyq$&9JH7<&!DWQ44m4Mc$ZnM7EspR0yBm+S0lV#P`Gm(WTvOTvTaPq)`CjYfq2C+77LBvF@w7NgkVq*DB&_t^D!fb zy81Z*TPx}`m&vkzQ|(by1HLA_$RaW}da%Q#+f|zBfezqedR}Z^F^B}yHc_I`v$!Tg zoUut#8Yq4JL=D^k zozS~wq9^nLApaT1<>hgJNB+g7hc�WadD$UP$v}58&2zwt}VT=ak&vxTt_49h#~C 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%0Au&cmSGOwP3N~qlvEU) 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

    BJQx9tWxQY%-R?4 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 z z7>Jur64yST*L&CJ#Ivz5jCDH?Twz)Rto5OR%FP1lgHz5FJ;uv)*?>j)t8VMzePGZA zeZVE_fr8KDk|Mf!GU$r4C1IjEif@TZ(obI~%s5GP_IL^9q0S(W{c!|fRzu36&NE|q zk%RA0jq3MaNG%F|q@R9J2lRJxXh8?3XGf45D^U=_Ozl`yKax61`m%h!b^;hEwi^?q z)~D`HM4{+E9cYWR*l(T>3AY!49E-Ah-_!F?1qK_qL|g<3q?@0udBNSl8;I`aZqNGX z?q883C}ln*p|F5!#VZ)J5lw)t0JaplZ@$0b;7&M}KX7ee*r4zdgmx|a)8cB-%Mula zDP9C2syx%HTJlw`FYZT(eUZ8BqxQOR61}E&msjatO$AAU&5pD990 zn+6Ac8PaT?Z-l*6eF6=Q{t;d7F9{+!q=MgV?Zk#}otxK0feKGHRQCQD%B|G~8eM!+ zd*6C?`5&w-juhWPt(NK+0%y8OGI;rdMkH*Tj@|cFQWUl6;&VHij~%;P%Hhu0m^UAk zy)8k$)Oxo)gsLrt%=}GUnEFZZO0JmLnwCBmX>&yp>#s<;&xf2F|0vVI{~adDt$~a$ zzKyoozl2YQC`k362T@EmX3hyR1t&PS5t4%8Mj>zwFG+2{cM>V{Q{%O~rWg8W?IM)A zGtP3N?L3HhDpUe`b`f2SA~CKgi<8Vnk>#Y*6sQ@#5D8bp2bB{A@l(-}=(@A5|KI*x zYz3tW%{T$*A@QG&4rb^ZG}_!Neo8rg8vr&V7Lgoe{r_p;-P3-V1Hd$L8U9t9Z}xVg zG4%j&HPmZ80V_Sp-j@3R14^{wAypKfd_|DPT&cm^FUM--u0EZ-Fd{zjxYCVli2xnF zt3)I>zX7W}9*bYJq$*I*I&dUVlkH!FSa_nj9_Q&TZQ%Pq8CLDJ(9C5G6&maiuck8d zjZxX)s%`q9t5jENZm_}Wfo4c0%RhtXHSE-LX;6;0-s3U3AO+up;TGrR^fmx-(4#Ni zD}LPWUk9QU@@`H;;Lak^DP>&9KdKqPpiBWHmM88$j$kUtLb}8*-rI zkvjeGbvZ2fotp8G*XLCgw?Vzj^WN#!<4gztS+lZP(+ROm4|w;@JFPHtrVYJVJYegallbDOKi4o~APU!q*-9AY=p91>5;?!n(fq98nf#N4>Vk00VAj zN!wzs}5sPeDa-w#YE4m;!`TS!KykNfG#)H2f7;?a2DS~hM7ofq-#0FH1Zl8x%>vP}LhW=;8I-6nJy2^TN1u?H**%7Dqc;wm*}j_i2xfRdWOX0g zE2%^ZA)>r4wGMQD>AvIsb0(`-gAsWKC?A#J443ZW90|D$8+}UyoBkVzIqKxRDp}Q1 z;EaI&_q6qq(H~G~H7O*JT$)WqXQryiLn z^gZPF2ZN4>VSUR2o{HtUgt&Ox25n9+D`e1X4C5N3c>Xs|icj^^XXzAU^F1gzcP2Vo zie*Xm*lqBRvy}X&PIY(W$Ou)6V#M~Hve(kP>yEm2pN3h+#3%66Dhw;W3FU$AL(7*p zT_E=){|MCFw6q_RD*icA>fN{sppm}pU_3=afc7)Y<=a6)UUFqVlQ{C0w%n!7&~zK2 zk3zV!*Ymxy^CwEj(0Z{q=2oW7{qJRm9PO2desMPcOc^I%ATA1*y_J5xEy*`pS_oTY zuo>?_AYz#GHmV8p&_>k&;O4o_6#w?1tLn%x6LP!&qg#Q?&ORoKcGmvvTRfRT1kK@x z`f%e6kt(B<;-drbmOF)~QZ|0-bHft4!@_;VT4h@#QLjosa)-;>`EWiHnz-DBaL8#{ zYzSTD2k)+$m|!XeX?qaO<46v~8y#Ed5TM9fs7MtKCl5ub{#UZBvVvnkRdk?O>y>IN z`CTj{ekcYvAbQFSrvn+Z`&>KR|B+i1r2-nJxt@#WM)I~g_)So>=0qFg$4>x{W8-Pe zL2?a_c-s@YCh2pATUHznXnwt%Qf{$fc5bs%K}20};ZdZ|X);D4N~2ob_-V2jCw%m~ zvfh!4DymW^ulHS$$C3qL?Zf=PN*&jL+Sl9bR%w$f*%9(NEs;5GjeMnT%DYylypHH$ zh8hy&J(9Ogt#w4yEv82&k8@=$@EXEZ`ddq}_a*%;3rYh>@ex{6$i$=x$1x7TjjSx7 ze3o!Q??R?SeBOnmEmpCGYQ1!xMg@3ATn=AyiImAL@r4>dsA^g;AG0$Ebw}&2t*?C} z^xcJY7~s_MPr5Rr!+?zNd~KGhaBDtl42+#I_`9LyWYN3W1bWq>e>B<5{XOwC0K(Up z93#UccCr6cZQ5%xIznpO>F=V_FYT+FYTfZrY=0*cO0u;M#5?63%;GT3cEx(MUzu8C zGIV-xv{bxl`}iU*VD`*9Obi#Zms48wq(nl$_FC)86ZcL)*DpDzuO+$>haRe&AfZ-1 z&Lpu!`l51Mnl1m+vn^WAE&E<&!wbgidFx;YV0M=H-3^7ybK-7m;HUn{FuFdOgSaNc zSv92Qi2T-23BWC)1@dXQo>iuX(RGH%Nef z!sAxW-2IUw5||^GZ)=-zZ?+J_^I9HpZ~IA&J4EwRJM z+v6xj=WvP$1P|+9?LZs`X-XYQ;TkuBa|VXzPhwjy0j9+S^Fvv#$F2nGtpIRQzw%T* z8h;4-PhrpmEl(?Nb7})CNmQOMJySyoEV1cHzD^|s;oHNc&;d^g+VI*5uXh(5hxuzh z7h&Z;8E1@4Zybub%tkmihbMS{8uPsYZ5+%dtn~toR5gf~A&Mp?IUc^^e_a!#F|Wfc z*`kY88r@giq+VW7lP0!B{(k;0B^x)PuZpp`SyACgRv+JKLU~Mg{^3qqFHPB^K4d&I z5(9=)>F`6H&meYe-L)e=c}J&{*1rfas=uu_igl~q(-Q{|sy2x&SQ4m% z?@v=lBxL^{Q+HsMbZz$AO3+N+D(ky#`6{-+V7Dnh&mXCS5w{`Kn#77YhIV91tSJUG zY1)2eO^*AN)xJ0-eZ{ZIn+c?QZ?(a+1`rFf~i6)&x8ODdUuQY3^UJ z{KjDPf8XtUl^o-xPb!64o_Do=_SC(6NqOsH>kNI>^iu$yotJa@U74=Qit^L>E zEFl$~qZ@t)uc2W7?so2sdrQ06l@m+l&wu{VG2i}iFH6Aljj?D}0FlTT0UFAFh#J53 ztx>0^vZ!ZYvl<#Xc3Rr;iAo(@BWE5Uz}6b@^YoJ|B^(~hv!I&@t3Hnl)nTl_`i}Xoc(r_!lng$^-NyYx&aUU9_+eFJ8Ouj!4l4gZ zU>la;g{_Ui>X(qQwOgZkuX(F|Mz7phy1WFkN!JzC#lS8U0={p%WFd#CdyY#| zW^~R|R!4mCs}qCQL&ZnCQ-DjU5zqQ7Sb%pO!)D03#VyK9We$hpg@Z;gqSqY~VmiBx@KI@`Z@#O{BVEQ#lZ0V_~2sD}71k8WV z0;Wk6PIWA|U{Y_$5ufS)ZYaK%H~0+AZo_Q;S^MT*e`9(%Z#~cEC{-pnhE^dKcZWRu zm?_t1kS6}!2*KgC%EV8_BIFismZHMImLrsuk^nT zan3xM8YRhJD6P!@PInkUS|GfUHvZw{$4KSv{qCrbHk*SgowU$P@cf@9g}?b_ddR0l zxp78MI)xJ>cdhiK!FDDfLjC9~AnkPL(naItlP&5Z_)7@4&Jw8p*~NF@gXvkcnPvCr zhK>|f=}Rfq4D~zzNp$oIIFVv1T`(*(y$Ut!i`Lumxg8XBMK<@CD(FaF1*Qe@y;a7e zTANko7De3@|LJX{_XK`L&nh5ORWueF$A89fM0J^N&-8$9bg)1pwzj;?NP$n;|2od> zGI!E~m@q}KkxuXeQi;^uo!UZVvME3LptAcXE*o=ZJ^;X3@~b6p>DgY2iLc`}0~{`j zD0L$4O8NlxKUz?;2460$wfSkef1)~&Yn^}83O!#NB~6nII_ZDXP^v;zLnf;dn%q_q zgVf%a*Tq^QF{|8&T?S`UO>T)ltFE0MLuTxO2sQCX&9zR;T=>FvS|Ijar%(TA_JUFR zsYAm?PT$lKj6rQ1^hbhotB{C6SZ;*F3y>Bkjz7&xPLi?kOEq&6dFaa-+47QdgperX z@tqb_^d~Fw9r}E3nrGqPUY|Z-=ini<$5Z4kOuO2(msAWS+??AsoU#9dvKY^EP@ztz znTzRb9m!~R;+?hyIR8q)vl7SyiXE!u#)!w;nRJZ_Qk#GE@)P7+D|eE_?%)otGI*Q% zg}z4Kp)C7|BJCDD;`35P&R$~zQ^DadCp~BH7mz$^H%d+>$gP4cDP*o!0w`WN3Pd%3~Jm(FK9C7SL9c%T0K{RPH`+* zXyc8$GUI|2>Lt9)-b=zLVtge-cuSWIcy=IQwW7c)YHzN#obLx3LSAoZfS%MS=+CaK zTpd;)z%u`@j&O}{`V*ZjtDQA>tKnT>qu*7@Auks2@}@<-DS{!(u60A1mUEZk4wVtg z5lhA7bm+O;s(o&-@zc!0i0_!7Ijk~T!leL3*t^4u!3-@{)c$1Vt(taE-sZb6@DvO; z5xzV_9an}ai&NJzI>4M(XYIKl1wN?vWAb_^(R?6rt9ik#lB%sZ1ld&VNdL>& zQw>R^t^wD((3^^Y_NA52NZQ>f7P67lZ|c21Rv~(jKP@)#Q)IF>jcbMBzJGyZXSNh| z(SEh6l@rZ?!p#zpnz%X~q75;Ldge}8J<6SYP3j2L43V-Hrk}zbQ0P19L!!QGr0YKT z!Tpzzh8!nc;oO+?7ZQOEtIX3C`%p4*56>W${(~10hk75_BwH8OLp^KyL{k}knGCp< zUm$pronb4z$ihG?7g9S?tknqG7vXD7Ili>fp!$5H%l|Pkv^gxi^2mt}%}EL$Xy>Iu z3V&znvlwf1a5(1ZnGK=x;AQ1A@sM3J^dZ{qx6~&s{y1L)xpeSgdWS|DuJumHV+;dX z#<_Y_C#TBo`*TO!{phD&qm%Ci&fVRZ&mJT29O@c$K7QFgpLd|FR!PcdEto`pyEd5q z%{0Y86eC0>$$ah8mcx;s$)|KYMYCz1HZMu#+fgJN`?~jzAR4_An=v`$ zW>6U8*@Gpj+nDUW!sT^qGvvo2<=%On)J@3wi^)jo6|FLxKt_E?B(}GJ2P>AA$N)YQ zb2i1kB&%bGH*}za!QYA0Oue1U^X#YZG6$jq?hgDf6AdxEf0Xva4j6z&#@J+RT|)e$ ze{P~VafqYJXuT4>Ok2L+f+mW0yhFAU<7~{*ubzGM+}KU>epk8)l|1K@&)+-0Kat}U zb|i3XrJ_O`D$?qXV8f1oYM?eXa^~mlIh$%JCHX>omS$}+rU_)x6&FHdS$H3CA_aOJ zvEP59fd9N~ua%?PVF=}4V~U-4`8oCP%@;dAc%Ut_D6orax`_yi=P6pPWp!l9JA~S; z1aj2x)H|&58$Pd3U)rij!X^k_2A5U%h4q`5=z|Q-(nmYfS0AaNbDTyB5xIRG1Wj0S zVN5?!=JfmqfTcY1`^8!#sRzFf z^!^V5X(^(ZcS#5Gl81x+iz?9V-(>lbS*<_Ryv|?2w#>V8T|(>%i-v-Ko5B42b-t;c zMm&QB!6kg9N@Ex4xk5zgRq8Y|BZ##MCY_1>4tU@)3Z4qx)G_u_97|SR;dpRjw9%J^5 zv)I975_M+#;8t9~_KA}gHTdge1F1|5!W&&!J8y=_f2J!K$8C?2wo+bV0L51b9QUbR zBbPocrOdwkyP;9`+{7f=%}8|`&iNIiPH3{8*3A+AmUoFT{))XWfR1Y)>*sXfVibcB zj)jUG5C-gYe#BQ3Es0MTQ`Wc}-ChRa`V{|U?So#Sat4|%zSNKS2*vxvSErPyh~xM__+XfvyvYkuF^`LK~K5H7;q^uxXJmrqu{jmR+kc@#(aSwm;DV&6W| zZtC9!k=$l)Yujcc4xx5U%7cRz-tdrR<;JNr&kIxaA51NQK4F&|dIA6O41Pi(?DVPu zoW`9dJ#9#o(6F>=$K$}cGmQCoc^n1|e|;Wi9kD+*s-89QUmdT`;tYf9c$!!a{hzI; z$6wL@o!1oY!THQa3Z+Euy)Ny$i(3< zzgBkHN3Wa~oLwh#jAG5f8v$CIfr&vIfHWZ|HdPVndJ zw@;;oQ+I9KWl1jMB70w{DOdFl{wC8JB-D!wS4)Vx>8M!=LzALMNC;c$72W4|eiA}f z7_gU5dG;b@(Lwbcy&hvb^bt}c?J8=UBA|2Ye0vy^gD?B8W9#fQ|L$Pg4~l88 z_$wYa3}Bln>Yb68I+}F$1RuyJ1D+2E0EMc61zpXTA2Av({j{Q}M0Y(})M;v)GS1({ zwpwk5_M;knShbm|`Uq5Q*wd=twO;-e`uU$}Ag z`X5~f<7JK)7DzM_ngTEHc&6G@UKA`qPeCt(!eLWtXEo)?bFLEZRnw08tL?}76tnX# z#Ml^F|6rZvp7yENi4X&rV8wU-Mj}#%t3+;75txzDog}QeFZy>=QYZXT+4YnKGr^#H z9Tu`nF6*wuj9soJd8ZZ-kFTtjA|nz^>IRme?-g!pHWPiLlSJll4IDYy@d z`{YdMm+hz^+HvN|$c2=F@~P43!ZoKzp>6P3GcmLI>{`A2o?&=l7hfH72 zb0!T_E~K@PXL`SNEV!mJ+md!gC(){U?su6lk$)~ZT|^`LMi0z*g94A9tC4p)C(&xE z{;%f^0eKFjv*p{ttCQjO=;S$iPVz}0{@zBkzxWd!bQ37p zdT((N{&rjq*&QWAxFI+b=X!)YwS#mdKBm=~TF3iR5#ATPRq{b1prJDGmGIP4=KRN z+7#*8#`zmP{pcAVf@n+cVIc2{*V#U3w3d@W@(Xt`qmrqLR*GB<=s16OJ-(v{wV%4w;iSebbOo!adD1Cvzj6FXcSqOd?kY&dX^>{Z! zxI7NP)1Jr0+$@dwdy3_M&EN`MNO`BAt!?Kf2Y=8Ru$d=rB6G z;W-BIrVLT+J0r1SOLGuem=5?}>l-ORNP<)5GRzqiKN<`9hm4fv?_2v?BB6kc|8cWz zzJmz90`85QP_mx8`jz9ogR0*t+zvveN)w~4H?ep7(|fI+S-xp+BIcj9m@3f>I8ID@ zExaLqC}1Pn4mo)exqBCDlF;4)-?~6t*CT}%Mro)94*KiR&)J{+DtBdRdJ%u6IIUWx z7}i3=4c79@86Sz~KQ-PdGZH(%M=9TxyIESP5r7GHJ9#oCb{@~CD=7F)ZEf!|5ug3L zT=EgDU7i6|)B(Fi*jU=f=v&z>cZSM{iOHDfl}NGX$wCk$b8pUoXu6-Ubg&53^~Q;W zS1Ye8+5b$n6$%-+GzxZJ{W-WTzEDbdxpKP&C-TP96A^vc@@s#XcX|{p2gUL!72R&Q zx@mVF0IzjrC+GKd;u_{Ve4P+m7f&gBSAd88H1LaX8IR5xtO8FkNm~I8yu>YZtE_P) zs)a%Fx8aMl8swEH?%M;`aZFSZ?cTCk3oG;4LgHe&P%9R~Zu4{c=eWGdk#z0YZX8$7 z=$tdnhrMzELo~oSp7pk$%~`nYc?V(PS}S=?thsL$LE}SdL9>u=Y#f3 z6Ao`KZQBRr+UJ}ExhQHbYz6iy&Q%WYE18r&4P2$~4T`qqN`S;Jo9PKi^o5F%CBHda zrw#6~HwjgFse?8{EXNWf+WzHmWdxTlw~hW5?k7wIe0sChZJ7~AXqboFW@TPH2t_R1 z#-Dutn=U`F9f!RK3(6%kjswUyvaBCySBY%|dDbpZ|B+7=jg5QH`KuuqU?b4#U}^Zj zvuJTGo_=y`(e0_1&b1Wldhpu|)h;&T&24Qzo{1lAv0*NO?zgbL zq;<8m>ic`UcvxX;#sU63C{li*<&(?RCHuG^??OMvZ6?z#N$0;2-mAQ?Q*!GK>1Bt3 zcNmgZD71KkJ1LHPqB)4l6R$d&5wL2>g+4!Ld!~-ko?z`75kG=Ec5mP>oo`?JNMF#t z{;@i4AiMP)hORT(_c3`PVXaB~;k>Q#BSZJQy!5SI%tqw8Z%e_#kETDa`ape9_gnMnzdtKG5=e@# zjJfW2dqPI8eK_18xQ4Yl9GyyZiSXl$NDo?{ydaP7_R)fz=NY$YTq$3f>z=N-dF^OglNYN(qaTSQ zvI!r~Uyo~x~`6xIIKMsozW2Bqm0DNet^Nr0vd8Nn&QLG{rK0`79FVO>JTj2WE% zu^xI~Uz8;g))`)4I%0X#&=so)D|3@L6AJJfIqGO(P^;Q1Kr&7G(ka|@8#%+V1}pS^ zI$r+3j*{RrNxMJm5j(C?0NjiZEwy94 z_`~4VM}^J7Z*uKMPd-T?u81wcEU2p0-NP@4;UKH-cfo31e=BwN`9GU9w@gMJ9iTYp z%md*X6D~PPo1p?}qAm8vj9rZi%rygsx?5am+@bb!R^AV5Sw4h*s^mlT`Az%JyXWqD zO6YpW6RFR`SC$IZ8o~^WI5zw5@j3`co1S` zld`xA+#Xur zG*(G5$Z!x#uKGOSvf8w+```L!b{v@97wY5Jm_rZ8u;0HGXns{`bw9Ls1HDwe#{Dpc z4!_vc4=fL{g$Y-f|EPWQqJQE)kMX|?-?*;iRLEqsjkY5VV$`|l#U z1bQ$EaxC_?4i8RiDe1sr;%R*p)+o@CSjd%kA>Y0k;JpY^+CWo4WJTU7RZ+6)l)~BW zZ3e@6K<`($Gr`?1``OA9lf|U7K4QjliI$Zuf76bn`5-+c*10IYvP8< z^;2G&r6}yY(O;j-!zTg5thsAr!iFtoQl&}l?xv^2f_b*wN4&mN`f1H1WR#tO9iD6l zseiuFjlazO8!p*s=VgVEe{<$gz&YKqY}#(EW~r{Vsi29Gzrwlck|AIJ!lA+EHk%L4 z9oNj|C-CcP_6XGNdwN?$D`~e|!BN|^P>was{nBe~rgv!NRcq3)`(k<7c0O}SS)HPYGMsQuc z^RPz@6+QC^?33W&I??ybJQ?)(9%A=1H_cc^x?3Lv#;ES&n^5%oi^8qsrmXG92~>oe zmRaZR=@(8Q2V;?Pq9tXya;Tr5@pgb{Ok%^|5}Ed`0`%T(H89m-bzvBMECK3sJor9# zb5?o=tDCb5E>~k8aWWpGPbmFymrHhXsU<_-qFsS@_w6L8L+UjNPzh~--*3IO)c~)0 z2{8jkIIeJ5X3AJ_U8^|8A~i8PmGiUcTH#S1*FW-$4g-L|8!Ifm$u~hMSKjbtA8zln zP3BUIq<=~1)+w6-fQRruhFRTLB^90vMU?-h?5CUkuF9Gt`Sor8TEABO8%OCV39t^y zR58%{Xkt9~@X}3ts}~eM-sL*m(wn#!;>hQi+duZg-_2R_CY=9~7qxAPbowL{PmWwL zT#V~#0Uz$)c)V^7-esGQ4hXZHMDl7NK+7sE3Xa)2Q7|jkMIlBI@meRn@+BU(NRI|Y zr0*(G?wcp)BhqeU7y$2HiI_ZCsz4XT72As#W2A{^B3(FN*d5YE;CXX`*D2LwRC-|a z6Gbl{1F1{jb|!pWD%8B;jRa8Ym;XaO)Ovt2oJoIv?j0g>LV|{P9`PcnA~&9iWbjk3 zyTxH^n0jY6QDf)Zbpbax{yX%=N;1}*m7bClV@!z`MSOi~Z;riGaW>-TEQ!(3QjC#j z)3KipxTzk_I~9HU;&);?xccO~^>R4jl0)+im3o^zq^7$qoa*`M9C76@KQ@S+9_+Tf z!ig5}BcFv5KMW*de`6|aM2Xk0$sD_%vFU%<6>5*mbj8Sq#ra#;lB0qrd5Vd@0O!Fe zF>mYHoQFu39nZZlbMI!$R6)|B%|(H|OasQs$+JBj_q#14p|wXdQZDb7{#FUu7GTuk z-XeKpmAl?6^1`kB!(hAeem>WGx_v5_O1Cx*Zy<27rP@&Z&6Uby<3bQ5_NY>b!R>+@ zQn(A;6dIdkt~N7lTw{_y7wn`}WoT{GF`Swj!Ir*M4{+u?%CF(Wj@kz z!lP&0mbdtJ^O>$c+AXVwEN_1?XqP^GpNkf+)*N=6o*cOPqU-sfc6?Uq68pm^3e8Rl znoO=zbk|w(Kh-g_{1`8Lu{x_=NT=>1+ZP|!u%%|GimS%?;?9DT7tx96zXuhTExXgz zmbfMSah4)LzsRq@ltGGOKy&c%IXw#I+L3{wS030!&Wjc=R+T$}y7!e!PVaRz{stV2 zW%~tg)si7}f7$H$ExPVY2*&Bnu2UmbNUYObo5dH2NuKz`vZ~%%hb~4Brg`uXjK$Hp z`%lG)>P;#Bj^#ef=;NyE7t43K3DyU7GQDGTkI}mr@CZH-6X1rjl6=F`a2c}Pqf`>_ zuD8b$Ui_VC9N?T(`eRl1H64fjCe#r8b-Ppn7BA2T!Uf%ud_<>&a=ULcCLQ?elXED} z#cT?%^32~B{zX3XC_lAVkV1xT>FBz}@DM+ruWw2s#SVCPzn>^v;UkGFy|xlpe#J|# zpN{J^OtM*yt2ZJSPaApOF0?wBAAx*3U*RoXdH0q@B-eVN_nkj=0-hpm&?rQMBxAQi z^D0W7yi@G&Ymfn^iVbjCMT)Ofgp$$|zwvdH0_N3-iB)`5%H>uuG{m66lJ=(k@6O*8}m@(v^2#qEf z^xrjrzYa5~vmV8afxJkIDxtjI_aeTAMhmMN!Ltvp22PKB#SmK<~mfm|n`juUQazF+X_R#O(7DQWwp+8ar3ZMKq|W zMW7wGa^5dZk1Bc`==BxwSv=Qx_%M?IU7b1CC~6dzAEWs(XeK``a1p;qrGi-1DnmHq z(M=Ha_{u07k?LA6q&%%85cQ?1rg4BOU_9i=q9;9p+tt zwx2igw#i>XpQEw|d&uWkM3b;k9X{xCP!4$i7 zl=vBl^%(Y_m@iLDJ35ruVaodoZ&7R4;)v!OM=Z^o zKIUW#NF5o`=kq^*!jrF5>vqC0&AA_>5H*!v!GP7I;p4Q=&c+HM0BSw>uAeaejn^9z z+#)SCx+;xM785|70f}>3!D(K~w$1U)vTfqx^1(1k{y-F{IMYh|%u(#qTlteR#S{VA zfhyN~23Kw2?@n;BeMvU|00H^JZpz>b9vbWM|5zDl)`zFsN}J z)z@foVzuesLkrpb)2Rebmv#N%ZP|hF9&ch4%6F8YI>X*PMS?p@;_mr2)WpA$t;Rf+ z1W(7w&0u!4tiVcKssmlmbMfl3oMM6JX}vWQ9F7$vNMrq*ezc;b%8O^;&SuU;o2B9H zPC87jp#C?a+<}5zI0p`H(ZqLhb425iZu&+(CFYMTwt zd7wh=2Dcoixe(HCj|~$I&56dwrPjV1n)9PsB^cOorLKz)%F9=9ynml(rccsrtS^3V zTw6<;O^Wu(f<^oxf^h&?g&>W=}(aA_@5ntwiHn= zuaMwkooFdrC_L*kCydft*D-QEYOR1jQI`r zM44ojlVuoWG@6i)NOxE134VS7s<(!nCiDA`UqRfCBMq`{_P<9f+07uPAl!i769 zOwgk@%AN$}5YBD^i?ECqs5}306s9$+dJvKAnZG~>aDF_6-b`e3duR|_9JRQ)>hRH( z{-*p5sUgm_#`UF%ZvuK6YA^j3p?hS_ioOh^_{M#fmPGCHg>N3iH92pCzep@0I}IDi zM~9zxTzc5Wnb_v&USq91q>u55jjt~dG}8mUvwecYmy@!^mkp+B$(1p{&Ek3u-{Hv;?UCJUwSGz7oLFGBv6B?YnwteGhp_jpmxQ3OTo5?=~a4!Gmmgf zXW#pmg-Uz*=U^i1p5>!MVW$Qc=p2-%^dubLahnliJ$B+U5*=2OMsC#&x$|@fiQUun zGeSpuJUemP`T6}@<`Pm&?_|F1MbnVlBt}o2H)j4uzci8*th`{T87-ysDPi>-P2{A6MP6dVn~w5Py9OIDWf> zI@UaIK9IhhHL@{a39p|9STlmMhKYBv#2R>T9*1?j@y=&^>6b$xy;6e%-!+tCIw$I6 zg`+bJ?2Amb-R^db88m(s@H==U{e_yrBX;~BaF~`OFK?XAX(5psMv^tF`u;#(rsivR zglg0}ode}la~z-e_J8o8U*YcI<+J|Rm$cgS&Xju-@jSY9X7~b(>*~gF*?KJ@MAr-1 z^vCQ@8^6SPjnvX$V3!}^3)mu2BK~1XP33Av+9i-+J7@y_3*V(EGvBu)B*`moXuEn_ zDj3lL^S4FJ1s{uD!RX}GKR+i2ct{<0E4@Dv;Si?NZwGMLH$flipQ}^m1MVai{`*gO zt9#;YY^k)`b4c`oc@E{(d`dvwCH?|`o8!By8@>jymW$V9yYuNT$2^xmOkevTRIpC6 zu(*RN;8#iZc;bx*3g*7>MU0M`w-$~}-pI%dtgd=!DxJZgCYroe?`$PdI-Gc4X_jP_ z8|^MX&)od@_vGy7Uj6N_`bJHD#23?((5hkH7RrPAiW~R*kyqmLQSJBrOXsLH`GszW z(=48T;`a0?>{ngYDx7BV*QHmHqYQX4aT-P3&5`o|9{s7x(tIGxz%xaNUxR*V@AXk@ z06-dI^HI_Kx9}8EaT_B+Egx7jE~B)oX-{&^t!!mU2^s=P;zl#-(w4ka5P}2sCm2wS zDlc74P+RiW0;-Mb&W9p`1=X;35pzl@@iFemPsZCRCsI zViEP&P3UVo)UhbPiPeDqvsM_Cb=cudGdJ zg$roPVw~rG!o3k0-gC2oY5Q*y>FyY3-5G3Cx3tb{c|yD=qp2Ny2z*PjCDosA+n6|H ze|Ru*OJhT!AXUqwk^vSHjSr}@w@3uO6)HJSTGgkS`at8VMe|H96>Ak7$DCQi%AlKd z)mHzejfG=Xp%VS#;#-2CkD`B>u$v;dr<k=-i^W8=DYT6|=?ktLn^yuV^+^-7He{0u8&j*bm_nm}!xBO93FOJWy=OUoM}u zU6MTvvXWr4jY}RG#m1StogY?KPYU<<%;Jc9C|pwMo8l(a8wUv^47(an&f1VK;i$L> zxEiDs{=_Tpg*)HU@F8d6Ud&9*o=(-L`11R_`F>Z7nw;6r^esZI9)w(^XmzTX(dP;I z0Rz6t(i}cy3+s6I$QineJJb0`egiaz19)ZD{4%ODzISnTg!#we`dW1}2*JG%(&wo| z*;|3&+}|=&tI;CE84*F$G|>o$2@R>13Wj&&MYim9w5LS5?5}-2k6J%(rhhUY3oX1okUk;U9^rP3n-v zo1Z*Hp*Pw^d6hq=s>ax=?hKbvzQ}TRrCxwYF#g;l=8{FjGq!fRu|H*qK{aYRT3Cmx zmfP1)_MaFqlM@f(Cx4GA$@%l_F&xJ)ZeXV9E)KuJEVj5;+{=K0e$_a}s!~{pkix|~ zS3mB0ovbN^%Ssbmbgeh+L!B5d*ZdzK!K9_TWuqGgBR973+vj`E?|07cpZ&A5b9Y{^*S)Xjz4sBL?zsE) zn=bEVEToe&3m5FR=(xSGmMqhdjM|!LrWETR^{Yc1gKpXJ3vj1KQ2G(6TiK(=fla(Q z39KSrOm(d8(n8&*hVZ%_l6^w%q0j#=@Wt|KxyT@HT#Hy`lby_r*nIaPS&wL1Z$$48@> z{|sHcHcqwt;bQg*DQDG@3%59=0yM8XW3$=AAMSMeJ6UWs{3@luHhrV`tev?xCuKfR&Ag(6iUBL}A*dzTU&cayFD)cGEgdJWmuzwzHS5x?a(yK?|JJPG0aNzo$!qCm<&nJi<Gj$`W9neC;`yH|G8=h!z5 zGsWjlSI=gBTK02}^zSQ1oR_ys0ktq?M=ytsH;}sS{APL%_+>0?n=}mD%YXc;pC-`D zc3{89A!Lc=R!FRkOsN2;1LDogbMvaK6*>89EX9@%Bb+Q3L>a{-I3AMw|uhMtQc82#9^$XdOVzjW?aMm4S{k|*d- zkn?5EnGl6|^3E$dt9iZZ3*`jvhV{)h*GURUcv?S)kR(^#C70QlEoKF3>X$QTgil@? ztus|bCUmT+o*#96QtQBq>0sW-G5})1Z(dk`p6yuh&=fupGmT_)Xuc}PUPqWH9uL9Z ze#_&lIw7LdY@l7({5aq<*7AplgO;e*XpiKa1=`T=ET^b1#xCOFa{(MD>EogQM5rIY zNzbOMj%?QMD4M|2(KhLW5$AJPcjveVJ6DEGpiGSWG)H9xFEaB*u0E&JY?oHZ4<}AT z!#v7w_B2k(PyD?)GAWC6Y{JE4@l`}~Du~@Hro3P|&4EX`Yh~$c3(XF{%KXHL5wq(8_RgzXNRHUOVnt z8qMicUy~%T7m3iH1zb6wGRrzpA;-d^?P&Qn!r;cUn7eCwwO4iUQ{S}oy?_|>=&9m- z@RN}a{k45bbh9e&6uZgRKrUC<$9M*}eEQ|-JRUnUWvCnY2!0xkMr26gbQDPx0&8xU z9u+*Pd!esK-a4Rp{3uiSwz+H(F=-wcteJo8`T9>_Bc!gs^z?ZO%Ko}rv0|54_axew zV}wR5DXJdv5Pz)#e701BCHx-(BPePaE^Iqu( z26AhMibavH$s(z*vW-fMUyDBJ`gxLU^87XzmVj@VJxpy9p*ggOUVE25t1A)X^`a+k z!MGX52=DU`!P{Mg9563z|Cxpf9zC%F#-um_gQ`-K4vVFzRobnS?Js??aAlk|G<%t} zE#@Rpcgbj=ZsF3>W7ZYaV-sgE&lU-LmKT+UZ)Xd4MeUrq2x zKp)=e5-r_%WR{Z)&Rg#FS3f^JS$PG>AvJH$4Q;9mlmhP zpB0ci8k=|xe(;^SQeczGDdf$e;hcY~|N?(6WjU!_WL}H%Kg==0sdh z=8P|{j`Sd)fo3X)uF9b4bgOM}wWUw;uD5f_cfI@XlU+G7P=u%Z%yW40Ho)P2g^X}@ zNrK^Nqi>im9X0DgtNf_)@6xq9Den~fTEsy_NZkBDqaGi>wNEBgo(7)hjavoQD0B+X z8(Wo4G+F)GKy(GvJ9Y3OUR*h@Rr#adr=mmitE)CvJ!Ugoaw;Q$o&GO#N=>&CTpX~j z$%7H6&JJMgHTd3;!MKKGg7{4|lrvX^V>QrelhzsTo_ySOZ7WHDvG(L?H68K$H3h@p z@_qXnEE3g{d|T--JLse1VG4qSK`)e#l337!AeDij%qA2%i_gD8{ipFwYlSxYJ-g1d8&C;WbbC4gO%VE3iqg{q0}rnZv$T z4-NLuta`bW)1vS7*Wb9Gf#ucL7d3>3RkZ|b+Y;d3{}4`rb!aB`v^n{sAjy3i|HVaN z(Jyb5pus>aR~nA@0+SYXOYZBMc?{(spO(|IR9dV_T#bj)no| z{AjhNTy*!P{V@2fj^wa5rp3)b%QwX_@n}s>GcLPkW5VxNo>u(U$qH3e)6Sf+#`}?) zjI)LzAtTNLSEwvefW@J7o8p3hyZ2&?(B_@SII5ol<|5y@m27$VBq5mUEZ57ZAT1_w znv9d_eSE~WI$Lta-(+dE6~BgA-#3w5Gmc6R;I}l!3&Kg3%Qy=)?vu~#{g%3`@@+q1 z)Hpf89jWJy71`9=C*VIA%gD`r4}~{qJ+z#Xrhs2IltYa!&5sa<2#-p4?d^EdWL9ng zHT{2%H_<|c_`nnkJN~~rP4hwTGPU%58VcnuTzQpnInR(qX4XfST zAAX3A3+BloxZVDCtzXTZu%5XKDpSQB;tAnEu=H17cQgkZae6^dc+L73E6^bc4?PbL zp!Nn0UcM6GEgn%_ZK&k5iuBl}lxqrQhKPPv1Ywa{uup)sEz8aBZ5E%s#D|>}vdS&V zL30Omz++R?f1Xl;n67AeD0_N7syYyL?K7LVOFcxiK65-z@Gh|M-&bKS)&Z<7vuGV!}b8_brDkI{{F#OAh~0J06@c$j%q9k?CgZFJ)sv1ty3 z)nOwtOsp=HPef+{vnklN3KPaF%Ob`s{Y1=mcUZ!A{aP{u3tEks-ydph(aZB^HqRyi z2qkPMvQfJ5fTEW(;iV6E;4bE9C<=g6k;@M@%;$OZhT#l$=II{q+XDSfk;pz)ypC<|)rdU6F3;zeM)kWjo*7D~w?*;_Wzx`e1Is&MM&4@v^ zWnTTb@wU>!!*{MnDsEJ8HP4aSH;Y%Cd75ozIJq}&#Wed`gdz%H4pcOd-J>c2x^r_? zY&@Aks8}yPF_8axslB$1lEo@EBbz%FoB7R@5-U@z^e*AGc@H&eDq!h29WtE6IB^_K zPG0ZGHCAU_lefaSM@ODBDsMd|{%-086jglsaV_Fhy-4r-4zu%S(X%O*Ev$zt6Ku+` zEvu;-A)?m}$$s~>rG{MMO77`lJ`cnfw1DG zwWn`(w|>O;%VvH>&gBx7Y?>2x|pX8C)Wi<^>P$3ETTm?N@K0~95z-e;JwILi1Q z#l+ZZuM5~}hjM*vnmx5u#VVti)?a-8;L?|&&zC#*!UbsB=_g zCuPY6@-AE($8~r-#}+3k87hj&CwjIXBXTFg^}AX&WX)ZrpDRcOkezhH8c&k%YmPFN zuAWS$Od90gDB~W2B?uTpC1;;epoyv0r}vHw;8*A0KE1;(ZqaSso8w=!cpQ}^uSaVY zaKiTAn2!fpk?cJ2*hz`+L*{Bl3>Cb&uXTv&IK%0>7?&VtN!e}d&XyZd0}{U$0ZsQ^ zpM{G*<|z2({-HhGvy0Gl@&ew(WBM^op+xt_EpXelhvs4uksOlVLsBkYJ90)knZeeOg_Olod>uifeRt?4FUZTGreEDqN7=O;M_wusl9%d|2fKG4D`0z6MwSKYP zH50_FKbDUu><}cQ6Wldl z7CVGS9x_jlDWms(Kx65j*nRi^9$35S@I0XQWx88oe91%;{qq}AueII(AAo%3 zkz0sZkFuekFY{OLNJrVa$UPocQk8NT@0b!*`DP24Oq>Ep(z-&R*1Hs5NN^8gmk3%% zb$>&o*Eujll&6BTXJm38aTPyv>;=^ktnYox=?W`Q>7u@Q$4tEn)=~$v9eJcI`E4oItN4YJU?;d~>Mbn4Fm*)o;}8Y z|MzeA8Z3^ppJXXbu!n!Fl2r5!5NyKSC56mTBroDfAZye{Sm}H1qKIGwssreJKvUZIr zT7KEQE2Q`@XdXG_{}=_mKBsz_hOu_)Z8Ec``Dxp|dGQ&gRbFM>q%nNt-VP4s;Ucb2 zzWx|+A5MNwo|LtJ>W7vo2ktOT=~xRM`pzH(t`nE`@QBqE;=UtFLd$<{vf3-Q@yzYU zBPv462t&h7xe_;!h|kqU&mzar?PK*Ie9ql?bz|W%63_0i#LBaWA;2Poe;h2fd5ZL^ zz0YB%YOS1n{El-(~<`m8~@_6O*D`_a^Z1BEn zqfK}Cxf_-Ztq_Rn+u{tmZ>98u)33I+;ChV9ioedd)R&2OmoGAaB{Jd{FJP_*em1YSNwH{n)$%+NVirr#bl&%yY8uJ*Ezo zhk`@X_}(h4GgjwW)2z$yDD|7({~RSjve;jgG={v8s>^f0gBeB){v{&l654_~0y$<9w*gpt>|!uXU- z`Yc$#rv(*l=b;5!JC6D3xuGL-rw5L_PU(NmQVh#&>WUn>JJGbxW#eWY#TT88<)WkX zlDy6i>8dunzzY6u#w27Xp~n4fN#CTI4n4=}@sF5teZuOMoGGa7C}Fv#42H_dXS?;T z*Pi^bStA8DRFI_Cl_X8={u?nGl7&x;*HUfqhZOsfx$yJ#iCN`G(iR+PIqX6SYsTb_ zTXP%N#3c{NJgBm%T(LKRI%DH)R#C5d@{~>fIXzL24AbgiTmbv@((Xyat8u{Qf0}gN zuMd7y3(t|@KZ3U|{@$g9L&f1IR2jyw&5bCM>Ozjekw zuN@GWx74WU_()Wv?Rk*%My`g?olbvSz?*@tz%tTr3?l2=?{IH z%N{JT3msYx!Y<&We8$aV7{KVxyIt3i4mXl_&ZLoLB!6a7%!*}wlCAXTj9^wY94 zL2~;;mvIL2s{7f!FMBuxwm(bxyM`u@WRJ?3>P6}-1n~huA3MqKED2U`t_qpu_|8F!a<)@6H$d-zt#&6L78~Z6kXhZgIQ(;g$B~q%ITx#!xN;?Nj0O^!5+- zPvpz#@z%*M_xi>4t}kmrYRmb)*2aEIEq&qr&(vNf-jDEGb>AeQ=-{BHHb3P>pGk5z z=fzu|jdWf7W(1S+1ClML;B;liw{)32%PQo1WBaM>39!CL;(eQb7mqHU!VK&Q>^wJ* zslN;ux~3`g-lEsw25sn_5n|8p$j!Vr`ROP+jLNn@$?MFg6P~+{EyJ?d2H;?Ae&x~5 zk7*tW2g1kJ_|_87djbAV#Df9Hf?sWw2Eb0?$MX5P5>=zF|A0DP$AlTNSlFLcE~`84 z@5Sso@)uiK?`h61$ggw$Y4Lnx2QVoNVd^*5n;ir}xGOAumeN zA4lY4gu7ijR~)d7Hx#oe&S31?oGym zGc0!{xypPkZVZUinE@fHE zg?ln9;_sC~nj1>MWcKIw0|J%P1aTq&FrcK#e|K86kYtGqzU(A#3@>go1^E__ju&PM z=Dv{Mmr55|xBZpipI{f%k~`p&p%6AN)Mj{piLXEP*|o*%wgg87<<}Kg3Jf=;8YO~c zS(zgzS0@`3zw?HzZ_{az*h$NvyQs{RXB7XrwoZ#b`p&TbZivZ*e z5k!_lR`)%-@#|%(W0{{bN!;zPga0nY?hm(}$r+ud-gR6+wYiQH8)k)EPxEtBQ(!GG zSRNGQl=c0ZhJ^X{!s4@MqJOo`y9Yg388Z>GD&)UP-k%pyi8dfezdy*B4!*7kb*#a! zcC;=?y>(7kkIXE}YU+a+yNpl1p%EZE>3@|1l2TBWRo45aThTfq?K5M|{Mk3;McAMd z)9=ucWOL0KA1~PmE#Vwi5fUtrzPQ8bF05)aDA3xk0I-5{4fp>Oa)dfYK zL8jWBILu*rKDZVqqi`|---K@P@F(i8G_+2U71CyZ*2c+SMbq5VZoe#SR=sqd?@(5# zyrWSceM)jh%5yd_9jGGeP0{(jN42^8+Z+1cGfd%BS$}{&%pD-F?FXBIy{rUjb3dDk zPi&y43FaT7m=Qre}!s-M;$&u#b*nmtO_Z-F37W%eqOZkny}2u+(G8< z84YMX+&14gH<~p=qj>gP z_jI2{Pi|yXTyF1>WBVbKs_ZDF^q-ts8DDX+6iI5|yq1XXy6w)bVW`9{OCD&vo}az}1w3{GM#uvd=d>*KXKV zMrQcpa#MZ!veAH4;PUItpwugyoXhmNT!}}U?k+wfp1QpF`&`}iVQ(t#(TT}<5^4-R z|3$YI4vInk@QCCs#YeH@+;^WC-O_mDPw7{eTLy)S$A#+WGy%xNlo&vIx@#}qnj z+?M?u_zx+*I&z2Eqi0bNc5!L~uGSl|ns_c*hiZABTe78lIuyxxw7V!OtY&+02PKnR zazVudQifHdob3efI67rgruPx@8x{!DM+oEEJZm2oU7!Xy?u+2(){j0nWl@Z{&-{D= zgL^B^*O_@)L?Fg&`_T7`1~_q0CiBRgQC`S}1Ta>0(c5p{vu>*q5O!kppy0s+3)X7Y zv%WDND_`Sw!;5;8Z}VMY66dQIlejy?BuqcC`wf@C`KQxh`wsZa4NK&wswxTu07snj ze!{>c*FJ%}GELVVNxm7{#R0LKq06qhirHu1e|3`7VHoaxW8<;ffv4T+b{%O1p0r%* z3IO{0x0oMOREozw&+PDofw`^RpwI9}!nup#SMB7=d7ofwNLt}}Ms*sM#GTGcF+>?C zG^NM9A6VfyVjuw6s*5W-EB)m)`)86?KU$^_)g=&Lv2Ocp!z=f9?jk}b!5 z@e}U8Gi`#`cC0xw8_QofR!+xvzfXVv@5-JkPaO}l-fwT#i?qN;c`r!I?Fk)f+xJhp zWxxk45**1$l82E8_A_G$swnt-_7wd4sawuJRzI>kT}Eb{Zb$nVofGW~B0aKT9}*1J zlcHkgG-Z zqED#f=iskkrd{SPJky-nrkO9(uu3B?$ z6Ex!;DTJ^3SsN~!)VvE|oJ4Wvt9I0X%inqSP>*cGuGlPk@`2j8P9LBwcEmXfaPTHz zjJkb`Y@?nB%@GN$xY5Lo-zab)OILggxU1aFoO7Dx2Dn{e&=#>t~vLvaY<{5n|at&{zUr&JEEQiW9|e1A-p~;uboS^JUIZOmQ9gS2lT0!f~HNvgU2KFKHeM&;RZN%rkE2Q8MM0ZxjT1KhN8x zQ)qDY#@v0a`rbD;;~_X_&D`Po*s7&pizcn#X^9nD4;ck%!$fGxbKeYVS^B~6&eh@8 zuGMBPU<*xbsdSKzk2uk_^E$jh!ur`b>kT!Ji;D7dww3SZm`Kdu)q8)~KSvS=-}@Sx zQacp;$mPDL@uB~{jaJDoAEoICx#|Q;1!Cj^hV~0f&zfPjqPvx>z zl5DjIF7!~4*U?z3f&ce^ee#+>=Ql1$qmwSOO-V@Qi62_5kPZPCx#=G($(+2`U5l^l z9HSN9;ZKnofl_4Fw5*+$MKwLE{3$Y>mmED<1YaM4#{1e>=puQKY@9w#-&XN2I6dv5 z@}KCtZU0NEFoLL)mS`OJFauyM8Z{xWe;DBddg*VI$E2W(ShlxPE~jd*9A%dR4PpHk zT6FUAD} zl5NhWi)O!epbST?V+Tm0p%Z(;i#-H!;m0BS@IEgmHiN6FFu;LG3YC{N5tN-AI4A3+ zgmpS|E(DzYn8*k!sH6M_{wW6w^|kr;N;sJ5JeKYLEFj*A? z`BekLNB`kX;8%;UFfr&TW$VlD8~f-5J>M8KMY|TPhw9n@N~{`<8d%>vG~*H(M!Mkh za#J;Ee=ttC#^SUh!w3Y`l{xpw8tjGeK^y-A;j@czUikfv!?nZ5?e2U{r3xv;+)r^D z1hIiLE!%XsWo}fPJfxPIqTPISAz)nyRG08%vubjzAQe7e^(wxmOF!W^Xr!qQRAUtf zlH1%q&AY7m;rzNZPnnN#U!U+nmq1)MyXZnr;y3XR@v~XD(dfXF9~tPmfs+l|p$5dj zMP(WIQ`DwIhDoIu=d$7YZ$Hsjn~yi2n-{;0?IrXSuURryfi_!z|7#^A%%x6UNg{Py z%eEYybs+(|5Jz3e|M$17bqSwz{}<5r|6+RnFDxOD7&$K{0qmg*`TzYwtz+vYv1Vhw zM|4<>7XP;B=e9(jjyfXmff02%dOxSMF<(ZHL>IWS^g`dc%>=R(;Yv_yMBN7C3H_F> zfCYrtCf0dS3#@C)ijb#nwq%ISkamK3f-jUOh{Qhstf-uH? zL&E>aZwmSle6ET`>xbcno7cxSJt!HtXO$PW|G-#U*d;)2!Bwb<;=l*kO%$bZT)$^B z#=GQG7a-L(*fu7ijy)3VT$ZMDYBCbY2+*|F*3Y#&RP4cqu+1yp+K8NeWpDg{20<0D zu#w5?u-NoI*E9XefwA+V%lcB9@P#r{a&se8dZXfN*r$ACyrxU!{%Q+#4s?}}^h#jK zXi~EB*D2B~Z~@XU$*S)sFn9QEH|LN%uoQKzbgN>H0V+pqPOPO^68Jbr2KC-zs`Z@F z!FZ*(h>N6q&@rrVL*O<*r~ zYJ8j@ybW;Ba}1bWSv@F_(DXfZdwN3oYDQne0~m1gUab(%FcZD{Wd_-2_L+9b?=+SJq)CyADBB3Iq8zi_l}JaqN0osLk`UFBdCA;kvyWaul9^e!HbfEKOSZ z1FR7^fZ5qMfy_wj5tW-A7p8h26Bp)^{-5Yo_55Aa2Zhn0vM)Df#~j-^U;nI_D&F@M+tP7Qs$+__T@JRVS`@=oj1!ckh(lpkO366}7 zO3?}Lh)wAbk}D|^$Wi=$%sl9do!UIEz{hxnP1CC-ZlO_>au-!#-TD1ux)$o>h{nCE@juE*&1nX@PN z(hYQX2mf!BN{c5jV`;_6lmt9X04rRvGm?H_Q8}fg?9``$O=y?tmk^GU#csudsh#qF!?|JlvJ(6 z1h5DG@bTiMr)D%!PQy}5B~8LDGYK23QZa@+vz4QY%G)EkNIvqF1}S^NvD`>(N__M{m{}Wq%Gk zyvGV~-X3z-0qJM)v<3TJnRV5y+0a$~WX1`?j-ss`2_uns>T62wGZWTdKJVu)AnuNv#YA8i29;q1Kd5o% z%ZG0#o~6$|ry7e1zc*x|yxFRqVN_8+?^`YZi?c4DGf3-)4)`@R^YFn%U4^EJN;9RC zE39@ng?0d2WojDz7zb)^QfSUS%Q{C9zVVm&xjK!sdoQHrzSAoOorCIX-9R%s&9A{3 z7!L=FgB^{4l~POZUnTo`KU<=!GXCy++Z#ib1rOEBZi#J?i6@#S>0xpw;LGl4pwL1?zxbXcN;+Wopfw1C9hAk!_B zVIiKa0g7cU+tK+2PQ?UudRk7L$PsbOXGnzWo11-x+t|7=XbT?Iu{$x5&x0f4tY&Wz z*;-J2MB%GFn{iLeDU6ifRm_=${r*7;yzFEjzg18Or$x>o{qMacQ-ywF+y%K^Z&N^% zpq0Wz*HqknL~S(TR~%A)Rd^C!f5Hm$V!-RL!u`77E?DqW{7^3#p^F=0hbwm>p9k$O zZ!HmHp;~8PXYD!vQ=`a>n}iEk*KZcWacIm$>N2IpEXjezw?k zNo}p4^Cl3C z4cJ4*DtOgxD#op}^*B1KNE#D)Pl20lrIrUFU!S*2V@Y-&?Bh43UQk`J5;|YSN}HKa zxavjaLlZFcSBp%Ml?tDHNe*OpQ7-hCkA!<#h6$<8)=u}SUG=4A-t!dZbE*?6J6C8- zz(QaGVu({*MX&Wwv#8a4J}wMHB>tcF9z0_*6zQuaT;4=(ntNdyubRT<`c@o{*F1Zh zR*4X9gk3F<7IneFY!T^qr>{AEWf&d`;cK^CI9ZzpetoFQyd;v08@C!u)R220kOEr# zXz?^K(3d|*DxPf;x1*?u3xx8GB7`{uY3cc4kcqEpfXFC2g=&_Hpe1s&y=&-5O*t^u5zs~QoHUi2 zxj*1m1mF=w68K@LhT@tbI-j;(7P)v`a$JWO`CFkXQs+mTK4;H-T!!4v+N$b zst)VzpSHSyJSQ^$8Xsnc)LUTm+V#l6R@-u_2UdeWDL2E-bNFBv#bFtTFO_Dcy`7rU z*Xt~HAZEV&8@KTHsQIEYUcbZ$98qGq^@`8fCu6;9CJOUTf<8*c;deQFUEISM+Cp#f*O{kFYcKe|EqCx>$+U66lb@St>!t z)b`wM$QR26h306RDhmynq{8S074+>KJaGut_HHROOR79~b7|%C zYQ;Q26lr@}VA9^m+7UTT=24P^z}?eTeCpcGV?^_)<2Mb;bCCqezsGW@QfjzC zx}6hDXg#8|;{Zp0mCz-{>xEW{ZVLQ%EUHK{&=+LPLQ+5u{5J1hesx6vUmWk~##2Wy>wj)1N;vN2+yQl%Xh3ODS zCw-cNd*iuQj?rt};%4-{8ef<>Ng)Qu<-?d2EnT;<0b4U zVTg8(QefLA_k#MIs=npRA>;M@JFwxr@W8p{m1LCcP0BwyMSSVFl`UY`5;i6PWcGZ5LN@iI9&cf)rI_JpYL(w2~)J{oJ@xwGh9kw>xU22junO%7+eUYP^pHwbLH`nM~!r z`>Or=*9v|^_S+;hU!Gkj;lZ?4lCK4{>aCKZ^c0^IXlb14!#x4T{)+>F3)Bh@jbXdY zA1S-z_h$oO$6|iun6yEODpm+jj2W=s&o^XmV2f116>=+ouiU%~iKput!rlFA{W|ln z+~3BHj*-Q{)mCw*Vx48Almm@H_cNThq9805YNKby+^w0|M1i;^YJKl442Y8!qDHmyUY!h(fs>G zMt?)mL>;i1)ft@}(qN=7+oa8yV^z zwF0L91Yk!hpQCW{kVb6#TA-e-&%$QNg4(RSU7M>UJ)}?Xn}M**w*wf-vxz}Cu*oR?;(iD#ppY<3)-%0Xyf7HaiOwg zf7=Z^mCDkU$Mw|q@4SP&x78N0I!`?0oPMC`9&d+dwCe=I{*@vum9`X^5jYI-defFH z`o_~RGwUz_&!KO9O^K|O7l`oK*Md3m7Y94)tM({Kr94w=4&JI_=BGE(r68jFj$LCy zhOkl4DfW5-wTcg$GswcKbXh0&mybRj`WG80a(!n;N^1i->JZs)X$N`dTiO2Qf%kd; zzLf9pW7&)^EI*My+++9FBNIZXSdg9ul8U5*z)NSG=nN6s z>Ns9}$TYq^|56mO#z4HgPjGYP^C2tiWLq6OTMDQ+7Hea?h@qk7bOiyNuKhI)!d1R5LUV6g_V#CX zBZWTpysvB+@nFAj;P+;%?>_1~T|Sg5Lkt6g4Z8G5Hc}57GoqWwg=0X$M{gsgrlDqbS+`HEnn)!L@7arUp>X$!BBqr1*Vm0LUhRx(I;;Zb)UN6p+2R#!>_xgUkPi9ZDmXj zZCG{XgN~upinl&G-p29(4Dp#AN2z4dG$U3-uf~D64ASND8IXP~QDC$AEB_=GpzZ4n4f)xoSNsK7gqnwej8eGHrV0 zmA!W9Gqubw_siW+k}qSg^9|c#dW2#R`<}LxSNMZc7Mf9mY*OX_XmcHE9qaR3uQ>*q zgPM-?&@xlA=N$R9Qj;X(+O82-=oQh`u@2_;1n-?g*3GiKxz?qt;lV2<5cxY^aR;ea z$gsDGswS~dXlG^L@h>idoioOn_8f(-=xU0t8e6}ku}{TWtV0k+W%B}@^8;g{)*?l? zu5V8t$QWa!x?po#;k9@yn+%h%^?iL2^L^!aa<>~6Em)f}4e5|@`vuve|Mb-FEBEu6 zXNSzjoo6P<`IKe=rkNWMrc`$r&Y~!{RA5H$nKwPQDSnpybjw#(EwB zB(LwAnO6#*^L%L{*A`hE<4dr2!?nVSf;fQxtljp)?S!HoH-1J9#b&ZI*FN=C*!xjj z0?$++0Sw50s)nVT3%-|MKOZG#OT>S#RhFb*B}i|3o>yw2eiQ4I?!mV7D5>Sc{DV7x zr~#AWuL_xXbyEwgL;V==sf74NEqubx7Q|q68G}Y0u!yXN>T->LUqx|F8 zov36un76^M<_-jZwmL6@l#V7C>)*Sb;tKZ7WgKI)QU_E&(xRvI_if~BQS|$AEZRm+ z(2XUVm5OivS_41Kr-w8GqP>4tO$!aQsAt3kXPf{IAorXWHxqBwewBhGEe?%7wbo|S zkTY{TJ!U#_$w+```!4w1PAmfsB$`|8{LW(;E)2VeL1{(2h5Oic9KCHq2; zCivBEuyKaL@zZBnD!7&AD2^oM&(vkVXEED`dj8aWSH?wlJ=YBJa+bZ1uHn2eQ(7qH zi4W$54YV^Q!DI!pM>&BXVRF%@KLqJ3Ec+{vZ>l{A?-jXudKgSL$*o?<{z+*uS0ju5 zv849TEd?{T6qYl&OgbGqEDE26Z3rP$7*L1#fHfKW__@1=W>4SvjedCYsMXDayvp%p zpHz5WYGwCWp%^|JOdahb>NTi*AV$DhemKegk>_t=ub-N-x6Z#=E}7}vI|oaPORudp zHdxO6z2V|swm7gsi36}dNE$z#USgQ6s+iM{uvv5QxhyKJGB0+Fl`+fB{k&oy-m&_) z}`#{&OM!T~-Y*17Ms^KCZ9$K(5ozG=sza1Ly$BWo9i zG5JNGE6@Ym-(|iH8e?4!=c^B-qQ2aOllKnh^Q zf?Jpm!-rSyoV-EV9<6Q=N&u}KQ2CM#WwN{rx$_1Pr$2(d>R69T0H43}&cyL0&mpSx zfESW4i1!X-{p~arIGh%E5s(n#OlSh|{9e_o>W-80e2M^qv$W{jit+*g#wvI-Z4Fa~ zmJv|XC-EMGYmbzsOmV-S;7xIX((^IbzV+WKt31(QM=P~Po{kHQ45k2noYa7&1}q5G zN(R*27Ax&FP=$RGZ1L=wBy85oRwYl^n>Jf7TKFmTSWCRh>)JB!VtZSm|I47&lXxW1 z0Y-4ppl!zhH~|roYu^-w2S)jyd-7?i`}7e@=*uR{1z!j$%Jr zcV<8sx_bPBn*AfAy(^(TXBUQeoc3 z7lN9crzTN`R|yMG!Ms$uQJ=oR@s6B$a8F-U!#6Fynd)tWb2*9)Dr{isxk6bkA+!`Z z$U?Pmmip+m+;O-TNlPKo;*2uYO*f(B*|7*azAkYoN;9?)U5{Z0gd`ZSeW&8DlV)=V4T;a-lZG7-m(N?mc!S)NYS+rIybAA86_WAAbAsI9A9|1KLolq zBjsqD4sSNwJyewL)z!S%em(C+RqzsY7JQV{H0{9u{%zLO$Ef5lc|6c^VP4^OQvzk0 zV%ZlN!_MuvE+Ht_fXM3`td!bfR#;wEr1SQor@JKH9}_<=8nI)uQ2a(pJljo03sy;l zl>aWh5CtA93du*b#m|e>IN8)XY7dzH=9pt^*)n*xI2kt{cixNz<5!eDqC*JzRMGIy zgG;fiyE~slk*LkQt$z-ooCrC*RR*#qmh9agfI7Yo>lJ-TBZQ0+zbWv%OtQ}w;Wx1P zb6wE&9v{y@P@OdzJo)MJdWc4_{uIhY(Gzw#g)dqIle&~%sC-prc5Rl4KIoeAIr!1f ziyn)Q=H(waGpGEy9`$Nua4_+rOJMXj+r+gH4#t$}#uI`sJ2Sdx&9!f!+*pwI$C&V?aZn&Izx=sI>AhFl(MPDssP!3mu~1Ahg*YZ0~2By^vQ#RRibh^uD51cz4NKjBctVQi$wpZ zK&ryuk3gt%#^@3rwj<4hv1j6qU6`}XwA>)n39EwR_LWW|5pm;uq(=p^9XZ8ksS|t?w)wCWpDX>_YU}WA}2@hZK?R%K$YAf8?ZD zk+9?~QNZxIrTjLaaqiPy1|{j0ZmZIL4Y*lLDUb)rkoRnSzm{S1W7_8hi)pIh3doNw z$Qj7`hX0I~Jl+JHw^3gD@Fd~em!-0k;(n^7M)pc{VYW*9tG3&v>b)K0l!fz3Rx=q% z8mmKk*$>p@@_o251Lpa#($&*Qn{voz;029rr$TL?d&J$ssdj-Fhg?`roA@LrMVZCJ zo(NJC^0NvW*J>%#G>}r|B)r6dI!9MW|FAQ_?E=WjyDK|YLJ97#Ip@b0tFgr`E-0lB zSFddtAR380Tl&4Gf1+fh-WT6}JR1ChhW0dGJ4~|In|q+Jcby+{1a(vC@`66>@&0Gl zR2HDdf(KD>+aF;#rIWW|?{tF%Q}3P^FZW&Ont^wZ9$v)Mh{I02I2?n$IvDb-Ths2c z?mrKI);7$yjAta>Y@g|wPf#g?s4W~+a4x?&L$jxzjo5jnJZKuqYd`rUt9rXX#Awhg zJU8c%6w*)**q%8P3cJ%#pI5~7pJYEN(vjoEUTfg3P{&e6dt--l4w>DwN#sd>)I#^jiPQNH4Jz)jFd zU{VYC5tZM2%Pt2qVjl%fnZZqYMvQJ_2KJ-}_~k6QrE3&ii*lyed@Fxt#8!KoTFh>I zkS`a!wdqZ>7qbzRCN8(l-;hy3D@{J=&Spdy$wrzWFw4hcQFgLP*ry@9DD}300d!`F z%nSsxw3WU0>p9sWq};2q&j+uSx!p!SohJk*J#5+`TX*AjZJgMjV$@75x2J;OTcbPI zH_TxdAADt@%fcQ-V>y>Rn*z0rMEVUCHTp%jc6HmcZ+UY-M)?>-RB=mCCn{J7ujeUHCfMp{{YSXN>|1d=}Sx3Xx$tkdBJ zRjDr4c8ce?xVg*AfQ$m?h?DT4HP;myJumOja6tme-eSrXxA7wdd~f$;>exbXbC zz?ZcQD#SWuQ;n2s{FbG5HOXc{;+@veyEm=G`&5ikk#Af4Rci{AyvCb0|cZmR{i^RGo9fce8NOP z06O5O*!Y~_f;rX75F?B>|tKkrduyu4bRE*a_Gyy6(IYmE)NtfsA-iun&(g& zTudOTEa4mHi&r}i>?Yi`vJy3Kw~PD9CI(+zOvbB*ew;HTYP@_drN_bxy#%DGfu*$W z(x$dxPTCLN2`y(WM1|%HLCtQonsHqBI&djd>3W!xTzjL-g}Ej|kTzuq`5gQP;R>=i z@^$ZLO{@Hb=9^Y5Nmy0pkc~~zdP+#V8u9?Q0d_p1RrX@+ZvLtaZ@lPlyxnHlEHaYE zJrK|;{qdQT(8vGsk7W7d0wt3Noy0}B#aSTvg7-s|qY!2>w2m2^b;jJ5GCqlO#;NxO zuKK@5NXB=}!~|^P8IRw-PpJKVeLVBCP5Mlh8%`;ODk*+#_ByiU$MZ9@-ftW(2*VV= zr(vu!Fteb*2sh<%Aemn|Iq}r2U~`)KJ*S3R!wgmfTyJC9_dhZwXHR+tR0+oDRwx9^1@2H^V>t!bVB!HKJVT1|G~?R6KvWi`RzrFHk^ zJg7@VLt5C@J6S-Ub-Ok`I*uF2GH-kTE8B4CUq{>{LZAago%VC-Y|3+rhIhl%hcxc5x4I!jOkNA4ZiKCGPjxDc+HqA-mxUS_{3_wQ@&+C zEtu}w8bR2ryp@aiha{~ufA4+*v1&L^2JxmE$kisHC@duFj&++~tP(Cr;ZGsJDkE3E z20IrzK9C9T#A}C^ouu_!{H6bQb(UVB?Q>4~fazXX%f3xFV1eiNrK1am+!$=dzV#4n z7Zv&4y0DlDq|s?V1{{#}SHyY|a+gTROMu0hB(jY+GDX9B-1^_iBNGu-B7`uQP zsp}jiF?*+6f2N~{;<6%smT5DkfnGCv{C{P4!jSvbs+@;zyBy*~5r4_l041i}(1wMe z;;sHY13EzozboY(*b4o_&teld|It-@<-lfZCP#b%DR-J*qOFJqrY<>Q&qGKXKvwKJ^lf$gZua7$H?BgS4vk$=gYo=vvaD6lkRB766w#G94>Z1xiiTM{#fN4ROdLK zBQ2h+?9u^CAT9K5Ri};-@UH*Tu~6c<&?stO%Bv5lri^7t+f(Iz=-_$!y#9o`062PH ze%U2Jj$)b+OZ|QhL*utUlTEvi9T_S9__0$?f<{aWYLO1*j%*!Si)ir76=&Ul!w_1} z=&7c`zCYQvxb!i(GC8%~wwg2Qu1eX;keGMWh`Tc2Sap?ho}@c!+HP-y6>GPt(D+`< zon6HqvUBR^y5+?UWo&&1?i5Xp2o+rd-w`r!cwHN{by7g`t!rq3)yoi}Wgmunj`Zlg z0s)(S61(1DZwDy7Tv*>6S%+azO0sB!TcOKE&p1^Z2oJ~jd68=Awb}PWsfkGDeSZRv zml=6`f8KrBJC`98?gv7cw-1i!e$bYgzmwMZqIbL1oH|S~{W(1RXZS!|Drq_B`l2kt zA20tVVw7(=f%cOwCVL?#=&;J|OsxCn458!yl^64<=jXwCOuPHJ1`AABYQ}m&>B6fN zbi4|-vaLgCaQMi!%C~Q6PH^|v!pjtNu-B}8OIozgddX^KnH)aw=h+?>RwZRR4*K@q zrFA+ydtV*KeuryRSy-;YuHhL)#JA-kl{6ByCsG8w1!=)rX-SV@_8NtRm(CZj-N6$t zdqst%GitoeR=sz-CeHQ8q5gsjC1NXknkapv)_#7E*(c``YWA;*h+;3xI5l>}*zJN^ zjT_3lXVtL|wpkFMmfps)_bxrM%S_u|g;d&q%oP9B$ey-y)}!4bVnH<4ca_Rz+t9&S zw7Gfx3=4SzUUb+N%%!jRnQ@5oDX-iAk{Smk-SADI^5=h&to?qifodk{SzhqR{ZF>p zZ=%6!AZ$_p>y^717oF<=EqyfKE^op@^HkW#JWHnCOZEs%M@r&rz_**%Q8D+z^S2C% zSzWDHYE5c+%z|G0m5&vA5!Q8|-*3_ zELv(k%V93~Nb2~r@)Y_n|MEI^jOP+OJGAd2vO%(h$F6m-(?_0P!ci^SV6}C0A|@vI zbK~Pio()F}`VstmshYK;!LDur1{Rat;dbYkRYmmwfaXd&YIzj5}n=d1T*jlh}taOL!P0bP{9b zH7%DIlP(gO=@ER6z~{wF1NtuEj392_jguFiT+=O1+k-|OeWq4|vE5w77LKkj+g?QT zpT7thK|Ue8I$*)w99fta9}iGtORvLTDR)U)dlp)^HP}Y%4HUzd+W!IlL>vfk0S8VU*bwTKvLh5B@#0rh{m{;lh zqRMFpQefboqwa*3?_1XfBB{^MBX&Z>YC-lR@5#XcVfc}vCPLVw;FtN9u~8M0nz`z> z;&S?%3+;dHtmG|>^+A(I>x~ox?6vrQqH%&*_|pc7AkQZMp`6Mct7~ZjCbdlZB~x&& z-BekH84^B}XI=`nd0D{VfS$fcE#?ay-U|0>%Pik`UiW@z^LNPvtxu|i`s=}54G(gy zh>$W$v#KSMUfUxgg@1X1k%XXc^N46To1vz_=jpI2?J=zT-VvC959q}rdhNIW1yMX5 zu%Ycg=roXj9ZtXG6~WHGyvF!nl=g~{<6qu=(?wzkT|7DBTc$FS^69l{Rob=&jUM9v zukoy=Upj4#K6Z~F@-KHWk{bW#n*aT~EZ=`{EROsY=1*w&??3?mf9L-%v-E#XWf&fv z!>P2BS@)eH8os**<(-R8MB{(_5Bnno@BL448q}u;OR_uM9>z@4p+Nefm{p+5(bxmG{fV7~_*yRzfAe(KpA4 z^%`=lt>kg8-pb@(1X#5^6YwuILQd5E{VVAOwtGFgD|=2m!#%d7)Zu27yiB$hE4Z7i zR7cxjTv@ZX;$vT-35YHk+%9F$ND0FLkjnn~WIWh@3 zPv?K>-s@pzzBvBK2feVsdC2?lITUqFy z0^%L0yv{Do1^e742{3{dYFM3dJjnmdz>gN9W}`8&0C3CPDCvsdTQ#R}=;`l68(afz zsjr=;9uEYXO;bcuAVT|c{*>0hA5_ELvzyDH0PYj4?@O{_?rod18l2qTQ!+1g2AjH4 zJqTdk@TNothI^6{A|R#s83=R^IeBc)NHNSsqFbg;zaK&Ng;s!D6gk-|XN>aFZA1us z&J@KyMg2O3|7?>X(PU88V8NG`ildcEK3E`locL*$RI`vp$(S3ktA`m>%xcuy!22 z=cLN(bzn*l-%D|VsV?!L8$@or7L4ItkVY(+HfX6|+BfoAUHBKi2Pnk%2c>N4TLO_w zDP;(u%3sF5jSDMgQZ0MVoumK6r-x6@y%FKk6*$veCT#7#EX~|EuCo;5x04qFlGohi z@D>q$_^#IskUY#Prxa|Asdr{2^mXWo+le1xF$`z0fd~}E_5}5QcQ#pUx5)Xo60cVrPRI%q=dBT^VbiO1RT0C4!np{K3T zu{I+@F)E2E?224VcTfh&=R(_1zP=Goa9&u*Op6!L?pas^Z@lbq^OJw~w&o+SvwVn) z*EE&^eUtM}9t6gS*jdvsq(PWhu6(5Ec9H0tU6PS?B^`3TKTz`K(?ZidBt7R@v< z{EWLRG|4lo9S-@aSrM!havpX0;9=CAumpZ&Bf!?tP`u#Xlf7&#q={BqvHa%UGCcOJ z`@-N~7mg|Vbdy4TN|v?+Hk>+~fAr{;|EsEd6U$=4w}BGJ=~W{l#N@KJ#I`@kB4NuU zF=e8&5KYIY?|v%Au=wfklWdcTeyyMhxH&+3=H%P+u=FkaY1;ms{|I?}uS`DIj&^$| z3Ee?d2*+Z-6ud7c`V(Abt$uz^=S+WmWXN=e+{(U1{X2{J3|p{F;k_O5DeTIHAc0)3 zYvJOfTj3&iv{srHz1y?jUzb+nKu7=MyOJSRnwyOOb0%IlZ*U^G%NgA=# zqg93mJ|*R<=zWDUx#uydJCINHFDcG^11^|V5vec*-tin?`Do0WQ`;%nrh@#v!FXcU zdAoFYVc$i$Y~UY2OnYbCB7z02q;YZA7UmHenqP#*PEV>4KDxh`Wt2$HbOdDps< z=R`*h_B)a<%pYk5e$(oN?9q#g*G4XBJ zccN}<)GsVZ>TU+aZU=HU*)xS?LE8+mqnp=D${>@-#uE+G=Ej2>vv4?d^NeQ-IdhPZ zAOp}0^Cs}jyAQ&PXh;tdbP{yXGX=Pa4xB-L1*)5xQ$xOw&Ym1dZ~DH|BdAnD(F2O< zs5>@Se|_T++r2TEv8n6^f`={yZS`ab1797l&Rd=B`RA)iG-dp5qNT=}Q@Mx7t#zxm;Sm4WRYga&g(+jc+L< zPt9$l?$l-}TpL(jnblTx;2D9=JJ0}m&vwY_%>mQ3Kc=3mm=foVvapfOIyd4e zW{|Y&^JCxH14(Rk$L$VG6H9B3F!TU^mDLA(XB|&@Ci7m!O1eW1!rbRUCFn$@(y#*- zB$*10_G-?$K=Jphv1MpjkgKvFvozaKnA?a{shGjsc*o(C9;GPgF=kmmkLglZ;`Uuu zbd4%qmE*qk>aPR0_^*}5Vh_{yFqCJ~^IhtxXIx0ptD6&erQmv6Wia}Rbzv>%0{EUu zcMoY%ir)}hB3RaH1dlx9H9gcu_D!AAXN;~3kA)$jV5^|d_|Dt@$T@%{!ic>9m~)=* z>>?!P;c`PP?O|`qYhoL+yrzo*eFVTK)L7HDiWqBBpQYERyC#d`_551% zAEj=F9M`zX4JX*+t>Rqa;_{!V0H_UqXsjr=>9 zp(&}AoJ>MZ8OJksA6v+Y9exvwF<;DHI%A!huR_87E~96hkR_EBvZ@>~m<2JRL;54E z4NzSZga!kfG*NTN_c|U?71zK+K}*ll8S{0#Yi^Ax?V>C+ZUdu9%7pKS7hJeCHt^{* zwNP%!p-Uy`c@>$a0xVtlQILZ^(M-1ojmn+V)DVscjPX0wk7h!jXMCl$&}vK_B5?-L z?LL*lzgiM6pu`6iYJCqXKhjt@TagZIz(;_1yccO5g3(f8>~?s9GGN9UnAF{qG-}2C zI@vi{oaaIUS>cS6APUp(qBS5c3<&Trbq3`b5jfr6dN#|tk9M);!jVVTGXlBLgL1Wb z&ZlNa)|csA2$r|G0Zk2XJR>16=XcXvb&g7nJAu_IvX3ABEZ7IBe_g5yR@7iW$r|YK z`**OYQX0B$+F>G&YedYra1USt(y-WP=fMGI`JMwQavv1<8JLHxMwM^dLww=EL-+r5 z`hKfO=Dkm_O(ve{t=UbFHaKDL?E!^u!wY_%bJ7d*FWI;LtCAe}LiUZ=28-s~U8TIy zmH8;-%rTG_?$G28RN1LX*mGMsl=Ei8Q+Yw}TzxFZk|Wt_;X5rF&d8_Jpid*yHJS`E zCr=Yb>mJ9vq%Kqlo`wn)k!7c#c@6s^d{YVnPg##a(g>XGpxN`d8Y9!eK$^r;R`vOw zt>D^^&$e6@Z)vXJkI>n$U7zcO#x)Ir_&zOm@NDCXzPYfZe9*m2EE2f8Q%Cy-4-$E3 zBsQw!aysW6mZqd(K@;a-D@>MWj)QVU+oez~ipCVIlHp`@id!zNlF(}Q4zZ>lZbmAF ziD}$Q3Y@rba|J9oA9&e|*!a5Gop&OvJV6F^`bU?x=?~mi{~&Gp*PPAPDV3H(T7Mrb zLjKxQ9b?|m@_@hm(m$cPnwQk!b{ga2ed%{h@Ag^Yel_^k2*d1%`cub;npG{hxic}u zkTwI#cZCb%JW+SVO%Hc~V%wE+Zw}XsEE}T+*~?oiV4ryYjdlx7s(s4;yNKGP1z*l{ zCFvi*3A=27n~1}!*RH!h|X*}*kP+qvXV%Q5e+Bw*JS?e`& z<;88KmjAk-ECJ*bq+4k_daVTRSy>&2+UlIbv#=IMyZtbZG&ZJX&kl2r1jV$&U4uvB>20kB9oe$#5V^(qY?O74wIPEY0J0tVTlZpEVy4?&M)D# zK`WFeM4pZ1E7;YVyLlnCR)#Zkm`#@U#hNXUD?h$1C&XGA$2jW<;chtg3hhO12TiEpDzEo-F^oMyXt zww6x&NphU&_0`ITzyI=AHLMl`QOGCY$YxC%g<5_`;6jQ$_wNm|te^U9OqP&^R#y>q zYbp5BMcMq_<`JBkb{1^oY}-|Le@r%}GqavMoI0GIeM;qpJw%QeS982f zXOoZ$QlVJWOda{X$H*~!*ZrFFH~5VIb#8pzufbo)hmo4jZNyw%H~Ky!VafugjhG}} zCp~h!k=D3ZV<80_zI;B@T1)cDVD4U;Wt#&u=^4VRK4LCGHNo$F+5(foArY-><*j7%boW4^QC^Ej86u4F9TWfwuWObFITZJKyT- z&F({0rqQd8fYdYGB8jB69Htwz7Pa*&10w}#{>IZbWFczWv98J(gd(SLb7(?Y zpxq4T@;tTH+$EwriTk?v^bN@(qD48@RUA-!qNx5CsNLtzJnr%%`erv3t8D|$eI)e7 zagFI$k&S1ZE*Sxdq!D!I9^F2MC4Bnb6(kAkQMiLahrhm@OjXLghM6+CSM?hylT)k2 zhE^hTqr)Jo<3(BNDcn4hCe47l;Yfi>4TR87LpJk6Sp3oEfiA6~Wlnp`8-Ew`NKwJy zY0Z|6`ig{9OEsi$Yf;eV(;26DqH;tHBCnO_vX^6teqvVj!vp1y@KMX%I*1-k_$2m8 z?NDM$2(1X6-o3-%Sg+k)xGSMqeGWPRF3g^E)B~K}d-U2;*hBWf7gy6+IKjQ++S6JT z9d#W;zF(T6y++jR8NCRo0nqF{wW6tGd*%e{7>S3L0ATrnSas32eC6ai1jk&nPxOT(mCL)L?2d_4>J8RFv0o^z{aLCM>GKAin8RBV$? z!k_K3ZK0f(I;ry_SuY3s%w4aYJ>QeW#>egJ`>PENzw@7IS<$KO*%35&n*mfkxibar zo$?ADc}?pB0yI^;byTr{a)=C>$c$ zQ3PQU2F$@bE4dV3lHPV&5{!WpjWyN3UHWIVermN|?ux7In@iW`6IO?ti3R<-2$>b1_A z#>P;**h^!k*kJJkWAa<4Q2(HCnoQhDK1(ZS)4||Ez%6aj+te>}sa%?G%)JGlS25A*~IU<uZj4yVOKtJx}<08J4|)Cz(PmcbHe7c(v4D)?5kl70(mrSY{)StNAhu} z&QFbGrL))ptRwqZo>Zi|uvL@MX#^n5Q=xcFI0ZtJ3b_Q+*DL4pUAffH{n{Mmm)SW; zNFtI$+?O4ZIuW3wyQ=}0%-yKnVo!Xv9#!i8o7t0?OgU@`>1WCUpEv^7A3wH8kFM>D zrA=0SP09`bKK@GXRw?_V`*}!o$z-^AjMLzkkL(#3NuJo(h@O%tXp%6dDkYUoEPt}J z8}?;M0+G14%wxNHW0>*Ri##k2c}Y$~g5m28`}4=U!`ze+6W(>RQqVv12?o?ee35J@z|W~)jMo7 zaj^6sKyPFZdwPh#*ZJ+xHkx2X2QUnIj2}{ZJq0e5<5;4Nzh%ZsxiiRU8dd0fjXpZv zgwkxL?{yF@`3yXVx*nLbr^hmEtW9NiWc#09Ea^sF|IcP4{KBrEt>?vO0-u%{mLcgqSPYOcz zG_-6&#cX&vPfn?Fr(6xMANgdHr&|=1#QnJYa0%&lONaz$`wjk~sn01uC1{SeIfAn^ z_4owK2d^iX+)jIHW%khW)DvPz z(mlxS`>(CSN_(lHnvZ;pG>)9UOxcsZU7xq7PISU1shk@lq(`^YrPe0K3vc=*w~hA= zO3*3|*~sv}&SR$gg6XLdmkD4Y9+0JJG4_7-B+Ecttf-tO1UM+hDJdz+B5kQYxx1YaMO2W>+d20$p~2b9m& zVm+Lt3nyYxmX4##c2jA&4DYFY$3i3DvaZqzYIe$4`{Xy8&?s(JycccDOmCyZ4j(s? z(TYpJwccSugSPx44SnMB8TRwip2*adS2LEF0F|~H!Cra48{u!}#r2MIJ5GC2Ta@C| zR)a#R1^d<&(*B8kAPAUy0INN7UyujMv_+FaEIK4lgl$+|rIQt3!!t9sSY{b9OasN-g}#S+>YSsjib@R6qDad11$YYdG$IfqL4a> zIhYqx08?(-^iFzkoRFKcH|!>n5ScGHxBitj!fbl}pbT$FbLcs7l-B=D$($FEAaY!Ch&69y{MlH8fg2ZpUc*kBiPw^=lSu={{0I!dGqPOEjf-oomj*)^i<< zDGkH+Y^hrdDhKNAzQO(SyMowsKDC>gDJ3^7xOuex`J6rbV=qHA%aX{7)FE6W1d|Hv z+`I5aJB^v>+T34@)u9Pn&py&=ihG0b1NK6;OVowwa>`Aunp9F&`A~psp`Z0g^+Pq& zv-s!byCYXN>YR$lA55u59n*{sL#L`{Tk`SUeowxRA=J&bz=_jcp}#0!w&tb7?2{8S zI}M35p|aAR+Fk6pzp2U82hoM|a~0z+X8yvDB`hJ_5)lgpa9K63S2{kj^`!Lu_*%FrIIrBa)mwVL73tnSjV^(T+V`p>TV;R4mQ z!M(A%zW$z78sTPnl9Td!Sz+(c9Q0*zo$*M(oiQm<`EhCADYn}+jvb3x^3*RK*~$*O zM5mN*n_u!Kh^-=(Z85h*7rB%`$xg-bY6|XEFQQN5jLCdO)`la#b9xP(v@X!alT>VXxG^i9{kuHb$(>!m~ zBXj$Obi2%3=2ZR%t=s;4c~4tsPnCBf!9wego3{53ID5SS2Bb|jtDgSIFR5WG+Jd(; zG=H)!)ArAuPWSb7KLqA$0AR8+gXYo$w>Q(dV zuft`+gT7@npYpN*a{J-ervlFJo|h4|Xt8D?zvlNmNy$O>d7ErWvkUS>_Cof!0A=&$ z2yuffq}!@wxE~No+mA?6%y2yTgPKW4))u0t#?n-t={9`jpa~L5H+tk>pdrxL!8^N_ z{-{6DrbgJTb$6#FAq>3}>Mj}%e($mH$vOFIVLWh1?nmAbP>-DW@Hg<*Rq7Qo7d3UC z8|qxIT$Q{0xHg{YLaH?M#?^Z@V`mm4&qs1xIF+s`28h+(SLk~dO;K_1gXmHFDMzYo zioREgc^?mS!vN93s#Yx<0|Oiutd0%+w!1E<)(%)AihQ&1p;C#c0~b;Z@#ZJHg1Ly0 z-bqGI;>i_1V=D%scGzf_G4NY(bs+42ElgZRnU%wzl7w9^@nLmdX3_>;xjE(*)&}Ug z9admVzM{SzNf3@FST%5mmDRXoK34<7rR__?4C>NQX6L%_>!;Ck{YTG!dI_yja(&t( zqF;U}E-+EMapC=wGHPE&*duJT9qPSqj|E@)_8i_j4 zE!ZfER?dtnE*zn;jN+sB8ytDDmw!svv%AvECCzkucXP%GFlA55SROQxHQWND+DvwC z1-#!qq1a-qSJ327OH3P#-~ic?(^r}$s+Z8!VG&6OjGxKV>lyrL)_F2qCP7IT2l+xi zebEFjZ^MR^i#_203j=4p1@)hOVE*=Su-N;9!K2x6eecvr?xLG@)`KSRI46pKikR$* zeMUqWDpp1a?q5@~irHNji7tC(@aSFasz;oNxcS$p*iR9~JJ*c8OZftR(6cKWV?wnt zzHP)1RMkNW8$bTA&tQ9M=nI}|In}J0MUsD6N8c`OkXLqo&S; zqB3$rJjyXs_|WMHTeVuxlm`Gx{5VZ50Ug$RpJU(9x;jieDtUHRebAiORtJ!OINPRT zwVNG$>Vh8D3bP{LWs5ZQ0E&Bg2(&A|x>4H`Ez*l5Xk5l6vW>?Le>d5zE$TXY27su-o6|dr}E^8YaylU-8HHEuoveaOn`84 zKYKMV-z%cnCwe`x()$pW@aZUb)veVH`H)YzY~5v>{qK@T_%oDP;8CVm^lf?_$&91(j=(J8AgLMKxS?*kk+AZbbu- zyOCu=ia6v6V#kpu!T2eqLDS^$QIu+p%$#eT*Kgrb(aZ*vvdIx^mF*`9s>5^8@%zi+ ze;V2HoI+}R`_|!Z3EGSw4M%cpUKk};47|}E^l^=YOm7ZJ(?7-x+;Y}X|2gp|=Q=zH zCq?pAY-#6{YguSxuvlAg2t))^>uVv_E$nmfTHMto(s8#T^;3BGyQkfH&3%+xB7Ax!@3dS1o|sSCcJA$O;@+Xv-dTT!no>k8rT*2zEinx z`dI$WRT|6^T~b=^&(5fK5?ZT+@B_*o1%kn5AxZ)Q)%vx8c2@xtm|2R;U8ve!nDR|7 z-7#b;xK&O;l44^sGZ159lXF4d_2Lcajcoq&T^5nu`FBKg!|BUj>d?FKor{grWuCb0 z_TypoQ*N}SCjZ1;$B$+MsSn5u6WnCjY-@e0omQ0_N8@0F)x$#D2W!=&v3$F$Xja>& z_(l>RTy88<;@**i)POJhUD;Bx2(zo%Pv#l;HFwAX+32FsVju7(PZ{g!>$cCwN*em^ zFPc>f1h&ClyURMEa~1HNqIJ~Eu)&?8`VvsU=V4A}8>8fZh>=&>$1X&FV9$w#mIpRR zsx^pz0)KS7b$9c)h4%@z^09F6N%cXW^mvK%I7WIr8}2v;Fa^%hUel)?@rPsahyC$~ zv$UwEyo0JfYS0RMMsATFCrgjV7>+-r4LqpNyGxF)dI#L?d~GnY%jN|_Dgxk}T1(qK z43U~*fj{Q3{D@3&mZ0l4y@4&cmoF|&>qxj7m8!L8oF(+CX;V`@UPYnQ(3U&CCp{yF zKU@^|G;BQ>usUP}F}yveBA_ezo%vYvSUfYWhd8gUi#fk*4`SW5KWd`b*ETtgc^nr} zKmGk4>E#-hl~e0em-yG>K+BK$Nm3v#FpgF>+q1BrcNxCR&1w$LHC}ZIh+Z*R`>XQU zSqcaq_7Yi|_7}aDW5e_My^3SJe$9tiGcAsdYSU&&3ZVn+r?IjTeOwwTTW=aSz?wB;lCY^vZy0NHVH75y3QyOO+kRefUx1oDteOGvg14*hE zoJKyRto~u!Mu~)bWB%uj#yd@8NwcAqc)+V`$EZdBjty!bu zOl{S0slF|e06M*qHq4Qkp6w@>6$)MO2$#Sq9(%fb$OvsdZ=8AViGU0;Ig*t6M*kIW zdTbUp!%|+V?34BDEs)(umFPv;#!2jm`6>u!Gwr2jv17u#ry~(ygl&n19-~-I!x_oF zyl*V-mcjjVz`U(nWQXT*e0Iyjf^vlxg6yyE-Ld-!2-;_VhMLC1h5l|H#ZpFl9EOno zki_DTX@Dh#t&mg4u-2H3vRGA?th?MiBUM_=^ov?;BtRIC@7XL9!r1! z-)3we~o+o`0VVE)0uRm6~n zL<}sft6hYG|=R@pClSFaOSKg4NK6G6&y-+e!#H@D5#HW2dYs3(f{yzW~LFvAC zQ+W0s(pvf0=>{*|v?q`N-Yc<4@S?_n;Bo9eM`oTKIHvhkjJ%$@yfxQcNiGgLTcxZ2LzriJU#rcupFF5{}Tdm>G9j%qK(~Xl5+?yK?Ue$&WQzxP`L0-3)_iKECp8SeWn+O`O;t7`9PvY-h zNwnI&2+SQTrP81M-()$X`gwwK#LMn|I9P60ei?f}_6h4E@BE?o zL@Cuhe4{^MIa$0)vt*qSuTspfolo1@Prv!Vc$H^DhvENb`I((*@+{s- zHF+jwr+L=>GvY1aM@&k}U5$mAs`x%4{MMfnKaD%|_*DpN?hmcwo+W@SIz?ZeqrJ*j!3Sb5$l82+_Ter0|-z5--!&Hr{b> zi2-!79t!<4+(*3Zz70Fmnmp`N$uR9@@(8S^)c!L4#6THQlKsZfSFoP+zGM15BaYqp zm{+nKs^m}WtBE&Bs)Im4I%WZIuASkX6DcAL>u69Hl2Oo)mHl*c98!L!DU5CUW_(bUdBfz-({<}%dW;q zPq0_##pmBb{ES}4-_dV{m0P`{SNB_q*G<-2Zm%#7kiyOd(hyXi zb%j^NANO8Q{Mpuci5aFZ3FTLPSLebz-$}eI4#@0A#Ntt}H*QuL^$lFwsKzhS_p^V% z@;Zqn!4C+WT)nH&eG}^$ z*Y|U*ePLHLOW!O@?8xGKiI>t_?+2~J+qJpj$7znj{I#aHdOdVNW}u*aG4-bbEHq}=0o zW4OyChm}&r`E=jOa>j|?<2z=loN3&xrJD&Fc)yG(l5&b4Vmax(jVCtTVCSWkn+}SO zFy?9K-W77H^{-e?8du@(Oi1Br|BogbN;@3-y}I3F`Zit|s4oH4t@^K= zgq0rb{9CpsTlbmYMKikg?zZ@6?s$1TgzU8DPqEz0jxqXZi{8Eykr3l|M`;_}M%*IzhW_;x2SF z8auUl59_b!+xZW~%jv86+4JxL5>`_8PDPoJ(LGy!6OFgcR_lkU$E zKh-;NF9WKh?OXbG`sUP#YWj zQ@zc{h@bh*cbE4=9`QOU^w4Up{OtqB%f`dzG2?F0yDI5mc9~e)f-&9Hxx4N6=P{^g`1>$GtbWE*cGSDoQ$&meAT_3W) zJOQzJMDnitILpn}Wjr`cSE39b4z3`#fCZuv$EyC0e~sm){7Jo2g=ZcpdGkH>3kEUt z-RueCXMXBt*~i48*k4EVF{Xz2W&Z2L%lOpf2b2Wmhri{J+*95AnB&&RoJ+xL{J>9q<>x|%e7`EhG;g3H@{8^&s<35V3yUZ|*oli^@qQ`g) z|A6=l{AFMn@;#=EH9P8U&4|}^!^tW#`LteMIMvv^!9d$pG?0!bU|03_=foe@?Vf|> zW_4Tf!EzHcH&pRY@n^)#^pDXQy2I&=Icu^i_Ej7&> zuA~3M{2BjReXk-n%-m}C@&%1M-QTfN@)G|cX*Z#l6%jTz@dx(80;aOAF zuU_$LsNk$$hDU#e^S9*Zc#ZkD(k;wr>!bGab*CxC5ZIodkQ2u$f7!6Xa3+9B>uL3NxV$&-B#X-Dd?wXcnT*S$MKEC%jU5uM%!#~`&ahyct!fu(_KtM zPTLd_{>;;tm0ujZcKxjt>75nny%p($73rfD>5~=dGf!VepSh|HK3S1ITajM;ZT5dz|5_{3JD$FbeqB#rR({{pm*EdQeHs2}Mfzk# z`fNpd@l7k}vm(8-BE9G7%lhB<^kw}YdipZ_k*6=ipR7oqdHS;Q=bpZ-{ATCc^lPt3 z@2*JiFG-jD9xA(AB)@X^Y!1JD>?u|e%q>Am515r0^>JL}t=9@1&JveR0}iI?st zOW!u`gg4XFWaJ*%T&RSR5Z<8MJGktD8 z679p)uO#G>g0Vqd#`!nGD2`~n=Wk%S`FJY5`8|u%<pu)Mw?RGjBJtaF?jv62 zZ?`i-AU^jw;7Z|vhb-=V=J=W4&HN~-9~O&?w4a@~v)*j|yz>5{vEya!t;dh!B$w5e zjK@1zU$!2#c484qzXV8yk<@rJ-+6s_k|$HgOa1ib&nU_Zx@6q^83tli$krCcejmT- zDb_pv8slQx*(WykJ+@XpdAf4%5qw6BLGWSl6Gh3?OTnNUSH>3 zDax}CG%l#~0AtY(2woX`n#pp?PYVG2qVdu`>*N>Mjw~M3_zRPV{1w}*@jIBUD2lW8 zuPBPye`Go7J)TE5OfE`n)UU*q&dmg8_-=Li3FT?3XyAeHpP_U34T;205(H{B`Z;

    b`GbId(=R?$tLU!TWoxn#aX26L0JMPw5P*KtZd% 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 z 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

    Wpp1zb{<6m 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%0DhX2u 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⋙-NT*_ai$ofhOvI3A@J}H;B+GG=@dYYsl<167H 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

    Y}me7_{(lXM3TOk)EYrkMzQ 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 z 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

    bAP=O3gud7log##oP|!adyZ(%Wp%+gGc% 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

    g0Bq+g#T^p>RjMUJ4@Pi? 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

    C{3zr#@rtx-v?>USv*-(mUc> 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

    vqADPg0&P3W;oXB{n$; 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")F_1nLWE8Yd{%b_TfwTq_
    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

    +=upK_=^Qyhe(dzv6afeK+O2{II@ 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
  • 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≫Ud?^KWu-lk2P-9 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%0Dd`9&K_ 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⋘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 B5?BBL literal 0 HcmV?d00001 diff --git a/v3/go.sum b/v3/go.sum index f68280cc..3c2fb9a3 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -17,46 +17,70 @@ cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKP cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.4 h1:w/jqZtC9YD4DS/Vp9GhWfWcCpuAL58oTnLoI8vE9YHU= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -66,8 +90,11 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d h1:QyzYnTnPE15SQyUeqU6qLbWxMkwyAyu+vGksa0b7j00= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= @@ -75,15 +102,22 @@ github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gertd/go-pluralize v0.1.7 h1:RgvJTJ5W7olOoAks97BOwOlekBFsLEyh00W48Z6ZEZY= github.com/gertd/go-pluralize v0.1.7/go.mod h1:O4eNeeIf91MHh1GJ2I47DNtaesm66NYvjYgAahcqSDQ= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -92,6 +126,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -109,8 +144,10 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -122,10 +159,14 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -137,51 +178,80 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5 h1:zIaiqGYDQwa4HVx5wGRTXbx38Pqxjemn4BP98wpzpXo= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -189,39 +259,59 @@ github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -239,6 +329,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -255,9 +346,13 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0 h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0 h1:ftQ0nOOHMcbMS3KIaDQ0g5Qcd6bhaBrQT6b89DfwLTs= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -265,9 +360,13 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -275,6 +374,7 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -285,8 +385,10 @@ golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -299,8 +401,10 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= @@ -347,6 +451,7 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -359,6 +464,7 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -370,6 +476,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -413,6 +520,7 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -424,6 +532,7 @@ golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -503,6 +612,7 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -510,6 +620,7 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -551,6 +662,7 @@ google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -571,6 +683,7 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -583,10 +696,12 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -605,7 +720,11 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/v3/internal/ast/loader.go b/v3/internal/ast/loader.go index a4f9cea7..1ae58ae8 100644 --- a/v3/internal/ast/loader.go +++ b/v3/internal/ast/loader.go @@ -16,7 +16,7 @@ type Loader struct { wd string env []string patterns []string - pkg *packages.Package + module *packages.Module commentFuncs map[string][]string commentFields map[string]map[string]string pkgs []*packages.Package @@ -31,8 +31,8 @@ func (l *Loader) CommentFuncs() map[string][]string { return l.commentFuncs } -func (l *Loader) Pkg() *packages.Package { - return l.pkg +func (l *Loader) Module() *packages.Module { + return l.module } func (l *Loader) Pkgs() []*packages.Package { @@ -97,12 +97,12 @@ func (l *Loader) run() (errs []error) { if pkg.Module == nil { continue } - if l.pkg == nil && stdstrings.Contains(l.wd, pkg.Module.Dir) { - l.pkg = pkg + if l.module == nil && l.wd == pkg.Module.Dir { + l.module = pkg.Module break } } - if l.pkg == nil { + if l.module == nil { errs = append(errs, errors.New("go mod not found, run go mod init")) return } diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index d05562be..137f0078 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -54,6 +54,7 @@ type Interface struct { Named *option.NamedType `mapstructure:"iface"` Namespace string `mapstructure:"ns"` ClientName StringValue `swipe:"option"` + Gateway *struct{} `swipe:"option"` } type OpenapiTag struct { diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 9873527f..2a533899 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOption ...\ntype MethodDefaultOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// AggregateOption ...\ntype AggregateOption string\n\n// Params ...\nfunc Params(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Results ...\nfunc Results(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Aggregate ...\n// @type:\"repeat\"\nfunc Aggregate(method interface{}, opts ...AggregateOption) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOption ...\ntype MethodDefaultOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// AggregateOption ...\ntype AggregateOption string\n\n// Params ...\nfunc Params(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Results ...\nfunc Results(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Aggregate ...\n// @type:\"repeat\"\nfunc Aggregate(method interface{}, opts ...AggregateOption) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/gateway.go b/v3/internal/plugin/gokit/generator/gateway.go index b3169a60..140b54ba 100644 --- a/v3/internal/plugin/gokit/generator/gateway.go +++ b/v3/internal/plugin/gokit/generator/gateway.go @@ -62,7 +62,7 @@ func (g *GatewayGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n\n") for _, iface := range g.Interfaces { - if !iface.Named.Pkg.Module.External { + if iface.Gateway == nil { continue } ifaceType := iface.Named.Type.(*option.IfaceType) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index bd3a9445..76860abb 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -118,7 +118,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { if i > 0 { g.w.W(",") } - if iface.Named.Pkg.Module.External { + if iface.Gateway != nil { external = true g.w.W("%s %sOption", LcNameWithAppPrefix(iface, true), UcNameWithAppPrefix(iface, true)) } else { @@ -144,12 +144,12 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("for _, o := range options {\n o(opts)\n }\n") for _, iface := range g.Interfaces { - optName := LcNameWithAppPrefix(iface, iface.Named.Pkg.Module.External) + optName := LcNameWithAppPrefix(iface, iface.Gateway != nil) ifaceType := iface.Named.Type.(*option.IfaceType) epSetName := NameEndpointSetNameVar(iface) - if iface.Named.Pkg.Module.External { + if iface.Gateway != nil { epEndpointSetName := NameEndpointSetName(iface) sdPkg := importer.Import("sd", "github.com/go-kit/kit/sd") diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 2f534129..d68270b6 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -59,7 +59,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if i > 0 { g.w.W(",") } - if iface.Named.Pkg.Module.External { + if iface.Gateway != nil { external = true g.w.W("%s %sOption", LcNameWithAppPrefix(iface, true), UcNameWithAppPrefix(iface, true)) } else { @@ -91,12 +91,12 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } for _, iface := range g.Interfaces { - optName := LcNameWithAppPrefix(iface, iface.Named.Pkg.Module.External) + optName := LcNameWithAppPrefix(iface, iface.Gateway != nil) ifaceType := iface.Named.Type.(*option.IfaceType) epSetName := NameEndpointSetNameVar(iface) - if iface.Named.Pkg.Module.External { + if iface.Gateway != nil { epEndpointSetName := NameEndpointSetName(iface) sdPkg := importer.Import("sd", "github.com/go-kit/kit/sd") diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 62686b72..527d72fa 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -135,7 +135,7 @@ func UcNameWithAppPrefix(iface *config.Interface, useServicePrefix ...bool) stri if len(useServicePrefix) > 0 { isUseServicePrefix = useServicePrefix[0] } - if isUseServicePrefix && iface.Named.Pkg.Module.External { + if isUseServicePrefix && iface.Gateway != nil { if iface.ClientName.Value != "" { return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.ClientName.Value) } diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index cd7b23e2..35dcf785 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -155,7 +155,7 @@ func (p *Plugin) checkExternalPackage(cfg *swipe.Config) (errs []error, hasExter errs = append(errs, errors.New("not add package for "+iface.Named.Pkg.Path+"."+iface.Named.Name.Value)) continue } - if iface.Named.Pkg.Module.External { + if iface.Gateway != nil { hasExternal = true } } diff --git a/v3/option/decoder.go b/v3/option/decoder.go index d2a19266..c14be42e 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -34,7 +34,7 @@ type Result struct { type Decoder struct { optionPkgs map[string]string - pkg *packages.Package + module *packages.Module pkgs []*packages.Package commentFuncMap map[string][]string typesCache map[uint32]interface{} @@ -292,7 +292,7 @@ func (d *Decoder) normalizeModule(module *packages.Module) *ModuleType { Version: module.Version, Path: module.Path, Dir: module.Dir, - External: module.Path != d.pkg.Module.Path, + External: module.Path != d.module.Path, } } return nil @@ -460,7 +460,7 @@ func (d *Decoder) decode() (result map[string]*Module, err error) { if _, ok := result[pkg.Module.Path]; !ok { result[pkg.Module.Path] = &Module{ Path: pkg.Module.Path, - External: d.pkg.Module.Path != pkg.Module.Path, + External: d.module.Path != pkg.Module.Path, } } option, err := d.callDecodeArgs(pkg, obj, callExpr.Args) @@ -490,10 +490,10 @@ func (d *Decoder) decode() (result map[string]*Module, err error) { return } -func Decode(optionPkgs map[string]string, pkg *packages.Package, pkgs []*packages.Package, commentFuncs map[string][]string) (result map[string]*Module, err error) { +func Decode(optionPkgs map[string]string, module *packages.Module, pkgs []*packages.Package, commentFuncs map[string][]string) (result map[string]*Module, err error) { return (&Decoder{ optionPkgs: optionPkgs, - pkg: pkg, + module: module, pkgs: pkgs, commentFuncMap: commentFuncs, hasher: typeutil.MakeHasher(), diff --git a/v3/swipe/config.go b/v3/swipe/config.go index 509ce175..19e49ebf 100644 --- a/v3/swipe/config.go +++ b/v3/swipe/config.go @@ -33,7 +33,7 @@ type Config struct { Patterns []string Modules map[string]*option.Module - Pkg *packages.Package + Module *packages.Module Packages []*packages.Package CommentFuncs map[string][]string } @@ -43,7 +43,7 @@ func GetConfig(loader *ast.Loader) (*Config, error) { WorkDir: loader.WorkDir(), Envs: loader.Env(), Patterns: loader.Patterns(), - Pkg: loader.Pkg(), + Module: loader.Module(), Packages: loader.Pkgs(), CommentFuncs: loader.CommentFuncs(), } @@ -68,7 +68,7 @@ func (c *Config) Load() (err error) { for _, plugin := range registeredPlugins { optionPkgs["swipe"+strings.ToLower(plugin.ID())] = plugin.ID() } - c.Modules, err = option.Decode(optionPkgs, c.Pkg, c.Packages, c.CommentFuncs) + c.Modules, err = option.Decode(optionPkgs, c.Module, c.Packages, c.CommentFuncs) return } From fe1478d8a683442a3b77583ef426a58f058715a4 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Wed, 18 Aug 2021 21:45:47 +0300 Subject: [PATCH 218/293] refactor: disable aggregate option --- v3/OPATH/bin/swipe3 | Bin 11474162 -> 0 bytes v3/internal/plugin/gokit/config/config.go | 10 +++++----- v3/internal/plugin/gokit/config/config_gen.go | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) delete mode 100755 v3/OPATH/bin/swipe3 diff --git a/v3/OPATH/bin/swipe3 b/v3/OPATH/bin/swipe3 deleted file mode 100755 index ae29b35fbcd1843910ff14311c6e79c5cad3447d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11474162 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

    7FNkk#YDZ70fJa;a zjUI;16yLWGd^n8lDZVhTfG@04?iX}8WOu$7exv)%;s{q$fU-T2`{9kuICCkf! zYXZ3Tu&!7Ke?~7ZJw%RxN8!;g!=tk|nnm;B!M6g}m$ADV_}zOqHf4)RZzG;#8~Gr` zfA=lGc7;Zd5{ssN?IXQd<<;}euIfyQy!Z zcTV4S@aOJnvC8HV<}R&e3f411XYF|Ww)f2Gqu$pN?7Oe8G!LT7E0|W)pU%hfD=m{(vs< z3bxY=?*P|6h76nDW(YpZLYouYdBki=TSvY;0iaV4ZEzp+dhlQ&|I8g{=;Zfmjf#2% zOTq4cJAbd%GlvWDgQ>5K>ovw&2(#9|^k4Qp-o+ThHNdyboY7aqIIdxyMzMeBn%kP@ zT+94C#Pu5Q;s>t*&W8Br*ae;I4fNVsfsW4H1U@I#an1SYQ=_lx3t`Wzo@;K4&sj(v zOX4pD*kQX^~1AYz0_lDM8ZvZd;AI5cvK5On`w0FiNlM?O;uF8+`$*4(vfOda+ zThob7@771mMQgyp-g;eox- zBYw{&WCuJjmR^aShX1XpoiZz}94c;#abJs!T8zx^frf9MRNXCJI%2e$b$D;=-XqxC z3rg4rxVNsd6WZ+W@$;;NW8{e{vU#F1_r=nkMP}Ba1@MC_V%_uUyY}iwp&x5kV-q$` zMt8<0L^gIriOGsgU_Fg?mtiADu@RMHKd>uhbN&7ze5K4&@O}BD(|nJu`gY&{l<#Gu zL})M2?N#sMF~AdC$(&{!hibh_y^FPRC5|#!PyMfHZVs$JsUS1c<)AUG(IUGlo!`K%r54t8@pNK;nalq}+q=L=Rh@hPYi1HI0zxZ_7Te4uTm-aY z#Y+yhnIs@0T5aW2Pig;|B-|8xsMe}z zUaR@&VdyI2Iy=wkdeoU4mxMwqZ=}s(tfkQPFmElzwcP8qVcsp-FB@j^yAG$XaF%-< zo5zq-AX+Is;L&1+E|(r}q^#(46f#jUs=o|&v8uPc@6&wCH>n)LnnDkP}V4 zQO^gv>Z9bsB8SL(Z)_lDOqqjbu`84C%A92GQ#p)!FQ4nA>dCO_J5&akRAwsI)U(PY zKH~f|Z!h-$RvG%CG84J}F!Linq|K;&&c)tdCZ3(jUOj74^Gx@N!)9rXgKN7%;XOu21LS z`dezl!}WjD#z44!Qe`|`li)ibuB%nX!}TvHLvqxbPw`0!N4GftKH>Rw-v?HEKjnOH zKY#8S?u$3%E9AY${^n-`@$q6~{ROwax$pd)%hU$;X9#_%7(*DlL$QU6xNrTDN3XOv zO?u<}PlA*3!s*Ri)8B*U>6k5(@L~XWs>~EuM)QldOilkh-dQSxZ>M@zQ3jeKAJFx) z$(s}T7-cT@;X{X~iHS%qq^m>uJvRU=HcZQO?zQr}nBUkN^5a^I?R;=uEB7?#U51Vp z%z8J19xY+svJBavz1(~IjVzHb_+N#{(#p+GO%8i7&lC8T!0RFQF!`(s@dhcyNp zxen=?dQ_k0Vtv|b$pc^Dq5!$v3ZIpdTdcKh>Yw(HlRWqp<-g=`KwgZamozynD)Uot zu$pHtQ-)Z`p%?kS&z0S7E{*oX*LKQ2!87IHmHPFq=|2`*DDzdGDZi$bKDE(LeBgY4 zpN0xA{#VO$%WKA4U+m?oHnZoI@FQNk z_hR_axwOw&MZ0pKVZWUJj5yNvqUiLx){($^QM_BZCYp2H!u<~99(!Ny?=TVeD;wN7 z0)L_69c7_(v1@9GN!IXtGi_~-yS)dr zXP{uF0G?ulQ~N(mE3|j)ue9gpXZyz6&H>~57yI+w?43}_ z_^|hG_YB%EroHMR_^aHH;-9q;PfYS#dn}Yut}8 zhwMBA<80#&LHwkI_oUNv>;J3gJGKvuiS{(PR{fSNWelT9lm7_)Yy&STeiMJO^W1{r zcl1^HHuI|d`bPF*V;`C2coqY599*hC|9#2ih2ZQ6{YWvF zFa%!P0-VR7&76?w9NM&e?S0_)SY$}^KK9bwcXs*8o3ZVVkWWzv-RRwYW@zm~@SVe6 z9h-<1)tI5ph7WrfHeYe-vBQJjeS9T*P}Js-$M6d8v|UTi#T3DT+!xJ^Azpx9QLI*b zTeTz0qP(Yh^A8Nd-UHq=GFp9Ug(iL21?O?}km3Z$-M=!{Gc273$9kMM)*7piGFCor z)t1h24#pg%542C+62>ltU#f9j92m#sTV$P;p_iONX%J^o?UP}nSj8PTzU&?scycTqBkd~E)!Gc-Ki&5Sc{xnZ2{koX@ zl8d5A;&k0Mry%2f;o=?Up?vrxOVrnk1ATq{jMFc{{tdPHD}CqjDrYwYogzne<^q2a z`xGdiH%qYb4B2hZ4%4%Z?6aq5asL^8*B&R8;ARiJ>*pTl$tQ$Y%Z<)RaeGpdGhp|x z3(<~z-(0?}9|=GE^BLN&E-0&dpJ&WvD0i;6e(MwV?H75JXFe=ieq8NOXW1k3LCFK1603K3XcdISM zXas}g5%36>^UFLZuY-J0_Dd)8`r(MW-_pEMpnt4&?b8X2k>=up@2HP=(8mK_AN%z$ zL%)ayh{tK~!kxi7>SYf`y?Hv%zxqjjpAB&X^^0zW!@se9Z%+uws7xfwH+x5mC8RqT-^ySfMdwRI=P*t$c?)rWu4XFCmYUh(x7$s%-Jh&5pa z(YVdwP9Z;uvtVoUO?mB4TZAv)f{dNcyif^zBHq4x9XbizCy+NObceM)`Ida(o?YuE zz1>pa^UN$OH+y=rw>4=!aB^&&WHvT*9dl~k#Q&^Kx%3_0rCoIHPW4?M+mE*B{H)c?2gi|W59 zvwrqD_3K|eK>c@}r+&8|LO`Bryr@fjQVK2qH9lFuJas0YWWy&`wli)TljB~lgy=pf zKa@KZ{QcL)OY7@2Uc!%X6{Rnl!_ZjhFDPHMPC2N*yVXASl;S{pvhcdqJ}u2OrH>(^e~ z$%~8O@!&Yxc7e6%M%gad`Mhu2O#%zoTH|6A8;QE}0*n_MnQ~*F?$`>hete$sJ)U8o z_4eO`XEyk13iuI;kejp1EZ0G~o`|1c?2VfztAs~#t9Htd@4?Qs@-&YBE*q_t_yhM+ z<<9>e53H)YxBi4D>!2Ckvwa6P@#X=IB{qO;>lAxB6C2GB(v9fkUh0!Pb(HP?2kCpZ z^*8$RwOg@)A3?@ELf+>5EnM@xV3YEYvpYWrJ?nRZ-})}&c?f@tcuD6F{CM3f-DKRe z^@1zZsr=CNwX7MyKXb6T+-vPSq1^CfR#vSc7uUc$S_`K&c&4dxt@t|xkEoyYd3($d za{&jlo9VM`S>8|LGg^3QcRny_KgxD=Ts!>Z!>#Xy!1BEO4`lcACad#l&VOu2&uG4= z5Svw#6e1=`*YmhISn z3|Ix9Y(MSAbCl;vm1Epn$w|{Q`9L>uJ%>-~a^9VLiPfvf0h_C|^oBk<{!5oxQ|HEV z^eq^^aXvTlv9y9r>fIBLaguLXiH#+DAcyfOqwmTIlFzR4x#Tg}b5QUviioe3;2-a& zObkBLxTPjSPhNTdy(-z{slL5=&$nk)3oxqvl!Nsg_%?a)#gG}jaCk7ZK*zwkQ)l%E zRv-Rq=9zOXY~jvau0;!a-h!Q~xvRewHs$dPHsRgpi6B1=WzH`s@8vT|=L%;b<|M{K z52ZQNx_95C+%tFfrBlqb7QRUDrQ9Z<<@1K5<(2BOfrAj!jIjt>CPuv3Ii8 zzx;|u)lqT7wC-`_l+;{euCumcw7|VPeOh-LeHwcYG}#)n?Ph=5wY#8rTK9O~dGR81 z-6NOw)jK_KZQJ;s*Ty_oe%brXbuTh@n-i{$1tq|z`XhPy?SmiPA$S%na%HneQuif+ zx&zm??mu~TS9q|H^Xhyjx2HjQwO4oEI176_=ik`+Yo~Qj0QRFp&2{re_tif(crE-) zpXBhf$t%x1u--4<;?-L`-qvgD{E>rULAJSW-TV9MoENyZFxPr@Hcyl8YAod(c3bDG zUY*qw@`aBI@GaUHjJ^w#yIw@Qc|+L8mOSM`WAbB?b<8VIf&M~K#gH;)sg7?eTd&RDwE2!W%fcd<`$ES(Uem)2Jr1+fV z)5XW!8!|)qjN)@CpDXy>$S2O{7Cv|KN$^?B=V3m}`K;pe6rXxN`m^%Fn=jhN8p!uX z_RSZi?r`!V6dhC-gML`2u%Gpsu>xB`{SGyX2{4UO(U`#rQ6Aq0Js+&|8ubcet zk^L7CH|ZfirgQ4bwYPoSw+q8)G_K z$$gF*)0{3AZdfnl;ie70Rr~)OMSuEz>VSrhAvcA8m$x5kwlW$Y96L0Bk1;##+EvaL zEXO~VPc8f3-m~!_Q|srpDh~VxKCaWNoFDcbY!2!Tw)+M)%`244Vr<8qUB7=Z`H~6R z!M3yhXq>SPp<4?XTg9F?fWzcVMcOlWXY}dh>LfUD_R#Du>9M_gh}Y6b=h0o*5GVPV zaDcwO{X>plCi*^i|B!i-$yzT&Zm9MVXx!@PUVAmnW>Yu1QO z|B12vV(x2e3&NpOYd*4m?db66m1}r!%>`!K&Jh>ZP79B&U4KFRl=2)d4&73>^IyK$ zwJw~@|5jP3?%DT_EdL65uSddTmQ>;&eVK9jHMD!_Z!fRAEE3OWaq`YHUyXnB+4rNtQpnxGN{bxeW066-yU) zjpg3)soKYT)T#aWRu>fBQYRSi4-IX8Gcvq+(z{<e%(`N=zf z3|Z=rfySyrV+B6b@RLz4zn72l^W9z?3Os8ZU-`B>(@B11Dl(dU)`xc7(*s{cF64T6 z!zb+ZP_Dnc<34*mglqQy?7be;a2wZZTYNSYKD&~-#AjMt^%S3=y*ZmXtl<7i)<>)e zZ|kXuY|~mVeR-XF73;3#U1E`SCHM)m z@t^wH%Xw}NeFJ{7VkD|d^e%fHA2+{;z3-Uwu<^GP{N>trwo=@#)$sR5aQi&xlVjrJ z^24Xe4^aEV`r1Ek@z)pc(E9Xw*y~n4y^8KI_Q<=BAcVZW@*ShD?L)*|pgIT|SOnV)%?kQOJ@@b}ah;ppN1JH0e{GdEr*Do*T z9&t3XkDL?H$_sq^eX0bfzo5M6L$sm4VE-oB`SJe!vul&Vt>D(0x+B0?1+Tq~Oq+y0 zo{T=e09|{A`Ko#wa~{-r0-iqspFD#-qVkK$CGElg&E@;U)RAolH*YeW`!H=LYchv4 zJPptLcw7J;f9m0JAviq3zT+*##Wp{@(Cwceom!{;^Hukv`EkyD8r*s8JJ=J`vTBEf zOvBh@{h@-;*v^-=mWk_M(%+xjc{tp8ph-~S?P!JDfN>8ypcXqI+D59fBpp)1vkpM7c$ z_}BguWuu37mr*azUc+Cvu|vIEs(s|3)dbI_hx+kLpuIfBMQ9_HQ6|k^5aR-P`0Ocj zZahf+_w3o1r}wvKll0rr@6?URlDn|W;^tKNM)vf)f|%bl<|d+U9zgtk>-!vEr>Sql zwcgo+yo+78vzWfMUSsTeAi0yU#eg#n|4XNqJZiRSo}!TXx>njK9>qQ7FfR|~mrUdO z?BH!B$SmbFmz>SoCf=Dr{6g!dv%&wev+IYn-+>JxSpyu(%eY#xRCH@%JZ+&9TaiI! z)WN=N-OG^u?dXT2n~L(;gRJr9%gwZk(ddZFnF~Swl_CeD@O8q=b=6tAvZ`p`n&AOO#z~H|Q@{Es}_O2nJ?Am?!={D9`&)f;Hz4IaP!x)W)p8R*M zZOU1nqK61)50+ySMDQ(J*eiqhK>iHomU_=5yp}b9*pkP{LCxhH3==nXd6bE8zF#YP zEz8T94Yqkz4sFtRdoBw&k}edEG?v;+N_yq{ifL1KiZvmxkgKEesd+xFIs26O%E4gl zM`NIm@H$^HCa!(?x@RK$=tHyWr$H`MvhO!Kx3==8+Yf6j3fW&}54h9(?hN3cPaG(V zJ-=Dg)*$=UzL&_ZGuRo0Jl`Na2E2amukxVmZ)8X?hgrHQi`-PzljY^6N{?IIP*(ZG z+_$;DHXfXC_``nahd){ z{WHFi2gu*mi70&QtzG!wAje~}Ika{m>fIkR*xeVsCdN^xM`xw12N(;TmEp_evK}E# zTP?-JtKoI^Aqam+cp(ozM|t??;T1p@I&M&1O%!Mya&=>iVKF)qcKDFdx3pQ~2YUCNPKH}+L<@$_c z|L4@z*fa2rwXrChnyB*3{VETF_r#CtqsFj_@_Ht}TI0vsJezl@XNAi7Kqkq?Q~6Mo zxE40J?6wxhPU{!i$br|ql$Go7ik*kHYrVn^vd8>(#FLUOb7kM*2gQSPvmPw}1}r@p zvL#jE;7swpXmx+Ey|X>Lu13G2ceUr#sUqwg>BSl7#Txd9Dn>81u>N%kebSts)_2LS z^~cxZfxi6eo8ZjvAHSxDKt}dWq@?w0DR( zJ1dLM=o{PacJhJlWIcj%)Nkh6Xm0AeF3&sR%}v#4Z#(Anq?^UbY zvygMew;%^Qz-N0TyLq!2yi)TZ$F-N2d<)Tp_Wzp#4KNm;mEQz@H1?Iyx9kh$ySCEq zBh)va`U;p+*}xu#G2$w^S2`v{jsh|EvE<;xL;jAJkPJ`JfvU zEB~QGUmnHa9r7V|rr}**2L#{yBJVZPj-j81xwbU0O$UxL@X?AtP&6%48%D1d(dQJh zE8B!urm$<|L;2nRzmh_xr1HY~&W@YarPxpFwY*DvdauNoPLr%!D?ZRZ zz84?w`Hpzg_8plS)OXKwzZai86F!%D@?5&=5sd{nKp!@bgBLX>?7`Kb`(^aC${VjT z#_L;@Z$Z{*4h?x~b%(}Zak`z7so>u3iv(^ZbL8Xn;sTsY{(Ss;OYhqaIk2K5sIotL3poO*4EOsrhvAekxq zUO2FRc(KFJPq3wf_PE*{L7R%xd93UBS2E^&{xbBSv5m?nrybG0FS8m}!+UBQoT!Yo z+vHzE7sHUTww(8T7V<3o4CsLH2!MKR+8PtrOvAqNP?ijqg zn0+m_nxojngKC$-Gk?qZY#Z5=xISP*?)GfR-Pn-r;7n)7XpK@k^)nxauN!N~W{uKj z&i;@Mue^MQ`a10V=A)F^hmF0Dw)Z7IR=3}?&lOV_-KM9TMr`4Jw))7+oh(XoK4$@V zSd1TDID~m4a3s51x-`umr@nkEqK%Ej5eJe_x2Z1h9D=V}z;iM1&A?`sj%|a!Iz#0=7hprjm;<);)c?=*{9u53wyGZN>D_PjxO$TRb3L-bGvSf`wsJiF zF*~1U_r7IJ?ig#Xn-rjvst`{AQ}C$xSInw)3HrLZxLk6H%3$Y=gD@vtVzPxi}^ zT=3U6O-E+RM$x@1xQ<_r{AzPKG4;@t@Od4cJqX>rc6uLBd-z z6=y$pqy3hja(iV&J-zV{{{6SyKFt38Y1|iINZ$VNq*=2+U^6XV%zPf7JNfv3LHlWi z-LE&0Uk|S-=U6%5if4w14dQd!90<{9h->jgA-TB3YuL6%`{!|wJlGuK7CFQ%9Iv@N zbCp-#ZZ6Ne7+;l*a8G$l;wRZeA;~9fEtO+VusaD}=>JJ`(w#S0@AZElcuQfw2!|ux zSgbPlJKXtaGW=X+=!42M_+{qyFSAo+u;El@gDb;2J$F`K!qctaQyJuq$~@)Q^E;>K z{I)i#jHjc&!S!k2{t}<$<&0guzh3ZBJO0h=YwwTIEsW86`aa-zFmDh%PeXkX4uz*e zVr;@uSl^7%9&8xNU1BEPVeqN%7UWGFTu1qhjo5E2qTGMS8v~1PjWhTj=jd>idCprq z>e1nS>YsLmyi2y#bz=vex zK=_z#^NsuRvE=7zOs;+#TVNPIifnLbrxLh?UvJMP^72BBx|fzONckmypuFA%k7?}7 zT=w2*!ETT}JU>P33|X=OnbHnERF86)zP^fgR0n;MEt;k*b5wP$_;TQz{Nt|t?KtD3)ZBvqQoBUimm(PY?8G>!zd*+;SvH?y)O%}R-@K}i@9x8&ycalv@^2FRD+lMBeERy%UmShK zM?hcD#Q#KJhu;j)7xbdD3#6YkUb1J@cf}gJzv0moHn62Bl@(1@7xts67x3?Vnkpr~ zCP+7F=%yNa5v{aA`?+zKZ<>kU$Nx_JT3)`vmlvqCp3760*QXr+H{;ePIAp}RFNtFgb{8~bT)?1?LQ`-Vl_8ts1$jD07z ze--aZ#stTI8*!_k{VyEi$Kj8C!0PX>F<$m}{iXKzh!-7Qq^7trRr%eNk5OLs>m$;%)i4aZ_jCCpQkg*SL3txvp(`yn7t7xn&~bSHLxKe*E-C?1bx5#k@znUu)Xg zdzN@5GK+fU>-6zQ+Hr z6JP7T;%i~-YRQsy5pwEzPiG(&YOV%4R{O6Xp?y!^`D^B*`La{6M*{vJSnmD`W!27r zGUS~eCqp=+!_WOV$k?d7K0*9n1^#>QB`&LzF0^#RcocChyB*6$IcL~_?zv(QvQeZH z2dcA)I(ss3#abce7)(Pe_@Dc>S(A$$-pUw!f@|q&`4k`L`kT7O&bk|V`sV@Y$>sa^ z`OoUV#=wn_$%l7czAo}ta%CX+PJaFWqR+^YV4s6Htf9X_UpRQJzKo+UuX=sS&}_;@xmu!PYY5$xiu(by!=vp<)o zxSQr#CHFtlIt z6x6Q{S5vhg-~KjmU31p3R{Z9}d1KAa1>D;_Jgau>d+QH9PkvxKbLNkeA3mOVi9zls zE-|}~B8wE0>o+z@x7SB*FD*{Ba-x#67?f|QJspZzXQFy--XZlCVK*xNSIJ(Vmuv0d zVAg0#jyFxMlO0`#-nTIFZn+0j1u(VpZXWZCVcy-tT9Jfe9JEp7mFcaYxd@fn2n@2Z zRcBasIk|BI!M+aIt?hhmfBmbNfW;a9G4z!mrrs8K#-AHip9I&v*kx+34g8l4&uaGj zT84g$po7YYzy6+QdKW*P*l4&GKi$s#XIL>wcK{`7GexV+Pkg!!x}* z3%EOYca{gY_R$pFZH!SXuq&Teev*&hdh&IR2WPS1l%C6gb2@Ntq?|wZngyI~v^Cze z5s&YqMd4TUqP*YD!y^{I&jV*J_Vxtepk^egB$o z;aIxkTW^>(S=1@L;r|8se+BV@;C>3ezxcLfyz~U)qK`wTKZKJ^yi^09eV00#WGg8@A3c}{S zoU^$1){tbehCzCBtYWXV;63i0M+y9zhgzcC8s3v_6=g1)dRem#f5eMBdH%>H9}!>S8({kc&(u*LzR4VD*;Mx1)4T5d zRc7Z6)~2fWeAz+v{Utk8{t3!|it_)PvPQAO?an_*c(Jmp1LN}jPR=<7Hu!1us1SMl zhMa%CyZF{$aJ*JnfB4+_RE@FPO&7xloDrz?)fxxc$fe}61kd=C3|219`xzI#XWwN^ zLY#f5{Bq&HoO+6f8Jjy;T1@#V#@(krFq~(z?l>Crtim=E9sTa`UMb_ryE*GcT}3??S)I;avpHYFw=S4}Da4^pS)nmh%yf zh*o;(qd4@M@Hf=XmtDl##hk8p^UQ0lpLg?Q+K0CNE98<*%eLn_=^RVduTPROOx*+=XsW4~xBx$^T2>o&~jj(Onq;aC^($~x8G4jxqhQTQ?E zo|&Du5LXD(?-Foag?*WVeoDb{?BTL5>GQBX8q zlo1U*W{5qPW<;!cZAB<_>Ic`XUwa|B{;%@;k6e$+GPUnJ{n+7a%1qruiy!QI(7dlU z_X5%6$j-gY?L8kF*?9%u$DqqU+-15?-T_av8qP%;(M%i78`%S<@NDJE(lGm6(yw%g z`=U+g@;EZ*o7waeeUQF`euA@N&aEnBPs|v)Loo*BBv5Yd0%%b2$RvD_cz9e_ivI5w zU9`sYZ48!JUo_J7W8(fhQ`6bQ!|V4;#2J^5dueSCIhsT0&lavbI1g+nW8~vx&eD6k zI&WY<5Dzyi_wS2mZSxy17rU!8qggncD``IdN6;|qVZKqCeB6m{N<3~RlcewUCF^l)BRJNS5p zwUS$C;}~Okh z^-^)ZVSftQV9Jjk8c!Y?YPOyp8cLnMm-W0ntLq_O;WpxR=3V*%eUg_rH(d@NdvmwD zy|XOE!wZA31DA!Jn6BFF0QS_w6S_qImIk54x!`RU=Zq;gBBgb+jQ_Sj5&!i1uKud8 zdf)bw@}=OmjD8oucgL|+i-6;C@O%W=!u(c@((%s1b9m=tK77cZ0{WH2mJ>Xxb3S#p zTYS&#T!EZB3ci!T+lDV8ew~yt#*#ZX1FLu?&3dVMf}8J8*n8S1n{yiNwdVgG+EJiu z`tea)?x7vi_04aU*LMr{sjZK8r>U&XDSv3kHM-{B)%Kq9o*&wACD&8l6!tVldxLN;U&-7J&{%0YwZ3~~poW*+#9@xfr5Bi{< zd1;kNh_=DG*5kCJA3NZSksp0d1zyQ7zz3wv23G#rz792a=f) zD>EatX=G`h*QRuz+Eo1dF260>mMm3UgCtvXyt>CwH*MzOSN67p?V58>VdoxXjc}0V z=|!DA^KshOy{LzmFfo|8$0M4biTQkj3`n7i5N4akwy0tXH@yvzxgJ;$D z^7pJhxHWdM(2(XJ+&#*_^v7-%?bE-^vHQAU2kyi0lIZwf$ffc1_gA>qy)Sv+5AiLy zMBh`P?>W3xYb!JUdRL!$*dyiTGx9g#2gk9w4ZkI;1c&4e3y$ns znsl|xLryUcPL?~{+1laEKPm4l^I18*RXOuo%W{bEI3WJ|eH5b!MXPV4a%Z znI7n0*D?6l^>6g0AuoSvZ`j!SRY&3+`D zD_;Z5HNe&O1a#K(zHLvl&Zs6nzOL;X@LD9RuI-x!`oZ_(L!4!`<{>zXW%QHi_#D>r zy?MQvJLy(4_kpGNcRgUtt`R)9>n1DEpsLbqT{6+QrzPrf_xm&iLvA_HfYI;kl!# z)++ySKD^hyN&7ftb#6lk#z%HN+s1SKo{g+;gZJ0dUN!q?q2r%T@$8L?c=sy$Fe>+j zwWC-^I5N!oQsigLUC0S=)&^~kC&s@yIil`pIeG~mIkp7(&b>+4KPRYDd+2|d-~U-T zvhGdULwCfxmDggr?mMj9ucN&4QuGCDFO-_GM|k!*bgat%-?S;%{dWKO`FQug zsV(Z-hkOw1EsLN*yY>Y;4!q@zHmB~JZ07p?c?Nl7`xD)__6YFEu9?8~KJf1MZ!+UF zjNIiV!-qBBKa@T2L-^&KCs<&HcizI<5Z>$D{||1@jL#MH!SgEb{b2m7YkNFf@X64i z<~LaH_bPh(jd!11$(aYWZ?KQx_c{CE2z8Z?H*<$)o7bKUjaZqw19`uM^?q~E56B*! zpYX=r(8gWR;w;Ij;Vd6b9vaCi0*Rw6qiE^kvaHY+WIcc7D@zxlz zBgxOihmi@?8A2~gj-{A)iz~+D<>cs`HI@66%0X9>C%iqcE)hbUPRDL_< zDYMF)jak{3@Nz;Xs0{q2GM{(t9yGsnd+%a{+PKUIRR;c1nSZCu=V1FL$1u#TwhPSjnpT(I2~EodV}e%ryV>e;Q#R0+Xlbv?<~Ue}`}Jke$xl=Un?QJqoTtnWRptg)<{kQD;i~UXZ(Au- zA^ZZHwWF3ed-zRq&s&gv#o%^6e6$`Onh!6v!!J+6OU0qCXOD87DuIu&V>EA3Zn~ar z<(_Uj*yZcaT{P44t`}1Pw=Ilw%##r@WQ62HjNJJ2dD@VUkzQ%TcK;)G zv(D+znv5v+oV983*V5>@GVEC2hV$bn!oB4g!7$Qv|C@5BF9O~%$Yb^zt|wliwN+8& z*jIqxdl>g`#O;_7m#r&*`o6;nW17_m>A<*jp!!SStgPYwe!p+nb1~{^p`O@1=kJg3 zQiu;zgbyQ`Dc@!i^Mr+rV=m)Z!Z_wKjvA*jbZgohv(~G@=~!Zl{1#5Kp!qz;N;y?A z#!j)G*ND3X>ED+xV?<|?ap2=ApU(W8MdYLUccIDvkIH<*mFcDXdT_2X*(x*EmHD_| zPX^te<$mgFS7v5L8O^<_ocU&f<*zsw2l@1{TB<&(7h>h`0Id-9+~bwC$_ zcM8`Zfk$@v{ZAPuv%Go2VdL3f{EyCN-OsnhQAU|CWm4$2G``$VDI?we8s9D4dx>w~ zzJ2(pSyRo~2$;5`6{o5k2~B(Ry^}cWFF4=W0v;4Im?yioz{MWtqxaV1n`y7@`S@w= z_&Chli-lXk(<)nRkkgJevMjr$5fo zy|YvXJc!m-QRX|;^#MMj^Rd2Or9Y=8Sz6^>G*jAiZuQ zCKt>%H+64bNwMTN(Fdtl?1{LiZL{yS>{qN2%Wns_7rJ$N8()?-t+q zpU1s8#d7fAViYqvQ^cH-z8_A!LT7;6J!-(`QE1V|C#DP#p8!YlZ51Ck#3dAq#QyIe z6TnUz0S+{`ROr!}U{Sn5^9CA=sad?k_*>lyoheQmj2lGIGoss8;g&!S#~h0=F7hYZC}=@Tg}g{1ZQRKJy)a9?#`a`FN><*9Y|TJsd>w z@BOyEPg^=W$H%!}2Qq5zO!!T5=O8PtqIuDcgPe~beJOvl9lXouyO^;$5PcE9BXsIke5*P5 zdL<$D-V0T+uR(mroS1vIglG4MvT6%B8*W8t#o8w**8|OWB&*lvga&s;DxX*@pRSF4 z4+>bD_cdhDVD?(rf*$Umy<>cit6gw%0=<0<8FU>TsNI*zVvNpcr?H4c` z*&5vc>Qr^8ZYpz=qpC*MMKwohM%9gdJl-|^anqF(Hl5@>0GHd(xJtB&9F?DXz|M;z z%XvQ+8rVcma5?Mw=F1j@=Cn`UMiXXVdHL2Zj?f}o4xW92Goux+CT`K(X0lc)exS3c zW|*o&*r1JriC=VhXHot6yU-8g=#Q&0>(|D$PgYOXww|lu4e-?i?^|1e-?B5ME0lAw zY)Dpf?(pnp&4HFMhaM-7i}`ETyIonA&3x+uoh8Yk!vH6+^aFvSuw7 z|8SjRn&}eyIE%hi4Bgg)A6><>qWCp+EpyPd6Ish&KfSKy4rFVDTwI>3k9qNMT{-g9 z#@oT+UlflUiOc{GE)HZy7cyoAjMoL&9ckeScqC&4i*)x)-g$@mKfP&sT|B})-fuyl zvWHQ(>Q$MRk%rh(!Ryko(zTL*#Y4i)iZ`=AZu0{2!4@))V`(2cF2F|Fiak;a&c)B< zjcnfxZ9D^Q==UPZD#mtNX?16VRKQb{CsoiUcF{3|oxc4OS z*LBh*bK>3lE@hl^uyKYV_r#0Prqv~-W^i+97jqEA12!Vh)Sm8jU~lNXvRYz9fqwnt zv)C-i-88ye_3eRo^-fGSy;sg(PycPvBJimH>bu`B&07lJS`)8t@wvWruH#1JQ!6wt zeWiJU$QzFy-n+QG>xEIKwgx=NhSL7RvSr>W4%bEHKY(N5TJdTI0Py^bb~AA`1pF2-2dMKsJEWtry)=Ijdh^l4yBC*s?Hx6ww%miq+H@W~ z8uwm!3Osnw`9XMo`9Hw38h9LE&FN~2l)V1N8`23w8cy&n*^(wts)K9Eu|M;@b)vO> z4x0KA{cQ9S%oe16rX0K<+B4|;3FG#yjhR6!L)urG{csAI)i?+Ht{8F=br)eH zsB96xBlN$9ebchQh45mpdvU>B2sD^r?YA+Dde7K2oUv)=JiIo_fhBL;USNr=%me48 z;9Plxy`AHt5`a0(?I{I_h{v7DZPT*kQsC4A99dFue z?a%hmjuTu9AEMKoBb<-r@uPg`;9qb&-FXk^u8&q9GX3dE_zv=$X9WD_dq;5w4)#kM z=Qr5Cfd}>Po89yYx@jVRRxs%kW;{!<^IPy+v}cUgWmS>WA^OqtENG>MF{mWUhP*-7{_086eow{sbIO-IHzuor^GvG9%2H%9S@o}R(mf_-sw zj*sp5w526CKYw@c^zqqxc5cEpucxeJk$5~7ZCWdt6h*cc;(u`ewW#5& zck&(_zMN0t%D%96J!KVNogp8NvT8R*n=zAR+YG)Vy!f!S(N++)U^zFR_1KQLPsrDM zY{#GZ_HnucpYDf@q189Y(QNuN7T(c(Wte;_U|_#yb7~3wlK${{J~%)8{~F)Y%|U#Z z{2lmCkp~4Ito(cNU5U@EHiLK^2;V+z!E!#n*LnE<*8sjhm4R=?gN5&$0Iq8@a4nn% z@y*%b{plMzmW`uzqpi^TBh=^iYV>Fwewaz_Qy+cL=rqv0=(~z{N};tX(HS;QG@#c* z((8=>P+$!6J)d&P!1FAgLzlJI|Ah8iS!0-h#y3(Ic17Jlwnp5Tb8LqwI#F@OAPy6> z<#@vRsp1L2Xn;|C!8`rx;r(}m?+?iH_z{Zzl-hcBW6Q-?XSVB)-IdR82#jHS ziuktEgN%&(^Z7@76M>I3*DssI=bsCZsT${O=2`G@caaCmp zZpJozhBD8aK_}`NC&d6dbe@u6G=rM=VNdSHUY5T&2|VrRovq{cuib2hG_Z#l?+rPz zoA=}w$d^)lX~VeP$ffLt@jS=BJdvc2?da3Z^l3A2Z>CIa+>2|+d%w5Z-}~2YAy#vR zeP_stdhF9SHTsNNvI4MkT3^X*gU!W{T*H~rPTv+%7LeGJ_Z9CP9Y zbHj{xOC+~}eJysz!Gi%W=2GlveBl)SucKL)gKwZ6%?n9ipr7ZasXOi4cGNH1?gO$H z(c9MVrw+yJgLMq_&h7uhJJPLFp=qs=?WJezEJJ_N_#yH^plRv9K0DjfjnnD-czEh4 zcELjET4l6nLk0Azv3iLdUZCRUS9(o?7{aE4kmzuBlNixxWxa$!Fqmg;CDx4 zLPLkw_cmZ{1yADby})&p{=oaqFLJ+=cYJ&ulRO|ca4$IMp}#HEGtfJVXGoUl49#}> zB_ByRC_zqa;~l?${{3JXf2{Q#r1#^{b-(?H(J!L$es(XkDZ6*0=CF8|X1O z@Lcrz7oI!%bUv_X?OXT}T61>Z_UUubep9T`Z~t|*$8W#A50i5jl>4gxG3tNguhj3> z+h*)vLXM4MJ0*V-%<_;4(BCd=bwxO@=iHJ}l1e#0EcUKI7(SlinQd4+8B@rd`SV zAbku4KbhlW+Z%!nLZ8@E=x=Lxc>i|45omWf?Y0KSFxdWzOVxg#e>sk`duyU2?EZZ1 z?`O?m0don(q7j#Sr@ZSe@TWoNOhor|Trs#ded(+NIq14M*ji8EL!W`Zj}b$gM4r~9 zNkeNVT{io`q!D~yHT%G=pR7JKxxC@@%D4BPzV-IEPv833%j<4^_Y;R%*m-D0*FBCsqc~BTb~|pcYq8L?@$N!mHj^0}oheaC+ml(dTM)XSGp6fN z=oPM|XEpA*j9W>P^-jcI)A)B$jUV)=Sd)0q&PBoVN8$OFS@0ucTP0afUVcLJ$x9*0+d3yy8>)Ez!uIA1hfT$B$D?^Ik?bJbI|7ceqWaD{!iG$#z6wLT)Y zy=rY3_%zQb*%QOQOjCb|eG1aF6=Hvan9f*coN^V<0N<^^SH%1t@|5_Sn}Rkq@t8fWxy(WOG9_IY;;1uvVW$3_I}*)sb7a|D#hp&Ur?+!s@!;R z`f>6^g%8b3_hhtVa@HTJ57(d881%{m-u=>c_NfLp+*_r24D8Cr6!RE9-m8Im8U35t z*|SUgT<3y^BJeP)!>sYkNME$F=IcMWr|<9corb0gp{ZqD*Naax*3s={Pc&aX#PN-_ zj?rEWUdUmb-UM$m7=!VA))PyNLx(-AA(0MAp_jEc zzOMaye*HmyoP-Vx$^*eS?r)9dT$_r3w}KM6l2*xyXt7W(*yJ}mEK;NXe?4vI2xPz)`x z{$}!d@xb%H1sAsO0bJO=|Bbkafs4#O?W9kccF*15=O_K}ll58&{5gr(CFcyh_SFbE z7|dz->*P){kDDsauFLsqSFWXfm2Z%@S~+j@S=+>FlFZ6eq6NA%?-VEi%PSM$xYRCTtMLG{1$);C7b zy^%pS53+?mUQb?_@Fc$dBW2e18y~kH$jj)mO!^JNQU_k`Z=ZgdCr^Vb;r!c~c*#4T z{0ra(TnH}~7x0^62q9?G?mv%CwRnLq1$PjRF$2)tPw12KK7#URl9h-3=gTyotFewA zOs-Wfna1=Y$++Tpe$tqJyl&}0bOS81sjR)P96@MjGVe&|3ZLs}yT!w&g)3ryC5@<(SKhDQ%9d-Tr3@aBQy zah&&s{E{A-H@sWXB-Q8fV+vZ;IwadK`0*yumH2Tw_h|c4kIv9vj$ULZVRz}-`}}9nQVaZH=?8ks zq@O2%#mcMzkA(1dMaP;u&^)4iW!qoDBKWX5tqg)@dMe2OK=xeRK%e11#S_G1pKb5s zu}h$d4crgXUnPTdr%V}33D%yaXJ_x+Z9Tk1|ku^YWM3~l6qqf9)G^v8FwTjQ;9{fKl%0Io3O zEt^DErfJ$m?Gf=Rl9KCkm(^60@I>s=~ytt<0M zzf1<)-{*d{@Q;n8x_$@W_w;ZEmCon2XTM)x=kYJ}!Z;Q)o|3aFFS^}?&g8wn{Kl-g zoqFEj^Lekn^Nr^^`sr*8Hxb|GZ(28u3A1qy~`NJRXEk@4U>j z9QuM!Kev?_IrE$L%t+baXBlIaQQo2CM(|y~eZkKdt}?&&)-8E7e_f!TJLu=jne>ur zA55fw^wIVMxLfF(;MxmZY2a=_F1hyIxQULX2fyjX3~W9O<%gO! zZjgS5TK_V`UO|7QStnrQY>|g|s7=jnN>8PMPd4#OHRwp_O|VDNht5Xp^Uo!}wQnNv zgMRSmV!zt)BQHmD3F528z@=D;YzO@X;Zt5~(ErukQz5#x2wiOR!5BL~cCNXM@x-8? zCw4pnJa0Zbvvyh5vfAgN-xm7$47q4GFJ9O+Yg9J*nDOokVpPNr=2j377rynom7M0M zvAf!-S8>jI*b-??3{>YNW19EzIYB;Y$Jv!Dm7gtNK{k4XwkNZ0 zRdLVRyH_Yr`!$_+pfNFLA77a?hFosbS;{yG-URL9|GcI+;}G^cDV6OS%C_^A!j%bS zHdmzSMR)Od)86~~lJijrF?o0`pB)(C&Xk@_y%CX2WaFutb#Z)A-{6MZH} z)3&7;_)FMqdx-4{&KDO)IkPjnQ}dP5>*MHK3G~*CuHA$^JD>N;z_;)+m}i>LswR%> zgXp)diuf&YGqbYlWAgl$r4E<135IAn+3IEQN+u zw{S05%ZML@C^HlPIUa!dIj`Tc<&r#Czb_H3BAQa7r z!h?y)tu-ywQ%HY`sb>cD2u5hS?s@vR7@0sEtXXu@fo|>K`Uv^jSzAYP8 z8Tz3z>-{oM`FkL{b$;F4KS&!*iaC!OWNoCVm!CUfOrQMU^lP)`fVU?~3Ljp+XP7a> zPT5(+m=uG@JYtWrQQ=zco3|c0thp-jEcsT=NAcN?po@y2XWgqZgPM`$HqN1(1kD{N z9@T~|uNZW=_gS`mruA+9Gv;LvNf-9?gtn<{P(Qy6-v#|k-%ruph2-i8#kNLbm$H9n zYk`xe;w|OSi@%nWpDOy>%tz-vNxrq8UAA%=v~)zWnD_yHGI4d~eVEak*>l|ZpOsx)+JSZ3615*jI zu^gUCfR6-n&zQl@eR9wFcJe9O@e|vwhNq_x`-8uaO+=Q_{xOfvkAuG|#Rj0|G&Uab zre@DpsAz@F zb8TVjIXZ=T)5R0IHY2At0>5km=}wJZ1pJ-yz9o;vYtMS$l4TmV9L2qO&)F@W9}66} zrNwuH8vcRrPw)}EvQggo73=YMH%Jf8e(!HjDkd%&wG8~qJ{k_JRa}R-FTJxE8>5nT zwa0E1Fo@1|zp$xtZ590_ZcQJ(%%g9WS37fDS@!Td z!hUq{GG#3;wU-+2>&(jn-XlkEF1GnWlW_AzAN1f;yu-o>u3LFm`|-xv+fM#R5&WYy zu4RF}an@$5M@ww#XcK#)- zya4KzoTyaXjy*7?|F&1Uv9a*c5B#`YxlvOm_)FCL`A-Z%z(sc${(A$9}ReF%PzdJnJ)*9dFM+4qMxB z5qt0$U^UcR3Z29rb-2|SPlv{G!Ff6ORxX5SDgq77;JX!FMm%t*^yLh2B)WT%Ha2UI zU+jGL_h7|&j}>v(nyn^*hYijRCg(H_vknLfqft;9r@XkXea;I84> z`lpLJS5Sxc`4m27Kj^ISAn#}X);PZYx>-|4+2Ht{bDj>go(YE!!!6iCveU}IJ@(7w zEGw_FIyWMJCBups5AEqwwz#Y-3~q}@X`Ya?dBJOnGQwXHJjUsV`X;>vPxQm5?8Tpb z+3gdq@@Z_YsOTEF4DWgGczon?*HX&m9`4ppN4;~T$6gGL%ZB)jn}bPu_b=vt3pTU% zBwzgjYo{DEPrChKkV`h#|JT?b^4-NZF|MPkXLz2oMZ7r1t15$zLViqExiS3y&{*Qj z)LF0cKXZGLB)oNkZ;$TN3twa$)-w(sJN5JD?*+%f`5y7J9S_F6ko=9@vv(a9A3NGO zvcCqNsexzEclk51ea^tQ5z8~7&UR>P=6gLmH{v^Jon??dI1l=yLC#2bgd$akB)_C9 zY@9-S?II_>opf?W`aJmVSWCwtOUDt9j*rro_Kj9oJT= zT;mdTc}^*BpNG$SV;zFegoDkD;Xvbkmsido?{$>hNS)*PBt(Drduz$OJf=qi$hjMGo3kFi>1rn$4%65d#i^2W;Ve?R)ft_b2obA&~U z(YfR+ulr5Sp(4&3sRlRNH@+O)KMC^CHU)=7pd#5y)_hBn&Lk5oI6&Nr_;v#@LV6SiT-$9>u}a6oV9|l6O{X$kF%(w zZy#rSFY2S8IP{}^fd<0gwhVb@=PGNj;eSU^M|A2B+U0GyB|2{t+=rfU@ z0rO3cTmB8i=g|=%tGDoXSod5s_ey&%LK*#(O&pRf4sS~iNAdA;hR08*;Um{)mnRv^ ziraGPV^T8ga_`K)iyW;d0&xBQmu8Lfas9E-cQ8II{D+2DHo~t<-f*_>b^}b3w+Zxw zbebVH+BC6GRz5(TL3k{mQIGiS2cNO|2iwh^u8#P7J-hrdmfjlso2o-P<1&;O=IIdE zCj$-q)#rf@RN^1w*AwGnE`u1{K>mf=iO^0~VorCpi8Pm71g=o`S!?nd}s;lMgHRv4G#$*YY_Ot7*emQ2a+Z*3#RNE69rkKJuPc zYc0f!>^Y(Pi-s50mM@-vBRK{u%Q?R_g04GXUBC9~LiTKz>>&=D{{k`7wyEtm5@%|d zA-jORD{G*ub&P}R*C!i)LEl?AldZ?xc`BFqUCqObx>Tlyy&h`fx72OnY_{c#7g5jP z+RZoJepv8rAqTz#n6{8xxQMo1Le4!wTiCe`S<4IapAMPpJLvbZxpTUQvZiuKXlU)R zxx>0`9BKeuYz2PF=Qi+@GkiwpM(ltN@YKS(C&k|S^&9)W4I3JJdCU`>)223`@XqW^ zbFYni>T{cSZ#VazXY9A)H|tC&(Vuj?;%n{LHEH&L(cJRtUom#TJoeXBRt|}-M-bo;0bratS)~7j`7TPZ$A4@cH zmGbrIoAwO-FxPrEjc<*S?5EO$=s@}tV2A$pla;T1`Q$%*lKMs_8`Hy*jV%`?8==Q( z*wL#~%9XmqG`8Gj8XY{&c82a7(Jzho;f-q3#_C3rLj+xdqsH{tsBcQL5ngXR@O1}Q zD$o74`x^$zzOJ&~v*#&m-&4D~N871u`OauxecXPycYjpd&7l6x%3|3(9=QrDp?@8W^oCvOrmbxlZ@BgXd$tbFf!kN{xZ*leNbEX(^f}d%u{2NjXC>6 z52mq2(!*S?a&En;%Oe-Mf?VY!zBGQocHa+Z$9I+=dIr5X)A|CDPTA*=;|o-fCto&- zd6wUW9*i+xFdbN<(QsYf3|Chio_QSp9%OxqNJDnu{iELd3Etm>{!$;XE7(Js*!i8V zPr3B32|c1`x!ezX_oKRx-K+A7K{+3S^|`B?mC@MARP58 zgRP@7xt^^fdi2|Q#Nxrl6A~UCbayj!qqsr)U4{8Gv74J@ zTf|*#U-1(wbIMJALTgVJnf!XjOu1gyW1CrC2FJ2blHgBtAYGfAOm&q&%U7T`N`NUv zzfG|;naAM|rHWRkBa{2|E=Cf2r@2C#7rMQ#uGTn|>R=@a+2=Cal$1fJygy~18Xp>gm7 zWzd(aLpPDf9Szl~-}8yxM4+W?WYzPc9p*!_N1C0)`nLPAzD3M^DBgYsx?N=XCc9H{ zvBl8M^NjH(tqSY|+OmxwN z%q-*lvlpPBanPuEb7FuuU!V=qQJglE8>RkR9LS~v52X)*2gQOsc^BmQjnFdkWwqr4 z_<6o*!RKSo7T&Yt$T+=%PmzLNGvAjVy@5J~FY6cZelb3e{F>nVKj;0RzV27v^Mi^# z*&tf$2M^B$&wTH>^p~SSCo?8y$P6b3lZRYhMe@+kC|~sFo?Xg;7i~YsZ;g|aJK2_w z7kPCYXS|NF-x+x~WBjpIS>etK~&8G(WBQyTelt*kQIiW6%53jfj zV>UO1-70_0juZ0I>I2KSCSUSvT(1r3;x3{im8rLN5l6%Z9rk$_;}oAh035;i%m1J7 z^Z<|f8{p~q=RSCD`+opW5Axme1n~T>*Cswce)b07x#F+D4l2sE!cG=Gxy!Q`Q3CcJJF@_9VATakRj z8Rk?3e=y2($&E1dkn7oXdQW5iNy$+0{uDoc>e<}P8H!gm_NNY>M?V+4{o{^X{XC|3 z|G0~5ktf5j?{CERIQf39{b@AAx^A%jMaMu}jTXqhqJ>&_BP z)02(KP}dEbZ$(COzHpvk>rNFX8|`m1&i;1%>+Pq9Z}3B6Z%OI5gF`HzriQtE$hR+{ z&N=uC+C$^f_%}6XU*_J-i-{-mPC~lxcP`G;YUfV&fB=B`G0)UMxJK|b7>;@orAZ~0>ie>WCnnQKzy zj`dUw+Lpd!Mt3FWY)Hnn6m!-`9{WeO#=Lc25xdSyc_jY(Eyeh*o(z!8)V`c)-bus% z+UG5e4A9!&h({NSGbBP?*9)&3Xfs87IoN7nW8S^zt}GV=jKtX|EZ44s(wdDH%Fu?5 zyTy>Lt;oj$6X{$DZ4{W$sW5h4niyUy?am(^svS>W*aC7%u^U$HL(VW?j6FEGvygaZ z&8XzkWjDnSpXpiuNzOZ6vYY&vGUko7k5!X&_At|E*E3l9esl-2yYaT=E_bq$`eM+S z{C>%vG_fhcrgr_dehnQjqm9k9@ms$Qe1`T5lZVE?(=+V};%hzgO@7Vj_|o;G;tz^m z+MuI0?%BM1d$>hY&W$6V%sX9$ei++;$@R=oZ>*AGLg~{5-`h z6$eXUpQi@EF)-}X`a0jHs`{suhl-Z`=ydq47f*-3bL@1{qlK)2{meIs0d+^>|9YtS zp)IG2Ya;7f(F0>|S$^nDsQz>bYsA~b{y(gp3w%`7wg2~-BobZ{i;4=8nIyds92tK2&RPQaV4<-;_U|WJ|vD(%kqJ?U2v{0Ga)&M?GtPN0G z`*bD=FYy7^wuwUX|NizqCpj4hYJ2~DK4E6g*=O&y*L$tK_CDw_@U(g$*ICmPug#(6 zYXt2QlCkk_?IO_qHR?00$LRZYWGkxi$GLZ2H2UjD3AN3#Ew9n`$Mk)g>!133m-|oq zw&f1sD8{Z!pXDQu#mw9I|HA7-T7U84=a<(KTRMH>`#A7`7av&eB?j7c8OhQorIX0* zL?dQ`o-+xzHmQ5x^6w?dw}$(POIO@@io=l)TLRd)-eQ^u+3Rut`XxTh;qwYqe`or2 z{8aL$m|VGf*$>715n$6^fL3rfS>xjidF>T8#ygKVJHxYjw}1zn@^6&Cl#acbw#rK! zi5#*1W^>`HA=Vjf3ruA1b>x(^7iA8yP289*+5DG(b0uqFm)%o$Ah|_#;RW#ERCus4 znQzy=1V=t&wlk*Af>R!MXB)L6_|g9@IHlM3nR&J3iL4CJZY0;OO}rtnPws4i;C}HT z?xTOUdhH%Q8+f6gV`$fv)yHq{Aa~0=n|vO~roYXfh|bcH^znx9BEA5Z(r@Ztaq}C< zQ?QQtK5fEu4tU`+jQ@`iuZiVq`=giq^$^v*h4YUSv~RM%?{me`W%!4e=^F6XO20LS z{jkao<(tIQ7re}RpFd8xe-{t+)QfZ8UaFP%La?URnZei7Jo*BI>Yjuz{0ZN8z=wc7 zT?-k+29`s{L-10VpY2)Cde6*7=yk3AUW`wQ ze{1(Dj|847;1FE$jR)(xgUk9j&`0~EI-sZZUk(0iRXl~gs(DGYL1xo60jxg%Wc?QI z4DkLgM58eNu09;RsyF!$;C(3vypIB}-eKT)$cHuSw_ttcSEfNWOneml3!g8w@GR3( zX-@90HxPZ5gO^T_UOIR?xI$-1_ATwPx%ipZZ`691>UYp9sjsS?^8RC?w`h;uU88HX zvGkC9(bn<}d}7xMpvS!EMj={jj+K8QRa*UmC70=l@5p!97Va}?X(|jHg?BWOJk-r6<0RLMa zqD=;#k{=$1oyWjdyzi++B^FI6;att2vWX~AxomA8R#TeQTls(4$&={{U zMwjU2>LgqoSv1)B%A4?+p~XJ6FTu`eALuml_M8W964X)60G=6f`|dO0xD|YgFGNQ@ zca~ri&CwC)N9~77Wz;A4wV(43>Q_1-3-6Ua-c{okz#j0?^bqV11H0pI_g+K!=wI-8 z<5K_g^Zw_>KCg)9kAvrL2=RPaKKt7JiJ|;{-aJd=X=k!WV~9J?P`Uouj5^#A!+nudG%%VR9rcG)SfEYJ&XT=lt~ zKDFj09S~kmmp)7s;(MJ*UP1Apc%>A7%ivp#w7dXckW(8A-H~DOfofY-=L5ga#0Ohy z8j4&!0kIi;#Ix|xsrFgEQ@eogs62t5O%LJwO>wI~h+nPk5U=pQ0UuX>oi+W$=qH1J zuwf**k7WP)jBF5c5~Ux_MSh}cxx@RLUNr@;r1{#2cTzDI~@OQB{k62Ud7caAgJqvv7v*CjRtvu2K4!`Y5@UIq+yDJURuQ%+EIy@^v;< z^D*^{xK|uE`yazjUkY7$9CC!8ElJ*o2?q7I&SLY^xp_k)vv>w)75&{{Auv+`_O>8wWXDeeG0z= zxB_^z$5K4_F?ett-+SRJYrn8)BpeK0;Bb%`BsIZg6Dobop_A*gr)6%=M?tf;wj+FwO-!W`a>TMzOUziuj@m=c4H3MibJq902^z8-8c;6 zZ~7tNODMh?PwtO-MwL$lf1l0)UpD^i??d456FK1gTb~{rUIU!J&ytTr(Ki=-V{*V3 z#^2#!E6oAh%OTjR4ng042Y-JmAU@Qp1`1SuI{?5t)UoZR}2Da04!1k9TdUVT0 z{~z%8ksR=4kVYd8c!-rpWNcm{J>Vx{_8zJ~2 zIpF(u^z+6X@b#kaVPJbI2W(e_VEf|>x%JBn)*tEFZvj56{l-7oXXX;)Vc!~+Kg7P> z2Yku1@ROQ{Qh)6H^|*X0t$F%3pZ$#8{?9KNQ+w6J_VlhS|HqDV@>uIjH2ZnVwZS;? z6An4fsiAQmVw`Y&+`kx)^%&*_yuqH2d%MRw^t=X##=G<18;`w6L+p4-e||Ry<0TJ0 zzkd|;;PKjjW4vb3?PRwXJL>OoN(AFIA9}n$hQ_<_Fypy;_8xyNJYJ0P8tX*| ztoibeoVEKbBUMgh?m$qm0DFm49|JVQT|ltRLiv$ z#87$crOY5B9(!e#=TS~Z{jR`gf1SF7Uhxm{SY?#+6QX8b1+j?7x|!M;bYKN>mq)zx zSL8$Sf}uW2aT2vIDeAm!8{tKH55=*PzZa?BvNe!?d)1Uh5~luD#+CmXX*Bh(@Ljc_ zS~J_m_pMxSl&_j_csBkTg~$e3J`~Q$uis<$1Nu@AdGX)#sb? zI)u{#Vl>toy%vWUvk^5 zXxyHqJ}W(F{|}jCi_e2CwX-;TF<`5iL;74TQi@}wK{W(-bFKi z2jf3Hf5rMMSQCG6er&zgH zcPWJW3&vAEzN#?Jz6Z`OAO;Vv2V=K#U%d2w*P?Axsd0aB^9{?g+sJ>5z-y|D4d*x_ z%(3FYl37h`KW4mNZ(_{ z)D-&Pb^Qy$^`hjqFY;aZP%J)lvuXGea}!^O`Dt|4{+zBZv$|0^s-#;ZRE|h%C3(sp zoQ)izAISZr(#Ua|+_*^&tk3JtdpLe>RnDC2?@;IP9%E|!_n)U0#UH=ddIdOcuSuqM zkSlo_9xSAmR=g^{tt9rm4c)Ygy)jRbzkayUtM60D*&_q`YEO#oW+=Z^^IdTQ$ z2)Nd+++j7}Wdm073C+I%UNnF0hgO~6DsYzO`%d^TIKy$aM@}nVZu5IPM)K@f{?NU8 z{(S%Wo$#6Vd8~qu8{uQE#bwZed+6^~{=^5Oz5e}k&~e@MQ*G0j8+M?1pjoH$E28>5 zn%d$4W^DppEWNOqJbgfu2;Xa=Ner4yf+l6qqyU=K@g7l~Z*dzqz8(BM%^4F09kT#@ zEhsYO3($`X4w%&o(1`&bdEk5lc4onW$m&|2!|vE;N20fMrpzL2#z}l5g)+0b8k z>@xZ;!|qhU%k9XOaJPf~0s*YTlk#-`#aOaCbDGIna$hu4J&$aTzE9x0&WC%6HmWbt z`?%)71C_}Fd$vR7OlZe7duA~7`}1?Or*G~1QSL81FArKqp(S~#Ue|}QeyL}^!*z7N z{jQo)OI-d7%lFmbFuWd`RG#lo$5`G;4$?-xjn@7@5 zb04>sp`0n#(v$t1KD0`xCLO(?vsxB%_C$IzHg+s(2c*rSz5LjBUn_qBqF3w*+edb>ONLnU_B)f3YkM zZ((=N1xGde$^N&G%gV z{DSp=dg3R=W=ZYmhwiEg)Sgz=Y$%?qMvqrFAKxvzc0Foj+^*S4N2RNrO}~oq+#K9G zkj~4QgD$Fway9{Y+v~&iQ`*UA=9rKsf@qWVv z)EL%{ z#wqsP{PIrjc(Sl_{<6ZD!=v7LdoJ&>xteh%`{P{5IBjES7iyz%)UNk9eHo|Un$e+g zCi~;89NF>YXvP`s_c5ArrklP?u3?;6{y3+IUMF=t`8xV|M(o-9o`$Y9vr&yN;;mrk}aZNlX{yfxkZNDqg<(=63xj*yVqG26RR>J$>qULJFfs8F1y9z!i7}CS@w{mR&JhVHnaLk=v;g&oP zIl_)#b+&0LtT?%TfEQ1lcZ|zv48YgD`)D(P&uu%fNxP_-+B3tX_O_YwwrS|N8Pu&+ z;ZJTd>U*-^_w^s?c=9y*KCPtXzT$|t|1_R^+dFDW z(QtV9E3WTF^nKw`wDa4H^ZR}q7}W1k{GA@^dx78gydyiFyn()NDA{`7Wct2==ZYeO zmz+l5ll{J{>HAXyJDz;=BI;Q1V`uwqW5|*h@s^Me8dK|eOCsRBE$_%NoIAB8un(EM zL1Sb;KTmBKwfL!l(2v>~`ayr9<639%jQrr!*}sMk-igiMMZG~lt39+8AMb68m%mX( zeT6r$<}PS|B=Zr@z7MT4_!J&v^B&AC8_n3otjL-%t9+21z={-=z)X~{}nQf7BXCGYMj^-{NK8ZfH?=sD^s&N!g48T{sOy9Y8 zv479{)2czi&k;<`^1afkKc_R7KazbujADam9{!Yg zkGNI5mzK`~4@-{H@Ns%1^?3BFwrO}#Img-XvEteo@y`nUUh*k^ZHlY;P_9%wch^fU zN2C7VBQM<6A9)DLzzSlg4E>hcxR`S~=(}x`VJ~YuHCO&L{VJ!X`1gP4>$iN@`93%B zJwv>t{I2GG6YxF9cg@-QJ5`?Dud(MW`8$KV;|b-jy@c}DyesQW;wkD?V&lz(1NZ=5 zl6xOD>r7#7%8WG=x)$`sH|xh=|JCfL>r8){`Cq{24SZfiu9f(KdeY8?i%flZPP5Cj z=POcQI~ct_4Zn{024{xUm2hSV@^?AcRy7T;f7rBh7GD06bXA_tFSI(OH4l9yIzWT# z$n~o>#KXUf6|?^pJd_p1%cl%CYx(Sa=0tb)z-`Z%a^lq{#jBhrkUC?XJPZgV0Jb$yYRXH8CRBq-!)@ z9eSwlDE0u&Fjkk|23(UlLvurvdM3?@@gHUkYQ^37`0zW4vq$2W?ixuf#y<8;URC+* z&aSm>7jr%+ZDakZZ2}hT*4o+l-_m!p(U-G_nRS-W*q;QSm1o#b?2&)AI{WeA^?kj} z`q9{fT3|?W7K?I7dDsxeUpkYumi@w`z}30v-BHZ#D)i?l+A6=29t-{O!xisxW@~CQ zeCXCApy{bjmw)noWDDE}^V$jD?LszoD^|mQmo61OTBv(aToLreI1?7ZxAv@M^!jG* zE4QrqHZoQ-V`;ug@Rzxm(S`D1Aw!92zHz3_5y z)}6vj--GVFruF`_5A*CJeAj%hqNdW?ot37%8*ahn$NGbqdwONOJlFh}sz2tn%!jKa z;bi@r{8l|+D>hHEznI@iey8ziY<&}arFdt(_Tg-Tp74}%#`?ULPw9yL=(IFCA`O2j z?qy!7THvyNEBH|x+1OTOBZF?rpqr8#(FL@XU6U;=Mi(jvue0b}PUVO-yU3}C=Pw5) zor_t?J;}*)^esFH2Uc$QEk2Mfe;GXI5O}+n*EhY>g(!QE3#)p^s{#Ui48V(ZZg-q{VwT2F6Mm*nvk>Y zO!AC!xyh{O9^$#U)-7X!VdmgrA1vR*y!QS=Z{0MThG1d|@$b#35UyaQ$$^k)t*}|Z| z@ctj0Kf%r>Si>-8m>oA=46bNz>A<}pZ*l^#TKoTQG6ftH>^Se5l>D*YvgLdj3XSi{k}ULNz&`>C~#*hWqwpLxvU?BhH6&N^VH7d4&5lmI>-SHGh!xqz2ZreruwY|mAP&rIJJCg74eT(UExz?aft=bH6 zZHDXnP~;}-ok#QSb=T&YpiQAWv(fGk0RLa+`Z>S>pRr%qo&6f**1kvnEZ~RZ!SP!3 zSb#fyhVi8{+ilIer5CV5C!34M=ShPzyY8f1SGB{*W8kDWZCuW)cmJXF>MG9m@yAeo zMBHP(@u(fg)SaNXdS@v2yz^Z`z^*zR}r&uz8pHT$>@w$@O;+?;BhtR zntxjRqNsnk_VcDeerW(>n1A}(^96e9fi!n~N8+dwteD1-gEoO6XefUeB`!@Ho#}hsu1IBB(*C@NP-s$INf4!oK=kDO% zeYBCzOTYt5_@0x#><oZz<8IX|8LjdZQ? z&t>5KM&PHjp0NYp$?7w%-OaUX+S|U-JDF2WX9OLj^^Uwd(LEzg=b5fQ_U$@3@_DoK z7WIe!DqcQ8-=z=U@N?Xbe>-o~b^KekIVxx~%*zkUVI5ojw3sZNF^B8r zz|pLI!qLGxNBmB$?UtZ_XTfjZKo*31?fHm3G^JeYn)x?ZZePH?SW(@5lleS_HF|q~ zJo0c`Li<|__U`EO0Pg~ccRpxXFI&mFFS@mYH9hfG4fP%!dA^=%^w$9Vvxh$pJjV!c z_^yIm?-dk|?Yj=;KO&2lH{k0?9^V+I98GzKGoU5g`g45mc;n1KeuA^I+}R1sX7g+e znJe+n8Y{t{gnru3vP?3T2KIDSke_jDDZTnn$1JaZHQ{t>_qhJ`d0dx|jm&nB#d%wt z&uY(M?mnMYGMB-BkG;oPVBpvzPbGfQykA=G&W8{!V$ec(zLvAvHuB7Ba7Vn6I$ zf2n;L?GJ~u?Vo5Wu{-FW+TNYsl7vcwu=f31G`Lt;$<$EsqTW$9f^ypW~OcL5;@Cjn@P%JT} zd;>m+)oWG3`DIS836{@%g}D-c82plezc2K!HOhC%en$M8buGJ%V7>^LmAeqkwS$n= zMQ%Uk^ijRnV}klRjb-8yD>Kx8&5NFdZYF*t9wHC!)?9R!lg=VIfw;LHPKFZAdA!m#g z7npfz&VnfJYv#rH?6bMD{1MI)>+?)y`AB_2lde0Dew-SknSH=5Yax3xtlwTrU(=!k z>vz#tm&vQqnQObCLH4+-h`$BTW%I!~{-5$6#rS|Pl6Q?eA15{adG2vt=k-e#EZxxg z{dwk-{&Pd;Ewtx}Hq&N$aILitybN8Uy*r|-Jv(!-NmZJK+ggX1)C}3S>UepAyn*`6 zfV1f4NO|;`NO{Ra$z}NNou$mFZJO!4iTTWBKD-Oy&h{B5wF8_=4;l7ODQ?@b$&{nt zJLB|?4oT^}K#f5yo6{xNJ6oB+=TzJq*O|4@X9x7!$=pPrR&-GtIp}uL30T(o^F1cO z4ef;+a*#6>_wU!d(EC=0G4`%cGavN2aG~>8mEYY7{U4w%PWtk9YEQqt#$+Di5%J1* zx!(sqQq6}x8~o2@{-35QASb7WeFx2lr3;^!-4DBy@omlu*&F657;oh}x^Ssk?|k$O_2!Cg?o}IKHy_V;`f1Ub zJbEUG<-VmhS{vZntLVzt7;lcwPsNr=c0FX5_lVpnog2V(MgSAMtLK7x?3-O*7N*bh zJq#1N&-xuVsErTPyNqXHy1O?_@|RfOurU3EHa}y$|LPv|h+bpfL(ZpBb5HudoPRdS zH@GgjmX2KbGv1#^EE)Ef-FaL+{(X8;MR}ThwdHl@t!FiN-r;fQB(w0-oSRZpp}JY- z+X_Eablk9vnw^x^|I>F=gx+uM{C4%DwzdvYG_N-0*Y|g4K-`2pSDB$(7T~+y#d$jU z@Vr}B>GAmw5Hnc3pYG$GSmISLH!lnqzWnjt2VY^l2fSeY6Ks`W`c8oNEM6F(e()*O z<}hb z8}OfF$>MshbrvTF?7tHo9OlEb!E-{g^^DsGk?`x}7D5N>d-JS~ErFH&C=D&NzbK&1 zx&Au|{M^oJ@{W=z$>T}jR(7ZtzKCDK^_{XmHa5jKFUJ0F;Jo;ftK2)1x>lk;(WMSn zS4&w+3|rOJHKCN)HjmF(lG-57u&>CE>)fn)vxy}IYvuy2D;WFE++6*Di!I<~sqiA4 z$~JD|S=M|lP1?Q;J)jSA)mh8gspv&_&K@|hK0jwn$TvbqbT$g_V~K$|x2qOE2c72V zid__KTj9S}^uk89Bj3`9ZQzIxnRuh=PUCZOm=;NeljEJo3T{0*Tz`N zYqt~owlmfv{#d+^!s@!rNZKnuG1hca3%LJvd=L47(AfI-@@aFyAX;jlwsI)erP4+PBg^LwohF_M6onA2A!3*2fCb z5YM{vxAN0ZPo_+S^BK*Q{SjgTYJ``_uLO@v%z$Jn1HL80steHA#I32hqKoJ;gqm;0 z6RxGFAL4s1oPOAAnY?SCsDHL6SNdu6&?)p8mZ#CgtKt0EbVJUAeKLj^Qt`6k{K!^d zX%qdyhv?WBJ9Ha7zk~Xu)dv>bv-(fdmyA9*{hn22eYdb4-kC;sh%b5X>dYzhRhKT) zo*QbW3-^!W+D^{Af8G>q*`3#C%c=u+E>>G&zL}$p+0w;33j1uh<385dmKN3yt6xRU z5HM}olh=1k-vf6o9_{7v{^GuS4SOxXovnS|0Y3MD%U#fr0(kVGgEfFVfI;K#0>?q$ zzXlhlF<+-2Twd=BdY&3Gy))pF5bpB8-4nDo{0rmn>a6_*HouFGi4g~RdH&_ z9=R;PJjVMJGMq>6x%*pn-;M2ThIn4`V)1WEtnK*rW$=FgxZOu2otSwF_g;?pJQ5|QvHAkK zXilPo*30Io&XMyP@QK&v&1bIxYZwJLvi||yaRjl>bL0|VBYuAjeIa=C7n~1cV`0e) z{Yz$^zOgsmc=yhho!onkT+DM#b)1QwzonY@v+{0@C3e}{Qy^D{j%_BC*&^-fC||GzN4vd?cx zqsL7m@Kv4f%ObPSla4l`K{fpb=eHcLzr=~iZgjlw`?~%bbM$w?A^O8UqYpyo;}8eM zwKqihwP7Rue%+a^i?jN*ZTvG@{rswZ|D$3-&EaE=`GNhSoGl*KKhXK0i6(}xU>}$_ zDlyzdXAiH1R|~mDUDHhcp6&mhLfkLCYxknmn6D+2FC`{a+u7(fujos|W5*?ikK*?# z_;dyL6*C6;3%zqP-^~BP<%R6QXeMv5k~8M68ZnXFW__)h^8;_gTk|4Y5}Et9C64~_JB`ye zyp#U=yYIwrj^A%gWQjR&&OPS9!YzjJ(!Vz4joHcmH zgw{De(p^LC_+0q-1+;k<9Twom#F;ZXUUdwW;K3X>d$=bYfWy038}qMkHHEYTza~0o zIR3M(QH(5|GhFwDze=97IOAR%I_mkW-tC$h^x4R`8dLmW`Q~PS&xZE6Bjejr%^`ey4p)@Aa#vY5yJi3hR5paviYb)aO+$KQ}t-Jm7tcsOjJ2`RBJr z?D?%-oBDLLUJ&Q~ypC>$I#Jb8lkeU84QRU(9$N&DErQ1u!DCZy-o*KfRoicakEZ4q zY*_^_?xbJdGd^+FD6>BTpBFFn_U}et*3xGT``eo5ZGmqWH)GqySJrQWr*7$qtn0!l6i*+1h zeZXG%_;l|d>^Wci!{W2@z?AL6=bPZOYCwEhKI=4fjc3*`x~h6&J9Azn+{MlQ2f??Xbkel^wm{exkAPlu+x^gH+#uAj`pwRrP6`mwac|7gvl?izb} zsORxpd(leI|1`(*eZfh1f0WHf5CbX4s`b}kU%C8Y=*=}g$!W+pR{WtoKZ;kZY=fge zQzPbN%H>2f?!AnwJxjUd+nxW`J3p^=7wfOkA92Uj_Wz4*~yZ;=}Oz-WTYr zYZLlD@1`eI=cJfOd7@Tgn2IPifa|T~(MqvB?N!bX8cmK|xNIA1sQu;rbMOT6yzXb@ z8!oAi)W`Gi_nCuXAJSC8D*cz9Xzhv3W266AUs=vM%gYsi#}y-P^6ibUAH~1_qx<+| zHui^xLH`x>FC0bb{}kG+=kEfw^>K3awea;I=nda(piVDC{1wQ>hU?tDUNJ1ZQ%QWG z^~dAYkKi5V^h5@Dq^r>P_Fc^yH}EB?)pB%%)j$Mz zkiL&HreZbE!r=JxJ@V+9ANkR8(M5Upr1I}Rom8Ws?}{njARo1aK91zC4SfB8YrD91 zJHPw#SID2^5w~6^9(irOY4|$r#N%Q4zH7MnK=dfS7y5GU zZk%&>SLhwoiKxx*u&lSOap#ZSHR=|kis!&##o6p5Ej&@b%Y`TQKrgK{qu5jaz@00o z&yGc@9|gCwflFf)GtE<@u@ilr>W)v zW&<-?MHHt^{jMst#d?_TC*;bP9z>y-yE1P{tUu#Gao}cs2t_k+KpKEAFKEQ42hwI2q(=V`-jwc7go_(7Os+OMP40qls zVrhfkUXA^i-M2cBI8XGscU9o?ozu~rH|w_>wO=2a9I=6Xq)#8MHzk#`yl|4mS);!m zaM$0FXRV{0=k!NVbGFD`Uus6VJqbZB`4+Cn)ldARwx6h<`~0eFzt3D-Y_F&N{N_A& zy~WhI{+s>lHCz||_U{X1-N7zdZwHTkd|5aA>m~15_FVXLG(aE2r&CJ;T=c|}E%c`t zR(FlbO8M^<^qqXZvOGafCdxW=61>?t8b_BGe%gDE zk!ZjAHpV*@97YV^8S`Ym%l~q6#F?8Rd_MlSp8Wnt!B>iQVg9??<{x_aFQ~7K+jAy3 z;|6%FpMZZM+acdAT?MZ*#>Q^gdVHy47$f`q%<%d_oo}md0}t%4tG^9A=$bw2fprAY z;o$+(I&VMLtW%wWXraHf&dEwRefuc2u*wg6@rm`S$<3#ILD96%2lA)xy#{)>%2x7D zsVek1e%0E!)RRnwX2D*CbC9bk$kPJ$bL&~^&Nv5TT4y1Byhc9sTx49=ju_CVvvmOV z)zJA0bY(7j(GbCEijCVfH*ormZ<(ke7&^gABa&05N zXC69ywP0hftYW`hxGO*>Sllu173`PDXWky)N5GR$6K_O#U+wMlFYj15pkT=~a2A|p zvWxu#56mCY5dlZDsD)TW{Z#?@X{JU$(bufAG$QXPx%yZ9y>nWS|8r|Zg8L@mR;<;0 z686@(ny7bX^}red&OF90gDyMpQ&j`D2|DR_K5$IoJdbmL_c`S9dFXW|^qR`K9$HTj zzO+wy4r4sS?;Tlmlg`unMH_T$Cng&9A?Vgl|DxLt=tDedX{GmM|B3zsTAjmq8e91| z<+xYznN+>uZpX)Q@-dRH&F`{q!u@5mS3A`^37>&J3(HR%{{LKXUU$4%H@AhoImht{ zf7cD+llq)G=&qpWrDKJ}$y*_*QkTcxO`;Ipb=(A)x^cc;)*fCx_wHW?+ zZT`rP2W`KRy;qS-d<44HlIzqO_DQsnj1?l2$|Xc>EG7OfT=On9qix_g!*%WR(Yp(R zGc(?__l{Vj{Wj7CT06?c_YZs)UV>H{%lW=1)t90lDuFRL&w+PrPRL_?)#^mi54rl8 z5a=G}F5W8u7e_EB<-x0owF7?C`7&W!9%cTD-5TLZ^{Y7i!^n!WZ%$4``^TBD*5$%_ zCww-I`1e|BgZ`D?dB*2o@vhFLk*?WFzf;huJEUvi+wU-z&LN1TAYv9TQTa^SE2^6hx(iPFZ#PH3%;~HpX6f}Kllwz zCK|Oi`>Fjsc7GgwhW*d*eu}vD50AI;4e=0h>G3u`vg@tFxpX7`<>W5~eu%U6;rV`` zzhtPt#@zjlJ#2qH{u;Rj&J8)u&M)fkgSgqpR{%p8-+k?QGClFQWI0?T6YFor2Xc*k zHU+k3`Dd)JjO`h3&&b4vVNY2zL#NI{w$Ei9RkHmo@ysgLdmchR%t6NS1)Bn2@EQ4n zj5h}vU%|5x{w9;doX#038x&hN53o9C0d*5Aprb)=SMYo+9o0LrHVdvWOedhTocz1k zBm+HUtInR-1FPsNS^N>T8}dmKCCFFO@q_9MWY^lUYt+bfUh%2kdI6st-8a6zg1J~Y zu${!ddZ+n>XSi1fE*5c5I)XUD;zsA5*yp(SO~wq`Ssj6m*vhr2WW2?lcN6txd{BtT z?_O&f?g`0En0~9V3*mf9n%Kj_)-N^C7#Bs*lFg~h2ED408|z+?6GC)Up;F3D$4 zTpjo8sHdr%KevM%@jC26D#Ejhq1t&z#zO9^b|B~@c%GV;nqRS&)jElDE$LVN={%C4 zKSO`WoQ-==nuE^67twoAXa(yhg9w|G^dHJj*2;SrYa%#|STNC^8$g}Ag)jPCt zKNi*6fw!fSb*D;m%QCG+N!KZUdgo;HCHBeuFwf=-EFOlroRGb~K6E`Ax{kh7e!;ds zuKPN?es<6Gw8N+E=V-6zI<;rQbC~aJ{#SC?=(%`6dllfTpPhzHUF7OFo`;_D5j5Wx zzAJxl1-u}hmYy60&2RT<9;Wxz&VP@$vuL zx!@nXo5G6D1ohir#O{3?``j%@i4xy#xV;sE`NW;T41GN1z`!#wFB7h{{`Ez2iv!Q> zT3$xKuhpA|kAJGC?Iiq$R@S(Xzm)P(?02#6xwu97QTj9V$KJq{#rZh*UZ~qAxcTqq z^P-8=Z!UJQ2|na$pW)qlqV@clUCW24pFZSYHSfk!(V)}n0^TtNPE+tz3O&3p_G*F6 z`&IZccI+Hrgr_ot;VYkSCeEfWu6gjkYCVj3;Jyqs*{Zbx?!_y}Z7FuY4j&%ggP$6aeEK>cmwkj6Nof7Q2QPt;_m$!;%@is(E7>X8hJ@I;uFo{dzkkXo6MvZ z<$ZX!jsB|X??QfSPllt<$!?8^dNS=PN=o-#<#JF7-|uM&+2ZqmVjAMU92oy!SRU@e z&V=o${$`lJf5u)HI?a1k&ND>V1(crt^Z9=*|*Mf8bmdg+bi6||m{ z$GLmpPd0h4)|DlPY9IBi&MIMD#qtQxY0M1rt-Nifjk6wkE}a)$Bme48;b+UdR7tcV z6*p#00)CW?MY*Q-Yjyw^{d>f9wd9M+=(CO-c^UiJ;SKx<=U)Uq2{mA;spS0f9%W38 z$5^MFky{6KG3UmK(Aj^tP|}!n4*zbQuUYTb_V=m{phimPdIbD0*`fUe!IsyE-GUDK z9x(;=xA}E1kwiiLLcafnd-FwO;X=3qx2yg3(ghjjD_Ff|^c?VJShJB2BmVg3ou)zi z6l70sg5J68$zAq5;~xLdOakus$Ao{IZx8%I(LAUlU*yNdbID!E&d(($RY@JWuFops z97f{X17o4LZ+9}J%XZ2lc zcUk)ruGe*cZE(Mn|9#o}6RuPnzy7<4Hcv9%S^UWsijLj;6GC#QNyiJ1GeR)E6u^|VKcP}>{5p9y#4KONc*pP;mG1bB)5*=g{;DDGFWiZjc0Xt?1A>-{ByU>YsRl4k1n65kNnYFY%V92xyIR2PxcF5p3J$!)NN_Kw=;87 z{0XbKmyVQ8N;w@qvOZ2feMa+KX}rAoVAr~!ub1h|<9hJ>MSeS(>{(k#0sC)4uxkoo z_(#Wj`&XQ=kYeA2_6%)dkHow?(a#>d-ul%zdo;b8T7GBXUHLnui!6ziwU0$YK z4L-#j|NYSI_!Rl<>2feRKD~*(iNSlE=lJh&-a)%|@(6ze&Pm?FPZyI%Pf$-f54_z) zemW`oJnD3N+K<_P4gCT>eN^A&e?H^w8A|ATNUj4J`nsp$V z8yIg2e~qHiOYXhfN&h_v_r2Y<{CMsqHMg}VINR*|JhRk~kE634JRhLnXLa4D-(MNa z!kk6F^VPqWn@*b8{I*S;KZ^$z(X=J_+bH0{VISdi++RE7te`b_BmX1!xYf3UkIip z0Zdu+^IRLt@1LN}r-11C1u^$vLHj$4^W zLV3dRzAx(Qif4o`pANGF+@&3_+I4Jn?^C)CoWk$t_}(A9d^4a$g1DCJ!G5{+w|ek0 z8@&8HOTYH2r>e&H>7O`5XHUd9dmrw(SurhkiEdxrS7DrLq0IMXx{7S+6%9(Jhy;)!NvIb`AdcK{F(~lq8<1t zD`~rfK9#T4o@$LD{Z;@SSQlCP9CTn^q|WiG#8Q*-bMPr=7SQk0 zs#hltA>Qd+iGEj3`O8-WQy*Xf4#kvfXe-zRljiXUa3o#|=1@%gIsP+V5$j`qTdn(E z=3m#|)qH=?ZrIm+%JP9%Gn+9U^!Z@7-BVn+M$ZecweMcZo)51kPL1o2xCVbOHO;&~ z4m?MF{{D(j$1p#yw((UczX;!GzcoBPQ~VLwC)q*O!Uetz>jX(<`QEr#F6E*nM;gZg5EhTzKHmI(FSbU@)@)n z8lq1mOHL0pmqDSq+|67L6))ap{jHvOjhLj#jB{sEbXB>tUXqhIpC8^-ESDip^O81y zximPRFhl-Qv4wXtwGqf=RA<5%>P7I2m0L*5k4Gkj>!W}r%zKe^UVR(SUW^Q?7E}IV zf;PYNai5L$ICg$P$jBkI1mI%2k$2byBC;V&+ETN_8@56kGX0e;NkEz zX^gWkX>#=e9z9^s;QLB`^k-=Ry<|(bL$9>!*oO{ix-O?0pIQN}dDTLX95v zK#k-%+OU_77ybHBbWuA#XaJ{e@1Nh|0jI8quO0X#`4jlE9e+>!Tgv!#_^Ea4kF6Jt z>ZlX6^J#Q-CFVCvsatP+M{-r6oOCt04Ct^x!Sq=a%G?4 zT|gz!siYrgB*B-;ssCs=^zZLuUee zD}5e?-kFsZqj6SyZXHt;cbTPAqMQfX-c71D^=xon4!|(dqf4jXE z!iB@Dgo2d;e3T?>CPL@xmjInTA{G zNBTdkk9A&IG7lZf84OAMKj9={$i3&?VAp`iZPjP6Mdahzb4WXK(Z&?ne0&t0ryAZU z=X`JuY$tL@jQ~C_^ZY8`!}?r(sHREdhxu`|jX!$w$5x-yuii&D8{6A`mK=O{rz#9Z)Pqtb?vOn;yR;voxYR%*t-Hfc4AR)xT5fjZ23h| zV5cwX{9^d#@4y-tUQ~0=^`L*rbCKp5x+a-6HizzLm+*5?FYfJ;#cAMwV~+W+&e|Vn zZKI!~Z6pV5Wox%PyJ`c!yTI+q@n8*`ccKYLm^IP`(1$am} zQ4T1Ed?+8=g&d2wbbayY=WSXh72Iz|jz0e(Aw z$}_pzj}q?0JL3jg8xp5(J_=0AsTyo{Gx|yTCdRc`W6xP)I^#VFO~Y~${@&{ueDX^6 ziYab>3Og)aR&afO{Z45AF!@F57MfNiM%J$cUUGS{ovubs~x% zRcp1J@2VALZF)@u-`DazicTeF=w3^>{e0H?H4oPOz(cB*J|)MKNAV6Q+Ut8s+_OIC zBKr6i*N}rIGt<>`1aeS_9JCelKDk5Sd)y)LeaRv4{SxhG;72kRxdQhNy{Ip9Z@%6m zbJw6FJ_Ag(=q>c9-EVdE2=Qx=|ERqGp=_XX{i1gUn-fDWGT6j4KAx^w|H=1NOaOm; z6nNq+QVt8Tw8kdJ_znMTg@01^8n}dqQ=IcXLHmd{LAUDYsQNk3iCT-Lb&cbdi|vG- zOIP9FP@CGh>-0Fa;m)5dEWmH^^7ks|{KEXJI=a}qpGL1u@>pm6L*2H~-q0nl!xLi; zK5(aUD*CRN?aET?b2OReGP_nKc{0%3kT1}4I%BE?S_d(39{VfWcvks~>=<||zKLwm zd%$0Tj+Fk?-W)44J`RF8D{ct-4f@kMUhw^JakKPSxKH+2g?+`QN+18{f`7pxeVqYU z(r41!Ji9dT5i`UEdY6>erR67T{?*9!0(`(R_~vEvt2=lXUFvD&3b0AHw_K5WjXa5m z?|D0Z`bcoI3whp+Jae|fTG8VveD%#Xo-U}_gI~;Ex3xMawt#mGuEJkmMcW!WY>V|B$1dw36wYE{F1_NBez-0W-HxRzn9m|CWq0YNPjbQJG$4&wyrK=F!vY~fA5 z^DNGCc@e%V#m~M8J5mk4s=B(y$GM+NN1k~ed0k(Zpc7NrXy?Pj`^E5nu4lIKjIJw& z`7pkh)1A&|xAIBfqV;9erl@B9VfJoVeoBn8@q5_su9glD`Q6rr(GI_?GoaPa=p*P? zXIP#?zp4oiWVnd?QTYLNQQLpq_sKW!@$=N@y8Kn#*Hs(2o{$b(?_%M&@3;M&>zcQG z_{SgNe4niIn0xt8@NU??TmK2YrMyJ_mVkMXrUHOX1&A%fFEtt@V__*LL3E z?JQ^>mhD{h**L?ulX0i_O8l6Z`ipr{^pl>k`1Wo37olg^mk871f4L|BFnm9N)9Hwa zsrYXA7sk(?kMxdrf<1eJEjwpp*LI7{S_jui*}TpThwvd5 zF?Y)g*xWenqz|#z+cN084dAhCSVgLg{aj@;D>_HO_rczThq0ki?6UM?JI`p&F>JH! zuaT^(s$eF1hWQ|ejY?Q_gs{Za8^;Rv1&##NqE@p{<) zOu*>hV$=*<;Z<37v2mHW8gF8<0UJv<`YNYZUTb zh;vfU;;XBcAdr3e5wo>V37scDO}az+AdWtm&3ljWIXffR+Ddp>b&t}|X?V$SEkd5B z3LeX2{eBiawgUZ=y|*S))jRfj_C%*UHQw9cU{15n@%PqT44&n;OZU#?dxn~5?Zb$q zBlT^}>jJK6kA-M*9^Ze;ck-=vp6Al%SM9ywYd!_;=ki^A7yJvKzwsdZ2rKdDC3_Fz z>secfKd;}sw|FgkNv%ywyYm%n?OA3eF&A;zU#d-m{QVoJxX&-D4gp*W-(C}b7`3OW z`|=t&3kM#HEj`i3(dg%`CHNa^W5gk zlwMzn@9JdRos}W}=)Rxj+bZ^|#4oBeV{APaxN>#2@Ii2XjcRhJ|4JPNj?(Be@!FTr zm5*9lB)5%(W|DEyq?bOh`P`oO_l4ocMhot37MG3SGMQe#5nrBt&?#N_YZFst#`2W4 z>8;=tTUc{0u}FA+7A9!7pSFS{pquzGOp^rhmEuYH^Wm{|25=Nz_eXqv*%;N;NYAZ< z9*4{4_O<)jd+KAl*y~BZHrMep?YYKh7yo4PZqz>R)Sn0YJcTaWz)G~mqGdM^r}C{9S?(~@t|x%bLZ#LLLFMDfASCT}#6@8o6TaqhuaU6xlk zHw9i99q@`DQ>;J_2`6pnFUh}RQt5*vdo@ZE_?7H=HuxJ+_B>lWf{Rl2JL|hgoNj4_ zUsj4dZNj$6uf&gTs!Nt~Mpj$LD$Xk^IL}zQ{SxbeVS1x;){0KueCYFOK)Z#aGxDaf z1Y@)bc;v$%XAxkO9~42(@Jp@Uvald)QDn{Wf?wMc9wUp_rGvsS-+o}$=I4O<_5(vV zE6&sUk?L(rOkVvM)h2}_;oqDKbiA%1AM~|<+b2D!`!UBLC&j8W_`8smUv0l zMUffluBlay|MSpc0bWn`@k(Fh;JbAedcx^K*-+tHxw==Vf3bAunqAkyKG^4cJf~I5 zKn+r$KZ6{R)>6Jn{kEfnt8w#TU0Nwvp@U$pLdJyWz>oOz4|BcmAhiCrlDq=CARj-s zmG2pNUwdn?JLSlAOC@ks9e8c?0%}kVzI2r_>zd&+auh9f@F_KWnKmP0efR{PG3J!Up%9ETKxGk(?%QdpM?*dhs>;(%&5k%*LCov>$my%(tfNktoQq{ zg3Dg{<~>>G;XyAeiy3@+TQf!cBU^V5dx@o+q-$i?bmn*@T2QVrd^vB4QFjgBSsP~0 zJuiAQL-=|VAK-B3#bxiuKUD4~kP-N;dQKJX2W|E z^1C3<)m+TUilMezSs%XU2jFfU-^2M_yFLK_E1opX{pu||(5dQNC$Apzch+SUo$n#T zXCaSP2Nn&Nf18@aTKDA3Je!x1EeLYy^5wJp`6Pg4!X6r{pmBcbuPB z^y@#~pgzejOt8aSrweB}759G(7$1slleZ6wKHaEwoNlhN=>`Zq1$7z2mx?aAt z^i?r>Kzv#ZZR8uo(Ybm?e~zaejPFnL`PkPXv%!tp*gnu9+3lBW{`B_-_?Mox{D+Q- zqBqpm{zi8wAEDpf*OI5%81N3Bx8u`B@byQ(eADNjFkG(ymtsNbmJ;YKpCOFDt8=W! zi1#+I=IRlXZD4KGTsWm1o3>885x^40@y{8<@+@?gPth35joV9r`S;qVApWLpjI|iG z-*-IvfNSCtt;IOK;meEaL?3nelHe@9>s2?e>-ppC+~FhH&(3SOZlo{1cecHr@bfNn zeZCP6G7pmz0tY?X73qWD<}=S(zYXJOy4}wd(zmn~4#K$v{SN#peaF9C8iW5d zxBnJy&~*u|VFdS#VkF{Qc%%wGQ(SDHiI(BlCR5eKb6iWwZ=VDH8`*1zzhlq$QXk#@ z_+#XYmpE4)S*o#moHZU(#Cu8@KMlOXjdZ%!`i>zc(DTY4e0Uw>{Ha#_-eCMN{o6H1 z{4@_fiLtihLDv}PVP$}+0-GdzdMWy(s(DC#HEZruT87l$#^*WdGwYwjchb2W)J)W5 zSexg)3^lc?o#0F?(IWys80Mq7lrYc#7M+UI{?yRLoUj|lkoqpK&?!De8zL75Xprz__ zBhV86_s)E12^}|A@|_%xrR8Ma9fGem^C4r_S)6h1R0;gu%BEb=Q}sq8&{<)5xAr7` zqO~U*$)`omo6)%upS7}(9MMp-E^^_FPJM4Z!K|}!wK=w)F*lb4zoW<5XR+J+s>dBy zUyWUw1stu%xpx&2tVg_H z^J_i+SEJnrTV~hAllf-6{f(@7$X6|L?`Z2{+Su9ToZwIS+!=JO^t13HUprj4TFv^S zt>f|Me_S{GuAkt!p&_3)yN*@4;PBX*+g~1Xd#=Lv{;sU`1KD+NE&c)P1oBr@D_u*@ z&F*W)KQelkiQppUzWq4UutN3vTECKi!*i3+m8zYWt}J0+j`G+WkaK(A_kWs(V2^ml z^zwgPF6k)x{2udFeO`vV$K$*08qz+qzV}%i|6m^u9m+RM(Qd++i3qsH@N`}KTp4((6L`0vHprZ&DD zUZn4OR~_^g9|peJ3$CA(u6=~>$M5M{{ymL}KVj{RkGo8;=YrhT^#M#-doF&ezIaZ3 z-NW}VO!(T?M|@0ee3(9}?}907&&5No9}Cl)!1FHSeU(4#=Teh!@7j&}_VZV*7S~PY zRTtAoeOy1!b?F)L*%bKfO6X_&e_?*>Yvre>9!jto_@WlR6R%-AW?Fv=9jZ88{(^XI zFFdnYe1jjOaa5ZT#aD{@zS8feb}c`G97|Z28u<}#I64M?!S{jF&g&WHOUM0rEf2we zH1I2rlneeBZ2Z*&zm<32?wLZ)la&167uG5s!k@#R0$0wTiV|mQJ}Xr76Y{4P;!j=V z&rNd<^tEm0`@9cKfp#``$-J?tcHA5`6(4S9@Vsrq^Wu*)!Ot%_BQ%U3d*8RKcW__% znlOC1{IgeR1OBM9aP&|2zt!^DG>6wFGvA$YoAB{k5yI;)SDJ>$cs|SzE`Qd8&u}~* zlfLxpN%F~;D=(a%pza*`mF>)v&cR-9V6AQuxpmbNSly(2Jo_7zkDsbog6E27f>+*^ z<`IVk@9xUvRq)PUvsSzmqpt_;p7c@H?#GI1@uR$&BzDd6COlVC#6D)#Ra5&Q9geTJ z)|;qz1MvAqWqFJo$>U#!N5#`=SD(NC!5}Z>;yW+lV!)fOckf8o*d>gu^}wp4xMHFD zsv?v6BY08{{Bml1v`!ZxKW^6$_}xxkRkgB`wX4Bt?)+KaR^Z=zb%UAteqO=WTUqyF zUt|5jMa3NlOU>2;%c;fp%+aI4@#suR{g{KVZGQbSvv$V8i?-M7zh%34=vuB(uix|- z_1i!8;^l8$Lj5*%7bhQ7PPgCQx9|y%#8&P7tXT&yk#F?ROITuDEy@M#zu|gy@{D?& z@zq|%`zpczjs>RkVXi;N`YZL~ox4uu3^A_nzM+TrS3`@@nbLapZ*``tpyBD@jrGZh z@wO<3f?v0+lA7m-Xjg~)sU|F+wX9scKOfn7ha5-y{k)SCpK%B0i1NNh)~rWR!;(y` z`Xp<;Gfd}Kj&=GaLp$;idpF#{elW(LOKoqie&9cQ*~;$4OpP?x?094ugdRoQh=1$)P^pG0*~{cf4M zeQ#dBF$+A-xLasue&Uu}w|~Oxv*Z&8U%RvaQSoJOV3U``w%oVC>vv6jikYcem_5|% zo%CG;26d zrnY(Vjb^Dd3&l0^~@rOn6WqW{iRBZEoyu0O^ zB=wJ?(HQs8NuV8*+g=dp^_H+Emh zD#cQE-GI1C{I$U3*R-C_zB1rnSz_BYRZ~Acmwq0KQ40ax>k`9lY$YDuNsj+%auj-> z;VN^)njOVvEj0^GtKbdl-pa2S&U;M2<0IgG7jebz^mYIZ3Blf8 zeUg*m?C*Gan)8eU*^v)ig4|fTfE%rKwh_Mx&sM&Xn_%50cqWFvbozRv_NJt&@wJb| zZ&ZD7=6<)%T8gYMx`Opr##i3?pQ`yC1Po^y&SQY5PbbF$Ju2UI`{FjuHEXTxb~xFc zJIAam(^_kKywCGQIK5xcbodEt5&UJO?kMKU1T|nen@Ut?&6WI$wZ>qx-VoieFLnsw;=meJm^^`p`4 zql4eEOaBv$zH#j)|1Ul$!Z3Cu?E?>r=@G{jl@R1=#sT=W@9(t z4`?acs{JzP(#Cjorkh0Fo|OmA}gSM~nD0Jqs^R9wVaDQVdlY_D=t23u>}KBBxz zLAmv7^5UIcc?I>#X$Jj>?w|XTv$erEH#5#n?{zJ|4w$~iXAPgt_-k{J<5|e7U7PFb zT5IWv%qXTO7GHPCR_7y853v`UJ5w>1VoBAZhUIt<>y|rNuS5^6+nv{UO@HnOa<6uJ zUuhxN0(~J}+6i7|g902`-z@EXw}c;3+$ zzH6Nk@BAgOOCHXm7D}=$TuM$2Je+~{%4>%G;5a^){50Et$Pc#uEn`Hd^zTgH#Pj66 z((sD<&gO?-bNLD`4!=c{X?zNAuc-b-`j%X7pgTkQ*6yRV`WAWg<+`OVq;DUhpI+Cq z>>45;=AfIu{HK;x!1V~@@4|n2#9ybE-G7X>=vup1U%u8Fek&GG zUCw7%_p&-V2&T;;c=2S%i%tKDZaU59#YqRn zJN;~}!^sC-t;5^k;;pbQ zQ77`=YS}F8MFzW}x@zI}C-`qoeP2Fd;7^Yn`sQ|%dSgpG_2#d62Q&0Y9Ajoa3eNAY z9a;Yk?7{iZbWM13dpz}4-oQ2gi%opHc6|N5f_UeCk9VkfMSCOT%*>B|{YxFMnIr9c z)83@7$Ef9hbBjsY=YAJY{mL7-&I<`OSTk zBS&9T`yTHHoQ0mb6g!vam1}?LTiA}*t4(>4_Vx`XSF7CDEO2F5Lbjum6iPMtG^kUjHQlO|C`0Ej?D8UH=%o^J8fBGPHUb-aqmLGyVeP z-aV`37pSgE_$yrVE#!GO_}Gk{4D|mC*y=s#WXbm$@cW7VW%V<> zJ?m?{zDowGkMMQ&G3)va_Aoz%&r!gA8(*U@iJ|T!mTnoHDU;84=W`tkwikMRw-kFv z)THk~ZWvp+<{N&E9>kALPbOZ#w+d*Q%`=~;ec&HRA9nk3JeO{BejMj49nz1>yk+h7 zf21pS);PN@f9VY12>4jPKNf<^<|2IGY3pRh^LbJBU@L3y-S8_GSY+dtZhLTDoc4>{ zx=err-m`N^Sv(Z~?f|FqJwHzk!n+5sPhX*5Y_xD2=wWN~i9IZii8*%APS40UB7QCZ z`Ws!#(BQ?{9JMsYRD-4_1LWBJF(jdQ`!0%_C%5S%X^V=J}jx$eX90!M6!wR>{m1ou(Z!Z3P>`#`z z_nBAycRLPt>l}}8J>ao2=J9Kuhqdg#@O<{;!CX`S27o!wXE1T z$R9j+4YWN|`F-e)U5}w_l}}a-tMys=T^Q=)g|7pvZQ#hdIE#Rr?M zKH%ki<^FeAj~f)tXCCf6_J*-<6t~fcJTC)LM&U)~idZXfKTSE+YWkKP{RTXPxRg|U4QyQ)4B81c&Bo1 zyVy(nEWcH=rSChi?Usj`?*j4_*I{q9A28_C@}94EZ}_;QM;d#t++i(#h`o<2vwoRs z9YW2iYN@IF5&XIO=!fps^)zi&hb(%imRs_tT8eEt6HB>vY6>#6X#{4gv%!mULMzGh zS{#%6OEdo@^K?Au-bY~bQI;K9*d{e*G3Ip~A7I;#==+>L{JdtR8s zf#x6ZgJ7fBW(Tq z<eV2M>GDt+N+OZ$FohbM%5mH7i7K-*@<&qZK$*Bw0$%?IgFtrB!jue8w1~o zPTvO}^#T4l3upxU0gXNPMbFs2e3>7v_P~%K)(Pg)%(J?txy$FzF#lKo8+;QJY}38a z^=#@+&)_BLWAwk>^U})rYO{nk zt+c6vmesVWE{dn7ocN7pb+PsDEV?;w=uL~4eEQPc8^5x^46WJxcGpZ~zNtDsg0+Dp z>jA|zr*JJ7?oNkR*<;)JV++PN`d7?18=26!=hIKX+n*3#(BXk?vT$LW-s2pD zKqpF8`stiI?9wE)SB>!$mwQd_KOulIX| z>%ygURN41T!yoAv6?Jsc$lm_t3-)}Vp88htk$lNR)pD&ENGycCRo-L;?^w*B!?dpY zD{SijW9?kvqpGg`zh@>P;Uy}zT2V8T1QF4y6~q+(&E#QG(dt!NdrR941O*$tYPBs2 zmVtzahE{^KR`E&z5lOYBR;#JE*8qwS^p-~-_V&TdB;jGu0`=c!DmMS`Z|`%GGa>f& z{_o}U33DF%tiAWzYpuQZT5GRek31I56fwu9@DmFU8SvWE9`f`>7e_iO)qt;TR3rYS zrK9#Vpd*ZGBzACVdn9sp!@SDfoIQUwzNN0=#Dk9dt;`e)GUX0~ijW=|1^OxNDi($=8&>H7qmZfQLF?H4;PoJVrs|!(H^Xwa6cJ$wj z-B~ng+VEK+U$oyy{oD@Ch`uzZDxZP*tY_ckonmWO^IY_#_Vx^b?-|g%;^wYA;^O9( zQ(koO=qj`F9z9q>WbePf z!14}yCAwnSX3i+EI0n8w6Bc=3ZQJnQsqmlXOOt@6XovnZ&LLtO^t|^zVOV##`SX+U zitJAf@*kP#=4uyb5RWjoR##**jHmV}YMlK22_a;i=G6=`Frv6oVl41gx4y)_<#Nvd zGrSj1Oy^kz`<9D18!${>XTKksd)l;)6|LBQAC9fox`JU4qy0Tb2#%5^x@9T{g64l3>yC42R?1M zy~(|Exp8xO7kE+K%1NoXJ@Dt^;Z8Q$oqzD;aKCuClhZt>t-{B9z$#RWbw%-K~6T-?*( z-}KEpiyt;CZvvM=`7+q9*Zbl{gFM8X@vPsLX+8cJIT`b(8_mkBN4vKHS7RjF)xRKo zcRodcel<^fKGKxndt*fI5>Gxj8nE=r+?A{|*|^3+JR?~L-}t%PhOoc%kk^K*X@hvt z);|K7;^iB<-0sI7xc)Y5E`N`orZbPlh!YEO)~LqcmxnR((u%Jt{~LVe_cO}3DR?ug ze00FLg*e8yj`r)j*I(&4KLXE^OF8r(ptTcxTI)yu*Na9x+>YmZAo>?Q`{Vm_XlNk% zzf@&LIr{%LWxhjwr`S6C(SLv^5B}c5!p4^yqxuO4%ktZZer@vUU-ay^sl{(oKl+cV zjK`BVQRX(<^C#*Yi2g5stB?La^@&yhy{hz{)8 zZH%FBGnqOU%9!KH;^$40bVYs&uZBWC6G{b@k+?0-T3SFq>zEsy^1f5^q*_2<9A z#H)T-{|s|vLU~5ooLzhnFx(vNc+kpw?PG!W(03H)+RJ<6sQa*2_icQqv(Z$y{^j5o zKV7hX$#9=8eSS)_*IoP+29N$b>EB=fDtZ_?K$KW-gB~E+EFEPHu{q2uE9{!9S+O^1 z_DqKw(~On$hCIsZ%s66VT3;q_W;y!FXkvKFiO1awUSDB6d&ps+{q*I(2$wCP+y?S2 zmCp-rET1=GqrE3DLiwGPf%k3f9`T*!)!ZNb$VPv?qjmla_QVuFul$BZUBi*3Zmm;j zV=_v3o-i{WtuV75jTR=(2%9;NTHS>B0&ClCE+9Wrrn}aJ8_S<}I#f`%lKvbH=vMX~ z-KvfDhwrRx-NL?*PUah%H%Ib`@tLj|B4=xQb_-`i2gg&iC*6rQSRKNT0ln>e&TnCH ztTquRpf*Lk90T5|+KP>MjagZo$Zy)G-(wX{aY1vtMhSnq;kG z{j02FR`=v{b~|Tmk72x6|0bEk9FCp+dSiRfgGW6$f~9{s^p8DWvLd)&G3uR5t@$mv zhjXo=W35NXZDP+p!VhU<`_t&u(TjP`d+5xTQT}ss+mqLfGsNMc3lxhl-TPw2qC)em zGu93@Q+s;C8$+Bq9ZPK`Za5wZeza``c@P=^YwYj zLGf4&+g3<>QlY0}o>h`#t@yDpYX#zI4id-AbCoS8M~UoT%K1}qo3XOAd^U7SE)&Vo zVsa<0p{^KqGuZ@b;{?&Dho7Axat#G(I6j7UnsTe-{PjU-9b8Bzr@)ouQnhkf50CDWz&=uuPpY;$`)_oMjhOa0m{y$tYVri%w{*Q{pSGXZl~OjD5qR^!u@6B z&)>+sqXhSVP(I#k<#V6@C7Ek+@9EyJU2JV?b}Y1KCkB4{mziDW^SRT_;H6z5@ao{W zeQD28<_PW3S|g9~-VpZMVjZTY zhdMebW}I0E?eNd3sA7+SXjb$(mwiRmcK@Es?Y|zM#un(%_i=1tk3}(bRf!F-nB0Bz zD`$UR)Uy=?@in?1F6_Hzhl8*4PPR+6`%ki|(nirvVXawd%PBWE&or0$ZFGCM+_?hP z-X1RhTmh}?R9?2!o%WkETAqR?h`q}h@0@&>1Mt7k_c7$a0&u(l`4Hr(C||SuH}YxpU@M9s6KdlZ zHMJw-+JPfq4*8bwiNI65Pe)vivm((td?kGK&D(B$dD6ZCWDayKnbU*Jv~s8IlUDB7 zwn_)!Ikq8d6D$O_<-fS&zdY6D_07ga(zjJ!-v*Wqle^_R?BzLPu;ml-@5$0RRpaCH zV36J~@24NN1>|5Gvi&`hE@c9)h13)82igYvCu!QO%{(;HO|d z!I#iqEw8q@GY#=$Jlj*BYx|S_X~&6k9PBtT2AUtzwag9PIN5R69LRX7PmiESOD}6C zeqXek>IYM0-XCmMa_)-8@tF61dnYl^&yNh8S5V{CzpeiG1?^XME`=}5W0kEjc%w*r zV!)H~ECaIKzs-&VxKN+IOusdjLHfC=-+oKc zh8yrtSVN*#jNle{}CZ zzU~>Qk0;Vci>t(F>o00X?>NE76|@(Jwu89ZB3oZS{B9JUq}OUc9(u1GUu^ho(7MiF z3T1P7_a^xPy#8p7vFJ$8gW8uN9DhPM4!rv&@0?xZSe&+d^(scp@0;{C`DF1!Ew98j zhCd`*%lPTMpy{4}s~X>weUELd3ZAb;mRDgL(;h07!+*297P}XI5$k93*TNR(wD$t- z--7qr{_K1lKjAycmJy6A`9|!x2FLRzE8qI!Rjh1EK#R;nA$Xw}->02l(X(_f-7dp8 z>&yVzA2|Ee=0aR`wabBc!THF;hdI+%x+r<)gS?}5yz?E}=e5J9v18lQM_;||VZ2$} z_3nLBTVhF<$IQ|l?XmhQZBlNrZ_pk)?v(p5T~Y0M?Z0S`iy!Ipw?uWm4C@-v!`bDI z2h-Cy8#dBC(XPMnAqZdX@W9OImWT1R9Bw#&^~2@ty}6Q@6>K_LoAZft?#Q{Lxo<}- z9eEWTlg{enH#nbI+nDBE zpxFj%^Ejmo{`QXJ_yp2&fiIYAD!(q(^Prro)tBTqT8<^e}(+)_@P?u*dvRrKL>oD z7zQ86=(bbsoR^Ie7wqqWW(|Kk^ATrafj`a{FK*WQA-uhESbT-z6ExTJyPfAdGh^ff zqYmn3U0!!3HuMnt9n%x}mU=Qn?-6}xe?lCN_+7rBDC?AHoVA%f-<{a9a+6JH{Xh=J zR28_XLbgDkhWR%d_Wn?=WI3@Ne2<+WTe_0#3)u$+%&Q6z3`d-+=$WTwkmC!Kotgg!YHe#;) z^`({7^ii@}yjwzijB?5StvhXpXDgNWBMB@PdwEl*f-4(yWQ1ufXGve!;DG^i4)} zM!qKdd25?=X=pJuj`mZZ;!b@VTuihu&b4FV9(R2@-&*@g(&<5d%;pjH@Y&~wa-SdM zc|!Jq4$u5@}D0)*_KIq{+8cUMtzf<+eP#zIf$ITRX^PA z7v{W+_v=R-vtQWaK5-GaPoe`B)x80(dfpGY`3d>fQ$ND)yGsA1B3pbV^Bysg#mo6U zft*i_LnZPfgM4WJc_^DMWuK`TZ`ZfPWs)B~ua4-MhYk9*l~o#daQ$88LXA%v-hp-x zm*Bfk{W_G*@O>rUi$;r~?RMl;?a}!Uj3U2atr>M+#6%i(hEN6=nV;hWWz0C^F-!bi z_Di4ZdGJs>GNfZFPGb&TI1HaV zGTpB67~c>+63h3<+%-18?D@7|mUe-0gZcn{6fF-OUck4pw&cSZ`qU0Q#pZ=rGrqs| zxTg8@&Bpg5BkXTa7k&I~D4W{DUps%aBLq&<`|!;!gLZgt$HS9zo6*}2|GFZ32sr7g z5ly2O$GayjHr++xP}fuREl~{LDDNSCyXyb+JeUz}g41{&Iv_fR4-5I*%A7VK1+2K_ z`vBwH&bv0^D=<`_oMIfZJ^&9K1)56$?T>t)T{A`!b2L@N8oqMGrKFY zn<=AtKf>P}!9=bW^4_P>A3Z?4FwgzDSieDiXE3(6p#NSvi~P62c`ZcF2IchCI=#e% zx6e1x!wY0XK{qHile1w@cZ`|>bgpl^e7uFnX{~d67wZqTC8>35YP9X^CF9{+z8!?F zvViBY_?g67*<3;VVn+c+dD7fI1>F$&jExOgzz9*-bmp64;x5C~RZM$|SvTpOolBx; zBKK*d*PaT-U_X8DeQ%C^FI`aY^%rd83$)Sc7?s_U=^6vcz01dgdvL@VeH)7yd)eHq zjG5_dIL)5zb~k$+1yge38pdE3U)CHF5*PmVJzL#xE@AMZO(-3jdUcYv#Us2#R z(U#+-$d~p z`8J6V_m&s$3|qZe_Y3;vXA0fMv!0#_Mfk2(-)gdwadE9zqHZt5Mbs@lC`kV|p~nU5 zPbxNTrd!{nMv{Ys_Lu-K-2)8y)YWePUl8743$M>VLK{3juILsY3kNp?L-Fzdzu$lH zfB5~C|HJPu`5%6N&OqPS7h3)0-eT!5Lypm3u#s=7J$|&6M=upY7qcqt-laV9yu5UV z8Q%cSEILFk5aiLKL+ER@71=eck4oXc&S@3d7m3d!AKz5@q-U^x(wudOwO&W?AWGubF4W8skgN zj^RWCTR|T1wCsKXV5HSufbWWA3dX!dRLqLt~TCjpHT-i7Wd}Xmx*&~r*AWX zyBc|@d3FZvsHP2DSK9e_xcJP}&uOfQ`G1BOzyWqKJ z6FiGNQjx949u?znE9a%wCO%+mbBv~V~9%wHo7q9p=HHkGPdQ(+J@0!x;m9pb{bWqE@v{m_Hz{jiT zm22c9Gi6qH)7VQs3m4L5qywhFg>?SAiai}0TCws3TCwuj>cB&+4%|N3Ye)Q&rqmSL zF(tPhI_tpin{0(z>nip>)J(meuB0)s?eNAWLtFeY@%7Jk{QB+VSVuD^T1yG{PXb4K zpZ#&gcWKAf+9eoM+mFC_{!`%Fhxk^pVd%lT?%;YMV9Uq6?4kCev#OwG{4u{U&SEKefoN?i0sR$nyU+#c83=n`|g;kT#X`+>d@zFuNo`P)DngY9$i*M0g(>cV8J z^zbP9p?sF5d8V~|SV6WUa@W(P#}{NvnlEl5-ekESZ!(&AlafMo$Do`%iM_w*jiZ}G zO`k3dZ(l!b(DoNu+w5f=A4kU>lO%UmG~B4TlUa-rvMDQH?LHfCn%}aF_?irP1m5A< zsJ9mGiV~kK{I7Vy=|`a`vES^cMptD2!^GY*TiR*+%y~5rG|Zc}dnP#v8s=U4KR*c`j=MJKB)G>x`j#9Scz%kt5)EqY!F@OSGr8y`lz{@IRpz5KkJ*?;Ks(Wjt`{_)p?nbU&)+f;e)x(d6l%b#1xoLsDR z6?=NZ?CHVpU)RQXS7>eZUVdvhMQ+~H?%7>2dwRF((jPe7QHh;DxSp~x5{x}-iyg73 zi>=*q)U78-8;h z^9<|g9kp#|sa&?RHrcwD{i9)QFO|m+S_Pj--ecoRwpPtEO|{6-T4ZP~F>$r_{?Z59 zrS{=iZ(58#P-6zw-8@$FRDO&0*T#oMtc*@w&p3kf4JR^Q^~u(JWJL_e$Ux=S5Y9WX-Clz| zmw9=U&2Q-0k=n0|vj;ZRwe|g;sr%TwXcRX^?3d{8PW-`X=Gso$qdg)=YdB{N-dYdM z<(H6)g+6Qmzcr?yZduGs-5WK}ybOGusks5XE@A)T-WnH2xsPvp@SVJZEx%_ra>Z+R zIr{d2i@^tdDB^t)^QP+lO~}TYVN-B>wNm5>_vO3w*?^aJ;RhSZ5b)T32lnbYGrRRI z`D7kU-H~jK2#1st9y9!6r>r}db?Hp-wn*({OxDm2o!yFGu4_N}sn>!7H*bw^s^T4c zqUzR=+XYxVJLrpa|1kB{a<3dK^@F-6-T=H$Q+Bc)hy1R=7mz=Yes+>Wa2x%8k=%Ys z_Czt4w?58Zf90~+K>qdp{BBH5v^mU_Q?MvhP!~c!*<%XpD$r$a^5pkoXmFb;Ro<&? z0b{y<6ZvqUJNrCZO3t)oE4f2<^32-jHVBXK{~BapnlX|;qrJ|wYK_${-!=H~``BKW zY*oKHr;%rda{A7_yF~jVUAeYPu<=TcqL0$|8w=Y`-L}k(l8&vMiAih?^U=RztaTiH zUD6aOjAw5I|4YF0zUE7G9&2{+Fz_52)K$wE=-sD*nRi#o^Yt1h+9_Puvi4G5&`w~B z?>pw=|Fgcfb1hBohez6xO9zlkd(k&Xj$@q&O-hbPzSy>>E@=XP*`SQtf<4&2qb*gu zOVeL_Pv1J`##=kV$$sippZq>3p5Fgv0x>zVRrv3Ab8YDn851XtB7KK%&$_Bx_6^}t ze@+g?oG$Tk=#qM*uUoj#Uln)~|5ZiVhX<}|o5x$9zW80|h1qAxi<)Y^a$C>v%Uxv4 zx%U%$-`BH8*tW5GBC^lXL9h+8&U0<>>%W42T=WIAaxA}UuY8h&;LjL-7VSSuGv>aH zPwVREJ`4Sb51?-w>kds-{xi?uul{n%mjyknIs9wM1KmsKZiXNHIm|>ELtvf!CGsEB z7Ri=_lp6?--v*Cv9L8gFW!%B3bg6^baHSi~H{q_Ood03vCHSld4?Z4eP+qe92KaR^ zINrl|S0YP0pySp0jyQBH8=5a_dW`R!oS4|OmhbfbGW<%8CMGt?PTPNsM}Xh{c+kAj zKwpA%oTk3?Watoj?u4E@py$WNLd)o=%A>$M#NOwNnl!)I>o#{Cr0ER%+}t=`WNF%c zGttgnK3%APC;gQ{g6NGp{t>5o;e(h5A?%b2m2927PQymM+e86mqi~wJ&BgS*4zH^O)7U0 zeelaF21w%>_Gq)`YH%vwuKi^%6+9!_7M|0!E+)p>U1;O}sb=L~<=}y~HU6`KD;xjU zz27^%->>qU!VjI`S2hgAlWCs&qWvAz@&$g=yw~^oz0v+gT4w6K_NJZV{5yWE`-<&- zYnKtUPZvLqRBRsCK7XEve%pqP$)A^##*b^S?3Uas`8?+i zfFtQ^?=8dLz_seqzhHd3_&zk7^(gty6c1HQyeV_85Y?7pTQX13e2m-6DhPvGMC`b4wTuXG9K=);u_p< zG972wG70UAgU2?gjEDO};QcSO>2Cf~!tqIiY}u&i3*7O#HzwD(vjCdCF?pTmqBqg( zWN3D+N3%ivyZE?1dymRnnc>B69yrIFlg@YNm1V|ZS2baq7p4X~`Z?%4{l95A*Y}Ay z-XSlH&Do-MjHVr_0Plz*g6$c6WKNvj`TN*rLWheS%G5VyNKT54FyP7xzI}g&g^}K5^`HkqFo3`CXUN-Ju!e(Uk zym)ETKIWSalefLyM7FOsrtaWz>t%uAJ6N0o%vccKYdQ3TeK?rRGia$iq$91DSh5kODSm}-E_BF@5cp`lhvbt!v|a0A$tU$u{P`6A{1SX3b7^0#@*1!fI+yx_Hi32jM4t-c=n2ei z#8DFu$G(SR>E>?EYAbDu0CO5J;>7cW!P8p$Uk?1~z=Hp&*Xb#iUQMYj6J{NuGtBtb z!C~AZjHT8!JZoKxolt$PxEY&o-1z~|@1<8~uL!o&_MP*xp|7&$cf5FS=E7AO@I%|v zv|DG$#-Klo!wZq0_+D&(qVxwl0c$~ZRMU97vzsekPm+dO+`}- zspO7$awz=MjvUGT&Yk--itpqj1P`t9{bVF>pxw=9!r#mvqcRQGYA;48)37U=Og;=v zv@$QXZpKe>3VZwnGh7W1OCDcyk!>q+)7Tq`(<|jn4(a*cp0>@!W_%jGBaOUHt3L4u zb)|vX*MHZptLVR;b;%!62JDnOvqG??6TxTM&75;);WwA)jDS~(D?Zdf-awt1b^|d5 zRoEA9FsC-HFTIiVeSX)Q%u$_`@$>rcWk0QQY!?U4K32}Mhh>+9r$ztCs5b}{x}jnjJ{}$is*Ng-2NfWUTFA0rDpJy=?mdT3Bw3(+LlqZTpGtdlCI0ZhMTCoy$#B zu+gEsn4lETQzcH98F?^=9(!ReV*Dik{C;nzPTMc+=*)Gkk?x)e?XB+X!j8S8A$h8N@2^%P$JN)zm~(GrPT$sCWbH(&O+i-&{migF_yOOjjQ>6lIDh4t zU$=6Ld~JTugAecvj#gOu{ebpWxjtmNxOVz*>kB+@pd5R0dUJ#qduLi}znfy;?0k%F zruYhA8f{}&SvST@Pg<^d?)_W_jcWh?xlFJ zPk>9GU&d3%uN3pIITQV|9G_F8{DK|~#U4p_5NyjEZDXt~@Y@uGdm3=9o&-)qjIVn) z#?~1-TG3d1wBmtwbe0b4sRjS@^A>bX-?Z@IG<|PHZb%nN)tj=9!XG~TpbYyWeU|>y zza92IHO8JHo37{lc6dOtM)Jz~2E4xf8+~zQ*|!DG+*~U9kv$|*mts6NQO4?WDReo? zSQ&uLY7u30W@nl*9mrt8&hQ%{uWtFP=5T^oh}XE6oL+b@d#}09kB!i{p6zpqXZyVOLu{Yy+n;(la>eSHhg|Mot6$Ow*-5vVg2p}YvCbvI zj`)mht=o`e+mK^L*jl9@O4eu{MBkU!vc~sqKIO={A>{gKm@~bbem|2&R(3!Si&)ci zGOxeLT8Xn5r!FRc+CJ9kOHYZna=uGfg7p{Y#I+`mH^fUa4(N^xhM1{K*h_XJYp~bA zvp>c`JT$s7wmfxEz98sDd-LpA;WLHT%hqYHD|&$VQhQxX1AAQ;(Z9{~!9S}h#$LTp zaBnB{A7-A>Iw|b++2_?A)HhI@{(Y<~pN1!E72gPcGSayjFYU*dPB7tf@Q}BLy8^p~ zt~0z-zDup?{r0-Od2ZipX}^81+M6d_J?Q;@hhOEnUwT#?yBj$DbI;TzXMt047p&x+ z*6+XN7u@HJr(%cpKDYW|#cu9Je#k#{x#ktxD;_VxeyYBxZGL|`XfL@!Tjd|uSS6VU z)Rq<82XI16oTJy6=v8aYTHn6l*1n?uElbTY=d0di;}iP!CnXe*2p%OTL{kR6TQ&&E zZ1n10y&pSz*AV8bQpG|+bE3Bj^z_U~bhTPjroNr1z7ZReMt($0s739v{Tu0G`rAwV z_y%VKQ5zqkjc?I6UzgHvkYC64+kYsSA#4SbEepY&)(dOEbI;b?eS^gb8=okKz z0n4-_ORG4OtdxDp)rCen>W<3W-2BY^J-)pk%u(dQtR)Yo=7|S6J3`<8g|@37v*^bz z*AJWX?wJ16hpoTwz*UNm%R44MPGkFc1^7e$r=}RquRCH%FNdTt&qlqqkjf#8m;3Wi z_AJJqvWBvn%Tsq)TO?;%xU*E#b=DVR&!4Sie$GHAR<^KiszsKzJ3k-s9ius837^V! zrj<4G^7V18nW4p7t-ogZwxrg~*q-Z5_MA7Y-pzT~?u_6RaZt>?*{>37AX{eo4s>r5 z+CF{N;$55n{L>>9JAQj)dhPxrv3c=Tv7^^M5IvgQE?#~6P0ucM$~aHgcJ{}F;HXc? zd+9zZyT_GXZVGePBA->+y0|U#C}onPpywS$7GBh|wOpw(x6-aU*Dilu@VbMEt!tz! z@7Y!2Dqrhh-s{S2GHCU3FRW zMdsP*@LdePLvPGx8ci1aVYYoPekFJgd&)_jwdh93MV0reMx8Lu7b8F2Q{Z^SnD&vhw z8Q0C)2Xl!Vlj&ZWeGZPr-}$c0Ci9D^#orpQ%pX*yp7v7L7_J%HO=h;U$NBB~rOMQ} z_I%EjVNK!Ug)2NbZ>Y>9`a31wD!NQX%-Mo@qF;V_ZuvHq_r|t@Yuo;nx$S>WWxnC+ zy_o9)#`ZpNCOM6~ULoCd2KVpq*TA1}mL$gLOS&GQEq~)L*G*QTX9}cUEK?d8P4LO8FYz{hl)Mn0bae zcbL>LD?jE#d+2`I_NxuCGU8?C0%9#Q&_>>SPCn$%LoO^qpGZPe&};#F-1f~it%buD zv~q@E>)>mu%MPqFWkaS`m%UwY%A$U|J9261M&S@yp|RNKWC}h2w_nQUWTdTMQkg2p zLw|5(c9@wy4Y(YJQ&r|V2j`cRvE!9+{OZ%&6qWJD^bH5+kh#pY$ETA@3&+*9)rYg+ zZ!xPgQ}CkX-gurdE<4O)&c2ZL&ZGUf%FcE0e(1OTn%pv@RR*8GaPYX_ zuFpF;;QUSi4?I9whw*rfDL%%kyTbXT~e3xv8uexqQ_o~G9TXi$KAM9o7~?{+UYdp(Ce*u!gOrJo;nn$>7fN z?IuUp3Fum5^d;fhn@b)C$CTM*`q>1hs*K0mzw~K8>3GPWi>IiJHy6L*!+Fce5#JwH zsWRTY-$q%JMxGaGj^L=-Atw~?Mqg=?WSNg|Z z+xPwAtyT9e)ZIZ_{jt|?aQvM=x^MrGt>4Jji~JnHzVS_N9KztjzKiDCfhY9l^Qh?d z_ZwY9ok4$eu)dq{#pL*>!L?!hk;AQ9k(+*F} zmo1W*==nT*oAnmIw`YiVt!%4*7+>J_P>}W*NA)GGwbeDw4^z+j#H}etH;K;DtRtyo zr|i?IF-}G*)>V7H%dlOh@G*vY?{G7keZA6git4_F9XB)1(RqYAO0aWiUmU-tZ8y zoyuv0k7+`BB(bZ0Z0ZO%rtog|JEP$p*1NI=qGwK+fjrKMSqGlhU5XWJIC^aCdR5-v zk6j;&jmVEfXKXiBVvAv2S2hFM4#uOazbWWV^ZzORc&LATy5i@8Ja&j!i{D}^_i?rf zoIMx7S&;q?U`y&Be<6H@SdYlI7iKLY`*$8TGueGBxfY$V?|rIleIf9T?ZBSR@F;uj z64FJJ_#2orwVsu2r0VbBtDUpk2a5G?z#gU8$c@aorZBHD4X%{yp%h%rWUkF4*1y3- zTBz@kX_F6;dWbtzpT(O|%0(qF(3$OAj{GY&DPsLiqr+8YxA-&Xy^Z@f(1?riSIkWw z&s0yI_e`=wF)|N=VYNr-bM8`^A<%-2W4}e=LCe{_o5iK+x{0xBU=PGzaJda!a^`K>e&(sA=XX9|7|L&PbzPKG z*M90M{GjH6!h5Fee!>(s7T%+}3b%JMZniG3o=)~>n0ws*j022W((bhw-SQH3lrmnT z?L78cFsI#@pf7R8sEv1V#t0k1ivDBNjtwg~PB~@zjg#o#jZ^48f1D(5mr_psTI!9R z_Pvf}+)iTL#_)S$fJgS#o0SiH;}qnNd#ya_v$v&cE6S3Li{v7j+G}PoP7)%_xq6(j=_kiA6zwdi|W=&6WLxluVQx%b61)iUmasAksrxjim_gWJj$PU&+f(atH4AW z_tCd)vuAbh1Loe@qr1^_u)l}vwjz^MwgK67Ddl`R$L>`&h;w^o<6h+1xHS&j$U{>F z+>UXT*-l_RHoK%-bt)$06`pUPjwR?piZ!kwrerK*kjL}KX3y+aJ%gy1cV`#ng%8(T zc}OgY^sxEijn)sz9Me3zwp;dC$tC?+dFAOwe=TuxLi3IG2(2M@!@l?Cf9S!+^29WL z^7{dIAUMlQnX};eRQ(BMc3h?RM^3PMzhc>x^ULyA^w@KlB+snv8oeL^PfEY*834{I zcxisb+1nR+_I95}c%}Q=jqmOV#UqJ1*~HX+K(%tXJMQ>7ptt8Vb_S0h=E%KtGH}8hf4e zkoG^t%cjA%)wEf$2%l!mwI|{glfQi*vS**kZ^Xy9{Y>=3dgOLBIIQOPQqNz~Oy4dA zpT1mSUql&uSDw*%FY_RxbKL>q!^=QvCqFe2&%bOkRws^(%;^eN=J@nlR7QcBG zznsbZ>MHgd>I`R{doH@v-gL%O_W9N;CW*gt`_nNrZr5n6`*L9KL5^;e|H_-|Ro7ZTILEWp!HSp7jEqYTS=O+&i#mio! z&o3~BOROx-uTy)e>)Bvkk5kv)er<9xB)?Ac%o1;0b*}4y$dHyplot)>L&M9s_GQB{ z<7@MA1mM_r#Sn($_ve5 zGlo59%nQsN)*n8YaZl48@)I6YkPn8e;E3tklNHY>Jul zdAon_DONzVyDL5xpxC+ZqpX|!?&_mDn>hEe ze(jU+1n))9*u*xO#QD|^?)l(0#p35l*1CWQo5eFeZI{=7ouIe4-#A?n2S;)@#D>+JaWwX zWNY(mJc#O0j)m*ap}n*-^?mMDri%C!!T-M3o+{U#yQnuQAH)uK{+HkOJ9vJD%F_n5 zKTR8i2fpd@7l4$EOT~Q-(L7nJU>h2r_cvz zK>nUIwo=XY4a9AA(!R%L$1X-E+Nr$>MQ54A_3-1`haTFs@S)Zt3m^Iof7v6Ed0ST1 z9@9r;yCL1hL6|FL*T_Vp33vXDnFUNLEHb^eM2{}eZx+a+qZUq-@rXj ztIqa_p>OrQeM`}|tpoIJ?Erl{u+5{N@wu^>?L7Y}<-fzZAC!zB@BOP`VxX~& zyc#)+9GORF>~2_ExgEa%xeekE5Tn(Io_SdL%pxZtd*D+&lWi_W8T{%G7<|CW2h&V^ zWHtL77cMoUbSCXg=#Mo!`D*Y#FmIBVps@mZkl>l(Pg1WCQ@GBLop3hCo__at{-m!@ z=hCM)2AW?YI_oynbuYBj|9pvmsDI2iU99{4{wbfsK>ds7nems>zqMZf7SX@;wlDcz z_tC#g>E9aq7e=Nod78{6cwM-)B!m zBu>uVDda1J21duoML_#2$aAFoK?&3J3cp%c&gS=Z{`R5sbaI~f`cusKCypj|vyZl^ z@Seo(1JM0g^sKYdvtIwGYzO%*v#nm4-z8mX2zvVZk#3(-1UM1s⪙1{Xly$VtF?} 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

    OvBHE&f2rFwx4>`kJ%o? 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%0AK-WRTHcWWo6+ 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≫UJKt# z{IJ}=FWJojFJ(Nzj=TweFK4(}=iuc#&(5wF9}x3FCTz~|Q>KLR+xi{|lr)clW_9EZ zp}F#g<#&AML}Evv#QFWH6N!57_o5St`<>qj+G(DmypJ8&mL$h3d$5H$Q(RYe&wTAk zQJzs_l4taA34+VsOVK@y$9~CFl75P>WWK;beU!03Hp$$0?+f=mV>z3Zeu~53sdK#f z2DNZLT>#BTQPXe8y&fJ*ZWVt5n&}MKLbV%BJH`oc#*p+uWRgi?JGX_=F9jypyBI$( z7W&4)NF-1aT^4Dp;@jI%o(m>o@rpC{YX53v0r^#)8_vUw@H~PIfnAh}JZv_}9y_DG zr%}!!$F7jB4e)NEx$|IvcRhJqt~~aTcfK*`ou9ey7`}fw(9a$AodWW_o?Z}6adz5HDiW4%$E zhsY7QZS?I7vD7u~p~vmQD5 zx|jYubH1(*9Yt*cx+zein%`LQ^(B$T)Li}$KVu=j3HrPIljf-+^1tPVJtVTuq?&iBesIy|3MXEQQIx z8|o*(>&*{1@*7}26QNB9wceds=jgznBgfm2uRrBeI1yni8fs$8z^#+DCHVmQhP9}Iy4gjn@shjK3!%pn>J3Nd*53!5V?JVLPun=4pi5)PK#BAFQzv3w-tR>xVm;39*lzv$9wut6QwWEPn|MNKQ7ec#5(C!qpn+EMl zvCCHwm$UZ%{U)^&_z$rkB{T_o0%teyb^!Ow*rmtjLT~C;zZ8hH-CM+&aM+}xVVw1) z5E@c5RpR{q)QLDWbbc>75r>BQ9fyV%#|$+5wuhrfLtqsR?{#Td`l9LO`(w-E%zr8C zqSh+qx{52!rXmi=PeRWs^m_T>^#}DgG3>V32GdqH2YuT-#_HRZ)C85+UTyV3@+fN| z^o{ae*nU3<+iPV$dylLvX&)8&MDovChhp{UZfF;W$3pO|;w9}%BdI#*r877*_g=di z;BKW3BDvJ00@OUIHc38#)=ue}c4U^kc*$eh*IkFNsqebmGuG+r7(7+Qc>n6ROR}w9 z!dh#;!_Asj(#&^0WFN=rD+-QPwPPCc?}$9G!hU<%*l(V<^Q{A;T9D>T*t9k{jPO{tWem>~5 zQgqtk(5V!E<7)hkgr(2Qv+>o)E%ZsI(Wla-kKua)gXpu`p^tQ;^4Zc+Pc>g?v^jtf zy5G&W_bo>k{?N2l8tk{or46#7Exz1~F`nAZ(piF|_+1UIV}UQqJ1!j8=xihIss3Cx zujYOTPIbEP_gED8CVUWw2mCnRkpah8HSf|M znPk@a-HU`woS6*)uP2T_B$N+iy6l4=Oy~M2b=p=t?Oz0=zJ62prXyP z6=~mu|19r&{Br}po&65zEb3l*SRb{2t7`*zA;+w{uh{w@#_EJ86|?I=@9G@MhsJUK ztMDv94;DvKdEzs8TDmTAKRm_UNC$RpusUy-bl%JKpFlTCH=pLW)xnosTnDdLyd53? zP1|-fx^+bBGr+ozzfau`tiaoy2CL+!3s~iQod(vg0ITvxf;9oGBLypSB0Gz9?|{}( zt&^R=taYy&JWkzi*STF<=Wb*y(b%3-4*WXTBf#Ic38p3R3;KGG>Kn~CtM9}Qs?WPq z-(O%Ht)W^=y|MCX$2z~u80Wl8^M3z2|Mi18{m*AuJK*e<{^y$yUO4ZzuXXmdof-7} zj)Q;fe?H5$?;iC08wdZZ|M`dP^Vp#0cOLBId6?W$ka`E%3@g{H>_1<;oE)0?-pijA z5M$T(IAtHnHhPw}y8f7}-m`fG?ZIz4JqKobsqe8!j|{ z89c2$dDMw-ES{r!^r7($|94sXYA)HoioO2Z?wD)sH|oAhI?#>nCxRvIP1H1zOTKQF z8FU^^=ZDQ~@u2uFHWQx17L-m*hQ5AqAJ@*K!G@8tLrURc_*?zRXK?mv1zTe?;X`;) z_DRPqBmb`FbG=dynO5KSN$ml)c4^IV)k>sksf)0+CHGt(m+r zITv}OediAJ0W@E%SO|VwjCvHU2?271h47Bz{<0$q@ekv(uoskHSx%d|ice(qyhyyF zV+T5d{yONZQfD7D2O98yH?e=SWbc~7jeAX?KEihp6#LbgGvb@?O249~)n}nG^$FIH zLi&yalkz9B0ge*WYo~9)+Wr8vLg#LwFX>$`uk`>rL@@#NBVYTVbm9Gmcm}XoK6HHO z1pTOujpZQI^4;STP3q>c_-E*pB>F@#5a~RfLy@Vi*70`QX~VcK}H z?OT1g6$!WHv;jZStOA-TRw+IVo` zucfB=;1WK9O|?g=J?>sQxV_c_#m__wtp!)mR%?N!g~w;izj&~Ne!7@H#el!8zR;cP zxbB5VYv92sdAcds;V-P2JkOrPbcM_J7ubHX zdZN^$cW@@mFV+;zlU!&ItVbvIui3fx=rloeiefiv9heWU^^ufdXoqg%A=MwYGnVYD z8`$rxdZ)?Ah~(ow_J8bj<)bAlT|Opllw3$Y#Csj^TW{9@zXqAF^f_I_8m&3iUJlJu zI{#&wtDjslz(fAI`Z;}cU^6LC=bvwH?e^yDd$jMLFBks=^k`?UI_ex+bhBRREd6fc z4cbE_dcTgHRcq;Otc<9%Z=c%z|LV-5A~?a zu0zM|+c>9TAG!zr*{E2F?4XN{b#o>fGKOp(!Q7)h@TI@Nbsy*2>_ji_GkNt{MrYRK zweGprIoBo%4^1}a7;P!1u z-xn7gncl^>?cD=yhO_~fTKcEHXF@5l8_}G=Zs=bpD# zv8Fg{V;US<$9g(>hHm%8%w8$~eW~@4SEilw^rUYupxVm5t=_cJB73 z&E0hw=5E3;b9cFK?&_I4)yx|H`RDH?Xg=ioGoJiGcj_lBJ!2P>J9I{nHPXfiShoks z9lBKYc%Ix*2Qfgq@vhuW9FRNt$xaR60xNTtc4_zC$vYmeP=D#jOj;kZx37mLKlS+8 z%dhk8Tz`IDIo|+rBVrx4zD@Zq*}X;FtKgo#|BQ{9D&~JV@!4|pNI819JZu_5d^4sB z*{-@$XY~h9Z^8B`PP-SUy=-sQr-#r@Rm6HCb`OwaFGkKqPnauBgW(!u9hU#1wQ=)k zXKl3c4q&wBHSqm&!Bu{S?^6TgD*9V6+B~J)$~M6?dO^MHo9* z&)Jq2+1;ghR`}-+{+zw3S=dkItZD76=S`!jL&6>sUb63%Pb(yDURcXsO!#-zdmVog zAD{fP&9RikX%`?rRLI$qfzO+gIQCnBywDN$<$3v{INuCZ+(h31w7GTqYU^-JjPr9r8nHf%Qz&)o-b>#{8F2UNV^{hyF(tn$lF;5zqh%Y&M zj;-rU%mlvoL08sY)f0HS(aZ5|)fs8|&i%gIM1Nv2RZc8MKD)!WPR=`6i+=)cd#K@% z-6NaN_6OZ5{+qh%Q z@oj_ntxgSiPV3X)HRQc!=e@I!53CtqUU#8!Dt$`tc>nzRXFv9^|NBQe|7bhbfUFH|FP*bTar}irycy z_Dl1sM?`l27xX$-caEeO zf2F;V>^)aKel@>Cz_)qlOcj+~A zYoS*@^x6i!wgK;UXtmczs~4#qN-oDHzZstd-c-J(3;(J;7I?MjTAh~_Jl4fG`npE* zoe^XwhTZ6YKQY&&V#s4Va?)|LNj1d+);@a_I`vT(u!c3Fd+aw3u0eNHP$wKx4brvP zRlIu=Ke`3l$!FKz^%W-9`cT3fIX@`h@i}NCxhth@IcLQDt>8o7`1PTDF2&+h8zbJo zZ zaGGR-_4PxbX*>gNqJ!X+ z|M8b;xJic!M(s;Ur-_H3XtF2`KlJVp{B&jxaUy*qzHKk@4o{vIVGmT0V{F0h7VOxt z_1L(t3f8?`iCH?|jWl=euEGas2QSr&EP@_7LqPRI$}=_7PC84p7fqJEU0JT&4Rr?z`mnJQ`q8>4eJLErf}!8Kzhb%Fg6~lD@UC z&Z!Y9XYDFq!?$`w<51f9|5wmgKJXgnrOcYtL(Ly}WWEidBWsUqNIITcx4Y zgnFJpr)If({0|XRQSDFr656}?B{mD6vHQc|kY4L^YLw$gsBb^Mj-1<=Ds2kwc>q>M zn9Fbey#uS@43eAoe}72w@Rc$2>Cz?E2o4YV;s9=~kBx_7e}whjC!NoB6Yvtlj4kJS zQ^e}6LK{~)Uy#bB?fGS zKd#YyVk6K-`5M`+m7|Eaa*aWE)%-AbZJEvuSg1Xr%0;WKQ_o{zBWKuFnQdmPeVBS4 zokx&hUJ|#1=SAkF?%m7_W5$@5553L2jC=?4;?#KAA%S)?~_qw6y zzr=nMN%`e{#Vux8Sn_ZP9ykdP9EAs7Ko0*MnL36JI|dEE&$AzL|7reymK-(m@2ej? z&|g1Tm2K+>ck``HkIyCl!7n2J^e5cPIHy;9Htk>Fi?Q6>LEn-I^m2mnr6*5|_ps|^ zHz%k`(miSf50qa+jUa6k*g!VEwF6y=9#tK@V#v`e_3iq(4YDB<1tt|Mrtc~Io(McM z8S7^L#=cUlR6H+P{*Cs`F^<(CjGwMUUeBaMnvhSIW(k*G7QbWMFI4^|-^m{(v#mY! ztC53r$$<=YgS2sVNfU5_%a*?bX7rw`OI}IWC13FKQWAW+e7c15U=-)6v^s?PjYpZg z$HDhe`o14u1{e!#udqJP6zUJp-0!O&Y=Qsy9=dntNZC^KM=(SEAhZgQk0~_Y*qvx0 z-XdL654_Md&N}ATCAY?*v2-}klB>lV=n~pkT~g=j60R}&?AIk)8<-#KAD}xm&mYx( zTImwC)fpu4lx$i!!vIl-|BtwKj`RmF}fG=UFkbQ4;ABA z9wO%VI<~v^g0xUCvVb<6*Y;}N=$wa&@iVC(ED0|&B@w>U8vcwanXFnyWLUHmy~M-h zMJ*2}kt1aLl|tf$ivR6dV3v9C;rq93DaB8PcB-3fr|oveyzXP>$;phF&9xKwPG*_j z2sKe#vBg)KYvvxRjr30Ys96Rty<%#ww0!-b>fex03xm$%1_s$Q79Qp)M|%k9U$GL! z6r$Mf$qkGN4|Eh@t4<^zHM*>48nw*vbtbg~|NM~2?J1_Vr5o9Pk@z{jdwmn%-kwC; zZLH@_qsw~|Gss`@TQrPPbM)fa+TAa%nKEzn=(1zv_Fh%o=9JlV@Fm)Jom+T9=hSJv z?^+K36XR&Xw)5(Vp2IhaSezW&+RFuW0KalK`|~p7@xdv%0o!m1_W5#fLH~OFwG^9W ziu-q07;&U>SgD=x2@4R3gL2VRc-$V{4 z;J|vf#dSo_#b9M0f9lROSVz!K^tW{e8t*0tRjx(h`*;|=;MLacqek|F#5=@0)bZQzxE8^8+5CMMymtL4 zGrM#&u^?*G>o`}U558Ifp9kr0YxdN+MO@3zetmZl{T8B2|1WXp0%v7a?*Dhs3^zp~ z!Gnf6dow5~78(jnShHsa1*5`(vJR*J%m9i;Whd<@>4_Oo5y=8QohhxD!ApQy9MhD{ z9Mn{z5--OtTJCr687@(YR>r8q{J+2Tu6OUX-`RUJOn&}I2boM2v7-i7@9KL6tLCG+mN2H= zhE2K!nB@aBA8GXBdDUy87vO2^YYhGNp+9j;w{kh0UEjR{8rD%)Q3s92vDc#fR@QMa z&Lz8(e2Q<{e^dVb59zB6nyMb7_6llTZ$ti=2YA1}^Sss$YrJ|dzwhGvIOS^CJ8mk! zZ{_#i87AgLZ*wxf7d@4XD=ynVBq!q)R%RrhduJrObzWyN{gBN0&bwVz)cO^Wxg`bK z&_2;&|2rdXgfK|Q_B15Br|^ELLmP?XcBAjoA?f)g=#yl4k1eu=|CD^@o3Ju^0}}1x9zOqcE`+G zbkuLTDUZ@2fQoA307Y(5$Lv65T` zHgfC9v|B}c8iQp&wLe9+O?3Esv?+bAr!B2D(mR8Ar-pZGqR#_En|)sPV5)t`;Ggo= zy@%fw+?W56rY^_CGT?tY*R@CS|8gzxTaU|&Wk#Rg(|SGk%BXjX`kxQW7DMM!c2l`a z(du96N8dler+7hp6ZpIEgZKvfL<|LAelw(}HIT(@&X&Erf}G;l@1nmF?{4SaFg7Y9 zr_K4I!TcV3PBoC%*hCHaoApEboR^z=1^Wz-66{4$!y5nE^YBUjYVt+7y@HvCYpx?N zayv5hU3i7<_lW_>3*gIhjs$R3#fgc$sX-ouIep3d1#1IY+&>075eIFXu63l~>y0yX zo~=54`BAHAk3L(bdG~3&ef*4x(}YU}JYPSQbGgYkvL8_QAY^4Q&#SG5!x@5`pC&=~6zZ#r);?_I8!JDtc zcTykM(nba2eOkGD=%IR(pG^$TLcfmrd7b-p{e<8w^g-~k>q_(pTdSJ+cVdfo&7HOzK_&J(0BENQ{=9JR2&^LIlT*%*5=QT6e@@imJ zzjN^ek@cZmKLMEKXKlOck^@@jH!cfv`3~m2o~Z-oI$&N%o-{ot2lG=FW@AfNTA1f( z&MXIWdai}JhOy&n#&U2{{kqOE&d^re$UgPY(CDdS0{&;`nrMqU&>gJpzBxhP#(#ho zg@2o0#Jsw`mXB&nbgtp^4?q9^7QRT8#%Yhv_mQkB686EvHe!1jL zws8bBh6ZWqt9wV;dnV>4kEd%3wO-}Ff^+E>61OYnPPg(r_A?Fd(%8>BJ#$02c8}a$ zCH+>>{shJV?uBzwX8v=s*FAPLIx&U5rvV3jxN+i3zXv{iHC_MYV(AWX;_@I)Y*voW zV=sE{eaX@-bqhRXU00%ciiu^fu-9unu62wx>$=*VbzLpw!qlGe$8Je>Cq*OhmtLo! zlZlh<9`?N%V0(`1@H6#mKH+2PMLyw2>SgffKDrD{%((#*^GPOFd~q;5g|>#qqrmfP z&?tfZ^xk7=njtpVIP{Et&gK`_hIYizm;0)l6TMT=+K0~nxej_joBfqZ_K^+t*%yqp zw4I=B#d|Sg4sQkPUFc(M_Wb8y58GGCMeOG~=Q;Per?V-sPu=M!(YYPS@6*8l5Bhx* zIC{~a@>qB0kXSG;SWf@!Evx)OS)B0>dfrMsOegfz_!q9p`a0LNCTk;Om!UBDLC_PoRzTHE$Gjr~=*z$!^snmC@&y=<8g* zqXTB`kM@gtg4&{0*sdqMA#3g=mVDxztgbpz~?V2&-Eqb`EKOn2hjb8$nyix_o4pDb7+q`Ox;4T*Xt_IkPrQsiNKEj z5StC&{1J4WM8%XE$+bNCt~ zS5PbG>i@E10{vGU8@4&y+7N1;wz#!UAGjm%mA(;aAA7x}Zt>Bk{SA?NoTdWppHZa! z_t1XmYkhYKu_r!aHveqv;r6~u^Wn#5&udW)gK}K>Eceyp<1E78T8>|J$tm9a<*Lsi zf3k2kbHn5bE+HSGI%$pn<&4$xPiEqu%+%P1-@o1)w6qM_5DcLn%tXeom{s*ACgsH4weE@(Hlw+q{QN>u)VEvnCt zTYZ);@50Xz?Aj~EmHi8-(^1W#{CO94o$s?)a02^zz`h*vLDmdr46D(sW6DdJ+zUVOhlibs_QS8A5P1Q%c zH+`zwN6t(i+Dj(vPwP$sS<2=Uws?*Bz|gg2Lv9Rv{i2|@&EOZ-C$Y!F!4bLoB-L&t z;Z4U7@4m;*W}eYIaouA2Y=UQ!fg7o zovZuQgyEM$6X~GngFKBRmaS{9G%@OiqkCG@qAB{7Bt{`0%6jF~Sr44t+Kg?L+$EXY zkZ+dZ`#a%Z1Aa0(ClMpaDMf*#^zbKDBSD?Q{k^ZV29({ux&utEmT>b?5eo{7mP>rKk zmYk~bLwfcpyVgLtCX+Loz^9(6xccT7u}PjccC*IxfQNOV-%H*(I~K66GRQ3-Y|F{b z<-k-(-?eTh&;Fnr9x+TM@rut_pPIyP_CZknK+vZh(-`x9rSV((29Kl%+9M8q%gW9Z z)E^mr!#-Pm%a#R z2%j~lP!jHMlz=;~Ghr;;$H~u;?T2qabYjvz=UK*CAEUmZWsLErjPXWimipK!Q?olG zKJpu;<%iC&xPl94yFlTN_Mn72Zw z%pN%MG3W6Nx|YIskv%lE%h-u#tt&tdV zPxdfwXijm4&JIK7|NaMfhO8NXd1Y;N(_H#n&u{L%=OylG&F5vz>ns4i3AJWVf#IL? z<{$Z4*14gd_k4)FbyY1oQNCF)mtlh!HFB;L_VkgF$=BL0_U2zp9J`*_Wsc63S|EQ; z^JeTLw8ZWs#QSPneNfZ1kA~(i=lKCM=5gp7 zW17~bYo6F&1&zQ#&t&LBarKL`cjyGV&%6?Uw{Z_U(y70d(03K_vYzKz#TjvrJ!w`l z&T=-!V`ccC(5C)e?>@o)7`1jGjpTnmuC{4MagXRG-!TO~s!wFi`HnRDuQt=j{=;K| z6&O>`@!VM6d7A6^6WR|l1I!uT@8mt<_I;;aZ#>U(&l6nqm3lz^aBTyZb`|)Z=$$ z;7`5gY9=rbRu$_GWo)?BQR#@Zy&urm9CF_8^6r<8%={X54jEGXO6?2&;+bX-uqO6WNzqo4T)Os$^~k4JFm|pd z*ShVL;G8?v)tAGo5T^=ont3ucC&Gt$e$_E_0=MRmKZ`He1PuJzixA3^7^6=9!x zPJ7=e*BiFyf0y~~rRe7)w1J^?;j@k-g~8sR{4?z2Gxn`&U5= zBgad@3tGG=TLy21d@EkBCl*qcBOkNXpT~O>I4`h?^C=`R&!3>UxVmi=zRH|rccadSrVYJs>aBUd zSMTaQV43l;gRQQt>mB3I@XUifft+ivwHUle^N!ZG$@lTD;{8_sXxG@9MZgK{l8Y8K&jou0u^vQ!Sp5+VQZ!~Lkc+b~4e7tAQ9O1pZHZQkrHb>gLTI0qgmZ#vi;wC204y><7ao{3DKhkk0E;T|(5QL*{&mxkw258nJ5-*pcA z_qm_i0bbx?&Mbx=``(Exh?dxcG=0`Go|*Ay6#b2%HVeCOC;i zvqk7bl<>nF;hiDarbV>C=$!wc$E|nCjrr8R3zc&% zXFrbE=63@_`XSDC0`Kq{<nzeIhu6v$qnYr}q;giKCPLq!m!X~?REj-EGV(M_Zb&j&$*Y7KwHXh@;-ZOR) z+u^>y*z)wp_T7t}_wMIf_^fDuFTW)}XMYr2kz1@7!nR{6YBVyldv;rTB7=xJ&TS~WZCnNnt7 z?V#T8C7pr9ef7~{=3j$3_sv`n4=`}=R_oZ8HgytA;;mHlBm4{o9GSDLf zy)w{*XSOVYUKwbT7CoQ^V|h_JY$!m7ql(aBgrP(E=54G|RDL;0Umh@vwkDnxZAE{{ zt>`}nc@&RElLs2h^EPMtz9XO^GVCM6l1b5izvQz3?O(gCr>}gb*pHoe_7%F<7ToJB zbgwbE_xnQk;=#Qa3f)Tud77sS-D?Z(J;l9ByDs>B4eWD3O>CG;&}R#JkggBb7T|6p4IuM@{zn_IHMHXvq-+%(VSa~&p7t^wa?D*+FsKh2;+_-uAG4$OoMk7)cyg3 zWEtLV9i%oT;HQ_7 zdrC4-7w5dn#K^KW z9t&%F0d4W#pLtJyL^yWv{?=y3Q0zIrD{b?EVCyej9oPx)gb@ZVcx&KlECAQ2B5)l`-~H{Y5Dm^P(AR;t3hVb9w-(TEOM}01 zuhQz&CI9DO>tuK%UD7|JPmcxqbg9v&W3&3yG73F7o*1D4y&4TK<^{2FdM>dHbqA9B z3jFbt;oqI#J8_+I9$kzdUDy;8d%$D)ZQ5Jq7|qwf&(s{`p0PI#U(>UY0p5|_sXB=$jZLHT|SlW?WOHT>;jruUCz1=bZtkY=iQiwPN~VjJxzAQ+mRUr4Y4aRo)x~CS>O}W zNb%Ve@FhMQ1aHFU(p;mSdPh?k@gg-S=_UC2o>#5+jo$G7wvX^U`lf4H9p}2a&lvJ9 zXcf%s*mL106PEywk%dLXeTu(qdu1MVt9n!IiKiM=?G2;-Y7|@C&pqu;w?&`C@tWh@!?TsKnXleJeoj8Yom{)0 z`i*bv8Ej?}zxi7HX7MhMXZXG1rQ#>WDjB|im-oKL_bi{Gv-^&GW%2oXp7|EfUdt!* z%bUgH6u(surJBed^L?oK{s!Mg8_A~Y=biE9TUlND`lk-Iod}17`kUCi7S1v1-_J4}Q;=eyGg`=9W}Xnm}%S_6kqN zh$YY=?6Tpx|6yR1EuR#QA@+Pxo>44Q!@QVJ{h4`3xv%JR^dlT6$PX{jj$(h$tQD*@ zIj-%ht(4wjqlx2{uh^1!@Li^6UHMAl(QaRLo!+SI{Py$TEMS-7fgkxx?uB-#4q8f1 zTzUoj6P=K?M=9jj&xpqJilMn8muIX^)3gf=zMZ5#5ZT9#&=LC1TZXg4WGyIY}M z-kc}*-k^WYqqI`xTdubTPZeEBl-z3l1J zh#XWV1NpKt)Dx>n_8=2I{$#HwphZr8kgOWA*}JgheL4+Z1_JKre%VGqI>eo{wSuD)uUJ;S<= z@v5G2Aw2~?GL~r0y@@d*?qLTiIFEy|%$0{;p6l%$yve=hBO|KeN+D;Gx#OP;^aj4) zFWHjpN#-Osk{6SkCk~cR${K&x|17&V;az<*a~(^YycM@fe)X3|E_~wN405^%xRx`v zWZ3_9(a81GH&SB{ENNi&BQPr8CL5-j^!KjUY<-lYQn@eXi}(oFUBqFIwmvySN{X?C+ivmsIa zweid_bH1Px&ooe{N3BL2KSOvbwvZe(KtEsg<_n%i-%5KLi1x~4J{uU3JlcT@$F|hDPj*Zu*}<-@Bn{ zFM8&|KjmU>c&qomUi5Dxd}EJ@XDSC#3(pvqh|Qkr!g4e)$dBukZ%6;CzxEm9SHa(2 z`q<6B^Se2Jll^P&`xJQW#&3{4R@*W3{sx|_j8*R2!*fGo$!E2;L~v|p&bya!&LdCM zOYJK0;{5rd1G?ff-gV+n3XVF(RPf9nfqs0DPp*ZzmrCfV`Aqq_(s4uA8NgaYJ{6tZ zg}(2`mt#N6F_|T_xsj`7u?7*<|X&2e6k=>xqZGU~my41=+HV5YI`=xmQ5Hx-gdWrVWK`+t% z*L*_zN5uQ8y6RVXZ~scI_bPMNlLcqXvC+mlwd+4NsLwsG93SFp+FFimtVHMNM>1t{ zM)ae+sdA0tv21@D+kb?34Uc{7kzyUK!}DL}9{DF@lgg3%^1)_JS}*r{d&dT2jdR_f z>vex7l!JM^FFBZ#F9(Z5IhYgpAARHi+rU^5$N}G9qP`%7j24oEOC3J_ff(SM@X7FJ zr9EE@+P}GSP@nb4`yb=1!SV<{?uH%@SbjVP+|cQM@u3_(@cjNo@FCN8kDgbn-~;!4 z)=G`dt_KWwWcaX@wl0IFmqT;fH+*=APx0XqJ|leCs5%^%4^KkJ9q{34hY!e-axdCL zO6P-R`D3q3Zf}Ji+5Kv*zjb~we~bN;L7@uddrW|{2#^*RRofPEG#xV{h z@S_x)NT0_u9^*S28LzDH_@T={VH*<$;XA6H3#Df;v1uif@ze7a~~jf^G2E7I2nVo>!_ z#@SAFjl;FiiNR0(Xue2zMf(~14&#&b!6)h~TvLc|pD4|@Rq(BkKhhT1GBWYlGOzh3)TU*7w#v&BTr^%y}kG z2w;Q8ily`5iaBuo2XOs9qR*?LXNTye0Ow;`XT8poql8#e}fI+p9m zxZLH?d`c$z3FvBNJRcFw2J!{L<|d;usJwR{ zeN6>=_g`N({?nE)M!w4O+|SA5{zUQ=<3EY#+can9k(c4_bwm2$>=aRm^=V0f-W@elqe!x#R`+(++xA0Lpv)umnfxfEU7;Oc%hH*h-O_4T~f4G$R zLt|Pq>+5tzMT)(Y(fKU@55)S6<7*S4|BP(Pe~!vPxkI0;pwB}NeKgM#!X%xRPK316 zrz;U-kzw`s?$o=KFssy78QBP@3nIU(WEpd^GXw_dUoMx+wc&;vs7bG*;ADti9VYm?o^Ih@tSDo!_PP}p_o$F z-{e#6`Rq;M^IN__jq{vxK;rc<;$qP&WqI8U?|%-hbl!!BE}D47r6DqwrC}8`DL})G zI$v2fif8*n!#mgqsu&H;`k%w0A@bVs_g-RcZ?q3=CXNOF&_3Uz@dDV4ylHHU@_=!C zBly--KofXTgP(9ac?$N_d-W;oj(!{a7l8e}vS-l3=zgTXnlrptXJb2R#s|5JniKj5r}E4>IFi+p9}7nS z=fu4G22S?abl>UTn|r5Q`?kf;B8LL~B)>Y3rb+fXpqGggJn!P~6r;a=u19P2wU7H_ zw2_bwI`1>4KAa$zt9I~J?vIyfPr4&r2;1ddhEQy?W6vJ<0(;hy8_%{Rt{HE}Gv!hW z*|Vo_$sZGcXxnJYwUM)lMcVi&ZG_|E6xQE9L9LSPotgKx{;F)DYyX1ta{9(QX8f2P z`f`9_7{Ds-%#WVS@ah;_hzh#CO_$~N1 zuHSMTI2pfXN;Y4zGt8THFuyBVPvWJr2j(W6nno;6akyl-^H}M;Dw`ipd2d?=pY9IT4A+7or=r z#N(k&|4le%kKz5Xz}djNi-2=U=tl?Zi+Z`eVO;7U?_yh2ov7uY@Lm9?qZcou8VjXqB5tB=i^KdlM$u^c+ecl@4eBqnnWyrObejV!&z z{bKg#Oh?x4qNe>)U^Mb&^I@y8_j&#?IH}%Tc35=3$J+Qt)r#vL@}hj0!HGGg^aSLF z=cR+}Z&5A!wApuj@KYO-m8edp%WJFakYnj$)vcwGE7uq9gKOKr zn7sY#>k8;xV{q>k?u9zH7&<%x9rE<8pY*u25IwL%rRdQ(Kze+Cp!A53G4!~%5Is@> zJ??hs5idcH^P};n^bUSEG5;%BD8rtVBL|_4L2itVxfc0R9k}v}Mt{-Wzsw41?TDMV zgyT<}YVByVoPF0MN0OhBmR`o^BTk_f*TzD2uAb-1s4v__{e*mDwO?-ENs)swwt=>E z{m=BN-|{(;o3+juz1C|C=yXXyr~G@i2BFEJ(+kx7Z;j|rK%WBh^Rmyx1NauqJDq51 zNv2X8YxLggvP%d2m$OsoNs@6mW$l9Oav=9MH^u!;;GD#61$#Jon=?Fn2iIiN{w7*5 z9-pAS?`40+qCZDMhf&7~!-O z$2;`-Y61FOik;8P7fODx6)j~Gr-|1eIxn#M%C*Yw8(9HQ`5Jdw-ledgW_-c68sCnZ zf>f3^flL@1gRJRU*NnBv2+g}@X$a<+l_H$R8I zqARr5da^ovWXV_=c*&+U5J%VI)5zXvJgetg2K<(DomhANV)8ZXiFalrACFSEkpb4l zz`maGyAyf8mbm;5)mMN=20W9Ie19Fjl!x8)CdM{jT~|0KuQoebW24wm{b~+C*Dj); zN9d=Ee(s$j7$S#INc?T3`)x7L^me!Zu>Yajh-3-sq3YfWr}{sc8K*QhoW z`ZT#dbl-f>PB-VbiZ=SR9}jF*bEN&nw*3~{ev@*TzX;+ln@`MZ`}4dX+Ws!qwG{NX zLi=ApUOULmivR88R(g@IKqsv&LWbvCd64Y6_l)janoP4W`#G3*Ccc%I1I>fE-huf+ zVE(luvqoN5mOUdMX%n*d=E}b3wQJo}8+#yWO=J7u+0*v3SFB%EVdsy@Q!#%m{nOsl z8h^D;P`=zVJCJR1*{|}vnK!<@zkskE1RkP(K;=k{-w+QZG5VI;86S0 z^YPJ|fV;W>1IGCuTKbhIyL(qw1oM;J>+L<(nV&3u-KF{OR5y$q*5>9K)+Vma%{6SJ z{>7ESU0=(|$pUD8m!-LDAByfTvKaqb`->naCgw$NUE8fV=|_JqZI{0fyk>mpr(HgU znwnyE`G*cJ6Tzj}{vww~$9KVxy{aUa!Wgf-dC$;z<4Na&o0n`lY3vE!&Z}>K-@2yq zWKW#yKO+V;*B*P{x`kZx;tNmGnYbx4-x3+OC+D}N_pejCypvkB{#K1&%D*Vz;X_uo<@u*9&)ai6-Co^>(Cv#?$>%J)kgTK%5&Vh>urheL$R|4rES zyzwlg*IB@)ywf4*buRgd5I51#i#HkEQ;YKP3iD8!Pd9i+?nm*iw0Jk=@ZOR*=h%{X zpXT7b9=xBhc<14ZKUWA}Vy|avMlyy8XU0Cok$(A??q#gpp>c6syyI4Kxv$opvHsS~ znB=|Q87ps1PVBf<6@Co$S8Q(4c zI8W~xMt%2T3qt%(4X?>W1}+pn1jo7a4Dw0!%Tjtum34OP&tCx z$gA>tG4RqD7Uo=Pna51vyT^{iUTbauo{5J!pUKXPaox-fe2^S2K18yNc}=IC1olJi z_>47ir`{O<@xEg1VbI5PsLr=>hFNEl!pAK1tl)2aqjx?=VYKERYSA6jH~nqs?ltwN z1>eJuX~tG)E~=5W;wB$a1V7hyeAx1-JvT;gNo=&Wy!gL1ubVe!d=ftO^;?44gpZcE zH^<>`2kQyeI5x-CzhM5)*)MJuaA2QJ-8}q|U(;dh!7u(3<4X-ZWZX^F^U1iY_1(&u z^fFKOo^bA)*jw>+2E9$qVceaIpE(cvczZbKH0yx!$Yy^X=6lTi!eq`7Q2Rr8hq28^ zH*H=c8&@2BqfcHV8|T4~KKs%Aht^!=@)~(@MY%(ttDw(AMd)*WME={H{V9GI!h^iV z6r&%>SqbDWn()&T(6E+#N(-^5&W9#`-TFAW(0axR)v`4Z7imx6PW0#^o*y)L;#95c z7$pChTv|JFuUv8?bN|AjgPdhnheZFCwbkUqs0 zMj^R>kopow?zgz{^tlc_ehfXL^>>@heq8U&t3NTaJ!I%q9~_%F!wXy7y+|-)1N>RU z(p=ZNtY|Jjsa(F!+J-JkY@X;6=JLyrjO6mk!TGb$4eUiWmrvcI$>q~_IIe7CoY8pD zqP6hYqISjv%?~EzA4o4`lNQxgrxtnDchy1%bRxAfv^(b+yQAl|ma>L*Dec|8^UXLO zl^>g*>HbOq*^0Bz82!A)y->E6KuhIkJ^s1!wb%H+4n2Wcb`KkB;-gPNN3~((2inTE z4!5*5b{6^?oFrf9dR#P}Ki$x@G2EvM`j}h{ZOiVMd3JCd=dHh0=WuL1BDbGIGx-3M zk7<6_x=OEnUqbU)dSA5T9rfkS4A=1l^orhBt-*!$!FfcgLC_j8+RVyiBlbgfPHO;; zMHaR0M>r>-_0Rd9JTPnOV|*%Kay)cXep_@4|GD&AZT#VU|3hsNGaLFH719qIY2pg< z9tJ1uqx{4;>-*d|sqx^fsfq(6i=Y0Z)jKDTPVb; zDNpZ~II{B6+=H!8Iyk%do=Uv!)*DHWg|BDjoK)PZ_S#z2fmxJ zm@zcW8D0i&j2sX7&wH6G)H=(Zi3i6-K~Z z%ou$Q@jZ)JsQ|utI1-cl%5gY2s@|cwXVz5N(kO1zEpFR#amCuiHD{N^t=_@yL2%n) zbp_hzjbFk1Ltp$n&1Hh$J<B!klXU1Pv~=>GBo0I&-04c&omex`+oWNq3@jlKGo5rj|%E&>hQhO zb68JeeebY-;;LlmKL#}|ddAdiO{2dhDR1@6;^c zNj_ERXX?A;6T4yOOY?O1m#Yitu8n1$C~@x*?uBFfS;+1@V3+LbUkfm&?fg}+UvuB_ zpu>&_r;4ZWLu0!c55_YmiSAdP(AQ4qjR*22^X+>u9`Jr-oCwB)iG7|A#sg|WBkh

    dE??MB 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
  • V&)M?S)l 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

    &vg{6F*Rm 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�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%0D&p_s@}^I_Lt<@WCseAsOVgwLG^Ovs)d!8sW? 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

    9ctyF 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%0D#EU*gSnk&I8y|4WB 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

    YoE&bQ)Olo5Kc{e$8Dx-wcnnQ--xy&EmIe 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

    +lW!b@#9N#*%5a>60&q7t5x-b=#6dMegTq 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

    kmJ|=a|_)U)lAC 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

    jOyHE4lt7n!5A#jFu|C^_iPri(eRFx=-IG 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

    L0d>oZQ(RrlSd!;YQgkVMY^N5n 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

    F4%-(|ZGwP?8Ws5{eKDhzb%Z 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

    -HekA9t0I2S#7 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
    Kzv?k2 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≶RXWmSKsE|nQ#_;$bQ&< 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

    ln2vrE?<1ht@UvF=^^mL4 zfM11#YzUl#gqsK*Y(B-=&GZ3)d=W zj^qvbP`20~_+dOmi}3nI4!Wi^5Ig2(e12?}b^i)uu8 zsRJ0S!dM<=-48J!j4WLi>N229pahH@WDX!`8JmWC4bM&(XoHrx2_bm^4LE`ilL|tV zW1-zH*fS#E3&&PC%*Zy(i=YNzu;{hmodcU~Z;0P2#Ff+&qMcwPB4Lz3z3mDw)GDaO zAc!QY-~B-8Em6hUo_ms2>Q${ES{h*P#l0px$MGWSo(B^s> zQgZXiQ_KgU&DEr1F<<8LDaLj&_7oGln0S-MheAdfq6qPrVbljL0;=LqB5y!YRuJ0L z6r+FGkZ=KOk5y35DybkUsu#dJgii)y&ts8BVLnSeLMA@M-AMz(LQ;_k28%pjL&A?} zJy4yaod(uzJ%fk^@&_oXD34tP=H`@r2VB0EFI_^*WhR6Qu)2nkh839@m}E?3lO)6p zUC}CiZ}O9|ePxJ#fqa>0nFvM(ahyp+Me-!H3r?PxOSDTk7$z1MX@iQT-fE`{=T_F6~PP=>3Vh?64lmd0^}U$rhrf<3kt)ArZ_4&un0OChAF-1ZlB8cUIDI zQPMGm>`2GFid_$ofrUr8=fFaZOlH6{@qJi%8UvUFBdb zRxoc7_%CwQq=|_D=2*Et{sXUDN^}f92F8l!nFGILGO)~LTrK6Wfow&-U9kA866FxV zV8%kQ`3e&U$ePdxJ9;1ZiualPfEh3ke1Qy>Kjp@q7y>+n^iSGZgLiOT635}W2i&FPw6C-mIf$0)mh>)l9dIl}SC|*y<4K!*+Cg2Wb#MG;SKrOu4 zqmY!Od@WaFPclkKwwY#JKi-!`qc^mC&y7q$^tGJvci@T3pfU`}mB@(QboijwxQiqt z==8N*UBl%XE>^=NlJlE>LFAZuBUi{{Hjbx7`?uKt0jj^uL-0}gyvYlYQay{cO7$T( zG3E?k2J)24K;SrwUY7EsZ(wXAV~y8GFXsx3>RgZv63V-Q0>Kp*Gx=|^{Kz3@ z7PdqIWA@;`f#4c;eFc^<00-2<_VHk6+uqr>(_0g)s(l_VtGc}*&bF3T5UCUp#0v8U z5%ENcSpXqa6i7YfI|ad-!rl_I8retE!33lsen*K}YAIb?=`F}ALfEZBUx}pp0$>rO zee)rr5#19ip;(w>0JX5jXnL{&Cf zq)hW7a&~$qY$h>@6e2$e3K9+X8MK|P;BB9YDDlqqQ2&8tDZ$(=HOk^ExKx$N(&DOw z6WxS%by^n*`e^ z*d}2fVe%;#26)S%TB~*tFS4GIe$ecj5sen&SA<`_=PR^NkR7WRe;T^O>&^eHjP6Ac zH|#wjqdS2PF~jNT0U3SBKFW+keTruo5>faEL|7D@Q5Bq3VGl|up)W?J5W`f2DEIlE zm!Tm;2n-jj|5gOP5yrO&nj;9_Ursm!VS6spVSDaE*d9dh`KvAm=<+wZoUhA?x*Vv> z-nuN`0raL}wHqcE15WqS@ETbKv5!pUI-Pdoz6g%caJLc0Hp1OT*nUb9Z0?kFOmH~{ z$B|F&m*6}QpQSS4{(aC$39T;|bsvK)OTEbBF!B>qeQe4fL>y!f68!G(zD|;x6dS9;$^tATJ7JM=;x2#~N-IW19BTa2o`xrgz}D4@L=rTD@@C^%~fY z(D0i&mZ9M{0%{`5fdTck(^9&En&6bIc*~gz?mwN70p2;Ei^SKt#YK807b*lY36)_b zm-7lhd=0xr6?FDh8sZb&=AxBV0SBf6(nW#Qgq@V|Yy%e`huN1Y{|d#HE4Bh@4*|1x zfSe<${Sw74R_qdGVhXxp_9LcdQ(1+E*$CDN^0T)CvhzIq(R2)4$AR@t-sn272G-Yj zqpQ3cSZnZ%QH((En+To>G~+~X2Q=q-)&cCZN0kdK?^1!Ml(9>(rxbzZ1K?snP8%1k zH&}!57hPVU%XzvSpv#H69H`6Qx-3}_yAlnLiC#s9d7FL(46b#-U{dHAFn}Z&9D|=7 zHEh-2QQy-Dj~nYw2Hry6jpu3_S;O22#C4l}DPivYyzUUtVAB=0K@&^%D$6+RQ-^%= z85M`QUBC@1Rx4U*nEQoKd`TIT^1?BAdzW8c?KiISv*W;*@`O(;gf$Xd?9}oDKDLP) zPg6HzjKA@_|(Nd`G%J*7X*&q@a#Gj*6Rn%y`GE-uB8p-oW)N`gSuiYU-F zRwDGX=~6ee%cF=P1nrzv5{GuRE@&q~okCb4ZfM%LL6>vZ2B?g|X*GaJgy(&trBINo(e0e}LQzG-y zW+Z-y!?U0K{zdR;4X{N44bL7#fDVFZ-}~8je)hfJ!~}H1vwM65&knQNLnJCXU6;t(DZ055dzJQXbb<%M* zXw{p7(RGNn=}@lM1f#1Ok1h*Fue6UepmgL)&k}yrK$Bu&#%S8J9GbQYflLT^;^M&= z(Q_QSwn#;-0?#7kC1C4=E+BeGFmQX&xFg7J4-ydF9wH!m*tqDB!44aDaJ~7vF6ZfT zfG&Th%UWIj&9y&U?+?^vZ(UX$0=4WwSN-)gq=YYM@Pa1L)uw!HNNevaTnB3uP{S7D zEV$3};K(G()`rH7lyD<7ZmjE;bkBK7#}ku|o1>7EAvVc0u1-q{u@@P2*THV11!!=6 zL|qq=cL(DT`)(%ggvyI;U}7!2G)X-#UriIQ!M2}`v*C7(UXE>vZVt<>VdLH~+m}YZ zVDf01I7WB;E6u6@irV=mO?*qWKgMb=Av@W{VX-8PS}BoL^lI8$9X7Uxt$V}P*04aE z$fhdg`mkuAbGJHA;@i{Mx6;@Gf-#O8xTq$LC#1_40K{(*l<6E^N<_4R^#=_djjlyN z@uovU;5tq{uM4ZSVfj%Sn)t6ymi~L)!W{N1V2O{Bwz!4+KS@&`r^%gZ>>EW`Vpp1| zK_IFZ(^|M~Pnz1DCfB5q@iE^9xj#ZW;swM<FTp|xh)+U z_Z`##+rtry0_qwq4o_#hCEuVcgQgcj!bv1Z!Wbkl#v_mDF@sQt#_XSPwWl$AspT)yB}KSJQS7ghyIrZ7K-S~l#?{!i>!*Ml@WP8R2Uj7ev8=9km3kcw0o>8X>IsLe%<4H0N@FqXhoop9tFl zx;dE-Xo?ldc*}hqS)#&J2!;#55!jN6&M%#B4y%^YXG(=tbAVN6IaoCvasJ4@s1Vyu z&0yG$4qs7k4bT|4-fC}SVi$)|LKe$5&egC}$^llTpmhr9BPf;d;AadEej_+5mDi_fcwAD62N zSw68ke%wk`%T}RU;PST60J3O}s+BdO1ENiKh~x71ssnI&N2?ugEvhtklCJT2q4d0$ z;lk$+M*WXR*<(@mcvR!_&ybml@cGs#yEn?VMop|WH$FcG-t1>I5JS*$F68-)=nEN| z3)zto-G%g*n5PaG@m39Q7$ zz*lCfD>CI*8AO*~k#Z2@J-jkYU6CaZM;qz#)mf<^&_mgLOSTPxR%NM`S@QZUaa|U_ zF^jLwYTBCw2y}Cnx+#kw(5`IjsqD!948!vVXwx`lc~`do{%m$%HoHGt&&2mL?U{I6 zHoG;O-Ii@)2;DRBolIL(RYpoGT?AqE`!$->a}!KFR8@sB!cbX8F^McSc}EUAA=q{x z!aOSWz>Jz5%63i9kFo*#) z2=bREtgl;jG_D!dPK*UUSpta?8Sl?cxpdxPb@%3`nwJSnXKSvyH&=d|9bY-+)7i zMyLCjd^k7NWPT%$!|_z3(}!}^gSm2hu6Q(;Kc35X;1gI zb2*q-ZgJamU_;WC#IRzr&LdfxM&`RIrD?Vfq^GwOsHRb`;pQJRV$w1<|LE3oj039# zwLcg&hcDFJV==f#Og7CqhQK+dBaa+#iI$L&SeL>&JJdKy$+*b25FHT_ZV^aMcz!^Z zfcVONG0%S>kG+z|4j}RrWL%4L?UnnSb^(4a&s?0FuyTLKXhEPP4^Y(a2AQkNDqa3X zm-BTQ)@6tyn3*Nu45wsdMlThfH3hI>gUZ7HN`CaUd{_m=SV0LC*a4;{FlfM8SX#hB z!&FBKGT$mN0zOPdBg45CnrqTj!-}JAqbeI6kNN}tfw;fIXDc}>F|(2O+pK1-p#Kl( z$()AJ`ayrUle#L~EJX{X38A?Gi&xI);ny8MkU9vb0;T^HAO$~9gS7_*tu5wh{?-`a z(?iHNkv1ff2R(w0Rak0$Ga=0#s>2jhj$LsPk`w3(9!RflRAG5|j zai*@Cq{|^Ekht9(2S(7v1Qll3?ejc1NwEl5}j_2Xp{0y|2gzBX3v*k$Y03eL#f0rs^N9j3En?fwBdNrd%lGd<^ND*u1S91vCZ7Al$p)KE1 zY$KV((I%XS@uu506)TL!4@LY!ehcG|!*5xeNZrL4_JihX1_xdAlUr{x4kmc6Gy~An zQ|J$T9c^ln@oq`#4!WLlutdFEBEKr(Ia$D1>UGKAkXc71J0>YR2*E59w)MAIe3Ry? zH%a+arHxG!JASx|9jRjPQAwTOS*dnZ$~~20cO`$Ol0RRW>Sg0o>$ytxY^8jt1o3)q zZMn<0m8e@wHR)D*VW~^`KdYdc* z{ceB#h6=U5LLMl0h92*+g^9F`=OF<4#i86=uAVQKONzmXKS|S=TSqv5LBytq&pkbk zmbTE?u~K!kRQ`Z;*kpa94jKHgk@cCuJ~!f%V;^&Rh-aLQ@3*CyHeFNho>H}?RDNCr zvp?Ozj|D$0*&p=$h0$I7D}7d$x_hpsJ}* zn}fI~b|v}TQ*LxS?ybT5I4#&pT=?n7+obr^c{odLaqN?lBl4Bx#R8`eA!(0lZR*Qtsszy-$e$pBwVsHyc-mKAl@4UOn`-B ztZ&Gj96vLFo=)DRWMD)Y-eU$vIZ##q*`=z^&?@Uph?huhZ7XnMYU>*7ln}xfK&3O- zY@1dPDMAv2LSMO7UU#rg)gq>9pKYQP_R@8wmRHxd($@?RBi#gQ2ZcN6ZQlrzHsZK{ zMn3cEy=r}3jV`ORx)x(nj02785C(A()e0yCVZGG67Tki2%7XQhL2@ZjN(!+NI+8DC80;K-<9iO?8*uM)ryypQ?JvQ|I-Ix6xPilYRRSiXRVDgXF-;!{Wz76;eqQj*1_TRHNj` zlGEbHW7TPLtgqV9?T-<~keng;hzP?tRtfl3!D=}mGNB#Im!3tC%VAR5HoC7@`43jH zcdOXJD$NO9RcUiVFITabs@Tg_=2ex_EyK9Hk~pEmIxPW23sr|mz+jhW=>3PqA>_U= z$AR_P#!>WlY07%wxSyw?+GdBK%hNVoyrc;W^pEPyJ=Hb~1Qw}CYAasDWyK5DCpXSU zX^onBs>4Plus%isu~As*>0p5h{5`-f)hDrAcU5O@a-N0j(r^XDF8cP*AdI;Pcx#(08^CVk5*;*Gplm^**%a}*Pn^{Jb$j=2ai!& zb(stbicHZTc59^HEAmB=JU7$d&+{c_GF#f(#e1!49a!1gSk;=XY)!n^ZEcA6+8MZ% z?Fg`)fh|IBuCR|*+M7PQuD32v)8znN{@PV8(EE$rHw@EN6LmRWm$kY?RBU>b-O}lL z{~}$ku}_?-5B}b?YLc!(30W2KWzG_eD-s`Z^JQ-BVQioHutsTkqb4y`UF;r$NcKJt zPD*-cvX+qSrD1}p92*YuxC1hX%O!M2llie!yk0$? zDg4@3zqoUYB-oP9YH??Ied{<|Xa~hra7z%7586!OQ#E2&4VbbEQ>$2Gj3I5o96s1q zK2vKvUCZ{>fL3~`M!Zb-zFy=7 zwZ=2G*3-4tGqnQkqJ>d7yR=p;tJT-7t`%!&@214-Hb9;!Z><%#(Yd>7o#)?AwGY;c zhp6^3rKN5FW2sI_h3xzQa7=7^P^tqENOw_M2CA7Bv=+NzPvt!;6PKd)7v z)ygGp-DGZ_L*TY;@$Spps>|BS!_|D7m%VGkr-~ggF?)BLvD({KJ&)0-;Wv{K`k$PC zWH<9RM+8AM^HVd;xO(z)TlG_0xfQuS_@x3#DRnol66|V$`|oSl;s?3Eow~1`++Ty_ zTZjR|_mB-Lx7J#69elfzS=G80n_E(+7T3vjb#7Lb=R}De!uSxLG;=d{x7^O2I<>n_ zZmqM~)Mlck%Ka>xl_8waU4*wjuf_Iht8^?WCJbth;H-Zl9`D?y8I zw}wi$Lj9j6d(zMg>4?E!Fk>ujg2dx#B+6)E9zD}hJ>5~h)zOi7T;t`}db8GhS%Wvu z)V6b82M-~hc6rNenfDy>dA9e>B^UBY%9MgZf8@#y3G{=uQ6H%rLl?>ksYKf7|0t z0^3x^#VsSWOFFBIJIh6_9X|bmHe!3d^=N&+uUk7>o@73K6U9a<)jTV?$B=Tdk^4;K zSrLxT#m^?X$hi6O7?1CmQ@A)=r^dxCJ0{z%Ytq0clkXOfaq_PIlsP=Ko4ZfsqY-W{ z&POMkcepuor0R_G*vXOx@bj)#-0}eUcE;~Y92@ZSuCW0>?|Mh~bN}BZ0^^C(O)U{f z3m_61S+A3&i3tXRtW9i-6FMH~4Qi&oKXM$}>^(e?5`+OUfkCa6p|6Z>+c?MFEM%Pn z<6rH|NRLE9jyIEAR8VgX&j?y{&EP->z3m?gYLPuL7bd6SQeFnCRhzwt3Rt*R#7TT@`jV4m`oduP!rL0i zk>#|kg$VT!BDiQ`El8+`Ai=pt3lZudL~xF^5MdaE2+pwRU8=6ZH#J=Kq@@>O4hd6|*+#x2bBKaZ|3{bTzAkY&!c$$Mdm4`( z?h@VJc(kQUbgO-&jgXwE1`iP}1i4xSx^Bk=gjIp(uS&A<#pRS_r^sdFTj;sDD|r8h zySRA&om~Pux)?jVupM29_kZ~mt#`F9IsqEnLU=#g{9TvxbU8qmb-KKn>CH%8o~O(C zx}2!Xfx7Ii%i0rg3enai&RmUi=qF?9+m!JJP32<3{}*%LF^E=8aYrIZ>S$*95IY#T zHG(l0k0`iPcTYPf9se(`b1wC$cI7An-+D*aly)yS8+Fh2h>;}t;H1pt&}6|9bW@`h z>~lTTvpwXVE^)h;Kf(p-UeaaG#|}6Jn{WNBtN6StxV%ZJ`Bw0%H*}Z#x*0EaV?V&d zU;flp{7lzh+Rdpw)>ZSW%e#pc-B74Q+Jwb&$tZQ=vM|uX|qhok!u)BKt z?$MD(X$%@C2=c!;UL+aEyQ?3&%LCn`uXJy5ybg3%uXLAty4ohjAL>z0GBN(5dnrfEF<2>YY`G(wx~q-d<^5d)*NW)wW|n~Ch_k1M+TBBL z?c&h5D-8M19;s}kzU;|A>UP%rk7FZU2H_2373@Yj1Z{hk}#jySLNP_Ooo z;0BNPw0`Va)No3YjnuxAH91C}G)>LMjHxcfF{#I5E{e$}$0zH;h|p!Jjjo!S9NWYo z5rEB^9rv^bhl-K1SIY8GF#;-)HbWkxUDmxNzT!w(u+*%8Bn#>?EE|@gRXI@zz@6S|RZi!2@ncPebpjRU zoR6z=U}mPNuTXcGnf2g3p(@hUm*~ZjuMw&vw>o76bwk`5;%2NK1IG z1+5k*OOE#Rf7+A%t0()krzT6*_OQv4!#&xdp6qZ>b8U|VvSdvUB1?9%4m-#dzD$?p z&6Evrln1%;Gjq`^g`Ruxco(fgUP=0|3B8i+i}ZgzCf}t?dqtP@iqkp&JvDm#)cDaC zr$)cBkKB~a5>kX{$|fgH*=$7Eyf|q?u1g?mex{HeF}kME^FklcG#~bI(KKK73VhMa z__7!Kq8HILm-Ny4496$`60w7P@-NV(?UR3=-nV`7>-By&SJ}h0KU?o7dF;o1m>NAq z$s}x(TlLVWPC$k@n0+-;FE%CPRzrAo9u0reb+&t{nB(VUvZqS zxY+3lzoai)V;Z-BxpN87JM%gS0ww_~-X{=G7`EOTEB=oCp1hU%rW(2gI`5Od>f^q0 zXJ7VBcOpi1^+kMyKInf_y20ix?;gYTnbgo9Fn~I{V@6uNh>10TtWL6AR%LfuAvu%*|z@W_iy&Zd< zSa5|q5#S7@L{n#}mM9Z{5@nMtZA(6eNv5`oiBUqy=bLk`qF@cpI#(gL8p*q2GOofv zttN94{g#u7nO@cnT#K>Xrs#!@ZdDqb$LX0(ZgG=Bqy~vt(-y@aMwnNLFt6lSVO0~W#0gzQyN(H zdJ3D?RhNC%Q{0{lL5<{lj-hdz3Xw2l(zHh!EI0CFX6%|upr~vXsEFGKM>h}FHJVb; z)PV()UPwMzg!Ke*;Kb><5Hvx)=fDuq0$&Vr(E{HO3Vb)n_sq(1nYF8k_os4geyvX3r%>vD`PC+f1>A!OKSBITg)J$+o} z;c-gWCBYb;gqBm`_KX%K7B1PLmap_htI2iAMgS)p;LS~WWTj{~l`(;Bv|WlpIXomK z>2SBKyJ~ogDCp|p>Z;-L_@FrHFbJmFqd_?I#I`@UDCoC`ira<)5w~e18bBcYG*rGe z)Od9$yMHLId2pzBh^~1oR=bO8pB^fnq1t~qwfxGVY@IYWCdwp!DM-+pLt1=;w}z-U zhsdo%*wMa(!S5fUg9JS>q$$u&zzf@ks0W6~4MV^*+(tn{uaOia=s9k_G{Sssg!k1E zzSl;8uYu$1=N#F4-yIP=NXH}|xP3%R;(_mnsqco#{llXF9G0s8Ht_~iUMC`3bpJ5* z&tY=eP!Iy#!Xx*ChTupqskOaD6hsMBk7Jx1eSYXkwYhhwdVZ*U4{geRyfyBpFtIsg zo(y*qN$AMTjb4_re+dJ1`7m|aF!}XRXo|ZaIc_xie#+-3-1EUu_5M(K{ZRG_=Lht= zjFZ<5Pla|L8Nu%zVWZtO!`15H^2XufhT;6?;e7q@7QW!R;cD%0xo)UPi!M*ur6$9? zVyId^RIV8k_?AbPrd%6MZdo>5EgddD8sv}<*9{SSMp(N?l)f=o%ZwZ2h9HqBM=bNy zi2hP?@Nvr|EC*9_M*}y~IbY@+)8~oRr4E>9#pN3@tX_|M0K`)V9Z}GO+qf^ zB*`YAR*D3)>Zv*ajSaWeO{G4i>!8xgDTL&-l;WNVbv;y1*~8aG)LWf+ThUz` zi7KsP$$+W_fuKy!TO(bRz?KpIZ6nwNBiObPni4oV%%%kH7y)p@?igVn9VXq1l!L=; zN}x*90F^OH04Q=UD1idcw`e>@31~XNWzXs0|A$9Lw~uVZ|FCR~Aa_7KMk^F`HU)qa zb3p+VcwT@ei+wo4MFD&{BJjlsJb z!)~-}M>)X?bK+FRh=|xT2t~WEx6yMx(DNIkQljTQqHg_|)PNlJ46$fM4P(^$G4ksX zarB(zxjtH~8w~`TXZunCEx$QhJ~`TWVl>-48VGpHXmJnD!*6PfQ!mzx#<)BrjMqW( z$NA{Ss8Zb8qT@>aH6`jiN#GPaK-DCK@ zW16Cy1TOEMF=`7w#VDYg_eZ5323MCp7^U7HCGQypjGn@$zuEg^6hX$;QR?1Na>*$6 z*kGb+E+1w4^p9%V$@u7BIZ9nIN`5smu$f11N;$O>aP-Y%)Jg^@Le4Kl))LkfpN1#eH+pQS z(KosX*7DA}*S^tS_(G>6>MPKP<~Bth&!xoh&NH;1L>9Ez&OO>sqGK5yYuKWFBoMNk z^HxT+jw7g}c@!rhDIbE)TRA)`+K562sgM}Fwdwf;)&+4f_!DFOd&aWeW7(du8mW9U z+D0mmjAajxWsi(CzZso?R6ZXKq+%^JRm!RZ{PzbT9m@^`t8#*51j6J9bgRMo&*eql#O=W@WPXJwXRI^Oejv| zb>X`}yzbG{q92_Wmyy4HTJ&J!(MzXA4>TSwbWx!!7 z4BJe!3y*?yMg9an3Fv>zkwpp z{bvBHzIeI|tG;%6;MLQO*G^}zo=#Zxqj4Im#(W0uv3&+?gZ<__1Ey=+{jN<-`1%EO0K4tsx~4g|f;sx^n7DU<8+n!kLAU4~pnZ=to8A~_%ogQ0dV4oz=ONp1 zvG(N6?Z&z>tn98!w&YJfPPXj#BB(lf5(M!>6pq-+1=H_McveeZ*S2@U|J`GJXwp0V zA?diK=i0&oAa}>mKiQi+*{i~)RJy`o;>k07pKt~{=Vb5i?cVz3Q(`DD(XCgbNHPdt zF-0w(BHuclJ;XWCF!_HYFXUPVQNkJ~u3@}0LVVa-h)c(dMdLxWEMkokg_!Cgc}tRp zGv$gijpb*u<7a49#LDqv72STrc&EN$JV>35M(CFju-pr{41^&rsBSL$BTnh|9-6g6MEifzJhcX$k_qToD>$%GWHy_ z4H@^H+2WJ$KU3Xzro3Z3yv@?q*v2=|7dP;QznRQGpUjmX+wUhM7_z)L<#@#B>kpIF zedj$DnwMG4wmfN^zvf46PuA78F-TWQS&=pvgO|c2x#CO;>l|49>JwzqP>RdHN zt(+pSpCYcC!f%|y*G@_G-tn=yd5XGeiv08}m`}fbR*Nt8&ROd1vuKPSw++D$Nxs*J z8Q&|Hct82#z|1Ht(Sb4bm{uiouNdfTf26R z418^7T+s~7cdd^rr>HBY$Y)M>n22x2iCt5zr>1s&Xk0V4@VAmJeDgl*|C>E~7S?cA zM}pSM*(O+opQKHB^Y-@c*0K|<&=KKJ`>F@D7d?Oo!ismh6XQY!A{#`XZDy)dTblBO|S48h$v9#EASTj`kEku$w6Jg z=3MVJ@?Eyudp~s0wo4x!MjAwIm)f3nTQ-ZqupI+fiv)qH<)0u%erWZRajdI#BZRqFCL+GJ~bm0zQzM$)>^i| zds5aa;u&{Li|(2h=NTWI7JbA%a@$qyBDP&?PQhoA=9IEqX~`+sj5|hE^B{2}o2o+3 zI~XSR-BcH^w{TkE#8hM9GvD`P=j(E!F1zdieg8jePh&#P7<&~vCRW8I2iJO062iK9L0kAr;K>f~Pi#@D zBvVlV_2QL%y~5$i)rANoUIn0Ef-CT3tF4% zLAT5h_sjropQs02JX0Q=VZ1woZJz=9|A`smNxEkD45xN4)xJ1G?4#OOoLYYE47N;~ z*POf_^vLwoZ{V2gzBgSRnJyoh&OVz+9KrVKS_k^{^k0w`K0aMNHeGI>4p^g;q;Ts} zohD^lTo*F?mDh|+}%uzF6sB4 znQHe;xpih-7Q8;?J@g^tg42eXYW+-kU}<94 zYFtGq&zTtNVXZR@Ph5P(afgko_W{9A&2m1!1Zr z8pKgeCKy*&r#7i3neWM{C;|48^2VS>OMQpJ#>fQ-wd8jS^2RtoO-p@?wA5DvHBB^l zo5>yH+@lGHEKNA*d$c)qrzCUgVwh8-589ME9+9Sl$d1c|OG(uTpRIFT2zBEu|K?fj z&RJ~pER9g#o@pc0b+g#oS!~@b^X-|^t!g|l(?+OmH7d=~B{I)IF*gGUm6C-Ocs|7g z9E6HknmYLca-iB#G?BiH`yW0hy8Rp-|9Q(f(XHnssU5Q+BGw5Nj7kS>Lg_dIuSV&? z3Ow)3CbT)rjW*8-oS0=SJcpf_rP1bWLYoav4w_ADJ*A@gt1j*IGi7@JSGr7@ipDWC zc4#1t$xg<$C^-yB3`4rxNwx|~Ru!JCnQ#PV!XM2}iQ|s*x)0|x2Z!Q7@D;z_z@_Z+8oFV(&{ zN9?28SDadY?Ht(782`cajVl^|IVISU*)6`qd$ZM%+47Ou?6YYa)6KRq-R!0SI|02v zK3hFDTW+2WY`2Q>|B!`^xSPUPGQNdUf`R+((JXjwd1TkjQLE?3b+ZG{u;}|OU;e=y z_5K|Bb5dcbtLO5|kQAP@m7mX1pUsh9%@O~e!@r)xznjzag%dE;w{z4t zbI2z3=DF5Qb0de(0g+0IjF?U8^90oK_Hiqcm`6F~nXT668iW1EEKHKa5>u+1ly;+( z>c(wx(jm#>q@C5ywhoQ?yu_1x<;847ofQ;U%C!WbhnA$;*o=Vq=t z*U_T6Gc-PWZuIeUHMqU^+$g#S0*vKCr`C#soNG&udPjW~h59OlV0OsQ2+ZmaQqW<) z&!9k8L!hwgM|=z7Ty^s7nFk6An;auaRx$MKa1cZM$SMx58^~asI-NzDp zbFIB`+kA|5S$q6O@6S)P{BW{^xj`v`WYQ7!N*Uc(1Sh0mNK(}`$ArWfn{2e>er_tT zeli&!-Aql)BE<0QpO+GdzbEP*T+ku_d}x7saDn`EZXAgBfuZJ50P!x^o~l9k>iJ^L zd;ntP37Ib%XwR_^al$8kIN#Vg-`X+X+BskBn9uH>58!?8e6bZ*!cyek`EuucW5;~4 zVm=V?0bv|+TZ+U0xWW4As2{62+soK4rlS^>CFJq_abBvI*^taK9G|CtoF`Y!kIBW0 zAq~geM7Ztf>iH+t!kYPN^?bQ)E=LCR;nbHu$|n}2f~N=1ZMVaVwY?Z{e6!vl|!r7h2nWee2O1@bivCcm8;VBgw0 zo{t&(ggi=KPdTCq{eNS=dVRiJI4^KNkKUK^i3y12{srp31@eu#4lcWFp7`WE>*MqC zpF0;2#Eo%4Qc~1T@VtnC5=#!87~zBS)V7YQ36?t9w3K8{0=6fWO=J!*RKQ2EJO_FM z8XHm2j(FN&Cum2R#!xZSk<`g4t9|8Bylg7VM+MW7Udlj1SMoCF7S^KSPDwcdSj)vY zX!c?P4EJ4iCzV<_J1K64JGF45T=JBvI9Su{MW-aWWHHza2V`k)&3M}3TAd;$7Z{I% zK$IImSkp_UvFTOQKvvYk48nw2G@!pRy$rRjreQQ{fH;NFSB^qmCb-W*77yZ2(H{mw z=)WLI$Nexb!k+-IshLy(BxJx~mPiy>vpBy9wgO?~z&HB&Ah;wnU?$~*5%EMJdQiee=d^t2(yGz*RxU)Ml1C4J6TuV z6O&SP9z?^20s@v92s2B0!3Ah~tP+8IsV3kzy&nR^;r*l+qZ;8pZ;(c{7$X?MsD6$H z@{sKZy|QofgB8caVV;EtdOSYfnx1MkSm&;{Sc9e3!vOI~?&U$5g<(X<9bP01Us$Oi z#vAAK3MKNc5GM_4hz7F^IjoC#x|arYAum0FA$|uIIwkfS@!mT)+sVzu((=es&Q#Fb z(end^Q&0g+ZR2tSIVAoKeMqLVGA+v@AJYi@(xPUV7t-@_4_Nq)dZfa7q_SgQPIxv6 zYmnKWA$n>~Pcabh7nY?08yaxTE+>C=JAH#)X6Svpw3{<%3T(qTOP?2ieqX?=cq>1= zi@XR=AKxl{jNFDylsaR(o@BdtS_oqighiJRnVh`%NEl5_45*H2pmVF%=USdGh4;69 z(+~4m^(SXgE!%-Js0 zqq6w8U_T0Zy!p0~^*q*gR%6@6czLPYZ^$cKpJ#a%!TiO4056Zwg|E_@E4AMWlxr7F zxaR0GZ9SU%5;8XLW*eUHrOST!Uk@k>zRQ^&yH*1nE72GJ?OCQ_>K8k;&zZj|yHCzJ#%h zS#S{`r{JxwVBuw~dMOKE&S1j=OCBILW(ovS!L%`bfooWJ6$`9nVI<97&4M?wiW^w? zW|Gnd*Dvm+dR^2+Q^vXWL6=Xedk44#W2%#ms4|Kv$%gd6I{p;04{nUHK`jD+cb=KtDvC?;jY&Mh3^Q(ZO+6B%IDq zXV4EKE*R`139DpH3Byn-Yesk`BBcB}@LQmv--Un6f5U!@7XFm`SN4~{5Y{$$KL0f! z8V~-8&tWn+i=U0qH&-&Vm04+B1OP$A;z(%fhhXt@36~3$r$QH+N7{RRG(wk)Xj}jk z%o3dF=i0wOpB_TidpP5Bws?1r6yIoUBpU051Vu2c)%O!|SYgN1M{8%`o7 zwpRzXD&Xo*0c0!;U~L3_mFI_WC-QC@5>yn@4*n(J3;o%PIvjCz1q=8PF54FpRZCdL zQlif$5qS!L+|djh)e6)q+G*_z6BX@e2>DbI4#OWen9eeS(Tc2aCWFHc%M0et0E7w@ zg$oHPbtns$1}YF8zA9LGPIb7IY7=bjudS`|BHnv;hj4puJIcmpF^UZotYck*^_gAO zDX{W5CDc8)Tj!qP9=Qk)A`scVU7v7o)=OV4ST|%(>c$2H`?Ep8fun|~!3@goF2lk@ zLnFe&hmQ)6%p4OQtxgM$^$xKHt8wh~@c6VdLKDJgTH}0})a-O?Qea|aa`>!*so^OI zIy=pn9+)O)24=8X!L!-y;5oU!VsqM`8=jjzKRl2BDln(+yzl~kKKr$CJ`6y9!+sz5 zT^(A<@?0;79ByFkHEs&5$GDm0C4N9#R-A^s%EE(h7*!mTRQB@sVEEhs0RovH1nb8K zW0ccnYeIuiYDqAHTM(X9zyL34{L(gNOQu2La6O#Y{+lk%HI{ z<-?5razO3K@F0N8!5UgF6XF^Xs)C`WFsfLZTmlOp^mVZieOVPAn{DJU1P8cIgxZHY z1@@sWKw$Vd5(uv6U5xg!Lv6QkKWGLOtBb+k6C5qly;&fVvmNkGU>?J&0mV41V_Mn! zS&HR;BP~l%(WP+TY7M#tq!cn)dxJ3iPYXl>>6RQIdS%4wefegQzc3(6gclzM?YG7J z4$2&XTq6K*(x}B8$G$xu6-c&VD6G-|0GJP<4MU-DFc7It_ab4J0TYs1%y{g_uFhtx zEm0%?A8+p+CrMETe(zIV9cH?Fre|lv?Cfm1+uhsCIS>xGBL_*s0SYK0K>-sO2r5BN zq9jQI-T@LNXF<3lXURcCI52=p1_c!1_kC(+?iSGB`}+Rz?tXf@yQ;dny26v6r_xLF zYyiD94VR=0*>oME-n6H}Ip&zwxEIoj)u2nN!(DS3%JtpQ_+taE*J%zD8!v7CSaSh&4u6 zNU2szg-oBR)r>c1ZVGj@911DOXPTaGXZt~=ra=1r(;rm6pB*f*5({}Ve3)>CV2;WA zv7|={n?bRg7o<1-a^A}lyd)a&LgxeW33i@vETHuOx@oJldzNVk;|82HKa<|Pw1;!e zHxw_)cvz-MGO-PO2Ez7LYF*h8}C2D3T=iCiez{lZT1&q(%?fY8$X z*R%bwV_CKEbSIe1A-~n#?*i`I+|`aONyZZKM&m54Oh)B`0=FZ}0M}iOYhu8AP!A^9 zne%=Ptb3d$!j&lB zs8u|7?k$_FFRpauE2eYoP)D&n9c&#tad==T9U1Q>0f;gjH#QjwycuIZGo@-!1dL1i z7qpgjbG!W2WI#Yxg#9jq#7Xt~Vf$5?ob(pT01x3k*i*wm4W&KttIPpsX zp-tC;+t!Wey`o#HwLEx_rP^QV>+ARWWQ>N+ipCN{aBN{X7?R=Ep%@&PW4a1>P$s1l zWlB1EI(RUikxh@mfTcOv>}+0TZVvj*atv^EudZ*gtL0aR6`mWemCkPk7lsRE!PND# zb^Q&p^$QEL1s%#GMz04Sg>rBdeH8jF(Gsa8-5p@#c+?@a6u#sC`Os&yT=U#~rg`5y zH`ANvN%ePmS*Mn0=Ll-dx*iK46TnNrk+clwOc{Cv@R7rfsA{{|^%|hcFaEUrg7Enz z94f!KX5lb2XxB(;9o-qoH5(HTWP|b8jE+p%nk1bd<5S>7ItA);nqY4y)6+RJJB5r$ zAr#Uz<2ACiWPZ9ZUXZOP>!usX`sqfpVY*4YakiOknroymN8E@9-_`X>K=lj~YWI`~$by75ussM|L zblA*eb7?m(W9Fqa=A~rmN(xLm(v=jL8w+M)4F9LIFm6y_GLnwdnHNvW+{}xac`_rN z-lV-`UOHD+Pgk1+-4(BunQZNtnbpoL3pQX3H?$k&p|oVffFn_CS6UG-Daq2(xn@bp zZ^@s@-pXAmN76WEa;|VFw(6}WU0scIB@;(qFCty?JljUO<)W#6KHIsnQ?|X?PPX|Nr<};H$(~(% zWM55~NU~S@jjpd}-%7rj?I-)D-*e9@KU}c6A&}`}={j6FZbhcY$PnE3Po(Qu$v`;A zNqP`~7ITkLY}0e_OIwKs_MD zsQ9*|ibp_-d3j&b4@E#E><;mfq=&*`wVK@FCOZPzBBc@8NH79pN-)ZTByyHXmm04X zkK6>d^lBJh1?SXUuwa(#WwEQndM3Zn-6qrX4Xk&1v5|{RdWn%=n(oWMg}DT>cRE{8 zMS?^EV$Y^FJXP}Vh`cTGjs)M7`z2w2xd$D3dq~p9WpV)0=`8$84A^_ruXORnH#LL_ z$z>w3oGn$v4?D<~vQH5d0m?B&wr3X=JH-URxmf(pV3%NQxN&3QZU|kXw%;QT+x2pX zU#H_v*K{o6p!?n0{o-f|!};STr&@o+Axx4T|7kCGnRdXH{64+2fnGtzJfjK{gyAcX zK*j(Hn!uvVp}Y*LDg#x)G2#S)vblhPT_`l$wcWhjXIY$(&$zI%gI!5VY0-6Re#sv4HtnAx*#-_HynaD>}o)!u_K9tOm2~tDbccQ5 z`()BRI-lig$D zyG?eVk$X-0fRX!6N=UW`O-f|5hfIq2=n<1XZU~u@5~lVElOi~J%B0MO-6^cWB>JJW+my=0dj++O#FX1n)&Ni@|`jH9!G&^Dm>e~Z$7uP*40b6agN=3 z6_?9e-h8iT@DuN-aNl@lN^O1KQ2%YFx$}Q26R&#Cm9b!#Qd&q{v89D7KUtnN3K>XHzVQ+90Pe(;-HV z7Yh)!{xM=&aeI`l&5@EnRJA!OE>z|R)s7r1=})EL5eU~KnOZIVaDvwF}q*R`8 zWuB7s8Ij*MpM6r2-!-3oT4JQFD}+ey0Q$PLRXL@37T*e?OOP8i*bVuolwK9c{3A^3 z>+n|n``NE28)lm%4T=jnt$Zsazh|4budE9unJ$ur6ky z=InNBw5}D+=j&!d%_R-E`QO%U(w3DIV5VDY5HcQAxXN=XNbqB*Id3p^@-(I9cAk)p zPbQg(9>;Ez_)OOy-o!yDy9D^zr0gp5GDq3Tn$U5kd+lUlrswsOjk1ry%?ffeL2f47 zxN_SipL6AQiockBLB5o(l#f~DW2LW_zT)rQy4NgZW63wNugkYoGM4Te?wMzr${qnn z((*GDMduixj(@Osi+qG!-HSdVtuTQYKXFIWu7qpIVOfM(Yq1pb=^;=CQ$>|2b;d1& zh|sK$Es)ClO(~DReWI&23-YYlz(UePn4~)O;M0viLNRW8hDc1)-{7 zOLhz+G7zTuE;A)A70{2iv`j#-N!URLOG99(Mb4QeMFu}h!+ahlMRGnz+_JR-&!vTv zk|hOMT8NjR-^<3qywn&mFx`~C1u<7y{mz}cbSyb497R-JL58jj=OosDQPUMaYM!2( z_gaVEHxIpUmTA_l^)|~j^P1)L991n~*E-NwYSd*KXG`CevSP9Q6Yp)lzgf?zLIF)| zRxtWn3w1GqLS+F*)-sY~uPJ|$KM~c@9Z~~mJSXz|1{mpmM&josdr`6%B>SVtAC%^d zJs%qJJ2{hmH#;ENKRc*$AYvsJWMc0z_7M|2iWY(8iXOPUK9PGReL$c|p+oC{Q=ZVTjP3-4D2TQW^g>t`Fd|goj8F!u z_2(jsplDM}b^b1CzlCWPMUqW``KT%0i@LcqK69*WGC6asY%)E=rG6zlyC!_bnsz24 z;$GW>Ootspz)BlH#C?}DQgzbY9cN^kIInJ-ZJ&Tv@WKB=`X$*V-96bY)4;&{q{y?= zZ^<{)?}RgpstAhm2#qcmxk3Vd_w&w>u&1G`uIoe`#8jX>;Amr|l&8{R#!e&+u?~wb zxT=2oES+(z0$8YEC8g~{I`}6vt&`%3e84!s zVy#Xr(Zb$b456B_xRrg*AX42T1?niRQDiv>RfG=Rri!!`KCr3Es6eg?pf?%Lh7|P1 zfZnDEN6A$c;Z$a2PKl8KT)HZ1S`us5UPU3#Bkrsjjh!UauGL_OsTJx;W zq`Xh_I{{0;kSyxcG+q{?g=a}$pWA;Z|>%#-$AZghSH9-v%eM7Dlf~p{R`XI3X3MQZ##|svzHFRF5 z>dz6~n)Ztni1`;tdX3VOrQ8|P!&SQs!O;LmV;YZ~`WO=)i?o^#D*f2_1w`hNx7f%D zX5feE-m<<$BH4sK0ZRM3C3!#>FMRgnqTUK}orKqmhT1ZvbA0<)FahBGjG(}IJTT|_ zfHvf^qliYE$zLRWO$vEzNb>foz+M?lI!t8+C<9VeR>sI3>hSM92``oSHYHo3mx8tJ zGMM!QtzrgdOc}w9(MuJ}!)WwWWtyBX!GVx^8;97XwWty~2M~c#r_WUw%`dP7y=Jfl z;^ol->Q>6Jzd&${f+NU4_rOLJSHbw@DvX|l9C9xdOz4AMEmt_6ooaugkBsNpxtuld zB67R}At^FOb~f&}k(rPth4Hj{(;_W5W3V3Tr}-ts?T-C6VNZg#Db1>_0|QB`FZ0?q zZ=b^EVbx*+cus?~f6S0K(kxv7sEwbR+H?w3KQ+J;u+L2_rDWp#vG5*imDlFuJD@4o z0G^EtLYg-0x5I$9!T^?lYifC@(@GVz0qQFyG`bO6J7NJUE2)H?DnZLZRHmSi35W;- zh)M%w8v?TVb;xGYiQTZ_UDLv;GOcy0qM`u=g+8dLZB{bV!jhNgp{JSGYV2wgfO665 zO#Qj-u;vQu{DtX)Vf>LN!I}>?NX&4vcvC^z8gHIpV^AkE(`~ZP%A(Y<<|(9R`gtwU ziRn+vatEiD_TE%n(kn}QZ!Lk`+)d7lKMRPU4*pWD)C|^?sBAuq_?^B0P=4*-mHt8&8^mREBj)3%e zpD4F^(#0G4_?8@p5N`^hRjHj)9^augP34*y!KT-GUqvF!d|^lTSYaPxn|y#Pd|0!O zGF^dekKq-g!U?2L5ewLuw?g}7SY0>UT>7G_c`dZBhSd$Tjo|2zI36pgyNX9k0Vh1K zE$};CXn3{Z{BOrY#&h)>L?BmU;Gt~sk0k$1sH(m5h&PX5u`yRn@()@-dx)DS%uiQtN{8_g|~gaQ~E-6ef@N>*o^>-3#6-DA^X8--m; z*ZC((UY|Ze+})aLCe!#7w1{*r!QHObZteFvC1G!P-`o}2Yola8=?VKWxyK+(!IttD zZ7CemZnArE*Fq#^wH9a`eh|~e$Wr;V`hkY*YPZSlS;pHpJwUwnZ)e|;&*aDTOkotx zceEu79BrNhXkrVU#9`=4AzkY7jBu^ecMxmkpAppT5mUi68aq@4ga9(^QKKY?y%f8n zpBm}ZZ{*b~hOGq{&*pz+vR|9zCWHRNk7SvOaCHP#$lHIp$-sbDI;$kazt zpdI61WK~*+0y6(e+qEQ2m>7(6hK+Req?M;I7;T*YE%8xCj$}_K6YNraQ?d^PT-z?c zlcdf?yvV2y{Xsbh^Mc5WcrVLKlKfS`IMvsj5aAgKh5|Ijn}$V5N<|R#9738pNFVnJ z`+v#3(-FWGjJ$2R8b zt5L+^FuM~Epe*fx{%!YWVr|p|&*Hl?q6>iGcv#?)nOoYl4Z}lkOi(uaz}HL!u}q@u z%=V<{j}+SpjDfZ(&BhdmCiRg&h_4bia_is>|4)bHjyu`~g^<(b@hxX`YSN$p#8c1hYuj;Jo%;Fq`dvmu?W1`iI ztIeF1BL=X{^wvz*=m3+&>wu9Kc!-!S8pGNrL?z*tr7g?``SlOjI@@Yp@K~}a+crSN zJg-5o%g(8z*Ej!Cmq~W*`;zRE97XxUX{7L*Fs_THoFLh9R!?zC@W; z>f+sH!iBnLG;bD1jRQ4`<~7=-*B;k?d60Hv=A2td8T|%}zN63`(Y9*i+1&j4 zbGi9m*;x%yCg#0tuaVR8!J55mH2cTrd;1rTTcB;R^=~(^Lw2qw7TN_us^RJ86MC<; zYHMrs+DIld%z{>wl?6oG#*DE82m+Yp`Cf}Y4MD+&#{S!+?*U#^dB^cLGg>!}0pdE9 zwKJ3{AJ>h`#woN|x+SKz9e%rPU&pj6uy#^{biW)T@sJmF+k(n%qJ4P5o*ilwlpG@2 zk3BAtE`;$;X#S^+G|7$qrEH zJQdwKxi_NUt0lcolt&_34T>8!6=^DkZ!1^QbqTFMETk{*~c*=>oLj>q*Ya@GmdwIW+*^f!7 zF86sFt_V}$HmHdvCQ?1B>3LPM_e9>66dd-iral!Dp?Af+Lo8Qo1F!VH$qx185HJ0? z$pwtjBs&os2gZ(lPzDiwrB|7rD@}Hd8M)eIb)cbMw! z&b0YXlip{NdrkI$soZa}y4LAYGxUhb9yiHjYNDJ)b))3g-y8FsF$9Nx+O)o4vOgO6 zgGpaDLob=^6+k*B-n6pgFDCm(<2rfMWFMNs`^Nm!n0K9_v-XH#TD@yLwa)rLFyBJd zhPlL+^ol~evTQ6Hl!n15htM&yQE^?BNijXQwp*pWW}exqa=OWWZo(O*c@`$4a2T#D z_CquHV=p_(3qLYuvDfIZqctTLl#ceyF`hZnGkfRuGDqo^$CY;qg5l&WFT2o7F7UET zFd7Uha=({em)+yZ-Cp`@PdbnX{MJjJ zQ^Q8nb(1&l7K}ENm%QvfOx5IlFFDl8Ar_;N8$J1zCpUV*VK({Dlczj;mnVPolGi-* zs+Ycll}`M+m%ZW1>t6b}Cy#l_HFycZ-k$Ac=Xglix*>4hLgCTy#0Pb9aQ!I*msrkRFgeiE31AxQlym z0e6j;kv#)&mXNnK1m&3e>+A&16G&TWb<+hj&LDcq92nQg0mZa!JX*CHWKaz+uBo{; z8%DLTgw$dKWY@J)4^nUA4(y(>E*jy<0wmO8nV8HNXU0L#){M7Wux2SN@=zG+U9!+$ zkj_|pdOBlbYYOEv#tb`IBpdWVA*CpR#t1>xxa!g1YVJH$EwQDW-vP5djZ=Mn!f%eS z(8Z`H?8@i&3BJ)yW83$&-%;E121WHl?@&PBAPrIbwqm~i!UAMi{$vSGLmN^%S;lzj znanJx587S|(r^$fk)^ufX<|ptQ8CiF((fgZS*dMf{sd%n{2%84sj$uZ0;}i(U8Y+lxoX#9s!vZL^sNeQ=AVqB& zgcnEhrIk4UxWJK48KzL$Mh4oLT}9+Vwe{XzD997WO}Ru7fz5UCRC z_Arsfk{&L}5t98_Do06nq@Ws2kCvgINOr6w$4hpclunfN1ZgEm#Yv)}Do&EtQzScC zO>~6vNIK5Z=2UM%v{~H;#c*N2nzSM*S-p3) zTO>j_77Ou5y6PZaR~knaf}_E$59}olA!Kw+&lX^uD5DkN%58z zQ6_+bolT`$@fV?(RT8dg`Ibp)Sl|;+xL)ZZnbB?8Bf^--2HCl-U1%clU;Ua>wf%x7jK-1Fc#_p`x zYrm=)B(z~SZeZ2sHkJKopLHxMf$YR=owVSfoz zd$Z)PtD7Z2P(c@|=>ld1Sc*AKmor`Xtt9u=%b@py@=?v6`$@(a^?mN8#6yY@dI z_IBQh8%vmE=z^gF&uv->tQM-PgtGV3bslnjk4d4d{$@zCHiUK55GMimRnD4j$uDy( zXxy{;iE%aoV2}aw6&b3Asto4%0rxA743Gmjl++Y1_X1bh_+HcK$K&YN018`gsA&_< z&P8Y}?m;6s>y*t7Xyw)`71~ljPR%4;VaEnRCtrnt1^1nS2nY;lpK0RB@igoVrl(Wp z1lSp1w>kqx7PGH4{I&Wip->)YAmF_++)b;3A-X)mi6#0x{jm$Sv_#S+X634xpXW9{ zuz;Gs=w?4^k|KD`<2XcA`3`vYV5AG!WL0_-tVPp44^glxxzt~0t2P}X3|z}zc@bbb zKrcCaO6z1Ff$$e6)ivvyrarGr`%X=k^vTk`pURRxzoiOUXN&FF*@69vbKMzKgdFc^ z64ru4ay-r{f;~t`Xv|qbi!djUBx0r*C zd0#MnfiL(-RF{XIrI8RKbZpFoYW|Y#TJxsTRU--;6BV39Q#h*( zUva@HVh@AThS2>`Z8Fi5;I+VPMQcc54feuhq`~S&&pZtL4qL*T0?Mnba}xvqTwYDU z!^O;CU3+C@S7aQPZw)#p@}emq!XM?M!%;r~84C8N^>XwYdl_iSw2T>!UZwSvxKTrU z<9v3W*@+z`B=0%-s3Q(+cW^!PE(qAiW^X5+ z1px%*J>gEj5`KdhexYM`vzzy*c=wC}X=K^~Wv%a{qH`sB)>^Qs`aH*lk% z@+lextfK^DxoT{HzuqR{rVR~Lo>D+W))ZKjGjP`(fPQzb3mJ=uF6S~#b2ws-PL8>h zRJfyoF+#5OeF}dvU>Fuc*a3Jp)iaYz)AXLN4>YZW+vl1*`x)MnFlV)u0r?sCRqi#W zU(8waa*%n`IrngMG|G2!tz|U7SythtCzH$=>K)HJnNur0D^ z#NtX_8d)9ORcLyE7Ht4SU+&QNbVh5h9W2Z(@YicKn@a`{-ds1Q=>^u;(Y%LOXy=K4isX}An9PW0B~e^1JRr!y zdeRu#AZQ7#5Fe}q1V~f$geN^ne!RBf@_b<908Chbv69z0wc63uiTS|VwHe)=cy|vu zd(vJ92$GNRT1QD`i)aZ|qJ)h4Lq0YK3m#zGlChDlGSQE#IRw+qO$hB~9T23vH5PsV z{3ACbFH-==^mNXLW@qPAKf(RtX3vXWmX^gH`;`=kuEF*e-GK|nAqYx)#T!)UfhI-2 zA3=P8GNk@X*ykwpftOLt`~?p}>DODM(~Cz~9iC;^`d|m9p{7mbTBWtcdMoFk+Q_rp zL&%n*d5EJ<(~ZhS8@b#ZuuQFYzUO{-bibRr-}T(@i2I%9ez$kO)7|fsPyG(Ll=<#= z;WA=+RIl{GD$Etjp(`4F?$_?Zl0k}JZn;IfWe)Dtd|({pfW;B>PM4*waxAQw zCm2p0#Vn~SWh;dONt5t^VuM zQ75Z~5!w-47Cq%epbPz787C8EKJM0yH?!n*hzW@n!#v*U*B%ST;~J3!GK_u`X_E@&*$R|u9;|Kc$6vN9_8^ocFG2re7=#z zE^kz|4=LfUSO`7M$6xrE$fF{^Qd!z3a+bN6d)VnT8uzwA4`tpk_8Z{jtz_#)aeCFY zJZkm}u4S%Qf}HH@KrNtp)C`=v5_mBz%s^r?vnH6&q$}nF0kOmtFlw+9#g6o~18_6w zc2#>anAo$_=d{jWB`lOo)LQfjPk|g77fnNz&J*>RMxJ`YQ(j3(eVd1WU-1*qCDf&! zZ3WU91j<3W1HTlY*9q178{pYL@ub!|x&@!S$Lzn+It}mU1#O=w4^7~{Ef3SBZv`CB zWpcOj&%BO%3OlA78n4i5K2ur)?qvX5o_6F9U8W6@c&9hBbUe?HUBZ{AR+?KPH|vbLu|hA3_b(d?<=hIox2@jDgKE6W(IX&D37H!(gQ7-(~#Ix|+8P z@AcUp!`$whJN)80vMKgOch~EE$J)1*Y*?Y}U>htS6|W+=hN0=W_oO#E60~j>2S}2T zaeus2xmEAm+K1}|-AH@l1?}}~ACgUb!(U0NP59XT`0`pGyPsd)`eXN7m3RNx{ch!w zzKa#*0W=9(&&q_>@Dwrb9`5FC9d6~V70&l2gyX%AkVb?hZ(P13Y7cU1`65T76u>6( zVYUYr?;$Z)d-9rZzhbz&(d3JY>q`2?x*(OzDT&EFX#9swyp!w6-OU7qorjwFpKun1~8}{W~%$Ny(7#p z?*!50x*2jsbS!Trh?p=wfQw$i>M8_Yv|{k$m;APla)>qvQEhuSZn-?cLZx)^KuEG@ zeM~yR#$9k86`Vn+W`3^^$J>GG*!FF}eHVc2;MQNpAC=_b)(^}_z`*Ka2`2ePSkhM1 z77~PW!r76(Wib4)^V1B;oL~)lXXP)*#9y}o%*qX*7X$2+v1$?2WqST+lc49#z~=e0VxKc-MwhX~Kt~ zII?-NfPFM--rn%cZQiXSmx(!>p&%dg!0UOAIT=`DTaA99qGW{}&8qI!s-~@~%5zo0 zg|p`C6f`$#?lcQ%cgw znyFvI{|}|ycA;nfWw8)6x44Vz#N6dBE)(x?-(Kab4J?LGu48wT-RZD4NIKTt65l_^ z_b;c}@SK+rD>JwtG8abX?8uxGmCuXns3bC%d-ev;e-~bgIr*M4`tMu$K%)y??T1(S z=1QPT=>}h}_x&6F@TSQ8I`XfL>}!B>D!$Dt*JKzhlDBty_HFBGJy^-fH+&+5j;QCP zG7@UBO293zJVu2c%#?gvV$Z7AahlDk2?^y)4v^7C&Xx6?OFo@*XFX^6CvxDk!82M1 z*nm|>ZzC$f2tY9uJ&UF6h`cH0KIxn(v+S>|J>Q0FYRYxeiHVav&)O4hxTU6?gKGzi z{se1}pgWj*W9dXHl%#>lyiNeS3^njWzYIA10F=%x^ZncW_@R2I|HD(71moDEJmT4Z zdNLJza02Vu{g_sVLeDX00H)1f`#KTbV6ikn$$A ztgs7{>O~!Kdsijy+_u_o7Mj&Knm8mK?@wwo(-HpVaV)BH+|{}M>S-Jmpr-lYM8-2I ziWmc}`d!n#V_h?W{}Fdx8EPMKsNgGwz3Zr;Vya5yBT}10SeYKL70QyJh5Gs4meH`D z!z~kcj!_^m^)$AmGEYn!2zS1%ocW-*4s3>jYaC?)mVf{teKGo}L^vy|e;-zS)mBXU z{chs_vAK^m9ew@%fH+>r>J#bOW3XfFM#CLL8;x{~yBOkk+%O^Bh6nA~AIk(EulWu< ziR{D@5jaAkrVtn~UB2L$!DS0%`GUS>3%r)v1+sd6wF#ILU4?-f{KK$!lhQQE3cU)Z zPBN!|wnPbEgvVw?{5r1~<=tJZfVy$rt0gI+ezg+`Lb(m+P7aO1r0D^&fEux*`ndPi zU#U@}me+juCe8&kh4M>7A|bFw~cFE|K27nZM~sBRz^ftnZoAKUv43IUY&aMsB?adqTS~T)_NaFfhlT?JtZMbaD># zDSa!XXqRpE^lS9K`Gw81rZv+w&3#p)T=QDL6)7Cyke;9&YaYuBWy!BNjNSGB^G6nA8Vn2T*9>L&cAai%<9qP-g zwo0%*NM=P3EG-}t9xeb{-~!5A(-{o@Ao#xj1IHu%5EL4fVU)(2VyTk=8@hIEYqy_5 zb74M?dI`nU^Wyzcp%6g<}73K91%GqNq3sXkb*OHFcx z(Rh1xd(kI7kJuI_z24;iX+ehRhb-sZN7fwdn~!Y%Ltp;wr-uf;hXmQ;Kn@SmV_*k^ zBZKTHK%;`(K1+1}&PzP=E)ODOf6ba#mEy}QYvSV#ZLp{@*gmoidgU-bI|8uUeypDz z?~fekXD9k{f}ft^2M;>xS!Ej*i{}m-v=+SY$LMq&Ld#$4XV>|R_cA}dLuEa8`pMJ2 zJmsg)`pNJ7>^Wb4@24yL%JY8qqAxG_>7PLe$xD9Ed%nEur?2=j0JVF+pZ&%!mGi&y zTW=&j4=M_e%`4Kkd^y8lGE>2%XE|XMsQ)pO-~@h{bK8AVy}^?e2D0%_Ci$z$|H;V9 zMqV)HW!-D~B@?{NFeAAK*cDCqs-ku^hIxgdRWhR$cr5RlD?P#d* zI4}7rD3JoEddZp03OegbleOr-tZEvXWsJUO|_*--u5yu{NKH_X@&D1wg=eD@XdKsJH%q0!^h83 zoYF8Zg7{A7*y+i6HoMR!7ueDz$dPHwQ@Gws&&4+XOPFp5la9-6c9lh1d9~hOW-Hg* z>_+ZonN4rAa+7ru*^8~Y$X!`?CCe=){}SG=jQcIDEdNbc?H#squg&hWLWT-*@3Hcr zO&?YH$z$*zfZgONn>}si>o}nCttw2;>!wAg+w>glr`zmjR%Y{|jBoBwuCKAVDt5f-M&~X_LpRQMdA0k!>^|b^VcMjl8~UF$ z+ju8==`kK^8C{Tmve+YdTk?UCf0^_}omB~u2-+-rJpxlD*JLYT*n z;LB!L^W~oX*cXd%e<6Q9hVUU#Gg&|rE8fx`V(27cati@FCCr`J{P&vX_o%$Rd93cl5Onl&d zRO1{WS7+>8oJ*=?<*02I*(2oAHKgrCn%Yin!ntn5HJQ8h8>y;lTHQT?!G_8ph52D0ps!m!>xQU0yb}AP(WyU4f8pi&u8x+f33KQV(<1V-cSI%KCuEPD2dq9TqfX3hlK4PrviEYdY8VSfgCgo?P z?{^wO^a2F@GJ&=J333=kmLpOT)b}A##ylK5f7~{42rstf%Nh|NCRUHpC;%8J^kSf( zaSb(u^TaWo1KSWZrV|VQ5rV0yg?~V(tlE@#avwntd@TDd9%>p&G--I@R`5?#%dvv9 z=NIhxYuJr-Z`8VBq#> zRp1fEHm3Ir^S+erV!xd18sbo$?wQ+TgRf$5u~)^}@~1#1b;3>d?f#CB#TYsJSFjfg zegMhz!|ABNu|N8hu^6^8*h<@DBsp5vbjD&^I%BcqL@AvhRRkQS=VZyBCc&xF;Y`Fj z&y?T{sW=m{(o#v6h@8nfMt}yuJ`M4tAKO#)3PTImDYh~IEl3p*#jZ#9n^J`%*@!?w}yIJ}ORLqq1Z<30$2x}w0$nDal z>Ytvw1xQEt+%L7?NcNya4@>fp#8`vvBfDY_#)um=0(0hH@~k9>W7s9nN%DJXTOpZ~ z+NUo_1@kYH{z>f1JQ4gw%wNU)MF#jD{}od5uSzG^!5fmkF7lS7Z;E|K<3)A-Lt6hX zYrZGhyK0A#zAwoKlKo3C4p09r$-yT3NaRqH9%AH2COu5`TA_4SWwNQ1xQu4GgV;$>Ey`=fvjJsVCI}LD?kBJL zjGl1~bTOEax4LuVi^3 zZEBn#RX$^e=HzEb_!}E<4!)#VNT|Uu)XF@6Zb(N2v-+^*s&@#EvqS_f%#~SVSEh}l z;)D)ucFH8~&AfPSJLhKS>4)gGrJj8`cf0x$KhL>~JnfKajWYTHT2|lP!Mn?w_#1D; zc^>K7S?F-$30enf6|QFlRsRc(yb4lceU}bG2hUF(ck=z-H7(UOb072u!DC(4)51OON!;B*Ix^;5_0WWbS)~ zvSp4UZNxzs^i3VJdM2wm`6qhZ<@7gtyV@u3Tc9{iq^)I65$6=|VV}?xC*zrJDz-EKif3Pf{;8Alsp&(7g)MSDFe4_svL({M zKTGKewKi6_jGZ93x9`|RLy*ho9iOxP?43$V8h(k%Sa-zuCcc*Yrr*H{Jjfhr%u!AEjN?pJ58!%@{0H}pm()ZONJlV` zk$WYpJBvOn)rTZ|RH~0i2AF$HLxNOsA$dlsE)F}cj42kbE(l5mKl(qqASf@(&`Xm2 zRT69@UlWK}LW2OjP!I;@HEDfUGK|SwP`;sm6J{4er|z23`4N%%8`sH?)o&9(#huDL0dHing9F#INlzjRO3}rx&TE1TXat~UJQF;k<$1}|sh@6}g<=4;MXq*c&Adjn^1>%HAE>n|4_d6?hQFwp|l>|FYqOp1ChlRl*ZUTD%e77kTG< z{t{m9c#2!Sv7zR(SHf zmmX>hK^V4vM;7~pa(jSGj!@_KFD2IpXQMymjaUl{0dycAe>gt+)>OfQnU5AW`X4f@Ncr2yI zgwm%hg8VH=-V5a2AbAexn|mrqo(|+rQ#rwAr&wZTUML32kKgkoe}>I|j?#mbM=-OB zW69+Ln_g@OFS6MsR(@&I>tK?Zf4{QHU8wk}|84#D-n(oTc`tbWi{8Z4Z)>;S;VMDs zeTHNMYO>PtzRl2}{L5w^+VFkl$KSEz30rB?XNW@tyt&dnu-IoGoZ|p*<|uzWHL)S2 z+!<7V6UddLWDjIxj>{LLEzDOe`i$h4ezx3CmigIje&trb=MG=WMVnl$0-;)v+~jA! z_EDkDBiIJwGW3Iy{J~FN@v}{3Yvc{H;B(JY4gON7dd9`e|1!uf3;ZW6U(s`6kX#yM zR|LuBL3R}_3DQdfTL`b!2d)SvT#c_hJ5=Z*x+3s@uaERn7=5U$onZb+oMz*n>uUOk zpZv?uKJ=4+``N*movP3*L1^})00#NUAYB@SXK1ab1oT2Pvrd&$pU_OWaoMhs--en0(*86-g&x6YLX>GpT zVK0Cdh2Av#{A`+4Q~u84^WmesZ6O$J8IZo)&658FoHylxPWxFC)m&R(nPSf^0|RQPHr=0c2Lf332mdZbe!0Fi%=_-BjoRmkGP zWN9c%LY&N=3FNndJQIZHhRK ze@w7(qe(TrDsCGFqJ`S z^6{jv=DxuF^2AX*ZjYx6X^J|~sogGeAq!!_mEMrJ z9SJ$wv=--8k+E=5(~oyA=4){M_X7=4IDw~BtTMk*dVHfw4HD}lA}S$K2f98oR1c`F z)?U;!J!?kO)+eA+sbexJ}aYZKaL-~UfOZQFdzr)|Xfw3QbGn-yRJTTOW@yG_3n zbm+UIoxCr$8Pt6I58#Z~bZIMnGuSWKH~3Dn+w|i4-|PGCXAg+??>Z=d;MPCrAlTv@ zGyX8?Tr4HTE$s;XxUyrpo`U#v4DqsyCrElCtYk)Hf>|ePV7SaoIaQL=Fex5FEUYTf z_9YUZhS4TrDNd016fr03Z!N|Z&?{ADY0sed4_zqv_Om59N6KeQ;Sw|i`W0QK_iA;c zsYlVRnYpA)xK;9ZkUx{_9BwnL))NFSK3Ki;eksBigKKcgGc_V$*4FRYXud!BF~J^w z5ToXCw0&-1rka2iY zJu7XMuFgs|H3RQT@K5P}UxE)L_*cC>op(y`A(ldke$%GGCi-ix*VYeSD+O5L?K%m{ zbdC)0l~9Z)NVr(W9xln~{vEN?0V0b9Md*01On=@*G|vs1u~QHMX&|=wh=6)?&TT@Ass5Z zi_F4w!4NUc6NEq|0%IaW8MNRAUIeH;tN{Zz7(H0CV3auF5>r_j1%;Up(D zGG|JBhO|4W5!*$n)aV>Z&z9ORBs&-DUrEmsd!Zy3$i5dtRpW=>eTgI>#mgkQR0tB7 zTrOQ#Np_`FoG;jY_$IBC(K^BqK5l-?xaEt1?U9n19_Zk6&K;@>VCsg$VqZkczV z5KEtcV{AkbI*-5!4@>%xbVD_m-p8c!q}V59#?#F9^tbYbXC-U;304pj8AL=iL_~j( z5$7S;@ve~o&2UYF!8$=;OY9p$OyACmrEV)k8qS0=otfDm&m zHDmGrB0erQ23!4chXUDq4l~JOlQjiHm^`OPn&cRh9c@ZZFccn-|Ch<1XfgytSk0<5 z>^S4Ae_qe2Ci$7kPB*nPO?HN<{@i4aVM>=6Imei@&75CQs`ot8c@A1xBy}6hQ_}XN zm~H&e`isc9)BqvOm;7DiOWrQtgEH|dlU-@Lt}z+Gg|5?QuQz3lQrCNvDc)id0s$;H z*)rqZX3|@Y+(8b`W_KInFA)qNctA@MIrCv<#pF?wK4Ro?lRjny^`hxRDfWy>e#`bI zs?GhqQL|Ki{tssEpScQNQkA3kk{SC~Q~Zl5ykZifN4!Sa7>ef&Bd?qAEkkgC^c|DE zZPI_3?C+-bp2^-dwSQ`g_*+owUF_t;ecPNPz`e%V?ytWLM}=NkEnnqBO>xcWv+j5> z`u>yGD$-e%R&^pCK_sK%6TjuTFf{2+VRj3oa=a|e?tz91)B8fXH%uQ0<^C}JO(+kB z>BFHs6sC`c@grgOcqosB>64*65vEUv@>G~U6UuMH^x05;7pBjJ^7}Ad5z6yn`bTP& zKZVK5p}Z8Pe+}g?VftPu?}pWXhUlMP4U;!Qc|EMY70TrJ_At96#CTOHFVHX(?P#UE zaO+61yX-^`Gv6G95kU{84D2|WOQHd(sH=xY`6iG)3eQhR`HnSC*eGY~(a=(bBIPnLT}$}-~2^yWU+qX?`1%jh&mh7p)jo7ue6 zRyM~()0)@KG19b8m(_98$VknxM9{>w-q*+R7wo@b4vCTAob2uZ*&5BDp$BuZ!f`D7{hhZ;FyTBDpzeKe9sqI3me zG@|syD1ITz{usr7h_XLN@~0?$nNT26`iegBYLvVY$?H+|pAp7IZ%1AKh=}p^1n-XI zsVIGhP!m!0*+_mDCCeiW4=#<8t0L)%Pl~di5)o|FT)ABBj+rZM=(J{oWv7}EC-n@2 zE!;T`Q05|iOd&_R%^V^K7V*fpu{#G7o!B_RcA}ztYN;jKX!m{HO+>w)T|A$<62`gj zYY=9gQEa9G6zE>LlZg6;+Tmnn091|FuY1^N08|aC6oYqT_ONNj>$htrs(LXlTE9ux zH5(-BH-euUjntof#;}Kmy6e07XvR6%pwO(PzY`jvE$?iAl<{Rh(N`eyvpa!GX1TQ8 z?qpo{4l%cj+@|U#U0pd=mv)%49jFpx)akg%s>^UED-XLca+Q~$Y|A@Z9n$B(+#_xG z*QC@j^FZuK9567U>}x|$Lh~NF6J@yhjBKB ztD3VGucQqzd%)yr5KW3H(P;uv8Bw!Iyd~Qx*f8JnBM7wIZo%$sjE75|E$D8z8HI7R z^_O}x5hpG6X1L!r_uJ`y?GnoMcW&fwsN4QwUV!u$I+(8WNeel;NXMi|CBx6?mW{;PaxUxFlEv{ zQCR8WL=Tnh=en5Eh#W}w5mFZDh!xU_y2$<7mj1SneOjLFkdgfbIXub(bDHrHR@R$& z3FZoo=BX+|n>DuHtg%?>S+&yEwTAhi8yH^ZYp*w7*8aQ%t6oM($h9n6;XLrEm*Ml^ z?`f~#WsRB8eAxgm;|*hYna9h>ZN7|GLNv0k4twp6fm&EtOU?>MjmUyuay} z{aLZH8>qh;^B2X{4am`42l{OQkJz@mbwIAJ0~NYACmnB?)N&7&;_QBAN^MZ_HA+=s zE{h5;DhNa|4{}{_5)qRqex|fMO$#DM$D8fMy0cKpQ3wI7E38-!>qckL53{V?`)nAb z|98LaapkRpX-0ht^-~S(>`Et&2!e2<`gncb60DEl(WsVY=z9Jyhx5{+`OD3paoE8J z(JJN9|BkdAflfW%&3(X^@xTt*G`k&wJ>Rb6HC9(pb!=PJ!%dcp%V96l8+9wg;3dv+ zS0aFUuZK-IGex|8JoY&Ct!^x+ZRz_&yP=QWKx_xoIf2~uG!P_v9MkyobQbD_KG^Jv zcJg4;=YA3Kb3MoX=H2fk_uHnfr2Wy1zUhaUmTUL~cCQ7U^`58_&|F;c&8+r8Jaq6Q zDnVe=33sf(PMNp`U1Ftyk*iou7Hq@=|46Xn4b~-htDLr$N0SMDV{2=5c`7I zC-sT?^wn$~|K}q&{zo$nbOPjBevbZ9BLb-5{3;i$rqBDR6l6}6XnMW-W#l{m<1?$3 zzxF>rvrqXPX43!oqO+yUr~j`{Jt5ssN{ID$@Pv5h2(J9?!P(+{&0Xx{t?tgN0kAYf zcT&(fK1^?`gH(UxTsJ^p;y&|1X<&b z?2!1+P0M|FT!mjIngoG4G>!+PuL;%EC`hWrcs?QGJCBLj3X1Or;2h`NPwep#S8`N@ zBOg)D(83e+!ap2P?c-ok8bfq}4DtDR+p8!q#Q7)+bIdyFYc&<*EG)1#MHoorun8sn z3u=5zBwR!mHQOTuU#3b-=_CSoicD{88K9tIeHx*_WCuXTZ0^<1c5}?(5&mP8re{M0 zG0zTChDkLGYxe;8orc@WdlQ1T+(3R9`ZQ0t>l&nQSfuXFsS(RaZxA8@-GL(#pzH9+ zR1YqDgM8%4!PdIplKbr+^_#it9`_r$-x2rQ>wc%X-!Au?y5G?K)=N$vb?tqmwANPv zYlPFuO>7L4dddD$2`;BQi*u?$BarPBQpUHepl69Z;s(#Er^3p?i=*~CBXd{eEsN~( zsHZ-Bq(DSi$BW1<5j$|HZA2mXs*jD(82o#H=C#!#HYJ16g@V(l8bOB}!aM`WjtY%I zW4|LeSSD8!$bo1Kznj`&o*rkvMfsaUxkWMCwJLLzpXPGchq!6W5uO}{c_HCTin(vA z>^O(@wl7zp=<4#BA32%qa5OW85mYn+Ibb(p#MLNqC+?>;(r0njk;l~XVfysA3n7cGR-- zTHeZ`^$K#2`6fe^fH|DB0=Uo0R zIdgMPZiI;ebSjpulb$|jWmnd2oF~`2V2;N2!95yKo9|QorIJHCT8PO%Ms)R59Z8oas|bd8V3N9 z4&oO~DYa!H%jK)fl+rj}TCSk15*9dH=!#|DQW{kt{)P?bO;#iU{GuM8Ng1`nV%9MP zG_IQ&CC<~p62wk`>Kzp^q8HqZvOdI*|6ApZCtt%_1(&M{h=Qp!WmWp+F=OjGpO3z~a-$z0J*$+(DcTYx1{8 z!5xvgDMC}Qsu)!0GdW}t6q4VgM#c(3UHeJ-1ui)?@N=5ul6fpX3|tixPp|9JHJ_X_o#Fp7B#@ z;9B;z$z%-qKo>@x>D30n3(-u*;Yhw<;&^rT80lg^Cb}Y`8|W^!;npQV_;OQ@eZI4V zOAxLN*KOaa?+ zNgVbQalMv9CB14AJeT(#(@F4R-n%*P-$Jy==$E-qPX>Q!p8cx`7m$}naW#ir$8bs` z$mb5r1wYD}e|>6N{4CFFwD4JqW9rj_w6h@E|I4%>xKqx*Gw&CbajowDgUdNLZx%rKmZX z+R_l;sA_9Klp!~n+M!^I1bbzYcr2IZWNA#Ma#ZmF%5aykn%>Dva*ndu#gQNDe#GmN$!t}m+Z9=4bTu@7eoK8@1;uQ5ma)4m zw7_?>@7eFB`$?|*D_whoHtMKHg))mcX0ll5*cuFJ53scws_ccJdqFowwhAD5aRuSC zMXZb49Q>Q#lI7SjF>Lt(pY-`;NBy8<^ozfed{wVIAl1^a|VVb^rRM8~H~ z4~kSmI-2&NihF;~`-gacqZ|9rmF#@LL4}>XE&&|q?p_z-&e`~2M|kqVpXb0e#C`Q9 z_H&9)h-P0j-Ej^V)^5-V4@^Yhk!pAgY{1g6olh7*MC#f{z-_;!#-`w5*zyzo?7fn` z^|ODj*9RsC>GhNJpj>T}Yt)Ce8+RD19Dw1t!8Dzksmg55|eAQ20 zb8op&?+y==#l%jqE!XJX2|;qAyZg1?ogO4Vb9V|BH*rvLKL-^fAYhD;VLHb;Er-U@ zvV3q`o~W58DYuW0JhW*^d zd{5szxED`tW4?-TqO*VRdF%U*xqWM{=eS4|vYKMXSGVGE~@ym#t=Mf*=VmzgKFJ#@})?bbKv8#E_lFozSE zUD(V#9_`ATm#g)rRx{^&HNR$EcGHAwzNfy9`6O-8%FE1No%zc8o6SLx<~@zs$%&`V zF&8>BU&1z9A#)OdNq4i|r*>rozitvE3UOKtCK7Cu$5EIVo#qqZOuK*X4USu?P^X&H?h=QUB&E&E?N>#?a)}X zs(DE@SCqMJV(G$UK!NeM7^EJ7W zJyXc?6=w6Z*uJcouUeZE>6oMC%yVg7`%!@@ncnPUbH zH@}@QiOEc|)naqRu=%85=_Zq#n%|k3Z-P%PUTV%qW`6eB#MBn%JD~fU109!{Kh33B z@3FhC_6cIXi@5OJE3<=Xo*DK$c=i=%$>fga=V1@JvFH5T*!*X|G-%I*x5PYW*D&6C z;qUglTILK$_I8-A`K`JAlKqm&?aZHM1xz?;jw`a~9QPK8>g9X+^jme#VTvK+nYz&4vV*3^18``%&{tKn5V(!=0SLzIVINq z=DD)lbIm9H<}O-hKAyjCvaw?6RTE~1*WBUeYphc%-MeuAnde9{b+P?b z#G>}Gs~xj}xnl9^$4=Rk;2*P+lbd~G^Al`L+5Kbt2r_#FYkqTLwZc4j%*Sji%!l$z z%>A^mPi@YCxX4`jW~#6!P&8kBUAmTeLf9YDKIS&sF9bKtpY{YZ=BI35A$B!evF+_k zuj91Mk=7fS^;+HBKlTB!(!v(&1p9fK{RrF~oopUY>zh+T*sa-mOaAXuTzgO24;IZ+ zz}{1vFKU@Dmrgm)nK5Pu(EOXZLl-SJZ;s3xwxz$E_~z1yV(9~oZ<<9enqBVv-aNKe zHUGD8#Flv&*=M-fez<1Ts^-eG_CND0jD>$S``6}&xc(-anvJ79wr2zLjlJ#7XWiz8 z*i*Zik4TrTu&1?YO>Vw?6SH9Z?~7M6&sQ_r3|V1L<7cl!Y7QHkyw2Ps=0Rr~=6@Rt zx%oZ+3Ue698s^J2_G>m~-(<<;&Gzr+&b8&qNpql!d8V67wV8+hO6Gi06K22l{q|+Y zJhpAy{AYITwyubza^lZ|C7HZVs>+85Wg>~`Z;d;Qz>%{83tMq~ZSw@=1qZg<(kM;7M2 zx;YQJo%;|TB^u&>qo0z?}aOzZk z0IQlcKF(~q%(;nHwfCm^lY8HMq4EFj{ngAT?h_NQv)_rdKQ^;Xk0(x>IDP7^_7g4F zp2E#OTDzT5YMdmJ_+QghNc$204XD)KN)Es}kY|5T@OTR*1GP$#P z>X|p>=B`}4@F~9itlxg(VE=oq`8WGSw*T3E3j5?=ZWeF1koNEPjH2cYT_(311iN)K zzfPcMx9Dq_({!$79wRIB@A_0j^RXL|HO&!i=DdXq^B-?m)?65~-om`>a_tzK*+Wvn-8Yec?9S-U{=d*2#Wm zVYUg5vzFQY+uUrF*D{;8eJ8gt|GS1cm8|_8#(w6I$X(3YNVlBa!(92>H~;cx^VHdS za#Qo*J8CDppO#IYbkpQSHu;)`|6OvE*#d5Ez5!#mWabnEX1&dW(!5ZvZjQEFWnyFV zc$+jAvY9Za4>hY{{?9f4vg9@9Hkp%`*_VKw&3$Mt(`J7Aw8;GLY6~C3WRvGE%zW{} z|E_$K*)3cWTsg7Q`zQ8wjx`%j^Y}0u2m2m*so8rm^EF3OEPN7Rp5W${z`WaiaB8Io z%m=DwmCO;S6Du#?(CpNjC$+g4fHwH2m}mNWW{u63eI>K;-od;inGYYAnKUpzpMA~N zI9uc|d?fvjo6HAiA2c^>nR$4c{j7ywh}cK!)apykiNvPNw?fU!^b&Kyw&mNKO@w*C zm>bJ$^TB2b_R+TK!Xsg7awGG1^CEEQqJzw_FLslkH4a@kec*={-PAB|kxKJ?G2eGH z&l|I?T-Ut&S-f~}v-LD5PBm}H%%jr`Nx$@9b9oT+j4^kk z{V?y$rR!{c+|=@wj-Og)o@e&gV2dV?nK*j8$tm;k&D5z=D^DD|uXz%g{g-_wK4TAu zGhduE-*Pt_wSO+2{Kw+S!=?_MFo)Cs$E^57XX2oB|GjwP#>I=`Y5qGdL;3;(#4vHiWTXMU`U%?9pB^Y7+ie!BTO^=l?qm=EhuG$&42 z)qKABy5)PXa+;pKC@dfd!Z1s^d;uC+N}KAi_Fmh<|{bnoFnFYg{w^7JUKCAAD?#r z#GYQnZoce`t$o_toi+QwGEWzCBKE08_MvQU?97r)&ZztrA7^R!)> zEdG)Cg2+U&cdMhJQybXRJ9$giSh~)_Q_Jq@n3XaAf4TVu zrrCzAWOkeuo@aJX#(osGQDX=5j>vpZ+?>pA19KD1u$|31njK#IF^D;n_teye=AGs# z_70zV$bA3DtnH!OthDt>=71a59spn->GoaA%4Vx(c7KXHJnc@m_Om>6CfB*qV2g_U?PFxf{)yv&>qUlgyj7 zHBaAFCJ!*5?zhcZ>DDk`Dlpwc&7FRdS*Yunmm2e#onuZNWFD;JH>P%v(G0V@t_|n^ zZ*t8~)a0#(`FWWs#?$}fJ}$}U@DR^qZ#B)Yxs3VY&i}ZFcV1on*>R4Cc!bRvX&2Vd zUqk)&|G0}w@)>;Ln(7bmnrq1;JdMq%uomW@;%WQ?+{fo^ z+`$#@;Tq3kXJeL+U2HzKT9{ve+c?`){S?=m%k$XXLT;_5@nK7z#xYKDiVGZUseX+k z+*)1pOK^nqt<+C(g$o>P&HQk6!y{Z^e@)HL+g|-1PH=%M z+*pgguYQOVJcF|xl-Ib}QSPj*@%~P7iZeXK?(3BM>!_dXBKODML#}X&y{7sFj&O}L z?C!~U>|<|TjgN7JQ=H*^JRaBM@#}H>_R{<#oa5PXzPIvvoa6TTtp7gBQ(Ok}{5aoN z4mMzU`^hsn!4)oX>ow}<`>P-0`T%)=gM;MOYt?r;a)R@NW7i6j!($_ur#_YYUCf z-YX~Axkw)368kOn-Ak1Bv4;mZzf5^^OZ5vpjs44&XE?wW&T(ri#^Ww7@hqtiYq+C>6etZc4T=u z%flI-!~U09-cIV5xPz0sSso7Vk%zd#-p(2y->bZf>-*#aXJ3(_Y#m$~!p!nw;X`>vA=AA-8ws_TdD_4=EpD|6$o}s~_WOoZ}1!kElP7oyX*0H;oT| zD9_-ilxti+C3kjLKYUtF$NsrIkKJeFU=Q`9XXP1O<9Y18Kz~p5{a?_>1+H=WlJd@8 z>boz?8LodNkFfKK9PZ8he=E=8`1i82kMgLNr*ZsOImg96OJ!-&pSBXcM`@!4`7+K=q@oiv7Lh;n;i2-off;xQlC?WAmj>Ee|Jw+&+Zm?I)+$KR}+xCH4H zJzU`ehi_Hh4Aqa%W&XI1nLl>Ulij1#uP>0h*m<{H;G`!vk5<2Uj~wCnz49DRE|lG4 z)ORkDr*Vig>|LyU9v6um9Lw#wRGz`!Wpag+E9LfaEbl{dijxn^L+qJPz9t;U@s3x& z#yy;ygXC;p;N+un;{?{{V{(N38F>!ppOW2a^)vGo3p>9qj&76-?B6UmPh@>QE62FH zMIK=1PT4z2eRDC;h57ez`Zc-4!Gm(^Wc9;`!kC6Y@MRo|J=A)Q^Vp49=dCYg|7gcTQEmcwWwM`b&9)y%*&$Qa^o3p2f+p zWal*2_xJKNPHH*B(O=~eF8?lvr)#|T4|xWM|CVbU{8#Rrp?--|9869w{QTx|yhIMp zWd03#2G_X4)iUMnH>sa5m(#IVlIL-@LJrPieO8rcaJ-saWBa*M13z--@b0z_37do=h(h3+Pv`&_3i7Rb%-7pR|`?Sgf8Y_lD(F0g%^S~uUNer6sA)-iU?&)Iqo+sA>m`)>79b3a&jv1iuX zI>)|QFYD2`Z{}ki_84#ew4TM)du8W6tpEGuX&hfD=eWK|ZkTa)sxOrz99$;PV)t^{ zG4oyM<7u3|UwMX$tK`u*|DYV2^{`WNtvrjPRCdgI*(v(8JdMpM6mzPbJcqs8WcL#FozKhDxWYNkzo5L4sPEq?M>xJqp2Ha);p&UZLvz2{$^DX?;yjm! zIJsN)&HZktZiDm-8trugRe1v^K-RR zhI=@8PkPkB`$IFu<}-4{pwqCg55{tAr8JP z`&X;)4&**gaf##aDQ|s1edkd*!5JRl{QJtiYt%1)Aop+A$JY1NblS3RlFVAAXk{$Cr zwNr^ZIDJ8RhO-yt5l&u`!;fgZ_p&^TQ)~{0U6{W!uY4L;IK$;D%pcdkWBwo2_~iHU z40it@S2)A1kI}D{Cu9Ff9^&ZFa_i&jXMdrO{Skd!V($~``~Otl!x=8H^DpI%PpY5d z5C{KOK7(sq;p{)kTQeG8y(%X-bEX!yp95TDbDElk`@1m5YS`D4E)L9ZajkP4n=iXr zH_Ud~PJuZZ#M*AB?UdtL9Gc@gY+mCUx35<}U7|d}zBxgI?GJE?-5b=88_K7#YYr8( z{S4=L9*4`7`!{NQje9sX->0(U3+%5fH$J0&i9;NiZ=Kox49;mutxx&exGg*lEi4bDh+b?m2-Os7-Z>K!O8P0IEz4Cb+_;UL; zjjwQuiyf5@aj=W*e_s6>_p!UDa=Ra3CwFh=KP$&L!P!2{AJ_Xa|1YTTA0YQ|fy;6J zdgZO#)sGI86P)7#b`DbR-og6dY3v-LJi{rTANLPcZuevCRN>y(hbb?xcevcRi}k}H zuJA0*j!@tEqWVQBcW{2JJd2&<zfS8h(xwQ&DBXUbjdo-G%+!p(ctkGjeu9KJ=K z!`a(p_dfdP$kRA`hn(Z$Jb8rU^JTkVXs6%;c?P@hk}F)`_WkN-?^bU28yBXYJdZ;h z%qdUb$NX`2kz8Z%V!8c*`rajSf>S)e6?VVM{4Z0#i=(UL0w;ahTv$o#dyO39^n>yM z#~+ft2bur1au1iOZ1-~)rt9R^*X8J=a)Q&3$wORxT=u`Ae*6i!kMmE;c0bup#f;qk zrd(ok`SgXnyk2>U>zm|O!T3y$v44v^z%}+BQa|{d@*d7^lkI-Eox%s?me~)tQ~Xsq z!4)3h{Ad|!Eiy~pI{ zBkDUplw+LW0S+E#{^oszol@Mz*-w~1_Mc$>1NuK@{@8nxKF+YYzS6?{tD*8Pj-Ha| zu>Z8|KFaz(Lm#KOz}~aUo8MQz#xV|`Q(oZm7xaIie)5tWW9L`$0B7^E_n7+WujL+g zUXe>2;^q(O;|P~{7Q4UE_!@_}{UgTX1Ut3*!*P!NQhooA%KJF@vs~fgZ*u!_^&Mx? z!s}6rV?4x}IhfS$&-g!9-!tFIwC>{^S2#7tHQT)X6V_)1^B>zBh->qCTw(tS_4C!0 z_i$=X(PaB2c3&&EeyVHO#Ngdxrfa$w3`$P4^t>ixTw~_7pT08mM%B`p5d`CIKsX6A}uKy5cJInsltj}(8AIH1P6?XQJ zTR&Gn-BV6*u(v$K-oCQ;jQYWWau4SR%O%bZkz3EIU*j&$4^>`Z=Wx0CocaZhae9RE z0S=Fpz30_0&yagKI8!cheYV`H)KA_bCpbM<9^&d9vj2km;XCCXF3y(=oL($9f1!SM zi5z1$kq0=uO!j`Meu2B#zg&5Nt1IN@i|W_!mt*W-DGzYfm%W$NkFJq>xcsPG;^Y%@ z>t*%hPs$0-X5=9*vG*(H|0(5NT;m)kpH@D?!S!-DukqfE@+?kqjceTbHT|2^&&JM} zKhALYiuyI4#on#zJHJt0d`_Om?&sxv?7QT~Z`Chxi2W}rpT*UeWaoG4$6uDGadNku z_tAHS$P!QRXA0N2?4oBGkOlt;Ljm*;Tsifm5vtDnbjxank;XfJ zRzJo5U*!sCf0tYTP(S#O9AocQd4MbI{ZswId_lp!e)O=psD@tOaA>~UVDr|$)OQfxuKm(Ji^{u>WB6_US^8%EcVw{?o2X2 zJdI17W6zwx!rmX|TrdmsOK^mprgC$w*@Zm9uKC>2PC4#kcU|=h9OLF<^_}&U$2i6V zTwrgB`tJJb_i%zsT;kSJ_5BUhPjHHdxW>NuT+>d$Yt--K3|H8Bt@5_{oYPJbPH}Fw^vc$ z-CRzwzm+^c_BL{`Lj7u6c?JhN%Qa4SmD}cXRXY{C%PCIwk>_z7$mT>Z3;pB(xsS60 zBB!{%R375;a=B$bH@8!Ig&bq=N_l`2?3&Nj?c`mhd>ZFh%Q=p(kw@77upGWt z<13uu_*&)j*h^)9LvGJ?avx_OlPg?*LT-ENXEXG1{weyn{Iu+Eq<($_eH`2}{-miF-J^N%`E^ne1+&ete7E#p!Kwfy*z*%}v$!ZkJ;m;{kT=Q0{G}euaD3yHk0I z%P-5V&D9USAtyK~zFK{2b zk0>v3hMQZdpL|z&j0-%6gSKE-^1Qdd}XXJTYV}B?0gJ+fZaE43lJg2<1v-%;9u~R7@ z;OGU}d!72;FPT41ae?EPl{a@$-}#l?#R<-_xg6cX>*Z+N|FsVI8@@$;r3a5Wp-rif|YnH9p1xp2H<}_EkUnm--!C;1qlRRzAcr_V&~G?7zx;*nL$l zaDp5At6$;}2hNg($L|bIaD`Ls9l-K%gbSSEYCInM=1hThf3o#@jZbibb93$xn-6hh zPA6dP9jJbeyVy4;M_AZD#Ray%hqjZySb2bJJTuOhD6ep2&O2-8*Y0S%*N_uzF4ek_ z53##k_77(LT)B_SHRKBWYs#%d)Q@qD6P)85k8ruR#)pS$ykkz|VAppB``G^8+)gQO zAIAFO6qk4&*El#_eYeT{ae-@G_Va_LWE2-Cqt)<@O#R_i_As*&cUdr|dwv8Oh~Aa)h0O zBG))NRBoTf{0@^7TpcbCuy>?vk7Kb@6w1>$J4()Qb+kN>y<=tn42@54ge#n4_c-+n z9N-#9*gI46OL2(f<2AmIqZ8x-&hQ8qxb-H@uf)^1!hKxhIqXbp{x$Yal)bYwKOcuU zzzGgus!a`PBl)ka}xI_&QF#{*gr*X zy;4nagE(KsqdYm`TID;F-~xXb6nsGyJu;B?zx&@ zhy$G97zbyopWz6XIK|G}HNOJ;*y(C~ggu<%5EnScHBPY?Gk+Z78YkF$vzC|R09QE1 z?mINU3jzK=^Bjq|rDPjQCrad~zsaE&YMy_5N$qw!tr zoGTYN#*OpU_uj5N#5tb9ZmfKWW9(g^@yId(VJJ@}{;QSKh?nSI$B2VM+QrRAN zX(#V8d4BB6W&dL3Iqu=`3gyK($Bj$W58tmm#08$g*_F!eahnUvze;W;a)x8<_La}! z3Okpwepf5+;PM0V46bmAYuva@BB)#?YIk$c#`iTPtElN%pU-@_g3d|r8mb3DSq7nBFrXng)9CwT@3f0k>U{zdLwukrO?H!|iwsXW3Zp2f+O z@_O7~B)4y7{9-x5j=2Pg{d{CF&X>#XXVv#slBcncXK;XrxL8?z?-q?OafGuK%4c!0 zs%($rU)Y|lCbw^ulQrc8`)kPq?5-<&pJP1kVt+m5`8dZT?5(dnxJ}~=+{e)d%1d11 z=I7P-&9!pu{TE|zBY6(To5;;s_3O>#9xk_&OC0S${|oB7JIWD`ca!IEy1VS$u713y zJdIO4gL6E@C2roK@y=e1$HCrmjte}(6>i_j`tGBC4+nS-$9RM@9NwkzB~GyuXnrLQ zaO;cehq#L?oa1C)jjyq{pX`50<8vJ2Xn*B7jt`VaxI9P>a*fYAavz6>$Q3RQmD^ut zd56mhE{~80*gH!0?pD7zTJGWK7`edyadPt>)(20IeZ2A<=O@UGd)1Fmmb*B?vp9Hz z@)~Dvl-u`de2r7=oua(NK6bxCA5Y`tRP{6LM)Ewauzx@6dz$hdPEMB#9GoFH=2#vM zvHK?Fv)DUJb{z2WL2czw!}Iu9CxVsh{`d zSzKK$JKt9BTq9581m`&Zkn+ZNSpKzggtL#xb7Nm8yN{^veO&J1@)L4_>rcwf@2c;9 zN{+GrX?cLX>t%1CzJG(W8?4Bb?wE&*22uIK{2UG`|c-IL9-%z$Gqm{@BIy*u&n>G(R6t;{c~P!~+~*=Shu^aT_N%#wnh~8Ln`Sn?ud7 zz#%SiA6K}*H6CH-i~Rhb()?W9#U9SEkB2zG?$a6{;tq~*f@3^~6I^5WOIn}y&o#d^ zms1>kS)Ruw4xUjzzgu}9d-urYILFOrxxM!)k8pu!ade+@=Q;JAugKFl#W{BGSKfGD z{R~IgpHn`EOYBza#}6p);tJX-Y-GdK+7YMkTN%k=kE z9^+^~c@8`K%Z*>DU*Hf22PmJx39fMcdgbkTjgJqMQ|ulj&*K~izg9o!Fn^pMEZ5jS zRPMZ@eu6WcAEtbS>%(RHJ!CsYN60g{z!mn6RNne6^T#m`LgfP-9wmFfQ{OvU?%@I# zI66joW*FK{2%c!0f=SYEAuj61l*ee9pC{s2d~@kfn! z-=I9g(HrGC?4K&Te^S51(>RWlXE-@c9%1)%*?!O4PRW__3=ZBTS2)G(zo_q=r98z2 zp2rn#{Z;+=Z1oeI;~{ps%Kg8oAHGHI+i zhm-T=68rC!TmMksd!L-(_(FMz%Zp|IpX$e#$bDSm5@(kwZ~jaD>~cB6HO_GG0p%l{ zeozknt?|yaavx{c$t4axCO7}X?U|8d9DZ7!!xeV^tA2I8@@bsjAZIwZQy$^uE;)Er z*ndEt$KiwYoka_e$MBoqhLOsMaDPd1l4)#DitvHz%YZ&G=UyEyy4 z@*KxMkVn{iOb(_rzQBDP|4?~_-5<&AMf7ok<5KwmdymVWy(q7lYTU!=kChi=|3q#s zQ9pP>jW9B%{rH|MRellzj~!x=7c^s@5is_NG`!pX0c&tdo1vg@j!zan?B_ggu~ z6>gaGWY{VFo$?UZIK^JAe2Bw8$=>Q3pZ!_x;rcIfiPOKy%{9~yMskGff5@}A{Fhwg zWYMyP{k6`T8ec4tQyeXo=W&gFdud)XB@N{Xc9+Q|j&XBs^(!2Wy-$enfZ_XI=R9LZf!z;7v(Yb+VUI@@CZk^y{X2>xQEm6 zcpUDg`8k`>#{qVBSKi0&o^pj#+}>Q{y}gvDIK%VU-&?uAh59+}<7^-0k^4BuC3X*0 z-rR=%VRD3%!{s?#9wEEisvm}O7Z*6k{!z+DIK#nq8eblxJj2m(va`K%{{%V0&WUn? zlapl6XMIkVyV!XHeO%+_4(g|;DDUCqGT0>f*)_7ioBH90sg;PA6@g}qzk*4`SQ-zxXV{t|uc<@EPaKf^H& zzN~x>M|gy590VF4-K+i#cJ5<&;~cm5Rlme3_P?V35U1GNPyGV-aE(js-mmek{nZa} zf-^kC1@;e6KmD4<_i=^?*!zZZ@Ac|OxQBy6d5QgR$^L=rhd3Vl+sX?ZW9J~&=Mm-8 z*m+dWagG}u*5~`mBOLrtp2OASvU{-l&J%JMr`Vpi%ueCYls68c|D+t@0?*=dsN7t% zdtto)l-$7?PO5oQ*w!Y+&WJE0C%y!Nc|jpOXSA! z>cyL`=;H)O+bAF61UKKPeuiV5 z;~W>b#ufHY(RgQD%|9M{J9!Rg*gaMKV0-1=v3HgW?7mKJMC#`_#NjT=XU5)DuCUvd zTc@$S-Q*Z&cn;Tig!A3i4^C(Kd&qqp>?xPH#LY9*Pxn$D;cy>$7T1AX<7!{IeWu2{ z`^yQA4v+`fdA;ntN&O7>aB!gVa-1I|H_uW(zEO^FiZh(y3g_56TjTxDFdk<&$#b~Q zWVfrn_gT4%^IPQtJGaTrH#2`cjRQP0&Ofhyh2vSd{T7XPzaZQ5RN5)WLtNgj++{MB7d=Q$KxH?qlb9xx)Sna{Ha?doRi;KB$yO{s0au;XLN(--t1&$}=#=F%ICgl)Ei{x2c;~E!>m3Mj?A1;wo zTrZV}I9o;b-^2Q?D)(@?mR#asZMpeg^-~<<8qeW;9rfM!(QnFK?5`{5xWFTvZ=yWB zP~*K#Z}bBXe7XXPE7zD~C1owbv{ zt31LL4in|>ZpK1E_DS;G*r&?wmFjz^$z5FG9H(a} zZ(OB*jyu?Ylk#kwpCylQd5#?RxjpB}vpBdwu5s}$xpTGpPEXFT`(Am3{R`#r1N1MF zXK-|}T;uQ(xpNKcbE%x+{Bn7Oi!0>z2h}g%FQ+)WQl7`*2jt*G>Q~pueH>mVSJ?Zg z-2Slo?x*Dx`!~w-ILPGSTJ`f=~ zCpg6EcsvePXnylJ$H9#n@2sVK250NY_Pp43ikfogGqSs`oZ%9WaJruI@Fw+x4dhuI zzD9O3<;iR1X+Rz?k(ro-AAsm z6Ugn)YkY|lobIc9fOFiKRX^=0k8pCZJd5K)WakU&JBP^~TpS~3xIA7S;pmNWc)P~u zXUjQG&y^c@C=X*f!tQzU9QNKRyLYnw?~=Q?c(+_&|9x`vF7>@jMmU09TdlJ*d9(3%Q4L zT#o&s^48bYk6w~vT)r&N;p|tk`wjKWdAW;=U&{qfUy+;NWd6UAV;uZW9*pzf%U+>= zP|H0W{!uP*_9waZkowi14h+v>-!$}>23R?+?lE+*v8choN@St{^!v5~^9ImnZWA%$Yly`Bu zr(ED@FS+>>^}W627-##)103!vdrzpJ>@W9ljSCzepuF)@=6|3Z;u_E5@F3;&xZjaG zKVx~gkKKcnmpI3*C)JM*Q6A&)P<-lr4^uvkE1covaOLwjI70TH(s<`cxrY;6 z;viJsdRqMgCpbJx`2bhg{ki(p(aO6xJx0#4f2=$j_i^xy#%ISV@8j@zxx~&1a`RdB zYaHWjTKOCqGAJpQ*D@4iR#?_eMIafAmr!HwUszT@$@8jr{Bds%<%b;$%Gj?;4+v$Kz@|9y^JaS7HylBaIJmh$Ech zWIP^cH&54-==_!Lj$4A0=`GL5gWbA{acm&RvT$uTZJArHp> zlI$m}v z?vlIM|Dv4Z9FK5xkMh7-yfEImPoBX!uEzd~^7e%K`8VVg7lk~;$wRU~seb&h+`}oJ z!#N(|=v(Tyr!+qLww#Xr9eExHkI4QaZqIk+9xic#lY#QaV)euC$su+gm1l5)Yn(r( zyt72(v!BQr_MVXEagP0^^q*AT!~Ropfy1B6O>-SJJJrv~F?L>(2jl$LvbRkA;tz5U zhkum|oc>pCE?2*N?TUr>voZEJk_R~2SoT&@Ki)*{VrMhC!0G04b7l4OUE~Zw3?4x`J$9On)pxj?o{R;PRzOV8jj`x$BuKERz zaK69tIUF4%yQ`^R<1S7QR-WVd5P5{lL*>w1r_N5rVe%|a4wvh(kB~cSsP7*sXSl>8 z937=RTvPr0Sb28rljIS0Pmx1&-8wskr^&N8c$4g`qr5y@ zp2qoG*b8N4RXQ$*oqZ*hu3G zoZ#rIEDzV%UPsSP)z_5waQUEI;_Mr8a})K0Z_>wUL4TY-B)2wIKYdtEaPcj9h~sa| z{$}cX-;w(`d_=CW^If^Ux%wgQ;b5S=z|r^Q<`(MLIKtugmCs`DG1+O+e_Wo%)e~}# zv!BVMv7eNKEj2zF$}>29O0IDBwA|WC{o)xp!RfQ|5PQ$b-qz|nmE6U_3v!ODm*f!+ z=jC7*!%|H%H18eiZ(c3xFp z;u<%1Qa^T9UD#iUusbEs;$V^N?5w`ukUO|sCTBQYE?2n1t=DOMva0eJXRbWJ@mjLC z3%3VHxL!y39L}4vyQ}){y7DwGaE`0>lsDSyI~&L$&Txjk4V8~@fy3Q2KJ}E(;%Z~r z*`4*-L=JF>XK;jvxZG5Ie-DlKHAoYWNlt;M2b2ti=yB+nNedR7r zaDl!3ls6A%eQ=C}{gn@Jg}p=QAE3O4z1PbnE^zBm*8f1|39j%EM+YhQ4pZMfl=)-l zFy@aV+&rBAamu?mI$q9kjB8wB{|JruPhfdC!*e*FR_-3Det4ohjiWcRJY1eCH$wG; zNDgsynmmKu)8z^mxOJ4qM`tKcaES-F#*L%Zcg|G5gI(Om9v)yHH;!R_$K!E09*@iM zc`Ua%iR$NxY_E%KC-+i$IQC_7>m=ndj&X_S zuz$Jw&dKVhSIE=Yd%v9F09QD|-WxPN!4Y<^)c9GP;(DB4rM&${mX8zc^py{AjNMbz zcdk}Gjcc6YlEm6Y>E2pOU@P)OT-? zdpOVJ5@)x_t<&j$PEK%sn>@tvtn8nmetf&!$Kf4viM?EIovD6!ubklM0eOIfugmV6 z)Q`R)Pmf*5InJJt8)vES{8SEcfoE`uhd3Xq@1L#l-qUgqr_aa*&al%}KgR*~o>PAY zN0n@^lWnKqMY;24ImCUOy{x<%=f9QPZ&Ba%+J@Bo*qDRtH8&v1EjybINw2eh5a4n)_XL*+*yuszKcA-$*!{d zUiDKP;&^xEGvj=3xyI2xa_4;-ALBj_1LY+S_LW-~s_*P4$GFCGI6pwSdy)G7L2?(z z9eIGGV`T4Q_48xp7zfAG$MFgDFQGpzcd>VpT;TE)xtY*EM~<=kF1f_P`{dT8>X(PSL?4$o%X2utMRwn> zes-7K#om|X0+(Nwy(`rZ?xv4ZoMZnU<)d+azZ_nr@%~rk*|EPSJALK(qw+Mao|flu z^o;CYt$vB8$9`6Mj_c>-#s^q_B}X`aL7v0qFJ$)`^_>^xE{WRvzOD z4{-e}=Kmqqzh?f}{S))Y;h*Kkht-e&B}X{@4}I)TthVs_;a#hKwMg#as3Dg)U0H6W ztp6%D|fC_KU_ne#@U*3hJ&@_(YU|19DY>e^L6A| zT;qA{uBSZsnEKf!^32$q$`y7tms=lKKiWc$vA?A}z`?e%_X+jA?c^@baE|@$m5*@b z%i$+AzSu#Y#TA~%>CVc78E(%m@(fOQm1`XADYrkRzPp#4U}tZ6fP?*H@6+l>IKtun z%I9#2o$J+44^Tdh;{)Yv?2bG??jIuiH?X|J> zjQa6$at}Mxa*6$u3 zRd&C?{Bak1pHp7o;x@T?yZX_r9AoEpd4Q8UWbY33ox9{7PQEA?KhTb{?&J#uiD#wYj6efY}Y}o)A<_4gBK58Ja}0wc=6!HgBMsJco+TQ#e)~m zqQwI&P(0Y7c<|!Eiw7^Bix$5#=Y8_$XWr+Vq&xSr2X^r9l`|Y*`*!sP`#8s4T;L(L zCg^$9JNRDQ#4he)4-av0pYEN6_u~LZIL2OI{TQd%zf<@2{o1?OeNZlNh#PmQcOTXs z;o=c_gzZ%J?pAL-CUeESNgUw`eA3IaX)}!jPDdh$ZD{_SWY2+c!v772XnpS%oXVb|U z_NSMtkE!=&kOS<@B=@mDvur)CKA2T*Vl$hZ;0PCGU)A1tLiah2a6G5>5f0~;-6z$D z^U7@;&o8IgEFf2(QtvM;o6?KQ18glJJ5Q_6mXupKSV~T@y|i3;hUYIM2c?&ldpKHN zE^xYnTp#G(SxFADx3WCM0j@r)KE_R);VzEqybrsp%8loApRXpzI9)>?m0nABpQm42 zZsTNKIm6Kga_t56Q9}-~y{SCJ8FpTz-%NW8`bs`WUxyiu*XjW1R1*d;eA4XM4yAHhap} zYwY{V0gm>g$Kio;<#qMRLG;)+at{Z1gbl8}q5I%q^#&)0$b-^{%FdhghtcEYa5=^9 z5pv}%^&W0ur>(t*%~7&7q(542;2d|${aEb$oBI>x2%D4Waf<8jsJBnn9^wcO zaEvSOst-?5@8cYIu{l+HUiPQSwfA(NV}s4<+WXkMQnue$pWr5TuF@Xk9FMTMTD$v! z?hD+;Cf1(f2wNZWKJ4KPhqx&3v3-r6XXUzgv4?#eVuMp0mG>X<{_-AY!vB4>h%KJ}ve|e9y@*WrEJ+`mo{h#uF>|q~=*x(dL<^5;8zr4p;d5??o z9^3!p{h#xG>|q~=*x(dL<^31Dzr4p;d5??o9^2RR{t@rT9`+Hf-A6dY&du5fIKlQeyzdt6OH3w^Sfl{dw$Q|atpin$Vs{5ak<~C-79pT z;SP=`XwR^FpIrSvz7Gf3^tJbJbiZ8S;sLq-gYM%8Kv z(O&sUeS&>#KdQZpL!4tL)n5CV_dOF#veIgrN-~rA))9(DGKKVj!WB&&^EB7De+TZGfu^eLS4|?oi z`yamNPwmap)+`hM{x8PyEb@2ChK81P@w{g6b z_6&!vT$@sTzPub_YejijdKKB7O1-tJ+{OjYO0TB9R#6|XE*l)IA@{Mprd*j?y}gzk zU>CnuPuAi=-yvP?qYjgxxfjoPpdvyPkV?nJizh#+U@Dor`X5VhT7xO4S9qU z>`kwGvyt{Lwl|h@oZ{LH^qXimIKl}oaAijI(WdHsY&PS4ILA3oHrHOab?~1C3X4ZXzL+ov>eTXyc%%a|GqrHXW?c@}v*qT*+)YR_d zcn7(MvmIq?Huc`W@L^mP#^9oN7&g%&asc3 zs`?DKu-8)G!{$G7fn)5>se6B4?I8~LlLy$|Uv}o=`wo!X*fMg4ZEVl2K0R1_3!6jb z6o-e&)p^txN67}q$IxT%So(R@+sD!4;AFXv)6-;YKEA&rH*k8k9O2?Td4&B)cIVf< z`(L?(eLTPst~lyr+`wshkG=Etyc}m2$h8G@?_VezoL?pn%KdV=x*+`(^f<$PY+b9} zUPyh=lUq2tNltKnyFA88BKr&LKEG4$;sOt`b(i+)BI-lj#08GAeYg6&>~U>T-Fx?F zH`uvX?&BESi>Y@fXm8;ZCpfrI`xwXf%YIGwDUNXTp!U4nACl{ftG6DJBWxa(N7#Ez z_Ws51d0g&b_X#;K{iIx9LVb=y96zOffbFMcdr9>!_Hm56<^Bxs!}dU~Ev5SihuC>m z`w%DCSz5jSoc0!uUXW9qU~3um;Y-?m9KS60aF)rItKNH6Zesg&IVt^yJjT|WvcIhE zt+(VJPH=(EPT}${)@Rx~IKUZpKG$BY>)!f84seM3 z*dA%OS5Y71CicG69^(X$aE5EE>fZfIy}_0>ny$=%Y^%LVpkkn0<$w`P<>Z14a_xU!-8 z0{b|zc^{5ul5=d&%=;R;k8yqOT^!6U z7ucCsZfv4^XFfT?_Wbgwv?F_)s!wqThYM)WaDl6v@qG(vZ(#@bN-wN^jO|5u-{!mz zcX7C=_5wSL$@MMNXE?<6Qrd^u#Z{l@FReYm-ZF9z$F5vpYdN{TrSARZAIX_e-*j5wR(G1+29BdO0TB9x{dk-H*vU@_N25YTidEPYs(GntRu%b z$739>tKHj9_wIUf2gi7b!}Ya0+pCXpfRhchCph0w9+!JV_M5toHj;bT-B>Pgj_W(9 z_czhr#s>FsgvYqR-j2G@Hr0IxhnvYcb~l&nJJI71n=P~taN*1LzttC8%FWVS$uYLJ zkw@6UwVidJVuQ17)%QzpCtJJFZ!b4XH{}GI9po`~ca*(db?^RL?qY8jxxiK+*8}wq zZsQcErFTpzo4sUHdT)7voqc3`5A`{2VtYUB33hQ& z?gwaZ?5X?oAUVc~kw-W>SoZc(A08riv3IDPWBV|_UbffA&avH6pB=Bgg`*SX1P7r!#_nmd{~x{&N4Pjc`>6CevbV4L{9L(%)AQsUCy`v= zPrdoC9AfW$d4Lma@6YeSK6Woq-^Dr3aeATl+5x)vF5-PS!$TZgtlc?Ky>*G)!UiWe z!UZmH{UF^ZUEYVIOXUH!FXMeieT>`KyIo#{RYHQ|w+RR}NR7-~fC7)85A!wvJG5 zuGikcIgYS(gZ2yuxO$}Sog1|W*y_nW9Ac}j-o8nD6UR8l-p$%a*xV|6N9jJoAr5ZW zp5gEgxpuVrG?7E>-X#yQb&u>Gqu#n#ZsP)Hr6*{w9jiXRPc}H{%YE$KFWbkd53rB( z$F#>ddR!i3`w7`Qo_pNE*^}CHoIEAhPoRHVj15;`k@I zzy+?Kq2B&QdxXtz@(72&%ifuM&!2J^r~k+W&L*90;@=*sSnkM;=*ce#3N zMLER&O7Z}wE6es3>fO5BD!qoBVh>wa@;z&6Z(wUJxr0Mb&T)jDt90+Lt-Xz{hMZvs z+gGa(H`3n15$<7cW9?6=VFU#oiu zN7%y|Hop4Wb^Jcu!rqqJQ=H)H|J27#?FJ_}!P!pQE7$WqJIet!yU2Z9V$Jjkm zZr-duY0EvF9wQexI8AQcqTW73jsyG9o)t7CE5#I+$J|}AosEVmTce2_kJk1aG1*p z&hZ#KpJ?~*(tZA!+{OOqa*k76yIZ~cg?58u+{gAvyLAu02RCqmBOH9Geuy*d+^c)< zEA1_u-~>BgYainXdlPhTeWSgD4bE_mtM{q*zf~XL6!)u={}SogcKfafDNB{iwb2pn8LSoZ~LGeo{Xyd+a=<`v?a( z#xb^k=6kV=YY*!_#s;T2!5J>F_lurae?<2IZsQE6xWLw<>aAaO?_q;GIL8_G$Lgyo z_rJ*jPH+!9ziTgWgzJxS|A+Pvn?L0N4*!zv$JH0OiG#nj$2h|y?ERzNeM0vMZez!q zed3?zQyk*Tle`c6IG99z7iT!f-lW=VPw76#2K$p~@8c9(Ppfw)*WSP}j<7w2_8|_j z^9*Dy*<6$#37Dxfk!x=LB0C|_cO|E9O4ugxbmX8oZ>!qXVGrGtUksKoZ=2nW>r7L-fXgy=|00PoXoC0Ej@=^eMNmSr`*KhLUMww z#pH3h*JS@y-A9YdJ)A8e7dTx`ZoH;GT}h5{u$nwB_tjua~(q~Abp;21~P-B9}wN7#9b@7qXw8^;^V8MZc&t3!I+#Qx^m6Kwmk z^|pF+*c>hA zrH_^C@2k&`mm?g7@(}wc$?ga0 z?vRUePvpi&>ixUuanz^B)&uk(t50!^!-uqwar~(4f1=(=F9 z9>@jupQHbb?|D(~VK(I;{r+n>tTi0}VQZeag& zIl>7Z;`A5o?w7g`ew9O9OghKJ|GplUo=mQNr9PTmHrSm)?&Dx8+4@?2Qjwe3om!5u zGow7l#+LnWbf4h}`!i`DmOFO8Rd3I#y@Smha*mxjW$!!n`NDD+dyCTJVllb?J-sVO z*jkPr+bhu*d_N9xu(I|c&av}<>WjMe7LHeu6CA86kIQ~F+5bWJ)*5n*13bd^TH5PB zs!!IIJEhl^bDV7?yFaN9H<3e}ZYF2gY#}>8t2bN92B%xegL2=R{ulNBwsIRgO*zBi z4sz{R_4Y1uh|R9@pmab#R`2d68yxK}r=|Cho!``3d&(`G>_d-({p9NJ>N6bRcz^Bv z(g(@fjt}?p*_SIPO*0+_kZg? z!5((n+~WwR*gA^)fB3!F!#NIdcC`8d_KuNlYbyQwOt^`iW3|UP!XxY*r`?-G_XY0a z_;~FFc21BRld6w!gzZrK2#466OucuK_6|;Qj_s4RJCmyqaDWpWWB(NOV_aZ=3cl}D z?LF+BCRD;Mz1i|3;pVQ#``s8-Gg}poE1c!-iO{ddk@Mz96u}G#pOu@~#a$fWAr5hMR^5Bg z>E2-bd3k^nY|p0Ne}VU5gS$AyL!7^;-kn|d#Y=LhbSCFGdsVK_q275-4srOpJjCgn zvRhT}z9n~XjB{)cwb$oVAL0n-c!<5X)jM;kk8ulI?`ThOiYs%gx8Bnp;QW2Lj|)7; z;Ro8id30~*au=sK$2oT9<$a&1H#q-7POG@@AA@zx{ zOnrz0T;LwIYU)SW#(=RC-94sXdu(LG%ztm^0+{VSSa#ngd zxwZt)UtVtEa0NNR&PwtaN2|#GlDf}Vm1CT)NsqI2=$BIOtuOa*fvu(ao(;7(vD=Un z9N{sJH|6=u=sw$==VNCJxxfb3UG8ca|$Fs<(ELeQe_h$Gd4C zVRv`gT}k)u9&!gKIK%#)+N&$`zP)6F4epow-rB9Y`V=>@zmN797kFH{rQKge_u0O3 z51Rvc{;GV>fpP-}IKn9&VRMjrZ#ABeyVy0_3mhEG^H*0NA0o#%I#eEG?=ab0Lw$<7 z*gsr*ft@4d`kLyUBjpg=ZFzvBqhx0-_4YAx8%M{=8IF&WYaZWoyc}XTl!rJxQFhl> z@0}!faDg)%oua+Aj(T&dY;b&<+%NajWqV!qNk?vB=L|W;@mX?pJ@wJKvcYa753r9b z>#Mi_tKG*gj7TR4A7PO+QG)veSgIKaj0+WXjjQ?|EOAHFTOu=@^u zxxYuhje74xdTi%%g58f~Yg_dNZs7Q1?J|^3Tke#eN6xS_pIqHpeSurpUO;<_%|i6MsP`6@ z1DxU>wieND?W*3zO&s9_r?|l3qPlMcx;Kl-5q4|x5ZjB(&Ti@x+`h9`` zCFK^5mXlNLtw6tr`e0?*V1G4vfaCRLXHWIn267t*8_OAXx0Gvpsn2n{^w#t^+JSy= z_0CRm8y7gm)-KvB`|$m{$^lMxlY7|gB^TJh-oMY=GxwfDB47ag+vi20mr^wa))u*S*0S-==6YO^6 zak-x%`v>UWIaBW86c^=wmiGFAybnj%I#2rud*{pEK|KEgxr2)fg%Qd6kx=aqS zeYrfq&K0tKu=?Oyxrw9eu|s{fFiHq3ZKT

    v#%Oe~- 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


    q8#-10knQ9NnXgf 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

    #QC|mQz9fmR{J9&) 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
    )33U5(OP$lOx_UNhg(#N}{FeZ|q3 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

    _m$UXWWV~nFG^2EO!yXU!^M2rm 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ΜscH8TY7D$XPi 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%0A(7!S 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 K6r6O5~hvk@0&VLCwi+VtA%nv9`yXEvM(y7j3E> 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�WadD$UP$v}58&2zwt}VT=ak&vxTt_49h#~C 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%0Au&cmSGOwP3N~qlvEU) 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

    BJQx9tWxQY%-R?4 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 z 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

    b`GbId(=R?$tLU!TWoxn#aX26L0JMPw5P*KtZd% zk>gE_$UdKZzgUFWQ&MoCrNZldfc0f~<{y-Nv~P^DA%?y3E5zHb{W13ZS--4oabojY z_XKqxV||(b!$=6B=KKerrtz-&*Zv^!GW~6Msr*J6)<5C3e)YNGH9thWOz&HLpkdlh z8$i`Jd5(Df3(M-$e6p%Bl-9kduk~T#W&SwJjKDc>Cu|%;)VTK_CtezlB7YkLIP3GN zHDUhjJx`lY%+3vhbUyhVq*iOy-uXvaPG)addlk*1a}8*K=vw?b@fM7KIv(&Lr{ghq zyv(0%@4i5vaib1J7`ugD?EePq%f{dMTtc>4_BAEN@`u9yYkiFPx&5d9bUZz?EA*Bi zn+1Vny{Yub*zs~bqH-smp7}FP?CO1(z2%!-1}6T@_Q%=Y1#$p;H{>I99dwHN9B;w6 z=*ld`jMVVPpJ08NyfQw3P-J}-0i?hB7aebF97LQqFj=mVv2O?ka8nh3*8UXB$>xpG z39@Gsx-5L!drRKU&YvqX1RVxbmY4CF^#{zw{($9bbSQp{c-gwAzK@I&$Ooc(&+)J+ zQ0WQdPsv034hvKEUhlVAUpD{De-9N#_dM-=enYGuQCvs=(+lyleu6;ka!j*5C5N*v z4+fW5UZziMeoDjdF7F53fT(`7erGA3_;q)AKSrK&$!Vy5OdLP6gN$Zk9s7pB-NgMA zVoS|+GL*(+_8GP(n+L{zlEaF#1ETPzze~IY?a-}53dsbX1CFe z`CW{^&^Tu*4Mu%E#i@$|AF<9CMbZ1OEHB%qvw4n~5Kd_DI6u)Qeu|6hlRwG3I0NX< z5|X^hr?Vpd^!`YD#&)LbFxt}$T4#Bf2mB22y0=VC+aUtYoPL5b^o6E&%}JUmUn9; z?Psw=_Osf3Yk9W>mgUAU&qk6xMpQPmNTRKNEtK_ZdY?dW@oBuBE$$w9ZUs|RJo8w|E z59wXD$&1*Zt?^)5@71S=gkb$wv9s01@Uhi6OEXW;_|^Q%S_kYZPgdnhkMx>s zPpT)6ZlFDokx6?nKO_%|4dP|?lJ!HR++E(EbV;O?6^!0hdTH+EEocWOC)<$}f?un9 zdWT=m_N4lp{m{7VE~(b2eQt-ba=Gt&c@#84WEz21K*^Jn9l*};%CK-IdaxsQ0+Jdw|k<}-Mp zet*31M?1uCzwEiyuX#0b{0036o!9}WIxwX8vDad~*?YD&K3d=0THXyA$?@Sb$-gz# zZ!Pb3l4`#8U(Rw_2s6DFT8CJSbeu)C1UarOVF1QIR?U}x>g8>d?=O?w#psR1D{kZuPXEhA`A8y%2#&M` zOpvF4Ha8p$`ZG1?PcVY10Y)DIRp&PWW{D4L)R9#=58Kf7KmN!bycSoE_SKbfAnZyPgA%XEVx5jJb^mK!F>2Gd0I7CEYfFZY-IRq6zu5%-AgvcPVaff6Pz;NLa z(mSSr@~l#xOuSqxr!wJ~N=Iq5Ay|j0;b9}lfUd~ASuZ*C2Qz0~KMo}lxV$JNzo+ZCpl#?6HdPy1&nQ zw##=HobQI0i8p(tQ6cPhUR@V_N08^_;wHOz_lBtqK8@6{%#j+*1gK&rg2A!`BOGZV zcwWQE)TYLqV7=Ok^_Uv0M=)3qVCZQ;Rjd}lm?{K=5ebGQB^ZoIFc^_wa4o@WXAZ7q zW`c)8j`qLo>*256DZgs}yVYcQ+5U=|Yl$5fddf_i-`#G#la|;i-Q1T$-~USQv^d3 z0t~(<1QJ3MN)Hx)ll>k0d^CIYxvc;1CAo_6*Ri}#{eBW#?v{0G=MxhtCGUf zVVe9Lgmg6mb2Y))VoZbqr~gq#DO(Fj`PwX9dR3U;~~v9g5hr<7~@DV?m!|KQ#64P_@A-=U##)$y_w}@_p#U* z%3!tchm6kLK=l5gRYi>FUAFKQy?H^+Q#&vnsEc-#_R_pf?ZV1YXx^lFONem?QCxCz5ku#SBr z7AVDQy?}Vv+rO#fEoi6KW>z2CX(qb**LorA%i?)0Z`#f+c%2s!Z|wTt>_(15<96vK zD+FN$$^B6CFCkvGUv9Q1XyIxi^v!S&^AGFm5R*&6fd(8^rHZ7oPA2-Mbpy-E`e|}c zYZ$$QYr_%r=`@MA;QS9Zx;g%p>sJ2x)&}v?_}I9QGv2esiEac3xOk2Di&jbej1Md> z1!qQ-Uvg^d`LlRW3pde1q<$7$qpM$?@M?eeM%JI*vu5;4gUS@+AgUjdpR#om@w0pO z4PS2+=HG~9xOM;>xCtYx_`S)^tS4>fiH&^^HOi|eIh)xr^=tUom_L0tx%cl1)` zPut6Tn`kTW{CMc={pAU;Uddvw8;~UAJ?+nGP1s^zS&nkxB71)EnK7l?dRta5vIUc27Dr|0#m-$PHI zCHH-Y-{_$ic-8Q_1kLPE`2C}-KiluWv{s%w-8henpUkQ>a54V(62Do$r*p7Y4jyP+ z&^?_1A@?E761orWbA0>J$IZr7^ci~kvi^@fz2gYhVUvgJ<<(P-!HW&t+}KBuC)n8n z$&2|{R27+6!>nV#1xK5KdU_+}gBn4eeH%Cn~% zci!yd1Q1c5PWIq~=_gqJGP=(^eOdj*MdD}sBIg?ArIU@3_?+NH5Q2Q-Y*mc@koe2$ zAA9<;`lm{NdAwsnT7td$@J___)cfB($nuxf-}Cfk^$$FKQulA4ZjwzlgOE)6-#K#a z`n#UKtp2{I&u+0&ga4jxlxI#hPKf^q(q*3Y|NB^fUcUIFza(ArZs_TmUNid^#`Gr6 zU_n1%;N^eneLw5X-iI*zB<@MD%L#SJ$r5O|pqSzkyIT}*WjX14Y>eBk{0s-maEb-Xkgr*-TYzp zYgXs02iMAHPdDz_aK0kAiMS7rtK`!Br-?uHfi#2@8~aA<m$&e&dEG5!Mam(8n*r{{bp{+M}svsbJC;_mYNeT}ns zS#vDt0bmRB`pylel0Vdr`FFqe+VZ8x^t>J7@0O?c>iecPV*5chzo?V0sOo&f;EgPI z{-Ub={;tF$yS??dmv?xuM1|LX3-QospU>oHuH9K3*KS5~wX^>N&k^sf#LMm{ve#3@ zo%W5jqH&n)i|M_@TXn8Laq``_dH(wP-(IoP`A7TKp)vc`I?}#jqw#W6{Cr6Lp5DiD zvvs}2B?u?JjWdKdzJFVISg4xL7T)mf#LN6aCaUD0v2W1J>JuLh-a)){U9|q*%1_XK zC)2ZdON*mm0F4!v_(4XeUJDk^d>Cq$i~?dAs`jJ$KS;b$-EV2C@7%sRuc48Yd+!jX2zdJREUY-Lu4-B=bAs1JA->QVbyaB_LL%2>Iii1WNNr2xFUK zm;2S4Kg)WG`aU3D@SLd{gH(%s)BULnh_wzzN(}(FDcik1LY56ChZ3aDEFqLL04X;B zIspgh_9waCJV!dD``3EcX#KJ`9S<2*=eYpF9a6mm*8fG8 zlk$U~n*eF(eW~VG>%GjsN?wVdMxMV@msjTNf-yt?mU{pXSLbYIzr=d7^Va6tJgfP2 zb9s+OS)bu|nZBR+v*bRmqZ^O|d@j#V4na^R=RwB5;&}Bq`-A0XzWqt=7mr_G{=Vl==RMb<^s8x{WVf_G!t&F5R&+nmgCd}Dn!k)_ zvd#X~zWIM9{&xG*`?c%KKiy`2^{4YumY=?JcS1)AE=y7~svmcPd55AuA0z&@`}5@W z<)2<>{?2b+U-{$f%-{O>^_4&L{Fy#B>l&6hgm5AU2A{aT^5@r?zjyKa%AamCzvNQq zlPo`dAMEIcP3-EFA!wVxYD!^13mO>=dXyL^~;ve3=yWYKdglPPF|P4``Ec!ZFy+PxePvgLy#d?Fw~^gY5FI+Zh(D~`OI+~AlAYjf zSWvMC;+yH0I(||=-^+|UL4w^kH}DProPWy*(lhyo)vjLC%T4sN-bHL2)c7Ds3-cqF zKl76KS=^0HS-Qs@LGz>aV&>29>(xB#El5AQv2Ry-^62h;WpV8P1pom5|1D>22>~y4 zb8;_iZ)0I>FK2Hrb8=%Za&>NWX>DaMa&>NWX>DaKXJle7aCrb)Oi4lj00000C&4Uu z0kmCxT$EMzKMx=vFFL}IR9ci&Xo&byp^>73FNHM;8I^5}%p*(;GtVZES00WxH%^Wt-blS?R9n@AEzPJkLDCGxggomp?c&_kQm= z=brn1@40uzU?wr;$6ocPZ~ZDQ4!4y z1p zD&-T=;6QVPsQB@!6e5S8sCd!LH1ZV0Qv`&7mxs0vJ*9*WYHD^7jf5YL5dj<6sso(1?R=Xq#^z#cwMqO6p~xu8HVf8LrdlRZ2E<@Rl)U}hELts@ z>ktYKXa2XQnidH7Of$8QjxpC@4^cBrWZ0*f?c-4PX@-5W6D%fbwwS1yP2}t$RDD`} z%j6WQNFYkrLm^s>xCW@35}N0vGEG(S#i%RS&vViv2}CIuZpxx|jc5=N4MEJ3O<9zb zi2S9XVRT8VD-rkU!7OqoN(<@JqAesl1#JMSxT$O%sWP}%C@g9=mG={+sU##3aZ@=V zNt#NJ;CBc`IU1^lhc>|<;+7tSf&(Z;?(vCw} z6e&_!Tq6_)G|T6~0a89&@c~`grvs#XmI{8EP^2@<=eT6BM_0C7qT7W6W|mJmVE=zrEt`{^U1&5d^nmv5c`0;vvKadT zj@<%{oq35|9FH+#4$1~?>@h|JQ;>D^Q^n(zdZj|q`kq82`m6~OXhgy;%_vD#lbAVHV|he3MbBeS*sP8llMeBZx%CS4p4|iFB5X_esXr8yTNBQ0j1AQooF^ zLQ>B70pXc16#@}v#@`qy8P7ZOa z>!F42I^C?n!Rg9kQj^oedW2r(y7|jAqV$L!j+~7VvWKhiap`I-eV!}(JL%?N@w}?< zgZ;qL^9+s-r_VD(8Bd?*%1TaG5>Z;9k^ZP*ydZM6A;3>>X|K;tBXT+h5T!-*rXani zeKTVqE7KI5=l0P~X7_D664e?gM105*2<|X~>7V@)_c7+A450c96cX>}2qI^3vIs_K zTLSl*lDd0d2NhSoH}7%&fY1W=hq41|QI7|C}jRcbnk13q?A!>N+ukbJg7;(Y-rQi~}h8^j^e zxk3Rm4RQ@&QjV@PRgQhJ<=AG?+**zk&QR*k7Ye?n+7ClptioQ!2bAMyhT5fqFBgh* zrrP;gs3xd>vn1Lj6fjfmnSe<-c8c0x!saN)OS7aL`_gRX*el%j2}L=6j)W-3Tfvpf zF)v-2Vn3o#j(-48l%p%XUpan-L|l#?la)cX3Wdg|L55{ZIZnj~7{rq;<+xt(okEe$ zG{`;KhCwz;^cJCjnFe_lFfmA*D4(tou|ayX#UNejR)eHmOhkPaFwdJ@Q&lc%ghI?o z17(3$ErHfZOdoiyH^3QfTzMJFfP)Mj3Y?-tZH7&Ub_`C<(80)l zmvD0!qURW*DbpspI8*5fFpCaOQ`v778Y4O)f!0W?=vv{HYKRUQqC4!Odn{lUy+^q3 z6&fSDPXeuxBKp5sV9jv{$(Zi+oTIX;$>xn3$*UI!b?QzyBb-WiIf*0`>0ak)z+MFU z>DLLEp?sV}l;#Qeb$Tn|>5DO0QcTX$7c-xin9s3Cn0zXHdK1UI$T9aGq2^K>60nTh zcZ4~Y+K^yf$!*}N!my!44#l5n11nRMYs{!N@MM9USU#tFBYG1(n()DyX|y&M)0wtG zB%yC}=$pBi%?y@6%yB+r5qU?-$`8xT{RzCx#;;6cjGX7u|?5BJHr2nt0?v#aw-pfwUk<*x2c#WoqcQe6V<77F`Zfo-p3OdKL-sm!ksir8~u zJq$Sen9YB&&*zGS%w}7BuHqcqe9Z=Sdm@_fX~&pNkDJ{}4sAI`HM?6A(d@PzV>Y{6 z6S>*R66V&#MKjYZOPE^|c^#m(1aIX!N=`?XEYa`afWBi4bC+c)bKhZ@dzMQn>=GJd z?n()?M#9|q`!5Vs<@46*rfJG*ltjZs=oiBDSmHNlr%}VPv6gv=E#uEKLrqIQ%rV`0 z%4TcXW@j8{+H7r%&DJWLnf=sSwwW7n-br1{Rw8E*W>cLR>&&IIo+Y&(kItYI053g} zm{O5KuOBa66+MxNUhNBp^f3f|T^CEu837b^agxvoY^G#Of5ux|-HE)l#a&T1>vh)% ziAVp|ov8Y^X!rFy&f15}7Gi$SVy5L2IXf^6ps#wBGqf6;{6xG%-0M^Ye?JNyn-24( zrq&8Y!J}-sDLGC+5pzf7$WaNgTg@HSDJMurwGJQ9QGI@bbW|IKSC>%ml#UA1nxL@i zh7M@!JF8Sx*d-Krv#s|^pfwT-;_tgFpWYgD`#o|ZVpO%>iWixbjk=${PF!1&Mn69h$0WRu@DAJj4<}mM;X7P*XourSQ}O@R zB%mr1^7`vdRoiM~ROa!H>&w$wTwgc<1ETD^@^@62r?a@iVCV0~B=jW4w)u@o+>JO? z4sJ|BH?q%~gBz19J;{wp812Z}fyo5+cv<+$q*&oAlk%|X%K!*pnZ&}?d>w~j30Sry zkXk>FI!VT*;v@QvOP`&Dfdk`G`A<~7gF;ay%yH?70vVUy#s`c`|0>13jGpEn$#&Lm7fSK&MNOg~FPxA<3l=k6;^ z-AS)sl14>^MCs~`%rgViG8XU^b33J|e;n;in%bH|1!IWP429^+B%ayg_-rlL@{5bj zioQ0cqOawO{!>J&o}Fl|wW6<;ir$6!u$Nv*Lf3x#Sd0ckv9;%}cez86Fl}QkHjg!? zk~}uNnl$CgRO$oTm21SD<@I}Lds0y_m2$@6CpU@8#hLKKFj=a|d3Q;~gC>PSL1r7lplu0SYyj7l`Rn-j9> z;?sx*-Jg(6Po4(++|pbVH@`o=t~8ehmk?z&mSTCqyOY}*6!RTI!MqLsl3(>_QIc21 z779hgR)~JjpGA6!(G_$KCysg*QJ7!9Q6gPI-|&9@*nTA9u3)?HJRlTp)$9uLCQ4Uu zAwHlhxMHGo1v>@5ODNKrUBQzRVFmPKyCu3$C}3t+@D^Z1Y~Jmcsyyx$iacJ2jKIA6 zClY1dm4M9;82Ow@NHwuMm-Y#|uu-K(s_T*Jtnys?)K=b+4{xPp)JOYVZwEmP#D9s z^$n$B>qqecw(cnvTjvYDP$<%wwoX0+>|yI-i7pWem}%>gfPHVb>(g83VA5dZy|dM@ z0hVxDdWf9Ao{>V8XAq??q8xNT*Whzt;X<5w9D#tR&mbDyLX@>+23!NK42>l%>!k~E z&hp(;p`bey)=hCeiw&{ZK-C6&{X|18?1rwIk!DO^hN7{5U*Xz(9f}q<`|HMebb;EB z`Hwt>kS@u}rO4~|=&jQhM|9G(Az>nP`9tc6QYWWShL?6~s6GACgcpbFBEAa0dx1~) zAf0kML0!lQ=@A-^>X^~u#`wUWDKSRoY`-_+b^E+abW{Jbp(-CnyVm_JL`$Gd|HQ#i zpiU2m&k07n0e{#`*fu&9&sPJ8e7x%=M#N8jcCxX@`(;kM>hgYm)K~hP_&Hu4g7KCf}dEy zy-AG0JppbQhK*duDm}C{iSY00S2}?(%Ett?=NVw`ZBm}eCo0ZUbrOeoS?@soLA&ya z=2s96`YfO5D(Jw-T0!D$&VqcvK)whhB}Ntp^`avEvZ5HZr@QMK^h&Q^cey>L9v!AW z*p1N!2Z^+oxl_B$_~ZzY#znjv+`of)fGd#6uIxA?o6Ob$wq+G5lre+I0nYeRj4uZB z>KUk;rsfw-yf{XA;cxKmiNpV+iWF)EOYp~+HTYui?*jjUF+8mXsY3HXZ82@^#IKk&L# zDU*WkNJCLo(C3YyC&V}DL_OXRaaS>9q1UIYj~QONn|lUH=W~Z6RX%sP0coZ8&G6C+ z!B|EMZ7n{S(HuQg&poy$93g`L<&bcwPCf;KkucHE9?l@La`+EzQKYv< zLhiZs0^iT?WUbQ+?!217)n-b(vnoH3)T2!#TnFtUpQzg(~L5nXjkCRxRV zBTdM`z3-&OP9gr&9H6r+DmKfrY`ZE~8Czl|JpU=nf>AE6FC&X)mzxZ0V;Q3>D!pWM zCQpKjNh`(R^TTow6*oQLU+ArG4(X;e*RGiCq&K+36|HJsK(}(Yw`&GbdR>EF*H{q> zh3Qspa8nwMovBu0VXDB_rTA(T0VW<{szfQI5HSF9{QAvcp zu?+caz?Zs(^+aXA4Q0>@d~FJNnteJ^* zS^>j0CeCv%M(^1{79)Q zJr5erT^d@>;B$!vbIZ9)L(?ILj+Uz3rJ)&&KbOd1ZPwad+^)|*7n}bDW_7+>Lw&yd zT;vN*=Vc>R8QlxZ445*Qeuk(YnZXvf&+BnVbkz}=S?c@PmbHgCYx|+R%FRQZo8fbb za#n~Xwn?&dZhQ1F=V0nw6ohph`rmiUs%HqBdUfoM(Jvjweq6&y>6uG}uKF=n7yIqS zq&>!+9p&UnvNoY;{GDw4n+}7LGj+cnaz`)#8v2!e8>?q?SfAkzN9Y+A`q*5e^h?75 z|6JE}wcetqIN~D}G2Q3Y{Sk@T%rVDQ5v4aoBEc#>)S`zZ?rDyjhq(GcOsd~-%q>-_ zU*E(=c?sWSvs2roWj~NXe@Boi)=gZjgQ|bv*aqFEh1_*IZmQJjVbcV)hYVBjvLxN7 zx9C2~#vFHCH7dQQRegIvzJ5LG)kK5CL|HuE%H9Sd@Od0*S?D{-**+3H)c(lh z=l#$cXZFvAw(Z*KJZqH2RI~#xLI=M8Jn2tIL5cI{q3XFK4MZa?%8mq5lpP5iIeVe3 z?)OkJvj6%#c$H%3+)HB-FyMUj1PBP}^?GZNP64|`=i?X(9tsoi_3!u^|e&()IBdWBF}9QRXrf6h}wlvRcOxp=#D|7qKlc_eQWhfOn;B`LvTE=RDjo~UB- zfpmJhhRA`bUnPzLr~=c!KO>CS=wZ?-KD{-SGA_X2h7$omX~sA2q){=#+7O1_hnZh| zltyb2)T@H{;>#?|TDuThhQk9N%|89DG#Y&&Dh2{t=*+7JrIYJI<-lLTp# z(|iC%&nI%`;mE>Em!RTZ!vTDlK()Ucnod0k=tF?lzc4@x&O9}fQZH6UTmU1E#uvEB zT>9;KDdfVpNRa&7p3I;yzDVgVMB(0pLtaczI>y6MnXb6~eRw2y;B>+3p(}^InMTiE zjA`E~IJ=;$T>ng?ULVtNh~^wBMpW|1qleQ5N!ckB9NZ9|{NTvpl$)mb7Yaq}0**!6{B#vt zEEKT;j=f^ZPzp+Dt5C#-p}?I>hSC+Rz`8|4X{kgn6KcY`77e8ihP^s!xEZ~|0*kOL zXkvt}vc$F^mVQX9kzRx6@X>Z-w3k|k%C+HV z`4zX5SqKbH!r`sAo_?*Jd~7;3A&gE(gMwc46wl_KMra#CaiIUScF)P_G@uS^9)x+D zf-<)$K$xpkTvdF!pSskx2Rj4Qxq~s^!K+KV`w1-5+DcWCJj+FLRvlM1{3U-eYB&`S zQTCW16qR}t>b~RT;p7K61+dOiRYXr4QO_VM`J$1-$s;Kngn|QLl>FK#qFGsrf2&Z$ zc7e&DlZjG2MA-!=6BT-(&<`o+CU>JgquI}UBUqe<%@WQVsw5jFt!n>PF4P-6mO)`F z7yL#K$`Q6g{eFe(_YQ=)a5@xT?2oux=?~g_|4bu?PUP%Cum?LbuWR%EmPX?d=$Z^$ zFSwN6(Dn{Wr!6|NMU-;ek;AELvNGWt$o*qS4yS+XMA=UrIh`1_gd2i(S2I9}R?`ln=3rgn_XIIgR_Q$Q9)1C{ z{ozQcxk>j&y#D$*UXRD8FLH+tv!F}E<$*f0Xw`1`|5L1LJF=)?6s*85IlRNGX+!)( zXi@)9dY)b2MAmwoU}>?JhM`Znz7Q<`GnM{7me90cdChZk6FPjgxyjwAR|eqD<8I=L z?Dg0An(>?fyrzcet=4b6TTC|&$)q91L;}mrA89#cvocU$|NZsFuSdpUL!qcD;*Kqy5Al2R@F7=P42lBRn8FjpkNW*@z9pzpZ@JHNUzaAO`r%WKZ%=!fvjKV(6$Rc(Y(6k{wqH`Y`Nc3Ge zS97>wMkwHiKm&|947OyyGm+1|WJG;sR2lzsWgY%UEmcwi(6V zc))prr>cfdi^qkr1n?jX-cd7JDOzohL=q)X>N~{@Zm)T~p%hm*{D;&PQj<-T@`b$Z z?bVcu8Scng;#uDqQ^T#WGfE6}&B^tzcP!iAK{6(6m0lCs1}ZgA@Z1?c3rHxw8;GKX z;TWP9nTj<+v9WRr@j%deq)ALn+5i>s>jn8_0`pylL&w_`_sr02tcgU{P!GyxJBE&ZMU8xTZOy!N4 z8Qdzfi*dOQ0XSTzKVYNpbXZ9X^B=uC%H~d;PtOkkT{+49&@1hD9mq_q#6qDi~g_2ZshTR}yIqQ_)VT9X^4*jr~ zw>(91BnE7<)y`XrMJXrGe8rFPP_Qd*}tHPh-N`@i!Hkb^C}H!mmEG;+_6mt$@soP@WroPa3nut@NHa+)3N;u{?pS2m zhdw*cI|UWKmX%F44y1z$pEz}+oh=`1;gUNy^=UCq;4|kmBUPUG6+Lc)_;m6{9@(g% z?r*d9?4%ASbqrx59L%r{JB2hW3HM)(J$6rdWPeZ)N^j}q{aVy)VVrJPKB1Tchj<54 z@Ou4wDyajg9gCL)#)_mUqr5j6+uNrRsiE##MrZ0IoEuUp^jrxK=XBd&$eNKNFcF!? zhqQF2scJ~RgY-xdhd54CA*5(L?9>r|0$R6f3~gf|U*~$DTBCPyy0pQT!I`USErnk# z3W2*Vm@w}h;Pi7s#6&O)v|!VbgsFSaLiX6FIrsZVnpAW`G>X6|MD29POex5D%HVhh zs^NJG-egAO&tWi8e^E|`YfDg;=<$XTw=R#d`aL0HueG9_yO&%tYD-4ixh8`yi9+ru z>POskR{3fL9WX!j_`_}WxZ0!C1wPZZy0nJCM#%0T+gIU8HK~DAPpiAqfN-293Gn>}mS6-X%`*HnE1uj+eGN?$%2tpX zh~YMEvh`Dx(|Kg=)ktQEM;Shfh}FwOwUZ&7s~9+bc8l7saZ4YVZrvk|ev`=bN0m3d z)J3*~w(t;4qp<>P4(qc16I_&W#+MfIy_-J%i3C&kf)!FuLX3eLRHS2|w!!QX(>cm~ z#&}bHWpmylVxj11Q^qXPYw7oWsCKL<89h&obcYqARb*v_meo5OQ9fDJuxgvIMSe6#saHJ`dU$Bf*L~)$c!KbDZ2!uDB_m-n?r_91i?5hti`Z(t(Y+V% z<@INf@aXv+Hj4@gk{9%UITS2es3?!2}-)&ihWr-_3*p5qCm^1UanCvFs+e7#g;CZLNaAeZ` zTc0k5>g-u*oYQcp~rc(aTLj70vi0=lyk(dF)J={ah9`N54K{n&B2)M^zN;uiwgY7Jo7U(GcM@%=7vNELoVs`tP0GWb9e|&aQ%BI| zRa;e)NaM7LWD&u?DWrXf4Ji(E*>75y(+*i=!W(|YO$_n*Y8a|!x*=NssQs)9m6z89K}%J_@_D zER>^OA|htmejLdZ>f&iGNy?~Klt#HEIGyFl#B#-?2|4NL$NSV^%24F1v*hAs?C_LJ zZQZerYp7d1J_l0!lpn$pR7h!!h1|qRM>^>WknVmHl~%YKC16i`ESnHYLp6_918u(( zS|$J=e2@rk2eC~Fhk(m98G~ZFqI78@@qy0-*`_GO`GnMS#-3=F{`i}p03ctNt=@7l zDUs3NtM<~tH5jzPfr|yX*wr%T*Ai6x*peC^(;vqK3HLV=5dIY`3wuJtW>u_#o3AwS z#+iHREA>%2w{&Ygj8eqtO#X#x=RMgI$D^EiLqGH{;jN?^a8{}Cs=p8K5ye{yoRD7I1|4#(Dqjo9Tg;Cqx&BPi2PLNy%SN9gb2t zaL@zeCyKIOHQ?3q-6b^*aos2^FvulqSaCxQPNfCo=|G%z&pnst-ibKY9qLbDcDdPp zK3ayC|2T>D$W6O3`vUu<%DV`0&j`joGPAxLBGY%V#8YFxz1N~~Nk93=O!k|$ANiuG zm$Dt(X;~BRY2tZhUHD~o%uB)5sDtB&ZmW2Vx_sdi7Vvg`jEpP`K{`nAs_oF$X`T95 zPhl|p)NE6*A>dot!tL9X?7wj0+`!jD%T}_FaMM(H!?@cDCJd3}62U@@Y;Hv$vf$zz zc-I6K@o^lK9GYOQZKmaRjjcanFkC1^M~l6~Rw0Wlc*DKT!>l3uxF|dO&BGlbU?iC< zoIn+0)<|uM9(N_9oHF^7mZrbt9?N2cxNQvH!5?&|_K|+D&HLhJc#>MXUg@~y{ zmTe-4U!%a|j0p=)#l+84X@KLs`-Z-GAe(kH|&%Dc<9~Z-a_<8lf-WWwHJuPMye4&NY*0g`5etTktQ$ z>5}b8dc;OJ-ud2~>Hg8kY@UdJuqx>p+}ZhCT;LP9-eGa^^Ba2iYC@tWp{G)U8hWUL zd6$izV@R`6=c~%Q{TaI8TChB3CgR~;^;|b6{Xhi)6N-(588sc%$JTjS0LO3Eh`jqi zOmA_F;KsJMGTF{9-S>j^YjTq4mG#zDv&?hGwF0)h34p(eL8xjoUwIBtl|u zjxpR2of~sKNu4SVqWfvR+&6CSQz&kRJ}9r@q+A$4yqlR`o9h&?0QnzrAh&$0(FF?- zkjBwBx-w8l#!3Y5a12B^8kTx{BE#cEy9jcgp@f&?qZFLzMJ=#>qwBBn78w@Es5dU* z1Dqa)H~kQsLlX$4QUlnnL{ITh@^k?`Pq;yVIYNn1(JXz}* zR$s^LA!1vll^;$?#IKRy6Lp_cpC`L?Tn(x4((g~%PeS$yP-xrw^o|%73OP#@o1ZOG ztUSOUW@>_9vqsJNTqxS$YXF;dQK+WjHL1E@2Q1m6+;iu77iEbJZib>}eMDaBXF1bkZid$y_7kl_yfLMYD8&^~tY<}jEC zQ=^>UA$q{gKZ%uQ)kZMWRw{zoF<~vnJ~e@Ek>NQzuf7F?+vze0pMz3|caiPC=r!Y7 zU^r;_mr1zK94_?G#eG@9B{v)^(`~elREaJhb+?I4Vw(Hri+O0tV6tE zqXbL77H#Q(T(81mV0GD;f9h=MAj4bNF{)qav$`&a!CYyHD#i8FtrGu6mP@B zyNodD)k;As=*$DbZk%jMlV0SdH30Lf{zV?@s`kjxv@K(4=s*j8P; z5)W|zdvD_1eF3bRpQj&N zqGs8780YfCJSU}c^O!-l8 z3NUt2vJ?za^ZY#HHpa0SL#v+ik+bZ~+Q`JS_TI43Q8$p*h^uY1!Ta+^+H>s`pJy26PwMB@(l(|Sa*=~48YA7 z_C387GFw2%vUk~B*d>bP0@D+X&8zsllJbDEo%8&++hz~sA78;H&HTW*i zttuo!9n}j77x;AoHheb4a0xbd$#o*lG_-ySRGc+7f|ifK1UqG&PT!^6@<>pnwG0eP zKTHxzwW)zNE6rsqar$*2V!d_)-&W|6{`{zi!Z}6YkTV{dxhXa2ZNa45_A8c|DaZa= z&*#5$1%bZ%Q6uz0W{zM(uH;wJbjt&wy??q@kk&HT0+>fnOY4ulc|f zsRBSQ5hUhyCo zr7P9rg(q8~@I6EgZPq9!d&SMUzDO*44fG>h0(x(n^yaJ~V8a-iKd_J%iY&0!kOc{d zsy=G!In@vFVhx%9DJ40vmao$V&rk%7d#8R5&;jPtUIOhIg_V>Vp_eq~x z{$FiL@@LzI)HSk8Gw2D13X6HH0OxNVm5YWB!Y~`L_$c$x0~p#v6?8Y=ED~;z*96f% z4s+Zhi>k^LvT7^^=>AEAgS#GO{zImT6Ki6azGqZ-Gtigd)uy|WPky(3Ph7?IeYQMnI%BrgPGW{Yj%D0b`;J7$sUixQmd6v1pdP^^)s=TW5Ii+tZq%!% zu812+{H^RmY!DF(iLVTqE-T)iji%62wCCx=tke;eiTRE>bzW3XqcDipb?a3s6e_Vf zH2eZ@{q$*ZTBoAUBfpmw|LaWCl(t(XiNwc{MF1sxI)m{uJT8VL&$G8vM`#Wh!y|F@UuoYQ^GXaN&rL zV)?xLtRe1!0-vZ#{LynCUuuo(D{uV8%hxM-bs9XmHEK0?_Q^5Ms3QUtG*ML3q&96V zM8M$_8dR*2WD%l_O!kHO|9A4 z*C8{tN??s1uJm^iQ++;+r0ywF&V(p>&#Xh_A;bGRF~Kos$A(Oig}}_tj+g2GMXLQ` zmb?dS;yYbLDHQ9wO=4JA;UNr_hf6;5DCQ|ZN-c<3MbQ5qB3A2O%>>hE*`rga55Nvv zf-#i@|Ne+Sjac9RRVg-Nm%{!h-;Z)#GX9L|Xe;xqnr|>3wHLZL{3L zCs`+ePS88xGDE}R0K1KIZ4mUEZvTif7?*mU$FE>$D&hr(jbevI(iRur4EX}t)QVhB zc5}xW&HCP^;>)&KWZ(~b79qUP*gsN<+&_t?ScFeMyJuCJv2GM1Bk8@kv#`zm-tXG< zA!HEJk7sEON{79b?&{VYjrG8wfNnn^e&^VTp}hOS z{j_SMF<%2J%AKMuLj2!i z<$SIFMH5*dD&ylu=yY=I!!ga~BmQ?HI*N0$H?l-3JF!_2+}|V5*=ENyorcy&W*;X- z*omD2pYAaj!VuETiq(V(Min3(k$Bi}0{+#4ld!+%MhrC+Wp?6kf3ZSI%T#O7!6uguL$^F4lb zb&B@n-@ZLioOBQEQheOpmO=gV{B5gN7TjFpT+KsxT!kbn)PE@;W{+pTSL%iTr9vXO zCfmP8WFW4XAoc}k{x6wi?&lw>C`|Hd?2Ex_^UO;n_f079f&B)b78zXW&X`%)+v%(K z^_g77A>Bs7QE~8fN?Y$y;SmUv(b2d)Ui3$b@lnv$wPZs535d<=_+Il&*&qnxrtq^j z3P#3Ny+D#EpYSe{1lWoaseh)QZ)trY!m4CaNIFTRKd4e?luU4SFqkir!m5y<8fd&3 zA1(~p#{-`BZ}Nwb;WrQydE2e$0endMJ3OHpcpKUOw>z9IIO9u|DkTKPoMoAV6jyLK zqslvDsBP8l=?0e!(Pha>n|9kI|QL%C?QSqpI1TNH^}4Wywu4k>|KKHG^fHZ zB)FVR{e5>{pdW(yZz za`)D_30%%xir~;NyRKka3K)}nN23TG~C(pvQDNq4EgUPiq5Gkh)YM4buMpy zqN@(zDYX4mC_E-kMyb-W#b5XR15f{P+H}(maotzJhosI=>d=G1#I<$DE-z~gkw^*eF(rrV|BR?NEA@TqRc zsqa0#yVyDlp~Dzbhu7e;Cy}h6i@(Q`E@AI4B|y*tT`Qj`OZ%GbV#j3gVNhQek-Jtc!rCle4q@ePcr2wpBT$5Ut3Pn~Z z%tzd>wCx1le4mf&2H~umqzL`WY17$VUPtO)_=@V4=nmukVh1;m@-?GQxm!LR>lihn z!t;udK{bgkHupG`%Qjz#L$?nm<|c6!>YISAc_b_*lSgwTfx>fozdRRg2-fHd=(_ap zqYZR4O|u$oL?0Ym#<~!L^cCAZ=Q3ZwQXg2RNwhaIdNI8zSO_wW{HG1gXHylx%lru~6;L@$y@3ks(Qka&Q2R35d6(lgJE8kwk``@-tD_tYY1*Oa~faKFo`L;0-p6Gjwwi< zlYvnZrx5CDicl?9?R+SS1LF zA;>F{$6KXc+QZsFOd}FTzQh_?5DL&AdWTC1eQ=vNC_7bKm5pC98I8puV&&o$~3i~|Od4)H{U#5YM2Gm8@!kfbk3xBraN06=wc|9gp;#&P!sP$M$@%&BK^ zrL|9DVy8AZ{=FB1lY)O9e;d1={XM&Wcym}t=%+R)jhJRD0yHvy3vN-PqftJ^qW!HI zJuday(Wdh3>SjNcJ_$L3w5gY=H1|D}Sv9(;%9$&jlpN7^rV>I{>%)K>_jQ_l(O7fv z788$S^5l`?hX9Ej3B8-St}w=q3zlP!W_duU!9t;jTeCM3NQ~Mo<}QWV!yKL6H%~pj zg*u2~?&XMYQr%K{z~)sD{0Arg^<-UmgTG&Mcb-3BblqP3)om%xukzm!j(grvN%6Jnt3h|@aXP-sJoC6DB_VW<)~_EP zBefcC6Y72-NNl8v(|erIjy5R`QwTNgBcaEN`IUv8YooU9z_%?nIIw#{9rVYfub#+Z z-rRCc5u2>!8CE_e1iQTV?=y7Q9dyveo-G%S$rGZAJ}M34wSw^%e<*JXZ@7@rvt!Rn zwcV;A%L^5t=J_UFs4_8JpRoFHpy4yImrmTn&L0wteVHH%ZVDkD3cij^nyGu5XVW(% zR5iq^qxV#_&Vm@`E09NI>F10C#lvGdbn$KNU++%D1FPX;HH&q%)O`82O3>!=JIgIv za>XsXZ1gC1((Bg5Ac#=@>9F%%;>kY|ZJLj$gMXRdmVXYSIseP@88u^4`z*fGj-Rs^ zd*;r6XsW!uq`vQL*l*p-<{hf*mzegh3ZNcp+R(8MIxvK7k<^EDbhfB`h&Zs9u(C7P z&8O-GHwIm<{`GXTynO^MtB2e+-Q!cQpf6MGvJ;vOd`ao=DZ;OfCPZFBrTG0!fN}E^ z&z8Brbs1nS|3hUiYAD2M(X|YqfFVa5XdXbM17182mf<&*qA$q^d1YJvg+@7g!^=MZ zBh)T(L56IRtbh^YtO-PT%C8s$Y+IK`wJKKl!E}38M7y5M4nEET9o|Z{Z^Pd_!+$(b z6kQRyj~Lbfv3iT~@Bl3X{X1Mvd}?Yup_6Z47PoCp@p)>>J^J zYyK{T?QQaiPqc8UcG$x0M}UY;#+JDkfjogJW@38g_=Kj+=}QD#Hpxc6@XD=F0MqcY zKoh`gQUQV(v%-nej*wx}JPoLk)3EoJogn)#m=Tq50(4%*6%pW4(HKEcHwHlk<&#{SA2p@m3uFQlT_K*0fQ=gnB`6rK|eb0OBOMt1Z z0pNx8+4}AfJVnTP9u0k0GjyZ=3?&wdi2YM>4ERCWn`8Ut^#^;8ID_a4a3FbJvMk}Q z+K^yrZqK~)?X5Jw))y%z!R!`=5fO+f21bp&>8B)*WQj=}6k0*YK`~p#&yi^S7yUc+{V!+tB4z0?Id%PN82c{|AM`*D`36MnFh{!PqW z`vD7hjr~2D9mkER)Hh*ZRkC*dmWqVtY=EizqUY&E%)rD3un~UrP67W@pDe3}xf;53 zlns&`-@6&6pA)Ea`WDP3rPP~AxayhSst~q^e-~Y_T$e`yKy^TS^WjZJ9Ppq!sIE88 ztZG8M0EW?KUzUxjF z;+EgPBFn|qeT{Rihxn#gZKXcj0jmzR?f?Q^rzVg_v=$0z`mK6}ovR-Xq?_jumcc&k zkIT-s+XDYh2f{%o82ClMmd*l>VGavV6NRNr(Xu1-SaKdWf~9B} zj7>swbW&V?Xin#lqBbm{Q_gA?ea;8MOE=D><7mbIrn%xL5&X=~=JubLx+Db^+KBlB zxklkOzOLylsHhk-Kf#8eRXLA~UdqfQNLwi_fOX9jtDgj7dXImI%9e^R2Q-e@Hl{dv zSPd_)0MOf7&y6l6%trZ;7|lGl9#$Q;@hvQ=7Pa9Q25znIyFTBxg@03#Ni}O*X%&e%TPx;5W6MWTzE(RY zN4SMSCnSs6=SjHZiqW4B*~p7Q&+B%UPTxtt)-U0=4we2A{vr<<74z>{FmYa@;iXN} zE}@>8w=|7gQCCf#-5;iXAx~U?o%DH1&}!WzZ=BYfahucLX5*%4_>dMov0}3p-1O^d zt3~BG+PP$Z-9PxzH`{B{C+WF}>}S)y-)u$|-y5p0uZ4Q9xN&O^>! z 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

    Wpp1zb{<6m z+=&VmWm;fIkYDL*OAPVy=ro;TsI?3DiVnMs>ZO7g8w=8Rf^f-7aiKNu)^M5T*s>t- zWWcTnK(Sy^{ZKlYu~V8{uC4a!AN9NHvx#ZY%uL`_V4YU8jgRkG)3@QA3^pzbUM|I? z9KxrP;AYveV^-E6GZ#mYk=UyO)lyo883PkB7qc{-$9m0eu45(-3}`1@HOt2LwC}{^ zi|8>8On_{6Dw$u!DMY% zQKPNnd&V+&U%0eiLGWTwU2^Yf`=&Gb$1m&h`ZtXIAA&e`dN$7ep=~{Unp5)bJjfaNh`B##Uv& zJh;vAf6UPPdAzqzHd!jx=&qfnOx_ z$dDgCJJ>uVlvHv_(`efwl$<}fvi4Lglg%w}YGpi|>;{7xb~pGU8a)RV5f-Ubqg$Hw zQ0{7vm7n*UE?lQu7>Q!@Q|E7fjrC%8Ia@_tI`FqfO zWeB*>CGfq14Rc)`(hVV$@&-)`BDYhJQMmOO+%<$es@)ucq72%O;j^c$AMLf|LZ6x| zdf1D|*T{cnm#`DHuXHvYgpYEmm3hdw%hjrxjy#{fa?_+)wptd*;n(a*-}SvlV8}FL zC{&wSnl8i{6a!@%aqLqnOi`(;)KH&PxWG0Q1S3dT+qIQHtcr-(?sqGNXohFztj@dJ z&Wv%fS6q@$u$cj}37|1Wrqqc|mt@4w!_rcY_6eX5`C@*m-68gVi?wT35m8>v#}V== zw2!9N?5@Jkv!=tJUGIvkuP0t@Uz^n?LMQG|*g?mZud!*_686e63iXopAEA02ys3#9 zNrY#h1Wae{NCnhGj<*$@zq)R69w@0~gbNn7E7ZfU@3HsEu`b7&G~1oPn6WHBKq@Nx z46Umk_et)}L9#}XSCPK+n3V3Wrt)=3Al85xNDegnn7^bnWGNhb?Y0d3J%!)%Ewz2G8hijW}Xwgvvx^+Zc@UM6mq zQVNev|SlJ{CvB6C^CtnCZ~~3ncmS1X7LfYd@CzVq$x)Ay13P_ zbBP~hUp2nB4Oy`$+?7ZGca z{20L=PV(a3k_eT3r0NTGsL0dyM`=Epz)t>Ud-V)%a5v9jJT{_PanQ_MxZAlJt@FZ@ zXItKFZTHW0gURU1DUYBKR3tO=;s$_RCp#5gy{eU!=L$nrNVDB?gU7I8Sy}Iy8G~2- zZ%{}6E|-g)lGRAQhA9>4i3#oc!-C;fOgU~u?N4}p#7BFcZAU^>-N8uF~pe>0xkT2S|)ln#-l*j5%uLs?5N7| zZcHlo6p_YB5z>E^Qk?eBF-$R)I6N`&p;Iq@#B1@ICxQnSMy2QQB<&|0RLZzAC-;Z4 z;*LwVC?)61Q;tg|Ik;)tgo_JyavW~0%57->t;kAtwuRe0aj5}PduN(k?s2j%8`~St zC9KxoW5*D%TVmP?*hneZIJs)n7tmd>JD0$6^nd6M!*QAEGdO*!5o3Vsnt_}5#(Fw` z@$$j28=?9Qb9QrwJF#*y=Yajm=b)4+C(sF?U1O{|Q-^XwWwAxP*6M?*jiy0KUR_@G zcOliIjz#fkUfzK1L7wE-P{n`xG{@x{p$qD^zf>SmxOhy0z#YClTLuz<7|-G3`k!jS zO^N~D=Z?5J8;aAMraa{i<*lzC)=dkQvXU;Zb4rbRBhGV23WV5i2NTq)Jo7(mLM;ut zFQb4+{wk~3MI1je8|VOoeg~yme_h4PR=;XpMgT8;CCH+>a&yD41udy>KU3-=rI*?Z zIH|0$!^x@as1S zgNeY%dxXShtA$2SCR(AydbcEsSkUJJDBp_o%t*s4R*Lu=ab~38nN!NKCEGP)u>%Gp zVv0oKFN?mTz|v(yzG6aSu{ZMql*w(FAces!BS5w z{kXehg01}C*k2^&JF4-kxIkr1IV~prb6C?ACA3cW89JDhNxdR#r}h+mD?QAgo9^q@ zvt!AaDy@#Uv7WNZCIykq8U@xB#Kac`8^EnVDpU&v6_Ls`Xw1+ZL|V=@t3%ALZG$t%1R@XbyzZ&)iV~BR$RcdI^`iX=2CpK%zmgmM*kGdAk5A5 zd^Aq3=Ak4iSChcmuOh^|LM$wCvgnKnOE;L{!l(&Lr{KfTJ33TNq46Xhh@kcwT%4Kg zPjfhD{|_+uwDBSH>RPEBrcx=0$b@=>R6Am1``Ea-v}ICjZ|>n-xAdLJ#WT6!v!2BS zLjovyw8V4=Jn1-BV^4s+C^)7>Y!E!e+4g5kG$EiH+PHUdh3>J}%L7mT$qRN--Whgt zdBFg)`9G-CC(s_f{}S$x=sDt_9n z4O^#20U^5U<}3c)oBW~|{=RpKg8J_S5s?hpI}=#KQNqn>P3EmbL0hn2lgM1wDf>&2 zQ>S^iGnhglqiHLIW9;`-tDR)76MvCx$f)(#qi&}$3nt12k0Hf>L}jS9M0AN$2iih- ziR9lml4etjHj#=i&`JSeAg1pE7P%~|e(2+HHqjM-X}(5XkNhEa5gKp3^-taPTQHt* zAW6M}g+A~Oo3c>{@oZD!(rLX0aeJ0#u8#biEJ~OWp7J`%tD~Y~R*~O_tpd)}4|y|^ z@T)Mw^ebvc^eB2s0kBFU9vX3ahnz!?7Hx3)*bdl(+w}q zXYZpo&@yI|UUxoV~4y+NjXzmiN2pb`ds~zDy>RaI1Cus3TQH&tH zfKP+Wu$Atw=tK)dbl8aZ$Wt+%Fz8rLi|hkQxy6V)*YBGtk@5nkxI8Zn;+@AY*f z3J;^O&qm8=Nc}J+T^{AA5j(M3g=%(KV5tR!{7Ii{xXPalQ}R`)6Etqb!kpPjPWXfT zx$OyXz>kOg2V!rG2R}vq>ApdMIlnTS4_`W{*2-M4vT~+or6p`|Tl<^W4Z8N5s%P9Y z?#89rJpD`{DPH-CVAM5LuSOV?DsLrYlDMPM_#So$Hlw&~d z5r-w-B;Gcn3L8nO^fmc9@ROfbc)U9nfbK-Kns7=|tkUxar99ze@}`{qBcWDaS{~5} zHGbUA_HChnBVn0P^GCw6ZRKM8P?z<1>$z7tD8_^w2R&^n@L1}AvW+!5hpr_sAz-rh zkqR`qyXBhq?#r6oK5Uv!Xpf$K> zCDu#HC!K1lH5j-g;eH*l%QnlsN|=*2f$*1gF%myp?Ag0=u|jJJ&zB)6&DI#p+U3Zs z`tCz4>e??xhIW8hLFKfSTCMTwDb>;usgjHCrqq|ey?L_4J-do%kt*uy2^1q(e3b67 zXl_*}v}n=@pL5N|rkq>RiYrL*PF*VT`pYEj|GgVR{v`vrcS2=|(__L3yU%Jmm zc{z*Bq(?sLHmxivK3<@xL`|e#&b0kX@+&&e4hp<;49mPXz%3>V{fI#M3Fsfr5D{cV zcphGs^iuu=%GP>3CPel^lC>syF zzMxOp!a=tYiuAlb*Xp#TS4g$+Xx%VHV&6y(Ad07@7zv<{f51aU;IS96IE(p{YRnde zWkP(7x|jLTf0MoPAy-t&*o&YNM_2<`@ z*BLr*JaIqWGtSPwp;8&OfpY89qeuZ^Zv29y^&;!d(mb-NUtVaIhbs*8dNVv5x%=oo}WwjO7qo{rsHtli>*ULY_X8K*#XRVkK*a70m_~5MR}0> z&KM>|wp6+~qX%bpsqf6M_JO`}mtFYUrhgpO^B>B;g1~S$XS}jtbp6Um$}X;tLctiO zjYu=!f=g)({mOZ&y{p7Xi$-u+BUM_ukNVd9#^SMd+L~(t}rIMQl{E|0tgqNNL?wz^{`-r8!>yIeO?4gOyN~G}WAJ(8U%%;xyzZ*5Z@?eanR=Ny`Nxtd1Kj)MD1Al#Ux&P9#fX;%%MM zoq!C>XLPc?K8gP%tfeoo5i90n7HcR_5xnT%qjR`3R;Fj!??Th*DuWB%nZ8wc)Ln5< zpBAp!wALQsboUs)^9oI!Tf>eE)`!EAagye)rcxdi zwh6`ggD50y3OyO8)i?5 zbye+Nc{D3aZ71r#gAGf4Pb#DoS$+CFVoyB^+gyWAi!;SFVL|6VmZ1RCt5kuW%N6xW zyxplV>-M0YF9gCg@U$YP{cDVRxkch@ri=$Ug>p-mMOLK0!BP*A8i?n;m&bx5r$mg! z6Rj`~yWqk~&*@-Wv~uWl#Pz@|hY`bOBnA_l@D5pv!13eR1kdUn_!Tl+A!atJ??f%j z!sM2fmM5%1={@KBc(8WOji8?Mc|7DOB(3y|rc#NGQH}YsqzgGrkg`gkp$c>}DGEE3 zdYbzoX@_VJdl(bZaSwxG{4X8tI{3BX=7b(wWjcg4R4eA#jBD66ROWq%Af`@ATPgSQ z5}QHmgjkz#CwWC^=zFzUKIdrr=z_qZp{-XSQq#2d9UNFd)STf&oC3Nipc=)jL{W${ zD2Ju{DWKN!EQRaT}+au5m zBG!^;KLa^~-l|;sEvhn^qGfJ(3oy$1RmMrPtrjG9$~J7tv#-0Y7$rEf@zz7E-X-aq zek8HC>_Js;e<=S@4W25i{G2y?#^Fc6AOXhH!Gk^lhVMR)S|Aw zWBY1kWmXN|#(f1%S=ytBlr*oLKyJunc0M~}OL@-+$;S>mTwNZpnYKyNd(7)Bm57f# zepvAyFLql~5$1icD^J=T%{}rR!&eLCk`aUoNw&cLmUp8g=4LaLnz0Vq(M-q4o1MNP zM{eEr?nCd(_wF69O_lftZ*~i3;9N?YN?mb+eJ(!#>%6Mm#_#`5AuUCB;q9y{`rE zN3OzOSOk%v)`>2*(sLRHQvD+C{*ekPdanvoUw2}e>ysY1N&1tbLEU^K6S~69P{T+2 zhBSzqyaP`{J<+W~{d(r5T8qKPgdGuzp6iYVg?Pw{>yCd_#wHqn+g7_%NsYVL4rLVA zjSU4BPeD-cN|B*JR2PM9Vg0(L72waUjd`Vk{nAG`jB9p&AyVJ#e&L z877SWmTbX=b5R3OdMThhJY4od4wD7Ho%IvxjAywrhEE~(QWc` z1AKZ$*3g|b?cT1W5j!NlbD{0PS@6ro95mj^4Aw5T!qWa*Wumc#oDM6@hqPMrC~jvK1$yilY5KiAvc!!8g2D{ zT;2cb?Q|sxpJ;ZEFEoZ`=fKaSRt1^s5D*PBw{H89R-Q|#zA^yT`Hl?qkol|HFnMoJ z*FHjWXU%!+6p@mi?l?Tlv0gOU3iVsy5DNA=v-#_h)4g-a!YqmhI;c85&CfQlKRLT5Otpwtgpg(_BPf9!N5mw^9S`!5&^JjT%muHo>;X` zwqrp>Y{R!4g;z92mIe>(4~f4p3<8A|30k!NgE$6oyw*{;KlTHu5ae)-#S8vL0|?rY zJgv3jA2gQxx;1)CqvLxIU2ZYqNRnDl2nEKGW@U^O^0%h7MlAPyyS7XkO9aCco1ejD zyn-yr4R^;c*>TO2DMq-Q%o&E#V5AQmxpkb5$~9ab8lSDC6ekSVpG`BlbudeD&6nQ7 zcw!>d0I_IHIx@<;xI*t4#da|}TtjIy){r*GJhM8P*(EeJLhWgb2yRO}l&Z zscUEAt_^=*-uXTHo<(#UIS}Gi^Vo&+ku|9Ag88?@>fsce*gp(7T^-Pr_-g6Zw#(G* zDR{iuwH1a@?r$Y({-(G_#9U zjj~P<1l%{?FYsY`B(7bGNnY5>ztijgxUhKY4*7^JXa=tVB!N9^TLuAaDXl>~pq@2?85)|| zVX3&wk+RvE2qr34y!GU>bWUSL{myb>XuW3<@~Bei$<$wOTlo>PvFy4+MzO}vk1DxQ zyP5f$IS2=(rY^_cD|K-)a0we_xf{B_G8=R10bCQB(lo7sPIErL=r$r%fBzQ1W)oY- zmxQ8$nVyT9y-c^hd%*-nc#+R4>7#&z8zdC_ierRv#cnq4g5(N*GlvNT_mDi}L&LZ( zs^n;5UKx}h7)9i1v@}gKp>r@uCDoKYlZ4k$R047FDuu(5TZ7Nt4md!SdL9)~QHoTNk0Tfb*WG3D=NRB``WOU62 zdxO2{IO990ndQ z8VnW{U!B5JsQ8W;q^9KW-*k#T#lfnrC7x*0FkdJx@|;Z3iGi+@2Je3GWV20s<7f*5 zosvkVbQ}!tfFj<*23NVkrh{M|{riiJwI2$)PR@@W>=ZhkCu@FJ-6XokxNv{nNwS_s z6evdXRBQDz2f_xO=#Z!J(Y=fQ!jn)Eq31K^A95OpKi-hxKNAW2-@a~Rl$enUJx@8L z{A`%`&Nas4^n(O>E$UN>UyuW~M{8RwI!q`@&mBGVXWx)di}7C>)zcjK%~1H93YX^L zpun|c!E}b5!(eft8f!Laop&W8bvM|SkSNDik<)11YAx`He~mR1w9aM}21F;fs97)w zW`uW$7ViOz!#mg#ojWEWEXt1E;ghuBtx-mIKiKvq{p%VAfB9{&2o2lPCG3A%$ujfU z9`&pBdV|w7x=tq$s+S!Bs$DJmE7*u>(U8P}{X1QBHz%|X8mYlzKrLemM1d}@4VLrY z;tBese!3b=cLfuxYuOx$M)kvBkruWEm8@re3pIsKq2+$Xb?FM#62A=IL9Sc0C8AS@ z7^W923h&T3k=PUunQb9oN+hAw(GIxI_3xJ;U3~Pd2wW-M(&L(qrB*cy>5aHypAqVm)9|*cOf`x7O<*>+bz$Ty&k14F=oyw)WtP zr7`xe@UDMF{ZD0JTjaYXSG;%l9aQU~X) z3ZO==xhA*iRJ|t0)UJL}EW@7Ke(VjU4l`b9I{^C%+{f<(tmR*p43bIb1bc<_vzvQM}mb80d&wl=COzwT5XYAB?UikX%%~dI!h2mN? z(UF~UTkfJ+!B6O-SyIs8vYFG4wWXLi1Is&q@WbLtI+3Ako$7N670u%f{d?yK(AQY) zueA>0^mF^SQ)Y^&U!W;ns1-&gYI#6 zF{;lT+2(X)(@G`oRA!SedGb3w*zLf&miF++Y_?v-aMB%hx5>~}qoMk zRw3P*3GEkuRR4u~?VdUOxI7?ou74Ap2tLYizUez2^&HpU<9i*x!LeT`$k2JJ8P~3y zqB=XETEBE$e{JVCVoWi8c07J89oMFxT?En!nr;|r@*glz3Y1r8bBt;hLo}Nm(PkSv z_&zS3x76zv8&ueopOZ5O26~o;y&?Pai}Ld=@<3hUQA>_TR0VZhO=}+warQV3r{IP1 zZ;==$KuP6zrlG8`4Nuzag{MwV@zO}YybhlSVu|j3kOG_t!C^z;S>^Bk&#+E&QOaDl zTbR!c7ev=Ic9}+YjC16HFwiCCp78>@IEYcz!{n zkWx2=;Jw~50acjm(><9;?vqYs!FT`5>(ut1*GXCX8x6U%8+bk%VI416=!&UCj5Cn8 zSsUSl(zFc;EUz^LCDP>*Nf^KV?y*XH&&|#@{%6mwBRE~pa;U^3ckp?_F9JS*JC?ln z)sAJp7^(QuIdbHiY~%N|PzwQ3W)C*{VlifRhGO$PgKWBn?;nQ}Ic+$JFAW9@e6}nj z0o?OO+3pg|FFCcTBE3IrQuikjDVb-DMqy_Mj9e$M#)Bs{W&1b^6zC$$-a8EJe2I`J z6GQ?ukwPrPoy?_ubR&g));VQPDl9Tey3{`9b-Dgf)W0*A@wpSp?UEQTcKOdnuwv6% z3{8rz7xQUxvObt@8wpK)>>K$}7Y-Eo1sy&}ousGn6fTACHn`TO+%|NYDMI&_wk#~}?(XgccXxLuSa5fDcXx;25Zs;M?m>flaKHP0_eak&&&*EG zbZ=Kx_c_&7iQ6Gyr_MlxEx}dFY3zlUm8_(@;r?ICVaLRX?sG;(~$dI%#KKgaR6qMr%$#Nl7ThT*N2!buAW~Nwq-d2S z1~twOd7sRy!YF|4R3y7uroeXh-V0~S3l^x+5m^uH7U7E@pblb$52gP#WVWhKvetqC zs4GC(<$c1e3M|~c*?rx`{LgkuFk^IOgVZxTxV{={gUz~V2E9o| zV|AO|LRsK$v_8dC4Ivh+mQ}@Aoj%Fh0}i-8F-bq>$IrFpca01X3>dCgR}Hc@7=SKA zPmT78ZvD-me$1EbsYO@e|8VIpBA@9)*){VEJgW{vXy7UrNGt0z=oc9fb=B!G2ogjG z8Zd+YJJ5`JoRUea(b2%FBby?^--8jA>7gv*91+wEL_i(7Q3h84BDlVokw*tw zABX#g>82!rRe#9TVI;Te)Sb|Ji zK$T-vJ-@pGAlM)Vb(c;ou=;HKR1#lz=f!dtDKNHWl7I!D#0*R=8c!Zd^4 ztF5s*=kN>(rp^`EZh-}_Rg_^vkK*fz0jPu5gwetRcNdtVj*$=0rqjP;SS1s7v=a%e zo{`;)-Z^MIk4`hy;sw`dN4?q81h&W5xn9Cuvby)!cg%RpZAfYX+wBA7+M~Pm>%j-= z7-1Zjbtv5pg21$1=`yP2+liX=kwJ~nLfPHul5I!pbyr_AD+qUpF)%>g?IZ;KOA>)L zlbcLhCpKoQ7(R@|P(ZDBz6Ih(FRA~kd=YLq#{{-NlJzg&7+B*QynI*Ju*BV(6ZA!z z-8LS38?yg3O|X5jm^mcpqjhw1ls7shve$LAV!dJ=Clswwt98y-0$L{X#(6NRzu&QaT6d7k{%OdDN#W@Zb%;GTq=@0^mI3+rT-PqMMLeZJu}5T3@A81Cx6r4` zke}0g8dq3HH#JiG=OEjeGrrp56?KiP#ITV6d?UaY(RT6+&c!o^V`)kU@+`YJnUYeI zZUFCS&fi<a=743rY`vn3p(=fSHEtzW>R0LF1LCOkKBnCsre^ojon-6=9Y(zH zjC`Xozj7Qqy4q^+KURAx;je`sCP^GE>eK_)-8j^MZx29&*%*7}I`*d@qs6V{z|zKd zR+(U2W7Yx(H2KX0Mk*r~F^18nDC1XOQ&!60-;J46Igsq>_1Czom)~CBmF4tT&0^Z^ z-?7d+KZsTtA%o9*h5Oy8{pf;(m4Hykw!N#CH2=a(o69o6BX0vfDnwQG%PJqUV!sqn z3#BCs-HD_E_v2GS6i%crzIxNxw%N^R4) zt@yz^8UN6AQf7Ef34sCclwS3(ti3@nY!A%IxlNhcM)1^EC_Upv#H1#oC0v|(UhCwGpoQ(|}-M)L?eF1^7h zi~G^WcY-jFRAvKEppN!w)mZ3IOu0S`IJbVY5devD?tPkF9gMaUGdKpb|Dh@c5sT)Q zNzRJ5aOi?LNVRqA{ipw)F0c}M0t0!VQFc3R6F6%19{V*8g9JPrJu&PeZi+R_=@V&2 z#pj&zaB@qn?xsXg$mf+*KPmXjX7W3vP%`zfqxb#WOnLkdEVFS z?;(JokjyJ%Gs38!f}a}U!Mc4iJ39YjDhjS%bMEu3Vea#k$mcxlMG6Z9-|-O#fXUE^ zBVZe-0PBz;v@JxwSUg}3NODbC^8&D^mUjM=T+$dBKC;Yj3EJ{i#*(^Ie@lYb-Ih%E zk#YV0F&trHnmqRN4MZhoG^Rkhw2j!h0~Z%8StWwAtXTWrfG&QaBb7#ot3y~Wnx)2) zlEFoAXpkJ z{7JQR3}z$*L{-Lsji`X6INI$$U=Uqyo>KG7)V4->`0J|C6cvS_1s4Dppx~tL0i+3E za-~fU_@?QrDOLRNJFxO81C{02QDKkn-r231@@Oj>Y?TZ+rP4w!-}9{oQ42F-=sZ{~ z0@B5q&jOJElSpS>g_QO;hX*dY!uJPrF|z8q7V;^>{GF3oKwK?hk%#%8<(syL#-Hgz z!NznVJY9HfO#ezag{BIn#ntJEUXhSdQCn_Z2+?&$h*@Vg6|j;tvV}xXk;yS%$*1c4 z9IROmLxJ5OlG9gWMd&XMIKw%*n_s&Fj+y^FRKDTZ^FH)tOvagb<;Lr#v=B!Pit$Hb z5mo=0e;(~mVb!0HFpnt4e(KbNwu76+Ok>qtw|JTdCP6_qN~X*uu}dA)NZyU8PIHN! zql4IZDw`=UlumQ-ah2DQZf+kSCtLV9`Lw%o{YG_-yG}Id%WC|hd+IdBxESTv6xp-N zj;k&1lVtAL&#{`;y+qE=6V3YDF?xd6u0w*18yT(b9qkVd(k^- z3`cKjkc*cbF)~V!gYgYzy`*Fr7U#ql&$KQF0!K#& z5XIY+L#5h8NlqTIz&k&}``6aE1P5c|zM`cd1?Dv=^bHOME%qgYB29lPK75mHOG#y~ zM}Q^<)L0(Mmi@|ilC_w4PZ~`x<;Fd}=2f%xf(PjN^Qqa&#NV$iJTl-Oe}x4yrl2+) z5(3}fA9SorKQw9d32i51?PxUCJBpN3y=h0m1`OCy3ZH?1=#98x13SD94A|vZo(Nl; z4giWK|C}_9=rX@%HzF`v07iMZfU&j=8C-MAy;V+y0fSnPz8oTW|DZWcRKknq2Pc+P zi)0`fB7i<$GSF1R43z$3LL1eb)*T|aSOon)`+9FrhEalAs2vD4@(o6L$@WYY1Ae5B zQ9@L$DrP_-Y>@b}u^0s=-Wwhey@OI{wJCqLZ#1nRU20`E0=D@}5h95uz=QYiT|&uvJI8YIXHcV)V3aXPg&Uzk zj&oQ{5|y2-$5iKy>5Ri>Rg9s<<8rKoFhqJmU?ZeJ8W8PDbneE4p@D?rEUJ^mlh24^ z$C8+9{|XZoX?mX_(q|`+!N0E`6&zqCpL@5^VbQ+1nu*z-(Xv#c6YTtWDk53D>xcK_ z2zwcJlzyn{d+{oO@w6i<7@d+nhM{=3ijflTv!P6U0GcC{hTEv06l7x2@F%{|4M~Bm zNVGEu9ta1YDt3Q3Yh%g%m*by{(-4CK?7Ce#-u&i_IF~~ElT_7{OV!T=aKvB;l1NA$ zzku;toWNE$LZUBSGj*CN8bVQxOlVutcRt2}%qM;Hvlj(_nfEt+^uee+*v_LY(5)^O z&_-%inOQUJYrouW-Tj?vUAcFBqal5B`}dr6yqGWC6uTQ6M#c6;o0lC#-Rj`4ddO~G zSB`|WWrYP=cJ z{1kL9(r77{T5b_me&7SD+xaF{db5N7jPH`JhLbQ=C^<7oH>DyO?Wo0u1+lJVj*YP{ z*d)S9AiSRgG&(u4yD%g~S(j9O;bEei`CvfaH^l+aMdM!Il0lTS@1EHI(x|IH@T3C+Nmg0K4U7UX5;AJ=?nim*3|?lFTo zZN*(CD@5v(^31>AGz-APy9%!dcK3v-=WC@vWv+VDljMX8#1r=l3%8~4#@J)KNkUF* zkm=8A-@QQ$4yp0NhxNsey*~&S(uf5XTVq?Z{D$#-u47VGcXI4B3}EE({hW^%FY~~y z;9Vq19=B0pC#yg1k|uulW|v%>?aCDNG-(!;Gt;op`ZGdBV`;)ZY8KUv^`kPXJNXRf zi+SuzTprn@jGXM>L`Kc(IN3k%`f71Q-#v+d%pTGL@A)LHsz7Xr^4z-bgaHL89y%U> zg;1`r_Uk-a?994wztt?+TluENb!l={qj=OVDPu}ko~yB1pEC)owhtwD6A8kZvZPOR1q)vw0;vq&L z@OIXT&}sWr3*P^J8EfaoKV&uoc8f&JUFXRmdyMwAgM;7t zs*FnRRqLrvG=D`a2l>W-E6KQ_C&$K;Xw zPwzQ%w5U#}ERXf)Ia^b|W7Fq=nFz1eI!p%fnJSHF0$q_+>&}w;_qiS4+jywieH zzI#dRX_4BL`6bjNc_2%c9SRYjmfqMj zYzz(+^WZFdR{S@(axbA68Sdqi_wEsbGwRIz4@N4A%nXL3*c`}|Nsk^5tt4Z^#!SU8 ztSR)b*2Bt0gjIYjc5WS($rMH^6&44bDG1u&^(<3XuV5V;R(N|<`3C@&8bc-`*4=Ng zfm}Wm1P_9rz4OPf=w-b~$f>W<$g+M9u(E!XD^E*Wf+%Mo6zI%`8T?_HMdPg6hVG$^ zdS6SxHRUSC?W=4$^&649`z#;wXGNF)s zRHWE0N^A2$c&-%z0E#Hsib@_Fj{{wjO7&1+&!1uEEz0N{4`$ty zxHPy7lNc__E!;?h4pNWoXULDy8m=N_K7+DdB;0uC5XCpfGVQ)wK zdD7*~V+`U@cF!^x^@}_c3?M1)Wc!q8^oGe`8|^-DlFH;8V{vG?eh2t7xfbVES_agvE#JLgDy zvfP_ys}v;v{}hZP=XeU&4(se8T%O&<1_*Hm{qhNfFGut5(fxBK1P9mpa9TL>0mZEb z(XB@bA=N*hT)e+_Zldsf-qN4LaU=geF7uOZu0}^?CydH8eDxsNDYY*G-+c5g>7q2$ zu9q5pL6f&LVXZ6&m5XI%_5oF@nHSh&mVu^s#c+12A82@Q>Y=Jx2Uqf{X?O@ zs-OdwXgvj|`on+4EcAy{zi#*d`xe+dOYjIP{;WmzkDjT8ve{dOD%6O{Kyley4L=^g zsIAFTB|3|dw@Q&UG#a{FL6nLbli#xAu5sU6vNfo5CE#TG84wWqdC!*S2)?T=~95=F=TV=(RhjRlwF?i8!wMC2!^fKZH>Z_v}>)08KR@kk%D9?N6G z4slV;KzBXYHgWm<++z(i4*o>JWq^XtC&lhCA`OA{-bJ7aB7FEEQ;cpAXW;QyzN4D| zQGUuiP>0!s0J;2=0oG+-he-aCd*BRNAk)iIF0*olRmyw;|LeNvII;SWF(U*SN&2 z(}~NHkqsC36?RXJMH13-b8jTQ{o{%8;8HL!u&pgA=x5)HT-BMxcwpO=Q7|M{pO;Zl zF=5YkH;ypL?FBPs)V4Dk=dtv+VgPQUG&#gAvltY`mB1KvqhWI9ev&7=FiGQPN3!^( zzqu*{zgDt#5Q6kpD1vl%41%<+OTJREn-J-UAyL%FY)W2b0kupG6SWg9$dA?kyYN2y zcj4k&-_ychdDki0%rd?^E5HMlTc_ zPuQviea-w%-O$1}LEFMmzuY^77j*R$Z3ZA!%_P2)%pi^ju55zJIJ}=OK4tB!K=aO% zXjS9iuw-#Fu`F(E2;lx!9D?*aJZ_>@yY!EX${1fX_Yjn0&V*2S(Az&Gl7}~((HsCk z3R7&kIKpTI=^9}uRsB$6H|&)zm1OO|ZWF`+AXRUA|UF& zRw)SD;veC4C{Lz(M{j$tJzKI8O9u#hM&oDi(rOyeX$2!^H%t)wR%yd-+hxDI=H_>& zQol;7ZrcSbkqC@<;HrB@Umk?bWDJGw(th5lPSM?9ynSD0Q{R(zxG-N(v+a}jj;1z( zG6vO1=|~+Ibo@hILz~nQUBG~&SNkV=dz4XwalIjx>kaIAfA^LPx{x(oM^phzr6an7 zmtkQswm4kKJMQ29mknm-4Ez1J3?KVq`n^|kxaR`zo3}@qXSLTGUr&27J@Kl9lizlI z6q#vUDp%x+p$X5z1#`oQ=q8BQ#eZKS(M^y!wHo~TrE+1;Q3Xw1N?4-sNzr_Vv$Uj% z=Q~7SBYWaZW1j{0U$lhRqUFwcBJ&$A@h8Hz@sLa<2nHHbzM(2^LulEK{?37+zOL8m z&k9Z%LzFb2jd*0-;u$lf<#i$SIP$3fm&<>3dZ2Qj+a2ZjPq8!l4NH;eTSaF}+`{jJ z-o95l1Osl4N8tQUwR;khf>T`Xx`Q_P@o)>ec);7|`X<=GFTQ`P&Kq`;P%ft5*fPOwC)Gta-Yw{X#Hm?qJg0DoFr@Z6&(j{=gaZj;Od`Nx zmIPwEwZrgV>(_&EkoAL{uAIQF9v~Fce)%C8s6aebG5U zJhG90mp+RpF3G;XNs%zC(jO{{b3~7$BiR0}aW1d_T00dmvG) z7#{hozu*%AwQ`{ApF2S-EXU#wMjB^0o_EHVJE5c#62jb2*oxt1H%HfhFPzrD%U^bF z5sOB`6&0urqejPKf3}m?R)Il;T;!n}$)G_*ZXe9_FAXa&bW5R~S7DXS+FR zvC_3txLMQdW4(v`=LE!F%VwF`Kca7u+oTogh+8F9d}OwO>n2G3IMoeO?~LgKB^ueW zzkhx^$_sXfAcFTTPEJ?N2nusk9V-S6*!oZxE18vt7c2EZlf2%)=Ar&PA8`TZJ`0Xd zK(KIB`y&tSE<1dvn`i~>XuPsLeHbz|7`+?L9JWBib^Y_pDi<1eGec$5{`Q(Up#SOc zoh4(oH%6vk$yz`;am`QbCGWx9Lx#ANSQw#McktqH;Qc)T?dVd-)D)NxfNd^-cA5Nx zW|89q24Q3|<5t15(_0ph7<`ocnd(%uUj$ncTib z-gw-TJp6Q>M!}Vy@=Ph*@cIX&j(r0`-}q81k3#{`+kE0y&e zm!zQZS}8v?h-C3Tsr?L)tP2Uy$;9%M%ELVRx3`MJt{Qs&OHcJkTLXg(~&-Ov$CMpv_!$!9Yv~JH8GCPdp*tf3DC;s|(kcSyw zd+nf2#@=hQ?>Xf95L|UQy4hhm$}(nIqc}w9u-;j&fZP9howWaj@j)jUVGsEC2N)7Ap06d&! z@vgOn-H2zF4Tam{ydTjD@_^j6pOZJze>V$?c5jbD3E1sk5Mrx{YEnb4qr*w<=&#gLzfLa)#TP!hq9iqfKRFw)TN3Y1pVZWUI}y z46YZZ0hbDo_)Uwn1iJHIK5pwF#HnacqQ_B%Q^=?^oJEA)SN}QVL1wlTf`>4ms0|Ck zM1vBAs1}=GcHC@8f~KQ7S4K7zvsE^##W|%>T)WXpKuHN#_wd*F30;lYD6OV5*Qkk7 z;+@?eTkAYEo+`>gxJkywiPGX?Ghg;W6D8|pK6%S$Rxx?3q5K(&nJ`^RPy7GQL|aJ> zb_pJ1shkFRuyG;;%4A}Ls;4&yc($?@z9844H@cn$jwbZF`_Dc6C`UVm*EOe(TY}e2 z)CbQXSDdkn&{~;U-u`e|LT!prLIw3-d@ayI*-(xK37>zV(amX^vPl2R{*tQ_*6-Lu zd1az9tE*cRhWAg$ByeEY@9u@7`xfYzib>QjxDDx@9Y*~4{J=Vc+ErqLY(QLeor35y z^-42o8Df&4L(Cq#Omjl3dDbvilaQ_@zNdlcGi*v(QySK}9*tj-Q(I^NI$@$!HtP6L z?`QjSVf)9tx+;*hb6s;1b&bwA#J*L-B}K=gj%;OB7o!`|Cl19gY0;oji1=|LaGqYM z)1U(tO;mR;2yIZ`K4~a_R;(ShaZX|0d?pDmPs01DW+DX@HwNz5SL$&y-5P2MYRd2XM1>hyHR#`KSVav=tbYaD0i8tE>rHO5%?Mmfhrw*AI}-fM zDM}-Xh+T^DLh?aGJDG@hxEUjLIW>^Q;NrO$Xjh(8uXDlrkp=fOCCYekT@wC>8NNk+ zgwMPv9kw9imYcx6!qZQ`Bmb5~v)zaP*Cz(Yh2TGynYl$>R_c`qlZ0F_>r)jg*S|M) zj08nbz*q}zYE*+F?_zex`fts49;E?l;}7Inga=}@ILEw z<6#vMWug0+ml{==f}cO*V?md^2$u%l`!!XNf-U>E`!pJ$&v`VYHs}>ab9rPwz6F#l zAoK-6oydvBZSf@9#bBdlI_;Q9DrhnI2ZMu-uI+gpw!J_J!LaAg&N!%e4y!o?Q_}U?96vQ< zTL}$^Rl}q5cbNKA)EugnSm*f1$&Fubqd3oEu*nF_q=b~{rulrZ+tjZv^r`L9#Glkv z6Mtc*;49L))mtdSOp5J*PrRaCdfb8KG)MD7{PDFJzQ}1gK|$QzQG@#sx`e{3*PMZU z`}6bJ)jP{9i>-+8@x4m)(yZK3DdFY%o|Hw|Rc;(#myup7I{Ab|FoOPtX(sW4V`>pj zQFHQzVBH69CRNV3Nj7d-=50R&z$buNG;bh&VE-e=s~~)zcyiFPI9ocYk7UWWQg%N^ z?d>2$O-c~6C>v>CDY+n+zju7?X6lOkbh?7L!c(NJ6`0lY;eW6Lf2;qI9Ys<&^|Uwvw=t6aMAwRgeT+e;RVK;vs21?3COn5re#r{uPfBR=|e( zL;EwL3;Ow9NX`{ZEg@v@FA60Va8H_#7G4)elZ8;^n3dmOLFz`B5EWtCk``JX`T2Ma z$&HL9{2<8$4Bxwk{vhGG?+1m~qF##Ha4CqNvx=YzfiS^C#93>=-4hBm_^c*CbvBSoejju^d556O`1z{5dN9LiHO%ondN4Zz-idJI)7Lb6y7S zSHnLZC8>Dde-uJRY5F~jUoeypbSIK{ml%8mZNmOpoXge1nCh!rgV8);F%=)kuI4dP zmNzAqH#Dt3qGWCKLYowWo9y+ARUcK2JQErHUbYy2Ma1qlVUoSL!qpsA3_W(z$Oxf`mZ)S0 zXgWMG1MYt4f!XHm@P3Sk$$uyr!EbQg_K#i-aU7qR;W&Pv1lB^5*E4emJ9Ol_IA4zs zpv^9JR$xZg2~N_Dwk z{-B20Cv(a1(C6d<-ceJ0T0Fc^n;x1oX0Ov(eERBmNqIAY5-vn|V<#$)+}T#MjMaG^ ztr5LbdK*A%VK{p}sUx0nvf*S-COcanB+?k{i2^~HSQLLplHqP02I9g4r{BU==*8>p zTHpMgviHAPe;7@e8`qk2@E6yQtt5Zm4AJl@W7vvWMGzMhJttOw z@zIvetEgMxEo2{Haj;87qs?wEJ?!qWM)RScNNIx|D3*)^Z^GG!Xij826m{j!Zp`$H zmx>xuLes&ULKW_BMOZ`8J?)WLmJ(dHL|ISE5d|{v=&=cmWzo%BSg05b89U@Br?^y8 zS%NVM7o$%b5#8tW%6PU~Lr(k{C1L3^(C*R7dqw~5bA5>NG?K@1TT=2Jw=qs(xgvH$ zRjO&~X!u%N(B?Hu9lSf1Ulx!yds_0 z{62(vKbprceAh3<&=HwE%^rG)g{(aQ^X)*GV`=WR5UVB>g*U;gn=hMfR+V^fk0>6t z>m+wh!^C3AYCOt>=U^WaxOgZ%_yMV9EC-5<>=K9#tiY{fpQQU$s(NwoL%QP)T}O3$ zW|*c9(^aixb19TCc*Zx#*kg_1}Z4kFdn zu8$N6LdE3DsHC}82+@w%%%U)tekG^>fk1hD2gC3n@Mil*Pb7J-{(UTK&pmuSTFIZA zTg2-3VGTvLEa|~-+xd&qxXu0pxWA6J)42tP->I6to75sYUJ*G$n1}!pP;(Cl|Lj^V zT0638M-th-bHsvun`o|tephP7)#)_ zb>55eTGkc<-E&Orn|{|=#M{wW$>ha}sG!LdON@o;$Y8s4`{AhvHAZ6b6la^ZL(*a4 z+q(x@gagnZQ%{f9P1atW=sAWA1Y1eVn3>NcT2BteA0(z+aC2trb=$cmZ;3i1*#UPF z=-DttvMb6t8X+1&2uOy=^;Lv5efW}3lavijWrNoFvlHXY6;Cm{5 zNS-7LlxC=aMh}3^IW5kz%|rTJ5GN?PS*8AS!7F+V>(IzrZ0sd1<`@>Nfl_TX1ddvf zqeG+3k9aB`<2?w60O0_DQ_H&IHcEJzAIOy34288t#Zf4N&YLji++3MnB0v{p1pA&y zGcR$!T#Q3WKyG$MONP+Tjc@{GJ`HPh9StqcXWCF|z2PNjWOy z2?+t%LlZ~O0YfM8mg^}4s(iGUJ<}bpL8(oi-!1Z6mGUJwELayy$x_)3E%Ty4W@~VG zZ6A(=oJ`=d%C-x*cMu<#LB|y}^l1bW@^j$KOxbVJwVUR1MfnRdGIZ2tNwS%D^mC&( znYS<*%qi5&$tQS(_*JvD(Pg;nGp?`yr1Vl`t4&ob&BG`WM?+*qhW?S-A0w|9{N_g( z+?bq~DU2U#7m``N}&9Oq8P%sPdNcumysk~Lu z4^23F=R$Ud+>s_;k?k?b;yL9|4fw^9A8}VLai5PJHqyk~?Pe%oQ0}2jD}<+iMnBwBLURr3r-Z40+;R(GnSR z8n-O%JjG>#;vJ{J#)_4fWaen^ypb^|Zf1&7;jiGar;;(!Fe`*YRFzx>ueK_0E!^y0 zsWOu($X_HNijH>*&i@M@$4?;%yXc&pO)Kdi*fZ4RtPuX&U%|txtg60&H~mzmj&Sh4 zD1+-()?n>c(I!5pnT?;WE6U>67|k|fMndbMb*YaO=S2i1v5I?eCEl=9c7TUg}wf{)*UWWL$1?A@JdjU#^?r5F*uYB zE-n+fxN93^QV0`lV({db;}8XhJnUo`eM-dT(8a`0VT=`q;C!83xX+=>X;h;qR4L|c zzk};KUf)p~8IpW-GGSO|TYfDuFrG%I#gJT{vov)@`ux_iNF z=r6`urvV{h zUXoPjt)|&Tcx`)A_gf`b&L7?zzcFesBkO2ENt4^tIhELbjwbC3Mh!-XHpCs8(G}2h z%*0$Bq#?`eDtI6Ai}M!ruO_D_H0Bn0dNxlMzLl_=q-ZixGLSGc8Y_=^vtTmVOoAUyHOP$H-)v9s>eOlsu?);BMo@j%s&c3;(Re}dET zC-JLWF*~OhMUt(ajD}S7i_YC8zeS%E-vt!K_UwKYTT}5U(YrFW z!sRgr-_>HXg`68!kOFfJRK`Ll@ zj&_-jelQCxVkEa@#r97>Z2Q%WPuw67sNJ<%iin+U`* z&8VXM5#83{ilOV_@3e^Te{Ll~`9)VnKAIba7#!X@rX4uiR-!6F2%e3ZC%0E=H#8jY zjsIQ?|7B8+g`t3s#p%O~GY{XbfO&vF=IdaHUE+!D#|@686gUHq=*FNSmL`ugG~7L)zKZb2~xFJkDYF%XbJlo<+3cQ!^!;gq@8 zu327qIL3u>U#ejoz$kY=fygRb8oj@a+n5l?C!xnIe_)=JPI7_j5ly(~9JuAkXcs;Y zSsuQ&M5XGj8vCnVkO6){=kwnm(v zkupV_>F9)Ce8YPU&1KuSd6X)>uZ1%6zZFyXbk;4b1}I^LUMYe?dJ*<8SQ%i0a8||; z%c41QTWtqe_%{0ua?+1f*iw75K3Yo=y5j9lXz)5x*FKD2s3vv@R(Ozve|>KUSmeBX zhRbu^w5~gavaM9(tTZAwfvSoUP9^$ApUd8-putv1l2qe)F(SQX^=@ z5VBSgjtif@VdG`j+!v>QW(mh=pMr&waYMJsku%MKF(Rf$ZA;G+ z?{_dP?8**m`0lw}MSOhEeRt2VxzUKo6O*tzCsFV02?H+~a-jPtN?w1rbcUu8K)f=d z0r_YC&%e&$Xa@d`g|tl4d8$}*X=w&O->s4OZx}yO{k);9ypKyYdE?e>#S}eq!*t^E z(zk%ct4awfWUCZxLE8d1sicF+IeNBBr_(gX=fvfn^uiV z!O0Eh5l|e`H;}`%IC}FQ7+hA}b5H9Z8s9tky)5+oZ&^$L*wXGAPYAX|#7WaogGzHs zsqs!me|co8szcXO4-6S#p--AyYX2QSa)0JsKiYy6{{+TRe3qeljw&sl6m1D9pELf~ z6qeIEE@{R;#3bUR2fUdkxW(`FlO5lLuOOO#n+6m9(7dM$`+aA;E3;G1E~a*n#s87I zyE2S~urc{KXFatKYTMCSz*(RekuIqZ_0_w>$5}s~$ zJv%gs&KXXYcaP{82mA8Z!SR{AdVa#e7>aowjcnp(aFnZEm)Zi-F^iobqY{Ze_t4@Y zczle|TQGj)$p$4<)D#fRV(Z8i2v10oO6A0ba>AFy1xM2R-5g<3ar7KT%S8s1gjt>- z-q920V>euYMiacpNvNOx$G8nuoi1$KMND#Gbf(Gk8p*Fyd9;tW{D#w|gh?}Ne0Yz@ z+nEriAXd30U)fm4UB^f1Vd8zHyl>8lNBtll3^j-5ftyTnJqWJ%>2wrt!A0K?#|9V|}37XbtTh z2hFSp4iki3ly#x!9j@pRH^-bh{#L8RYHsoHSaZMu%(UzC!qR;oGPUeM(Q6F66)#=} zC#G<{hSH*^bxMujGRE=9&`BQBZAmO`4{dl$j$f>bIE~sN5U`7*LyDSuoEq5Rbx^*S zHns2s2AznBNFQP8x`@POf$3**-A#XvC$h1&S6cSD!JMPn8cPyQVuerKHpn>~ZnvVJ8Tu0$IovIWTzDXkhC8p#ks>rDhn5z<{2jdClJO z+c4s*v`I(jsact;0dN@%-BL&73;N)2)X1S{Khe}SQ(%^McXsW$?~abGQvLXc~} z8uP+Rb?!y!i_Cb3gkU)f?p?+PbXd6Lq^key|6wP+zv&P(U7~w~Je>cul6!U+MPeKLRsQ z?-{L;6tUZRa564%PRkIkheI+7PR)u`VSQ6`q8BuJ=e<$w^i5X} zyl@I1k^x&g^vi!3Q}Ax$KB*^WC_39D?0ttntDoxD$`Pomq5^BXP4OL*r*z`&v%K48 z=)HI)T+eG9p))&e^g8tCF)oY^+8YzO|-jlQ9UsBaW~6-$mR4*$%4Ne zftr{RL@O>_B+QL5K1q;<(GkKzFoNX2!^UtEN{kyI?KCkEociJR`e8X@WpLS<+L47N zDmNS5YLGj9O38oi^NP33j?$R$k_{66nuE)#DmS_?pi#mc8?h|U0;_C%uYH$k9BmvLYpImlE80meP6F#YD zLNvLPC?`KCRz|@3gtt5L`+(e9zh>c)C!-$3jN5<11 zaIi)tajnQ1MGVIZY=@%}crLp)U9^})g-t?NPwl|&F!*iS>E+J*;H1&G8E#pw+Iasg zSTS#CCuep{j}syCK!M$URyHL2pC&+bf!iPLZlep+Oxk*2`PiFVjyrheeCB9OJAeq% z9xSP`I0=O6!dimm-7vE>5rq%#>xTT0E#c6`*AOH0jH!k_xWIMI=iMK3CKB^g5I(Rz z`_EF>?(n`+&W^}OpiY@1?AAscj8EG0WX^Ne*T&vf2)MpL_I%{)1d48r#UI;s8tjv%22ld_bvw91ei3{7kc$AIrDSfJZlrd7@vv9@bka zWJ(;J{uhw8`Iba1LwK=IH*BLqg3oAyXi%Y~0r4OxJjW8C3DbHr|JI3k!`q^s5;53jvISBe%SU z8&f>Q9Tz2{F&iL^Xcj=HEHNX5UJ_znAKIgoS1|zOW+!a_SeJzTzrQc%+5SH$vwzXt zKN}tz!ABtkAD1BrshsDDkW&)~6FT#hZvl9QH@J(uaVE!u?;!@`LCo#!(Z&tBv=O5_ zpp{9Y*Akilz+zWg@Aaa*=)g+-{m=%G*ShV3mBiAL5E<5LKnw46Ea3Y#p)1TQ#NC?! zsy_6xmh`hBHovUJZ;RcI>+@{R$b}o)1uHG0-oY-To9NZQg=Z!JaXhBM)iUB9jW`fE zwj@l#YHJhwn{KI{9+8%lzO+SMFe*USlLs&tx32B94qXc zgO_!#;Br7ckVH$RSQ4kjOijlPhgmuN@@ODe0-l7JjuNhx5xD@9V9ryW)VkE1P&$+& zl#X0^OBTy8lLbAmo9>_NA{$Ynpy!F!zY-(d?xsIP zc#L)!F5SiVo5BpqSC|~D;K~b>gWhTJU-psj7_}8s)@-OtzGzhP#?PbCg^Oc&;pk7C z2}mV1^Xsnr#JlJn}wLTMNasAlFj0nyhR*Swg_>+79pl?5#qotLQL4Q;wNlb zs}r`Y)(KnI>x3;UcEXl5J7LSJov>xyPS~E_0v!?$EM2Z1wfeg*Vv=N<7QDq8?@ba!b9F|00F z-GccsG}!^Vg!wH(mnv+F;3ZNGhR*0N0vd{foiF^MxTDeOk!8ozzTzn-R6}ry*6Gw{zQwYv zaP}U|C)kP;J-Gl;OjP|$+=Fp4bZQk^$8C8>CO{+T!;=l0Un%u+XzncDOb*R$053l6 zFhg^-`DQSNi39C%+bvKJv=PTK;0a(mXjwmQR?$q3ZJ24g1rFn-i5~x9jN)mN{t;dI zBjgPFD0=U|!kvd`bk5+H0nh+(=!B~kGP>&xy98oz#Ge^U2*^^4_viu>;@Z$ki1cYH zNC#}97lQCGEZ-mCGDLj(h|&Ri#EhC zDao@6Sunj!2mLKpIvm9s{cdNCX?nN`f?_+~rE@iB1IMPUPCplQW)YcNB&HkAR@j|+kM5p=*^y$L6V zMDee}NCWt>d;;Oq1{ikKrJ4zYi?g9Y4Io+Ewj6qGMCk-C+wxe$@wzlf@Qm)Z6fzhxv*at_o@wC~%a%fB zo@R@K$%IzO@cbV=Slm#{W8ie%fn~Z=oIV96=vuZVUe|{bJd~M6fhvI0b4E&ET)?*- z3W#dTw?+{_-=pL(C-|;_{I&(~VyuW+DZr@lCC!#x4&jG*PB$}dmd@wto2RZ{MG?In z3Z7$FK#Lhp#CVPJ(?NcdG|3lLaFMJ;m7%&t-j`DXI^eYdV;B_VcM-%l8cI!p;qV7v z+fx(|G(g180N>kfE9UcBVd&dmIZK43aLtP;#C5ukyN;rgQU0t$DzE4BRu`+&e-A#9 zg2RSIFyR!E;wECiK>awJY0uD|=Gb@L1&HV2u7p@+7t~jU|HDz|8jo zrq&lCRKus;-$Bs<6`SbWAbCCtS)y;F=J!5HE`~@tZUI`JrR8#bKJC%!Eu+~@lW|D< z7hu&$eBnZUQAjljB=&yMlZuNW66uLeAmO9zn@}oFnhyQl;W0WK*leOhz`cn=mgo?m z{-uwaixm5ITBU($D!~qB;9H{yq*c1@#R!dRPOJ1HGIP=@jed#0Eb19lddei`!=vBd zRL;i{GumU+^iqVt$Kl}PXcV$Uhl7t3Uh+ibqTr);y5OVL%813o@2jov4nZMHbTs(rc-iBFiy>7fCp1lE89khRgK+=goc0*~ z4Crj4c!+1xw9RLl-Wi^*+`}zX}nw2uGG3Xiv zp91>EUn2Ni?{t-FG`dkaLyOUbzeK3c#uI~X;`WOGM0I_5mgiTQ3NGEsRcHMrLU@Mr z%iH+Lp|4?rp<9&ewHRIgT7>EvXQ)(@rrVW?(_?i1YY@1qm{#d6sp|J-3dO92VpgVA z`Vw#q_JgT{_moTl_9qW)_kjp)cV=3p=>z;F?zBpM67CwA0{%gKB)JN;*UP7CWs2H| z{n|(5)5m3s+IzVc46m0@Uy!L+%MAB00|2W%P%ylkOabD!F-X^B*nKJk&h{dGvOvU}LwY{v5C9gN40t|%J&$hCQ*vgDL%^g2BDlXNucyltsRW=Lq>V6L@7#7_$WUtN160c zdZ;!IM)?m$`45Rwl(v7<6Z{{8P)=x?D%kXJH6A>u-#=!Y2fitkDN0LxoFA9tblieK z>7iOX80Dvo@~0A|DE-<;`Dr;yUOog;4_V_OgZTV{kv=MsiqZ!@(l5%9ddrf)>)~5F z81H`=Z{jT>zbH+9%hTz9%JJ&>&YHg5$JBpl38yvsa$2P>JtRiQ0;5Z`QpG~^Bb2&P z!a~!BQjb@9Kv0`V%1RZt5XFM`iez;_rkKy-3K6ft8{WeF?>kuh@i%?B&&>MfQl?zG zfVqgj9U*XdA#*tX?FiMvU7&MSI1CF=?nVhbcA?bcl`eXlH8PQub3;6Cl)`^3Q}Fmr zkH@>;F5ywjWjJ2x@z&o`!eiAvX_ZJm+fSyzw}8K0?u#lmt1CME_Knj#JRqmkI62Fu z9T0?k9TLE0r|qBAVl?8N2-WhPjqM@d*moin`*T{Q=9wy?>5f=jzDTPy@0|#37tN?- zzZ0QRqcSR;^9}&Yc;JhDwokveln+68cTl>`C(Ol{fXv60%vg&Y-EY0##}eg_?T6uT z+usLRJKYm|1OV|n8>U5Tcq{kscOq1ix9JoGd&J4_MyNJz5_N-_97-BqmgC~;ce!7i zNa?;6_pk>M#NH(1Q`N~5TUBY8I|6jF8JOkwFanjYl*h|VMe758{qV;%&7F4tllJ3 zfSm`hYceX;{1ry@*f0gs!8zecDg*)i*Ax>DVLQH7Y*zEtqp&Herc zrhO|ankx)5mG_yX!%CQ~^_Zob)XNWvQ4#oRXQ^yW>r`0Ng+LhlT}GwWSwj626{1lO zW>mThRaH-CRJudz;1!vom*!wzcsrxgYk!N-s1GwLsqdBWmdsew@x5a2i&-9TYv+{k zxQ%YpNfGQOsK%v}BbZ&k^B%T3mQAPd_l17@UW7*T!2e1`T!lun!OKG3Y6xW0sS%8a zC*F(DHkxkJ*#c+X0N1*7UgYv*j1GMtJO&E%m_!7}W2}FE34@sQZ)UcB_rBP5-OQB! z2PFd^q9eMQ`F!?+2#wA=8I2ee8JE{*_5y)Qj@DY6=r>W=#VH%TzWGg5^bNmVr~HQFqStPWP_5yWKG}$_nxj&U zNjGtQ%Rl&MkgnxIHwt(Ghpvs{wb}bn&hn>oZj9ms#OU*X zdIAqf3wvLt5V#(Chrqji1hDP1Ds7b2BU^<~06Rp*&*x-SIuu~BsaciiaM5#z0>hC| z*+&uD?&z#aKSQP?tJ1Xqt^)8}iR&1d0;k{baloVDMr6=%yN~e$Jo&6jjgm?OsI1DW zH09$6ZFf#qrQVMtH0qkHN^gH0p{jLRmDWn+x5%`fh^C-JAI+*X@)Ou*)iYU@K9lwF zqXGdZ0RKl>l@@#wp{h+;l{S?@0h$K-cj+7hD=QRKk<&Is*n`$dGReqpH8EL-Pf3LF!_*o}rtQ@)7MsM`#c zj{TxU6&^qHeq^AAR9*GYxY~ABxNk7au^;!ndcVfw>JRI>re) ziE{kQNU7OP$12%|%LUW%LjoSz)}u?v*VrQ3*Z3v8{2rU=Xt45g6j?DG-du+wv%UH^~|MEWigQts zoX>OLv8B8_v`WELxpq^8=Z9kmmWXA|%+)L9t(=$ePSSle_;LwX8`l zPycs>>e?ZY?G`Z8wxMo0Kr{d5DHwIAu<3`Gflo(++PN5}!1`lA-oTK}c-Vo5C$Z zzwkeDg#Qs44AcPt^9X-S;@T)v;QXoAFhWr=$?t;<8Xitj5)1Yw*?<;{Za~A6(GcC4 z2Rwp=uWD1HG13y-g(Q1^$B2s&#=%6c6g+*k$NK`B$2g!yrWC}teEXn35+xWfUwyifKWej0G%AO{b!=lhmLjms3+ZUY#w?FF#GQ^+F6Ff*7(d}XcwL5b4D zF4GtPb&@FBYY`^$scF;vaSDAo1i3EmL4^%VV;pHCYZr5f?}af&|RM|~rqSE?IeXqP_WkpKNa z(AbKdT&KYZzGUck!wCMvkD981fPM1yt-=^LKz-2iBGhpe9VM#1@T$&4RiIg1Si|p# z_=>Du>M3+27WJCEo);G%@2`$hjgF6F9|rAyV;hJ>$Km%`79(%T?^M$QxH-3M6D913 zX7Ay~=y?=`re|Y8`Er}6JTsn+<`g?<8JsT_S21V-IL$6oY4@5ajk1@iG`$8kgZ0N= zBA9b!3Kr9VhtTPoC~b=gi>Ru1nM$eS1#niT0M-C}=`xj01I|DVP=TYHsR_RPt)+UX zO%k20fZOY9qEyRzptBXMKI?(XcbGg(K7z)yU_+4#bsOn^K7{|cCdvVk_c;d85|2_% zzQ@VX2MVsT^~9qDqL(qz`%uEKkY2_l-$9YDHxOOMp~`K(5v9=xz~}|s1iMVZngu0K zB1J$@UHeh6s|-EG1RA~pi|)g-n`qtNXKcdGQGcA>&EWeSS#qMMKDRH;`!^eRCJ-AokwVW&#%691Q=eR-!! zrvm@Aohq#d{@A)sm0H^b4=(`bp-z=P8WpAOp6pa<$I($SsojwjEZikiuy6vvVR_#j zjiJb_Zj$x!lz<1^8y>49A9|Gmt5wf;spZ)b^V!;1>mU%l2e7HnUaD4nHC_#=VSdOc>SV*E81N`CIXoyZhPj*Q< z9{$#Bsk+eiFWmG!pmK>`Vmf;!Abkc!=xY{=;E7&h;AM$09sXnnW)mMhf5wO#^t$?_IAx>b3 zc0gooTEovS#WS7*ek3JcB~$cP7CU#$0sY&`IiOe8dQh-Ce-8K*$iy75dZ8G9Cm^KA zbHH}q9Izec041l=VTKU?7@30N8KAglPNh?~i;95nLRsrUA(DH}jxyl;TObqGmXmPZ zG6lAiJ!`Y&L$5NhHlDF)k>GZ<$L$jyw;Mr#xjlE8;C78nf&Vg(+wJNkw|%nKgDT;6 zN*zxsm>BMoaF56o*v|L3?UxU|%79y*kfNP}lRBBAZ6DfV?i?u}dX?xPF?Uw&ms4p! zS=}g8w7m-PkgEAPm8Qz4b7hL!HPDHbQ|VZ6&kXeC1Osbj3b17!18d|%uQFgD7}yvC z7<3c-0nl7J5McMWMKB@#sLo%TZ{y%=AJ~X^7m_?oO+JR+!I=KQm>vi){edxUz=MLG z)Qv8@Kl2BU-o*k7q%Dk?nBJn9y>rxo9H2CZ6=D+8+eHMGVsLFb9$1$j3FMLg@=Iz z;^DzNVhgZH%mb$}tq*p@+^`zYmfLhLN3m*m!p7%>oJs?Wg!R7%Yd!-56IDDZkSWBC z%M?Am31FBMay!XMAu4MpDK z+iSZ}KJ+Ssw(OIvl{|eHY{MtHbmu6sPx20!WBj%wcG=FcN*kwz~wAo`Gj<`VZUh z{<{c!eJzS%nL-Kc-fL`Nt5AgbzQ(q7J&L}c@LCjp!g@Rte!^=}_z55H5~aHS#VXY- zx9J0Jx6`gz8z66QQLu5QOd;<|^abQyDIa>3A$eg!bc~QUkG_Bj&EHj;kh7~ap+*Vf zo6z~7TsA}DXFifvK5w|bRt8G7Q;U~LPUG(Z-MK5&lhsVV8cnB-fSd8^uHLTbv=P`s z2|Kt(BDq7RknKY7I=@pTWw)p>i0fso2jv;Wc7;xrzOx&8Fz7-tF_<0f@_9@)uMj$v zU5PpM#u4beIlE!9!M=}fWIpqFAaGzNypfsx1!(w2B5KVJHWm+aUl|2~^M1y8D{v-> z?q`xOq9kyD!u?F)s}c&hQ_#@p;~emDe*?SLfRp-hNxRr8zDy&&tmlC?_jm%2LX%qD z&b+u7qdmSECGM)@FcHuEW|T%dZYR-kI9H{*_G474$)*aVN4sNWd=oZ!Zce3Ww?G${ zDUcoy|2zgGTziblPnO}yX1F`jGG|*pYkemOoQhx(*VKBzqU5NDIb!Myr7%B`DX9Ns z3$$i-;}b?64f=5jEf(=S1u~umh1f*rD4>1wH=|TH03{f7zJj6oXXv1=_E@Qx%ec{~ zZ$+slXE|=0+ew!z7j(pE;m|lUnPRMB0o)cl zV{F;5yv&f5$H)|Ta8re+|HI@%uM!x<(iDi2u`;@=n_a#DwLkGXcsmvZb@7(&7@ZB? z@wp1B;SkG$01~+V|*6tz+xcG&^Q>C-)QYgf+s~ZuHoY<+8vDlXAELh4()@& z$~~e~qdD|#6#lhGlxlUNZ(WMPyeD^JBPriP9o4Oe@HnU+i}G1}Laq_-Ffp2ZT+ z<$2YI=no+83n0Y}??9V&PBTP5ly-yHdcBW@yJ56WWc(FBT{|QS(F;wdhheX1t{8qiEm9*aG#08BFc=uMm=~`Z{ zN#|W!r+~-3_KH$X2i?iv&imb7QGyn37L0@C_fY`gRgKs%HeukYjb{GPIZUeaT=2GO$$ zF7v#&f0VXANY?&9rZrvkKU_PzAxgCU2HD-aoi32nbkXx19qr`msBAS=rZrvkB6q-5 zTs`S5(JCv`nl5@-d1`iyUgB!^Y*BrUOl!L6Rpo&bVzlje&|Y(bqpCjWVt2 zqIVViK3jbwSo@JgzE-9+UG!HzR%++!R>{&znbvgCd;EQ*3%L4yDbSdp^#>eXeu}FH zWUHMdSWOrGUBT-`RTDtFRdT#irZrvk4+U@i9Lm)L^6`EWOHCJjr2P4W7_H#y{UlOb zrZrvkiSqslG5RxC?$MD#cm+#Z`A;JT|PMrj*6NjLEi@KFt3c%-#lHFpw@40Jb34|2JAayS|>oj(%o zQ(b+DM;-2nQX_5@KB3(C!x)`EIZ8DqJ<5aO4=5DuBt6163I8$~F-wlvKFsxdPKi>j zoh0R9wt`tGrj4AA2hhlgc#z|F)J22a@BlBqKFnkB!zodU9cZf5yHsV@=n2d#3rv;v zJ|Ie?+D(;~9e`QFpWo$+iL<;{<~&i_FZV>+8SX+&mUhB>!)F};28nk3_@EfwkAkD) z6$>3fM@*FDAjZ|(PR{KE=;5;C|t~iNpt`T zcTdF@z%W%>D^+}pOu^NG5N@TZ((6;BH0n%KrRafxKi^d8aS69xrhxx0;IB1R+K0h_ z_AObxL8bsZh#f^B*(jfWEK}4T>>)YaM>6tKp{uw|0d}a5q)tBFNv5c6_K@U#B>Tzg zMwtR^nvZ0ve0q>fQ9Ip3vYL_L4DT>mJy)gx!#jl{Tw}MZ{A4^D;%sFd8phDDPgYIv zs{V{BR?#C8*W)q;&V3ooRO#~rrRI10uBZ98B-{p>0)9WhL-U6+7&O00R?}rdc>vqr zmv^Lm8kZ?*8$2W(K9X8lT_;n33F%CgPWi6n?HYzhhwdif#>f=#jUL*^7!17aC9CUY z3NWD=Q>70*w2AL|A~#C7Niqd|lZSQ^gF(qZkkwh40t`18xGxqn7^r*Ixe(aizy|6k zd`}8>DZ@jkl@e~1Oo4VEz(e8v3PDB&#$w?U?W$HtG9@FjzRTawdST&4iq9c+NxZyoH(evqtgmMOr-01PT^0ob4! zbYhb~hkA48fNZV!bLaw0YN>-U_fZ@27ac6-)1xq-{t*Q+pB{zz^!0;z3T+~Vi^Phw zCDLx0g0(iV2E~jxL@ILZA)Y9gNVqgLzH;{8zjn}YioGuF zftOOZZN|+DT>RSu_cW%UnAFTPez$=3Kw$Cv%`EgpQuY8g;^6(rD+Hs!Ft4ji-q!`R|yOva1le$V|}~I@Hhu!_yGyOQKkWW)oZ3o ztF9D0pDR<);%Pr(sdQpMqpArMQctcrC=dfG)Ji> zOFHroK$k92I~4ye3R3ayP<%~`r}%a#etZjSxrvl^)^Z(byirU8Q(H@v>KgIDrp!q{ ziP0r3@a3ozp!c+Z^QuvnN_Sl)_}{#^MoW~oYqC_Tng&zE-0`u5`%I>Q z&j22C$2fom#s+<~q*A`@_OAskPX{iYq(IPl)1p+HC+Y!jE2l+i`%9#@4wEfv+$LJZ zu-BB57^HM9mGbFql&w8_tn(|_seEl3EB#6?sMDcWTyz09-$5yl64;qDJxX=$(4#?D zF?1eJR^y3HYZR#Vw&_r96aAW7yg1!g?kdT^1u})Q_&y($yJ@;q?(Q=@<=!RX`eh3E zHJ);(0W46ikX-(DmnUi8wWS(fMvt*etW|V5W={{w@-WZ*Og6Wd*-d{zjJC6YMpOnXXW3>G&NUytDE9KDR%0(+;^zbav zq4%&t4xi0-+DOVh?7vf8KeX3LPcd)i>?qasb-;A7`JtzogMZBi$JoI<$Bm{RhBEI> zp5+Gz9F7OHURm|i7~ODqlQ?KZ zmNw;(#vZ2>&JasdJ;^CH9j5$MeG4tA(ELk|{dsC3Mu6rb@pCJSK=& z8UA2Pr57aJ`!WUm%YZ-DQiG=m?>x&$xF*8KI=llm~wrBdW=#=raYEpf}BnQk|VfSJ3BdDZ3wuj^NPt zS}EhFr7OfE(!kft6!Ue-3W3*Eyvhv{2-1Cq+h2HHWg2L31pEh*`(Bv>>?@LovtDIR zR)UaNNNB`rOZ7!>zRpv@cGp@e=|@IsyIU-kPDAD%OQjn?&);eCrafi3u=F{8qT{_X}{3h*g^P^O|LNi@Fz#7nu2L@gp_MW8XM=1sl2c!l^ zqiE>y)_^D_L)msX4k@|nLazK%h>9s2l*P&$W}35-pwo=ijp{LyPK<% z{D73Z)sNd^bZTojX22vSOz}~VxuHbzT6_+To>UQ9x(;Z%NqLfyJ~bH4#3sM_+M&?A z%-<3HNTPX}(d>BCAa15i@|!o_I0QEvR5*FxJ1R=xW&@*HIv9-%+IT1ihC=mEj-s3_ zQT>xq-7o|yyn^9lSbb9oQ=?f$n^gW$6mYbO(L6mEP18)%!oc$o)UGW-RMSmo^X-mL zz>iCGY6KRw-vS(1@M)}gk+GE@kaB7S-RUkEq`;;*KI*&IWMxC7NaBEhM*`U^T;*+u3WO~8Bw8)$^M$jUJI;Db`6sq zKv@X7hM}Vi;pmdGhRN11EGIjsX^u~6eHlgIy@k=vWh}hZ(z*!THhZCn;H_i4R9hfL zWX~-jq45FMoTfQVKK9<5OXUKUXPL_5Au7)>m5q|hGXWKmty>hO+742l;fp(S7lp+V zG-o!=@kuqWD_YrwhI>PO{P6CG>Il3_rM?;e`gxeqtRVj z2Ytjc)*p@j5SsjuNgi>uAo*cH@K`ymB#S)L=@j zAD0u~-W%Is7oDt6cH^xc`ET;R3!e|z74yt*7GuiipKRNC?~`Km7nDtWG?;eQPKuFw z46ajwBpyzn-SBYlV-St*m+b8%ao6A%CH4T)C8&=*ZmHCpQ3(`x#bW;^9&pv?mP%`7 z6_%jwwzXASgQ`H3TpARQ#*b8KuI@|FcUy@hwWgKQi4N9IiqXr*{6E6p1-!{(`5&Kb z^CpGVQfW|B)E>nnC}Kraj-pmU#dA=r;PJ+hrfu4WwrQHAH*OXv%1x=kP6cM#5Vo}h_MG--(f})`QpU>><+XVgnzdVmlcjxoY&d$!xUf#{VPI95t6v1>8 z3JtC@8vKc3T+qO;w~p2lJ9}T7*F5jq?96}b3J8lYPkys5n$>7T>5gH(Z@VohzyS2)BQ2FTHnB8g(M?k|f?}3JP3Bi)6zrt6D8-|VW#?|qK zl+$!x=G=adlTRN!M72)-AFJGl9JBd)hrcZ&-xeNPrxiDzQc_5Z__-_or@i}WE;9T- z*p8^4i=54=2$Cprm0e^#KT2es9#XdG^!28Q)P5mFJ2g6;97}m!MP%Ve83q+gH@hG+_h^=IzI=0G4ArFqW1~S9d_b7+~3@*Eq|B`IAOSxQp(A3n2#A=j}-rS$)VX}hdasJ z1{V!c4S)FkmElgD3=7}{6!cnUL9cVOkXw)3Y+o+DVd3rA|FWFq3DE|A?rTP5j8NnW z2WY2tV#rNr`mo;SEc({!9dgqwAC6M>q0g}>;6Iq2;uH02$UCKRx# z26hg^o(L)GCG0GrfK3PNrI4aQIZjGl9a2=7K( zhs*uf6b15wcwhLgEMDVq>^<)VZAFM0Z#HPB*00&1isx?_^Q4yr@*g2 z!*_ky@3)PV)f{gud`$kvV6MNCzGZ!_JRE!_+ULrg;ifB);_vY9bL|-9rr}7JlVhI? zSJqEJDuNV#626F21tn!gxdr~BP<{>=*v)#~!CqAp`lm+wQ0zRyE% zu!l$;yz+Bwh1<64hfOQTmGr(F1$EAMlD^O5V>dK7Vyd3(#jVgBy@YdZnH=JfN623?z5Q*MEFS;>#NE_kgTX)`cWA?BGsbC2Tp-)(e zD+_Huo6ORuAOl;2G}(;>;)z8FWqyC|NPoBlnNarLGfEY`fIn_7RrCS=7*?w2P>J|y(KfA7 zNGJ-q%lPTZA^0gP)Bhul%MuD4N@itl3OV&{O0VGocTuULHc{q5NMO^Ym1xsdJH>Q| z0A}GEwrb%AghKduCu!j)mx}P4OYJ}*%GL@6-U&PcMQLff84*?H3aDNvz%B!x6$5^v zR8fO~mJ0>AJHRiMDp~>X>QWwwHk2ybC!j+@0qzO#&Qe96l{zW)V5y=%N}c37TB_)P zz}kf3nt^T@96E&+{U^+ZLOW)Pq0WaWv|}hN?YIzspdH`FA85w|VQI&V7Hz_TLZOS@ zj-4V9&J`Rg{9!_Y`zLb|wdy5zzEE&+u7RW0bu7i|8di3I%KTK9>ZnV-Agrh$!ae&U za?I_3kP;K7gZ>I1&j-vSnV*?QQHcI&_jCMxm}wCwwf}(oxekaKOC#7u#Cya=9S~SP zL^?>cr~~@!&$`?`EHUNA0kO8-)B}3{Uz9VLx*%fv}Jk=4S z-~GtYgNx)mi=0SRWJuH(Mc&RDH@#QE*14D*Pjx)bjgQmdBD?6cFXNk{9Z2gtp7*4i zeynivSgOA*bY&&aymzvi(Mns*XIahXkRfX7ocEDqtNAReIiSj@`7DbeZzzPbz6E8$ z!U%oLlJcw2Ubrc*UfSy#OTzCIW+6g03+qOU^hor4m6Ld`)eH;GR`vH!#?e;FU1Q_-1a@2<$OL0 z%?E!-3G3#oMbn^tyNnip=r`J6G6XXl7);BDF{?vFQAk*G!Ri)KbRQn?9#J$8m{@BR z6#GJWEu9k%+BbF>Gc?)e!09N5hu_E_{27iW2UFIr*?hcQIEFp}^q{DY-CV7$&)u zLcw*RbW9u0Whr)};1-x-Uubv)>ms`uQohp0a!7L&&;o_l|Mz`t;&gJ%=d^Z(HmTu1 z@e^>kLh*g#3bptHuJGpHmTH&N_H}%DxO%3Mk3D~LU+ny(kvG7Ss-5JymewjPIxein zWCiz^!Xx}h@lFgauzN*agu>pwzK zD5{$_9TvpQ=D*`)W;1e}%xs=uFh=!y0sqUGq6rxEirx4FrZ@$YZTIUDMa=@f3X-=+ z6!jnPq}09ep7Bm{eHT&GAPuonD4G%n|5L4~q9u?N)5X!2*OuiJ`lEU`$XJ#3$6Gg; z&7cT<$|n9|ytZHqTd?N@C*Dd?3tRUlq;dn{Xq671)WR<{OOb7)ICS1@Ms5*4yYwduyB@i2m?ouM zx656y9?TH{i>=mopRRC!p|G0Iz#at5og7t^Arf-HIwz{AvBs$ zq+YbG1`Bbd|3oKo_!vG>qL`6zC`OVUKE^|mF7cS~Ni;)=V<8qLE?`_tfC%~c?t+VK zKT1EKt8Jn~v?N5&CZIEJnurZrU!;JZ;M;2dM7o%sM) z(kDq5HKNPYod~yhjvIP@sPaNKXM zut6=pfROwlG`Hw%Td*?crUPTENBJwLIqSNJ*I zduB=0n^_bP_L-<{&HNkSp*eZb)FPXP8e{{A1^&$HUJm16z9)`r)hqb@|$^QN|QUyeRvcG#~m;vHXcDoB_7=PDk z@pnmhtKp(KbU(k;8!`h|JtBuki>X}L%=5Z!#(*R&Kati4&esni-+K}U? zr#R=-nRrh7`xdd)4xzA_6FZLZ_bX?LzZ+Cb49fQREEdQ9en|L7ghHAd(%|nCfMb7m zey=U<6$)4qVDR@vGsWLGGamllRd79o0-pjr{QV&C@b|N4!C&C-A;DD&1^!gv;a0^A zLwq;v(J`>o0E54;0F3=TZM63H&S1gcKbs}~e$H(1_at#0uTT_d`}>WvVQyBeMM~Nu z6u2`X7K+UTj{V)R_r<`{0E55p1T5Z>BauLU(DvWZVQt-5KmLsU*f9sL%F}4t#_n=6 zasolzbx=s3vv*8v&kE2^CoahD_K1`8RhnNg!QG8(v7>u23vr@+C zYR)mNC17#y9QczKK1e8p*8+x`Zn0s8JvavTuz`JV!$QIyEfmu5?I4!c`3V!N47(-< zmT#n8YQyFWyFnsU<;3B*t=zlk`C#bdWAw-IST!uOwl}s zp}BhryPr_NssKZwZ!!!M;9Ox>3I%L5U`8)Q4IaEPZuYThH@#fnvcScySBvRtgje#ig{k1zMyy6n6>kP^4IcyA*e~ z;vO7|7k7s@pYQMeEBDFGKAXFDcjwHRGqVD@tKpW{m@GmJ8-;Bd>S~*>R$m(l#kkQG zWnKsz=JxdBVqT&Lcfa@cMTOAc*1o0+S|knn-P7B{5z`}^eu{?)tySR>?(TJ37g5fe z*?Yd=(!n6&R8vab6TqV)^G&2nb@LCX1P1kS5#Q?y4_m@O+e9d(U&$WfRi$PoOGq+# zx70k;KTGp}-E;*u+RBVD^;R zVd;pVNRCjkXWxC5@D!9zg&-`34=P!=E|W=_U+&%ukB}mrhkpt@jcJN~v$0n3a4#)H<8VtI=|_Ez;;;ju6F3 zgRP-IAZ&{+@t-aMj{yJobHW9#rPp_KOOt{=5hI zhMa=_UoMH&o`N@*{h; zl_%B$;ft%&SesH+JFMJhZdP8_3SIy41LN;~=NNJE>^{tU(Buc3(+}BwP13xLgAZBT zwEUR*pvNLE&ZJZuR_{i z(0lOb?g3&lpgeI5GDIogSEOA=I*VV9zTpKxp=ty=Z%7KBU{}S&0L~ym8n|Uk$0|pkARhF27%~FKYHQH z!4w);sLq~l^jp(dHQ8S3NQ6DPm6bj8h*teu_wf&K1$-J0Fk)|809ohTQ}jVolw8t- za~2VSIV*C5##crspPidy(RsZn(QP~7^_%d<<@rj@J9U4}D5k464RrM&7 zZjxZ&PIDtOHVEa!1{iacS;qO^Nwe- zbNe=JvgcOHMIo%fr4#i5K-1icG-};}PkETHr@8*2@K75aZHOBYfNV^g$0iNufa{Q28i}&!vp@Sy z!t!_6`rkGY^u==gZs%vYYGfn!sz(O)jC;3Z6fM&)!HcXlb)&Y*tBPGVuR?B&Llk(M zq&40M&3Jry`3WKW{Q;{*4`c!-+oWq5XG_A^=FgM0IjQP?`AWh#11QCG6~q55kf58| z)&Q_(&>{Po{W_8}dt)k@1_a!0$0OtD@cr@0qB43MxU3HA6sGk4TN)_&@>v!=wJ2ME z_=FqiF0nJPER`Up18THx%IC37<^FFW^wDP);tS_uv<0T;>LVoz7)!Rb*)qCs+6<2h(gEoyWF_E#=af96819YMT zKEtcNLvDxxWF0wnu?y|XPR2X~ewnx{0SW6W?G7-i#+tYPNO&0BUdLZp$C$>JPnyAx zamhXz%djcdwxFOb8_Gk7fESl5*ly)62?x(k;B?s(A8FWhgZk6H6L`1W<>S8uC$MlO zR5*zpuqj%*sMXbg(dX>@4m~>?=f(Lm_{V4raW*ZZy?y0_|2c1mC5QIuj>s z7DN878FF}gD40=~H+^Zv%}cP>Y|3HWa3cm(8<1vv zg`4K(W6b}eEk}jQe5k_>+3ZuQSkIBB!;wVPKUV5+;k)23iu*-7YSg-%o8QGZ+g(Wj zu(C+~IDkB`IWGX22cSlsQ1wh5T7^h08bIbTQL$efsf75jRqfz7yj9NXpbYP|x8%j* z2O1V$uI3N!G@G0K4e4qVi0Vx~kKaV}Pp%dR9=ZqC-skuiaeF@=T=fq;^xwK0yVE|l zaf{yno8P`V)ht7|q&1kmKzn#_xox?jOjRD;HteH3-6|g(ltwf66Ch)gU3*VFs2_Xy z3a2Y5_PsnEP8WY=;COP2=KVeotcqeSD`d{zjO?-PBRm(1ECfsr>L|2xNJth^fY(VQ zwNUZMwitp$HNI-v|+;{cjAah=|n z$t^N(Pyq85o>$Rp(2h>5rkeK=9@*O&)X1yA=)Wguvr6i5<_`~_IB}>Kjc>^j_dMl; zz8bxXdGd*?LdQb2`OlZbBSW*2f%+7xccP)7S%s2o5hMI%S~OQ8#Jvjphz{d3<_xB> zH3kF=zr51u@h5zssbv+)4Rv05U>1T^(Imxg*)Y}=W4AY=`W-YREqn@ibCsOP$nyS2 zXQk~pYaW}sWu=Phls%{Mx>B*-LY~+x&-W4@LR8tFiQ*j_zRYhr%7qkYbX)l!cyW_< zH8``!eO!ppu(nVyL$%!K8J>8JuvPxn3>4e*h|Ng@a%>8=B-a_q@0-1usCA@`~K`YLBW*qS|0-f}`#ky-3VyE47|@(M4xPXI&9 zJ(7j{q8}8*o2S_I5^P;vb001?J&#Q6eP(RqKRXlA>Nw@kScSEHeD=VKiWzN$<>)1= zr*;_$X5VwQDzs?kzbb)tt>ZwNNLaT#{{p3h(FRo!%77~#MUfQ7nJvK=$ z2seVtJogX`F#8pw^gZ=xYD2uWw^Xwg<-DaEcMx^(n{S}lQ;_%1-TE7R+b!HYxvKQ6 zPmNM0Z`Ww!9@`UJuhce(M&m)^iT)}v>ko~;3K(VUyi4rp5E@SDok{SEBKzdIr3nr%>WALH z2xJ+4nEXhQ<37%CVYM>odf*}P{=gAW`Cl0VV@C9|e+b_bY75wmXHtRhOCy!O#%35U zrx_e1{Q3^9tSfLB2x#?Lza^k_EvyQ~M2*6u$-UIJ)k&^$Myys`ZVh*A&bVcIgh6%o zdKYpWjE`$EYdXHKPI*p6W4ej7C`3I@@dzusqCpC=kgbvR%v4W0=aGfjxD)dntC!RN z)2QMJ)2D&Sz>>O(7ia!+Nd-;R3kq?D30*7HJLkyY>#?%cgp?g}4l2?C#v}bwFiJ+Z zM0JN09#W#3@0D7tGN8t3brSkb>?CMr5Vu6aAY9wz3EI7OIG9>B>sq3`frr>m@uWGv z{lt88U=HswHNhi?6A6_`!J`p4H#0zRfv3la8fD4Eq{S9a4LKnKSmBYSVu=x!>8DrW zVWQe31YFfZJ_P$HgG>@3M!#jU+Oj6Bca$C$yDE+tZGApakuY8V^f(=OyL0yQPKgm9 zUzt{JYyK}WxHPjWq!Dh!UpT_w6*@m6-f%_{I6o59uo0QLKK!%kHTme^`^OpU9rC3K z-z^o75C*!+G~*C_UH%6D@%l8zF3+Fpmg5J?0`})Dr*36*B>(x=Cf7gj=tH_>v;i#& z2-9Lh2Cao*2bBt8c_IAhL&1wAwJ-Sg_p%0cV3Ts`O#>IaJi^K}JdBqx^|0+`6CB5H zk@D6=6;e_^+d>9=pOdl*ags==*nm@rrcZGp@w319P*JU}-`R#IqYZz-l+*_0Em-ex zb~-+?6S~U(uXnEyDZTtE1d)h+{Kr*wB}S{X+tCH0hCo`+oAQ49uHlz%NH4+?74su0 z*L6NE)dy!1W7a#9OLegqKks_gt_%=Ek>dT$yVX7__GR>^=xfPsCXC9oll!En%=wXA z$-X1Q_1!(e3(Z0K?ASUa-;OTpovZ9`et2~Hb0c1KvU4Nh*`f*$ULA=pRQFg=QTI$t zytW9)>5Ujv9Px^-e=ZF0)XD@@Awruq^CN=TK^7Fj`Xn*F&0^O6e7`t0c@HF>FZKr4elD;vh6c`wQ0y1pO$n zy0$bw(g^;PWhbW6561u{^CRKqWE>=?v^;3+(HHSjSRVK9 zh5~kd%1>Fux&OIER5<#Go;->Lc7(7P&7M!1sILgx2tbPby zxRw7l=OV<^fSodXje7r0nTYbK(YRHS*2rlyKYqxU=Pwcr3=~)rKAD(uP&5rX6~=@L zc#Xaz6vrTfqyb4M9xQej|QKER9xkRpUI$J|q5)mf_%RLqeYGuwWq= zkD1r)!f140O*{FNWC$iW9MKj`1z6SN0Q}x$jkL*?QZ3uSRWq@D-k!iEe8;}e zI1KKlfLR*03=6(bIClCFobBGMh0oL;L|CnI)sEl-RS}DHW!o1)2KptOY6eR$lE?== z8@3BYHpK0{Na&Eozw~i@Z}NmV&Q5HH_;4B?OZ5L57R1_7dlzF{;$f_mvV@C`r<@B8 zQjms)_i&(%EusgRJ?gRk2cwwY4ra`JQJ&|owQ9yfH7AV-*_oFDx-}(Pxa1z9V?|a6 z`b=#X94B(6uo8w~LdlP~8h{CxLbFaA!dT#Ndnu0kVu>#XHYw9AH6DIDQ|+#j*6)-` zeGL4(el{53p71}F$4s}ichTACb&82JI0UMF;ogcWu>amsyv>=pf-sh|=gBc%9s9y{ z02CY#{;X}g>R{CDj&0h8hUSK26|s5;$TBsAW79z$$(Tao$DkA>zS6ji0r=ea4dzW{?;7{OfJS|kuZCr zoS05`hcBoOeOtty{kao!CDFl$KznOKvbN8}vaDJop1Oek{rT^FjX!JSdN1gV4R>7xkSJBN6-tvD@+g2V}>~D-B%WCDa zDphx><{xQzziV=`2nA-gNA>*aXPC7!UDObccSQd^myOvr?HO7{>UW6&j+ByUi*L+;g2qbaIJKtZqT z$#7`iRXt6@(W-)Jo38Yvtg8}r5NP#SMYrOq)2^+yXCg94HRxTl0f-{@#&M$$#eWm5 zkyw?EfG&g)kQU*SDqSEiHNzTGR~;rQHDxVFeOCw-!8I?;KRQ$=>A4*z_jpk(LmH_k zq{8T#NzpDr-GN0K!&To8fpfyhhwH>WVoA=`?iaFn-;AF>akP}+bUMI~*ry(_z^wcl zfbQc5f5*@gQjORkR8-X`R4RbbzH3Yc_@}zOI|>iT`3H^?sjD%M)djpKA$POpxx)XG2l!Pd`1*t>7&lb}bdG9B`RN~AiHuv1|##y!to z*OIR8aUcMp<87f45ekE>k)xCfqIpb)aFVzNsmpsUbxPDjLRQF7mP}1P*yxm2-C#g# zhtOOXD+{V|FbYLBchdrM{@421HSJ3;4MO9RA+5 z=_RA*7sYE-{e|gADRtSDIyr;^r#sS;muUk8Y;q2%bg$9_c~(F7#hv2!@G#mCyCT@r zW1cCaFFM3y=79e|swzsP=QefTdRX+j#E3BbzBFwaukqlbJPcWk6I1BHxscfYJL(k zI?yH!n`c%PHY&2FpsdusNSXW~%1KoXLtzNXm}_LL0HvMG@c zYwh|P-*ELAcRd$2f}H}UMqJPx*`D%iJNv)s`Pl-&vgiMeED()qv?DaGyxCUztpU7R zCiplJg!}HQ-nZoQF6UP3SU3mkSI)}zl(WPX#=i<%4nRL>xq4B+)gbPK9@qK4tmc-U z@2UQ~)N=~bJBrATJe1y=9s$MN3WA7!Dx8kM9-s?8w;`87P=s?TG1Vefh?nf1Ak~mA z?xUuQ?5^~n;(mT+Cp)lj;bG~;l&n=;2~LMlw+3s)2}MD|wi1KIwLvC`Q0#f++lcdN z#K=1Sd4X3OdT=!xOAzy%GsQJ=r9ujTo1#4ULwJ-5 zszMQvjII-ZsD&v_njLD$39NeiCLHoZ`8cn`fnZ3V(Jfp3T?-IQn_!&D7{C1M8Us-O zo54c}IQf-|@RH-}+W^enqBlAvjC_#b^@^cp+fo43bggb`ARfqF>XNo$MMgFl2L z#)(#s%p>dM5-5A_%hG8OwzYyfuMO(0K%jFw<}BO zljT1NT)EIVrgZG`j2ezUw6D|ixU!2rtbDJ$M>Z7X{B5!EvIYq}@K8u;VaCG1Dd9IO zi*bG2gjqYb!!u)^2JjJXLM|{O!o}Yq-`G+E&ZL*`i^5LV#rD{DQH~qFC<+l)>vydm zTncM_MfF7`OHS3CXke0|Y_A~`!YBTLDz&1VPab6RAbz8A*pByOSqvIDoSoP!q~=rt zzCV((PK?PI>0SzwC?+{W&21=D#KQ>>R)kreVV!9bJ$|nzOt@SM+U{PX1v35ZDO_Ho z5uU;>Q9#gMH#hUO0(%__xB9`-6z#jc_kNgf>|YAYrteRnny?gIqcrZTo1B=_7woP> zBs7T^i{OjMDA&k$4_Oix|4>eiD4-Fe|n&)mi=0wZ7fDIfT&@8DusDW#5>_wL&=?zck@eR%D{gYH(%1MIXCc}5*mD|##4l< zmK9ji(+1Iw(~UEuBCTyKXIhmx$dl~ zMx4FmS8|)7X~HV4@pWl8K`jW?1A91*5Nkr8R*@SVp++RSf9~yv0GgK+PMd^raTr~q zi(d?)&rhvL&X{P2&jzABBCd1gS3I~}PVZgX)jxglFCN5P$)g9a$Obeamy&)1n&i&8 z%7EQ1ZSbEJVfe!&{S&us@pJzn&03Q0yaJP>g)(|xG?89?{#@qGT8ff}sQacmj>_v; zxY?41H$j-*T^s1~3Vykmt&~2u-<4i|wi_wCO3t?$OtM<&c&0SFX|m!#dIx=7ggI=8*;S49&ij1^^bpE_*al?yMj-q_OkU#v=GljB_%H~GJ{ zNyF3z!?T2qpEY@Rj~2R~$jfTW7QfVM<5!XrX(NpJYTI)47wp>6sxJM7m8nOGBj##u zg4WQ-phJ%G@L6f3%@t4O7{6fCTg-1MH5=k#dM<&bq<}{QcTn>ONy>U1I1b`B({TS4 zvmOd)n*qoq7IF}gg2etmh24QVNivcdT`-E(B8jb9MuYj?g^kwESy_;Ue$rb`HI0tr zA_5W(FWGw}7zowtt~IO~o#$9%mi`|&w^OGD$R@F>0Ry#+ zeCm}L+z_ZFiXPE5)5bM#I*kCJ4D-zs?Fmb2pvHrR@2P$qDa(iu)V6glK_|Dw2WiVI zQ9@~LK$!yQ5pjs$jtqn0p4LVK22`iroZ|B>lE~b0mA;utq_RroePOZ5J#llO4^(<_ z0BxrR0YbUa`bn{KCnzYjXbD+jZQM$d?e9g*Z5?tl1cc5-p8b75>DyE-D7#qA(}zqeA|-0@lLQ%a0>WODMM zzrFNORVezy1$ruJM830jxWreRX&0TRSBqW5@#@y}wrN_vQ=28|4RcTZjgk{s)Pm_3C<_B794*$u!k`1o=z*wPD z-62v4veAY~w6irkW_`BIKoaLvlsYW1@EA+Ov#RIew20$Q(CuF9iGk-V#t;qBU)H*? z$)YJR*C}njz80wzAv{O*%1J{3gCF;QBHjMY;pEx=W_C?|C{K{1i|d_q$`Do#!q@^D z=o4Qtkfuj*NSh^h{4E|&tJO`QHAEMqE4__o!pedqplg|y2mk2xyw9KoUq3OR>Ki5&pyyE};TZ1TcOyml=z9Ki; zT7s}R;gDeQ8TsxKIkMGOALuf}EcS<)!O2gv0`z3q=K=y##U!&gw>E%>ShPXS4GsAn zcW;d;Ak`B};g;B3Y~C&JCmUCb_$cl2Pt$|D1#)eAu4sN)XVJ|#EI454M64_U9@{7C z0xW~uZhlrt?$zMTzp;NG%l*ETP!+pr|6!G6uAr6+iDu@=8SS* zA?tf&$KREaL8kq(A@J73@(YcM9j3AVN0N~%XsM0i?~2&zVojt;U#?&!_&8ImbqZ~n zs#%ZEAS{iy?`sM%vC#omD9W>gIo$7q2>#X5IpqtLc1)qakQiiuMxB(}nB<~wYWybP z0`h8lA5Ua-GjdF1d4S%2&(ND7B>C;6uv!z@SXhRE@eFAWY37HEm6;b)tn57xybGr> zqoIYKc$HPbQ3SDHWR2s=s8j3!B8 zoEe%5OQJsZ#*N%J!HecAL|nnvxhzo!?BWn9<9$pQ(-%*eqd0^p@^97z=<$d2#)0-` zv|wl)PC|=9(T0AHG3XDz9Y+a+x*>9ekij34 zrQ|};Hi~Vve&++H+GI_N?#x1XX=-BP1#z1fdA-aS2Ivpr7CtRE7U)~c2)(x4`$+@V zQX`N+cW{C{`#br0c1;l6n?M-YUYV_-(^w7ChrD#yKo7vtEig3T^Y}JNzVycWHbOtQ zF&sT+i`-6Xve)|PG}&Ynq0a$S3?DND0CAc%4lCbxhbB<){Auk;!I^PLVX zOg#MS(0e=f%VfGm8(v429JcF;>!f`9`x%MquY}kgfPep8=aYq^-?W9xJ*uj6_AEKg zb;Dr#Gu;j2li+1`{B+ctW6=(WadJx^a89jpZ+$))8aPNH6{n!F=n5$>4QS`Z9v=T=) z(uc0)O3!|3hqqkkFcLWRsXfRGE?7Xva#jv6joVo-ofZ=v#VO{0Gq0C~jD*-Yz>gXU zht6@CRAF*)0cym{?&aXs+VbUfyz0HaK`U9@(6JAky>OcNv@2dy(Z9Qz84F)uMHQyo zB)hL0z>4mIEF%$9;R8gHwcH@J{kQ`qO);`LUOKs zV16!lXa^@OQi{@+(RO;!GYNI89ck)L93|h!3s2Ve&EQhcZVn_hYt@`cQeuK5+NiDy4v!ST%d7m|C1zmpHec1a)5=aM)A7J%FKMYU zy8e{m>tHb$w_#GtE@r-xzh`M6W7UO9R_=2g^a4Ax-RA{r*oPTPDW?|>n9e+HgI3-3`l30E~W!erPI39Xa}@=MT^{jzV0 zus5t^aa_|$_0Dicv5~!uhI;fSP;#7`d*=*pVrfm#^>;+JGH;z39FYn=4Fz$Wf5g&1 z#^~Xqd7ZnrQK<3Lu}OVqUwDR<|JR-$cI`^nj7gZ}+gi4*hAX>f79+puOPc11mJ;+X z$~_`sLVJdI6;5w2=ly7%cNWvGs)kSYHU?Kq6`J9K`ny>+bdS#ha~8?@onQWq5p8QN z)d@6^xHg!7V5P(hLwtz<=QrvQvL2iuS>#0M%`#GZ4r2x-4Ck>|P-dO$-9)~3iOgVm zqY@d4;VeG+UKSZW%8H+T!{F1$fE|W{g0apCXnKx}#|iRi+l!9osW2OVQKYiJuber{ zb~C{Z@>uDFHPZ(LOEWX8zhhj*AX9tM0~d_Gbq|e79&NBj;*_R)ADe6!MQoLA6?7At z75097)kv<7ZITODvL~2MZgjI6oLSs;gPoEgX3|Z(SGB5ZDPd856s^Lfe?;FQ70Axa+_ z9miWKageMyyI1LeRVs3N0XPSap<2a=u-P>wJW;4j13nBz4k=Z;!k;`)<;=@gcL;rt zL9utx!l?*G$=?*4Tb7GNou>ufqTG%ko5&u@=blXQA#maay(jsOmJDq~dajC%U5zgV z^HHM#wE-&-*>sWDHqy8>tVWcUAAx6KCtVrv{abU z4)#E?y`*(lA*)~zle~OIgY5VDxBF5ov*YU61_=bbwzZIc!mNl1RXTSWu{GsQ`l7{nHt-YtQH=rZ-s~W1kn4XN?b1sjH_^4=xzFDLN9mbrzKN~bWRJ~ZW05PCni3}|r zztbe@1AAP8mh4M} zrN=FQ2|pSXw{KZ)ISnmEp#feqXn4jtw_iIG2|540d{-+poAC-KOB&faLX@S`vzis_D7uXWwN1&)m@R%apc1dC>LpsJhF~A;InQYi=kwO= zziT2ns0^0ot&s_T-dv1BU+yLH_d;r{)oQ)Uf6$G_6W}89pfeWuhljq;yYq(aeV_8` zW`;I(=fM&;aREcR$Zib5`>)eW86`Abi(irANw2px1snQ=2e0Soh2JNNuovV1u$3l3 zq1jl*5^ca~Lh_8Lv6CV3n0BqspK~xGKR3Xb^{J_)xgv_NbF7Q}E}L!L6M`wG1TqPl zkkpZn-wFv1^ok^K8YG$GI4nn~mU=nAW@>+tixtS$DsEBltl+Ckx6$!~SYV*qG_neO z>B;G?00MOC14e5hE)s^8i10Mv2w<16%!yFE3Q8MQLmADj=@bxx#jhqyw*S}g5D7)B zzp5Jm?g`Fh0#+5iDy>leZq7S`3b%x4W1$|Bqfqwo2wajNGI&sJNKH~x#I1UoclX#X zc@UM8c&l8n5fY11h$@2jL&k1Cs)nrKEUD9bj&h0z{5N;;SG#aWb?O>FyW= zaR}@*S*4(y108NlBRzx$AY8kUHa;}h`T$$BG9LrBYw**Ce+&RDFJvpxm&L>9m{`-m0caD&BOvX+m*7ee&BU~S!MlfgKC)w4kEZqoHlNr+J3BCcW@kUnlZv?^P4)5;; z^5|i2a>!$-f|h4=zQtQxL34ai^^DThKm7&2!SbqsbCPWL4*ueWk0{D zeigbhF&0^~FQo+h+s&WLG8s%ciJcgD{C$aWpjwW5J5vW~q4#Q}{|t$IyN&PDNlcdp z^zKxfgPxK6IT@$g$4hw?nEhK|BcOUCa_9_6DKE)HfpLIT;87eBX+Wt+EEvW)j{(ka zf4_p4%%&Kn^Iwv;Ws?IA!2UxsggakTN23xWM0Z{d!B_zI*@Up50_~J}`uRD^>$idm zhY)Yj-bY^JHIGrHP^8Qg@*DzjkIQ{&ySI~_D_t$JkzgS{NYD(5 z8J)j{W`ls>8gHPFu*34)bnprzuqx=KvL5##^07Va;`<{7mJN*+4HGJ?zozF51VY7NU(#XM5A_aV1 zaTj}Vi$SDh%d}U$+$WsI0XihVSSvy}8Ra(f%g+Arm7mc=RWHT=L?7fln+P1T|654! z0h~OOYuJ93V>~AKZo-+cNuxt}IqkQRTfBXG9>?u&t83RTsfb$i(w3pXFoCmkx^^c3 z458G6#G_ZgW?{Jf?1|FyG6N`I<+R{(n8qT0V=+DCi1j+I0mrpR^S*^T+d~`Lv|)QZCdWoUBBpLY=EOlibc>6u^TEY#T5SJ}!^MLF6~S~}vi=@L zA2nX5ivEb8hKzJ8g0BLbXi^*4iQCXe(0@euz7A?O99 z7%=+MaHLLRV~;tFERv2D>M$dffpXk9hEzKD$?BlovC}&;E&{)NBlS%6M}FxV+c!Ue zp!(AZ46P*lE#d5kakYg~l}k|`^{c7)oPR5wk8LF)rq%~qhQ;i5-w|hdq@>%7$ln64 zxjOz{I;l=eXk8L9240FgKl3WiTjI@Iu7fu5y~s+$ly3lrpYUKjfENj*Q6nC}YJkq< z|F!~a8ARr20dhZtO{U}-MF&HZCN_b`$_b*4oG@Vu_E|~Il;77!ruRWCAHuR-Pvr0r!Q2lzj)*R z_s2;^#9`IXYSs3+X~lrhIO>9x{A)`ZvMI0yI+aE_ldZ7 zypKt6;93c4T09vXu86poxs+6%o$A*Mb{3Kq4itZ-An_x2`cB>qvouk2KyRiv)$Mq{ z9|voB=O#~>zBB$HhYei!aljK+bkL!JLwcQ{t!RhPvz-JoY~=4xRaZH9$!LQwD-w$7 zqj^8~)m7rEiMn)aw8r+EYO}p5P_-fMVEW$wkochdD$wbf@X z7#e6_d_A&f=uli7wDg1jR=hqiU<{Pi&S`w1g^;>2MX(pga8}fg81IZ@z4lP0sgJZS z5$d~^+dbXV*qTPQ`-$mDmy@nOu_V8R8g92JJfngh4+uG{zhX}E{woss@f^7eG^ygQ z;eAP;t#$`&%H~Uwx35Xhv8#6#a9?H@|U)^=$DZk#8wD=diJ@Z%@&yR-2ob_9to^zfFv2b-tmLoW!D-vKPU# zH?bzYsdarR2l(-gtFyB<7%I^R^tWuKop-)Y6Qb+6pT2HwdDM$%k(9+j2t)C3voe=q!5tCw_WOXvE z4#pVAG-broE0b7Uij@FIN!26O2fI%E#bRYUj~-vW_z68%8e+SlLWJUlq?WMU%TgNS zvH8KNAPr%{mb>%t`!p5lv%`iW{5RhDh-b@!)_**vhR_g1SahHeRkW$`;Si1gb6TSG z4wLk3qrz0So(|Gua6F0e)hmDA?BV3~ZACN8ooKqrB~Z+{43XY#x1sM>cr)vrJ`S5x zt}Qa7ri$A=KV6pcJ^oC4k#ku}(bTI_xEfm^J6NRZKNBzSET5L{A9p_YMB>6WL@jms zTkq}bAO){=K3zjXnu+^4j33jkOS6;S!cQKO8Rhqsx5Txn$vpPI(#JesRX|4)q&-ED z%ru8k92mKe2E>p(lV;Nb-pzNjfyHE9OVxFLRu+1eDozgjH>H;X^H1i*Gdn<49f}$$ z3M5P~I{8I53E-{g8bu9xp4h*P6U7X~qo_M&@ewiWv8xQknL@h0B@^}u6?%TKMwM%l zciM@CdnH53&mIGbiLhpC6M2p3R~DGitk{hJM1i8Yjere0aK~Syeqk)TQ1$gYZI({A zbmXRM%cafM*7r=@n_mBBTaQ?0@vH=?TpIOIdydtyNo5L6-qZdelju^>EKHpk?9q)P z+Sy%C4d!IDZ6*luP__Af{@`?>gebZrtN(6_C`aWncRSxz!(P;=eN|=47F?PPoFZAp zsw&9gte`FiZR_{du(oeq%*97|D%XMTD&iyh|HdB1M`WQju3+4WKL6rw8MG%|)uAk` zUv&FS zak|AHRSpH|=Y>@Bt$w+taAWGQTiZJ6np%!fJ4!WQRYZ@0DFvdCeb#A?b0F%UCxM=D z{_}B$(IpOk(Uqw0sO`OC!*>rycK4W88G;+0quZ^C)V+V02S|HKy(&ww@0@d<4Ln0U zULv+vcDS!m0|QJX%1z8MQ}O4<;Db@*Cb#tQ?->DUY0o^#Bek=bk!{OkvUZHqG-zQG z=Ev9Qb>f9@A>(T_wS#qhWkuO=Sckg%KR;r6?#3WSw<<)5nmGRcXwS#Y>S_ZMdmeMu zY)boM%hZl>Z%TszW*zkx8a#ye#(hS-g3nbPMq)WfH}_;$Kh*h~ z=QY~CMg5$j!@Blgr%QIpQ}W+nq$5W^C*RopMd|EnD4JS>1BO`Un{3{cR`NBr^CX;` z$?tQ*0xR@tU8jipxrx>;Qy(-%o3Mt&LLT-YSjUcf<=`x-p2*P9?q{c;U%K)`_TJH` zY;JwZe50r-(qzPPu}?>GYF!Sd8V=djuP zXoNK38;Ab$7rSQqGcG^4U48$D&GgE~fBgZq{n8(ro*)AHVOn~rLUWR3wv7{kDQ#y} z;8o95P72&xhT6IAkz4DnDWoW~rb`N}CQG!AuZH$8VZ6+M)k9y?yqpOns#&9+kgZ4t z;?E;hVSZ`L?(a2l3B=#a4&8n|H{<7c8s0)w=IBs<4&Q#HiO1@=ZY<{*j6V%Q+T(t% zGF-WDzWs)-tt|+u@Vr6 z&@oNg5&ccb(99SeIM>3lG?QOZBUyfj!9zC}D2}SZAjhhQ7sviqQKM!M&IV+2?dOfP z$^{;wMu|6Q$u<#HB~_!t)D<))uOP;_XoSY`c6A4AC>kw&zq2Oh_&3CLK1yBL?DsB^ zgzsnXL|w!aNBo^0TH9i$5)n~a@vx{q8C@uFZ4)oR3NMkJ(Xo4)A{SbbxxL7VE=#?7Kf zSb#G^B{4v+R$a-b8q|;~7@!+q@}?B38@XfhE$up!UQNuu-2%KSG+}+1p{^Q`uD-LR9!VJlTSIvNI%GoO@1;gCM_qtf$+%x$yy3 z_9FZC^968k5TQYx`g#h=T6;7hVRC>;e%NR8WuZS#NVbFk(MM71GC^&{0*G|?nf2)7 z8=v4ovIL61*nhgrKYX~ozx^;t#rv&nFO_#t1xu7FCseFE)K%h}Mq$zMrtI`v37uW$ z^N@*GcXU4|2^fZ(Vqw-o^xU%cF0xVg<7Q#628V_VRj4-7rGC|7<=0t}zMUi_)x*f5 zKOLVve=qmI=zVyFRhvd_##By)C2ayTaNwMz*Qbt=lTaqv>;LCerZJfQr#q^D`nY>XDbX@ zhr#VRn%J2sN^8a^-j_`Vl+}Izd8tGz%M+L3Go)4Q-=rGE|yCWRT99t-9YZz~>iz}C&Xo_kLDNt}qI zv_7%4qDTjjcM__n?5~fd&-r9w^^^au+pS$T1t6 z?m&Khp@ikhg=x0EI^g)NG%s+65hj^o6q?t;MtYKkgzsI#wT&WJKr6Qig z9r#Sa(P{weyxcXDPn8+{@gHTgf*RVpHOR9&z+=Yp;V@nw>hT`L=16wGgeZ0kRu0kVG zq}u5DMnARak=p!>MAv?W9{gu7pJ+n9$&%4dHtV&|5N88+n&lug>JCMrHIXm2V*T*t z9n7N7n1#-D6#UKo*bXhohR)Y6SGaLr21)bVf}27dfPogkIj|J#&r>TB2g?NKHK z*rLN3lulE>A|6|Wa!^C#8xk(c3U5tQiz+cZtVJpZG!f9fb!`&Ywe{s4LLs-0ZlH{R zoiYva&3XNie&MUfjBEGye9OLJUUhQbiE1bP&Ojl@Kfe2~wj-03mj5v2_AGo`mBcIB za=TObo8hwK&bJgQ(WOOL24ZyS90mldE%e7MK~)MxbvnC=I$r|ybi5iZyjenl zNsYl^c%Cb~CZWKbgyUWqsvGCYpmG#db6r11(Vwr+m?2Q9yf0e1l*-|ps$4Qg5ax&J+XFQ{$!nR~Yg^|zT z*X2K9`5(*)R`>!@`nnS)F;4=P>zBMGoVN{m?XhTKCj_YE`PeN8(c_&k9V$X9*X;ak zXT;|DXn#ybGY;wY9}Yue0(y{Hm~4lHg%<)m`k%M}ou(#V(H=3)KA|uJV5y7q74-#- zB{YhJ$KYI;KimNpOUPKO%`r$QBml+|MluY)01pW}DipBCp(=jg_XJ?vnh@grXt?5{Xi`ja2j_a4wt}%#;FZgaQ`A225;6(Z{e%71K6rolI4ET|mF3U}4Z@ zk)>av(IyS@3WeNpi4^V;(>knk5BS_E`JDCE3hbl4%8h6xE;hxT^JDf0Wmp^}oKh;8}IcjH?i zl25x&9D0YFjxEBRGanN{$+>f}MO~(C(Rh;QJOTRdL`?EVEyhswGcF^cA5L@+bR@XDlj zfucWwW8rB>wD6lD0>aN~5aF4^v4vmP0K5F1VfcWcZI1M;*U2zLby z7I~|WU@Ax>(fCh6I6HEtShYYX6t9Rsbz~s90)ZR;#gQ9?*(4Nlsxc5@tZ9@?!-NFw z$gZtp6m1oDt57^U5f=J(jH2~WwcQL@mxfD9qISKTK8dTp2WLtK`l3FX%SQOMLC%?6 zJ7fqw%2~HRFIhNg9ihiKbD5nP_2m>s=yA^d4Y~ecF4b}J^cO5j!CZ)DIWQT@KstaF z=GD0`V10W;5!#@4kv~ZD`HDB4#?5#09UI5F$s9MC?|_3&!hV*wE%vb`$33Qn;5l?N_|ui29;s5qgVj z(SNC4M7+i)uZ9E0-DiXN*$$y-r1{3f$J?;cA8UcjV7=DRd)pb$S0b4 z6Ig$3=4<)npK0T)7A@SNLx3lnCi3B-Z=rK2s_zuJU*QaDawB%Y=mF+m)M!ykb~@1! zJ`Oe#$)KHl5=nWQGx7X-WO7p<;imoy=}3VuoC_)FLmijNk(=(KRWG5avI{3@aO9@< zGT7M;Z^nIbDD(z#HB+nl?eVq4`(b)S6_&Z_wq+K1O6e&zuF*~9%W&=(4VNFHdW8=D z7)o(t-qtFHJqg!Qx6jokiEgz*(F6a|hZhTTjZjqN6o<@Z8zj>(Awl|ZuOekRDsBSc#NWy-?T@a z53#3=Rdm{mSY=*WsA!-(nI#lrdzpF}=1^fmtghEzTTKTH(@t$W;@c~dPiqtc!PPI~ zjhv5~6ef{Vkcx!-IRRf$Bs&m|&<2G8cPsLJ0eW3w_IdM57U?N0-n`K|ga+;B2%A`#Sw}{-l9D~47MV=9~g~dOPoU~(z z0JM#NDDx|FS~-XBkNlJ`L%i!{%$C!B2QWnYR9e299)1~9He`k5^2N_y#-uNlN8c&y zVK@DOhxnfx_eM7VuAAp>_6c}u%4gbq-Gri5^3izk+Ci^ay4AhHH7GO>T0Ip9c4zY5 zz8k0g=?^VG1PM6d|2cSWG=I9VMw%vHEHal1h0NodJU{0eKI)=Ri<_oy`ax1gMA!xkZ2~K$2xN*+MJ7tJ4iH(xdXt>^=E4y z&1QL{keQu7B*zyV5ccN=qBM{5mmxnAEy1Ys4CicJ3Ev6f-gHEW^i>vlv;M%F=MYU! zz|Qc{Rp=mRja5{+Q&(%WP&5TTBuUJzk=#i_!JWm;h?gp%&-Js_Lczr?#pJqvtfB_V z-6Ry;{rqgfSVbh}>?Rc4HO$4c8In6pD7eePZSR=A6aBMd zm7WRfO|b_#ZyoY*&WvBWJjUmmjv$XWN_c~QDrXLO72{)01wHCSmt2nI-?ZU;KFst9 zxb~izK6G{zc{sJQ(uqx$GgeDG9pQGm21(nA=m@u^f3>Cer)tHOJ$NI?jkBj!S9PCI z7^ypRu|L)COU*433T`@fUGaj(Fb4_~YmeCdDc%ulk`gb2%vi(U;VZi9INR0 z)$nNa`8HuEi8_GYfQn-}YM3NU6!h2rpXm!1>e|_rs@)r3x%?1)>O}8qUTu!9G&}J+ zPLIWDf9jZYYkWNiNwJwiQG9GY-LH*Rlqt^+!;z#tV-+1*ZRxRenmkr36w8cz%xnLy zYhVFv$j%jZy->i08(4oEHc+ZGR48EoGq5bcbg7#}%od?As2}yh2rm0gTZOkzC@{G0 zl8xRXnTCm4Yoqfag=4}_7d`MSHvj)$2k3_hE+iCqoTucnvLw?m+slge;OmRZA_dpx zOB^+ATm5x>8~;t;*5@c|)=0SL*iAKjd~nSgTo7i)0Q!|fhP4(W@1Ob?4U_n2TF?u!RA;47)D`E*^rWd-a`y-Y_kOet#!)?pZWWe+z#g$4 z$C2cKfDQ?ToC)altV6f2v{`xx1@{5wcD_$hKgqpQD7cf*D=)rJQ3w@brzT2Z)|1Am zXRZ~eu9gRDgu)GNr+$S6z^T(IfmyaAZwHJ0-7D?ZO(-PTj(iL-UCjn5p;0JQUBDGV z+}I(xM}&gA#KaB5JRnS%QM+)vTcPbESVG#4l=7XnoJ2${4rvu%g~$s-dOhav4f<~k zI#EAuv#xu|O=rGlQAdd7-?Y#-)~FS3q7)46D=Y+`fv;f%$*CY(VPQxrcnw26C6FhV zezvfiHtjWdTO+b^N`eu8xZD@Tk?UD51gpl^@FJJ$_^!I6NQ7t>Uw7B%b&EXsF~wY0 z$_h6XAeoRkjDFZ@?Z zTdffaYp*r1+W~W5b)TXPk?TA=_B0Qib( zMc1rD?AQP%?^Qz&2?pggLdXTw$syGbZuuN&AD8+PYGEiFqZV5;)gLv&a*OTob7Z=46Kb{^C%S_A;mAdW%w6 zC{e5H`4w&&iX6Q{pjKD$i*Bk!4*OuM3qDx49w(9=38cS=aF~6fX+7Mq6}i}@p#^;1 z;_mepVew8&IO%#LZo!blyhOhdy>g|4B&a75VZbL?64y402P$M%*!~638>6 zB%6M8Vxj1G!OEXY?T$yxBS7w;0%ujDgWlr7%kiEfyV)f58O)b)X zjjv5M&Flb6UA~ETXl8NZ-c7PYGo6#;k;D#-PA)`Jc4&yEcfbbCX5_KQP49q8e}{A= z%6xca=eI5LR$B>p%P@z9UW%MX_l6frNK0#W`B|Hs@ z0s4v)e;|P?OCz+p18%?zy@T>;4HtglyRaV7%Z#0e6kFzHw#=LFV!ueMU*wO{Hb(7# z7rvYBPS6ql2xs2#9=0$|-u-;T=ZN=E5^8#XN7VE|r0tq&Oyhf~DgTte&8S|@5xX3Pi>Z;@@I+(?i3pLQ~oQPS>}d-qO?RU6Q@U0zX&Mufyck{pD&Lt z7K-4w5k+GUV4@9c74{yXfNe9dBY?T9sug8QL7#v%r&>|r2NtD1S*>XL2T;CR(SZ*T z<+0^Z^qX$DkWk2M#e*oi(}x)Ua7kvp$ov*8T-Z4NLrY&%HtnbuFiR+^uWx1Kd$}7$ zZj(^R{|-WM(fqrRAMaNKVuyC)RT+QiG9>V)WD`BY&3fiXII3k*1CX+N*du)VYd-SW zj~?lW9yS$eiTaOpL?2uF5k4)L$bIY;miiHL(mEuNr`%UWTR89Zt;T_NvIFHK9muVu z-OPRhNp!4lIN7unhod_pG-0o7RY&Yy?cNGsAot7FiZVKCXUM@h&=0E>xjwci^-~1c zk1a~xRjug$k1g#T$E0u3@7fBm@K<=VfF@epet)4bbuQ$mj8pUlqJlvkfw1+NHpk>$e-B`LB)fBUgItHgr)` z8ix3Z^X6?cX8VcF)`GO%?=&X)6N|b`5~(YN@@b7j+++hkiB~5-?5~pWV|2+-im<67 z4&u=_F--K}CWib^EYcS_RP*(fQ<3JOTQZg+gRgSXfRB*oSV7eu1dCsg!9G;&fe)S5 zq9y9PWaO!N#FfmaytjO2&9aFQJq{;}vbg zA4A70`t?(Zxph)Xy-?KfWy~gVTSm9fpgTvmS;C(y6k4%-be*e#_WyK-+@{jSpkSpE``JNhmLF{{Z6Cv9BMRXedG&7JTNcfuXWFrDxaWB%NUEe^~FXg{~ZS)aqI*&~p~#O`{e zxdCZEXN=&C9A8jhxT`ZC`rOj-yiMxY28$w|zxcVt^KG9?Jpb);bkC5YY2qfcgvQ15 z)4yQTB0Mw*e}hn1=m*G0sJP|}2^Ib?BvefL!Xg&}d!yjZbC7R`jpy(jg8X~<17YI_ zJcqEc=D6q31t z`+7b8Kwp0Y1>$C$V^Scwb*n=yyRUx*k-D!R65J7?Fc-^5U+?fG6iWz~1*3stzZ}pQ z8VFYLtC5K9Qf=|B)uq3r_Xzcbs3r+J-WPm{NoH~ad2(oC5{?Dteu zZP%R4_usyTJd7k$k}!~b$y&v#mFdgz56SVB`-A!Zu&qsN2VHeXT^}NH@K674^F;$C zG!{RGaPG3m6ZS`afuKK^e^P!Q4#4z?&Bn?2S^NRFdv{sn9z9+WbxI(}!>wYj+2a-U zl4AM^1v4MVC|&{@8(+qLxErQjO`~38$2c{;>75erv-n7qK6YU5d>npO;eLIDqL38* zDx|k>@g<6Y6rtFgireDD?pAkUW(b9r+p&9#U2((gD@;hxyIZa`;}s2)>|CLEb|XgA z_r@z)0QLB%Yt_P@CKRx3fZ?ZWn|8@|-z4E0)J;TW|8(tJ2#aajh&1YuB3!m-EY;|V zvlzC_!cjWl!16eGH|DkxZ15v_-ELm`UPO*PoYsb{7enIKvKT|Qh-$4uVTM>kx^dXQ zS)M(BrgeXUHcrtVfg27}_m5W;*lkhjkK+|h+ij8i4-DWb2~QhN0ddPw4Zai z6+=<@an1->6%BjfaKi)0$6DG_f>suUd)c3-hIp1u6<%W7|{ z9_L}O<;dF8c6__JnmcKA>|o{((yRn*)#Si@a*1Xx&EczXnvmzq%?(FrX2LI1-Lz+~ zMYx%3dcu%b-8AGYbdv0LKd&6N(!1$B(a_plH`u7Pz!5>s?R zUZJR7>@dPVwaJvHRygFRHsxQ-Pi?x3p8bUW%};F%q_05Ww21PZ!+6_TaQPe*~w4R-A4OE2}?2+>K2}Mn}U>(Yr z43P*;5(@4vob0$Gq^R}lxCzPMs);k>VSIO31T?0`YZ<0rxl1JM!zQG^;#%B9HIY97 zclkcuOAfQbrTf_V)5&p|AHZED7a@UOr+qR>WOow^Wq(JDqMnACB20K)yH9qNT=OWn z+9zELCMX&z>|sJ7*}}_+|D%y^4~G4C%j37}UG0slKN@7V6H#C`>K7)O?L>qScb@G; z?N;r>r}if(suhRps)*dERMUwGtZI8j_KAiEgtk}Y|4{Xopx;&w1;7Q2D-{QVnLga_ z{606#PPA3AuTtl2xq)1~NIT|Svl>gm5YdZV z>l^l4lv06Ph3G}Dcp);1eU(UK4fCB&+mY}^ey!j6TXu$v$?+ni;0%3{VB2}yPD~(k z=jwhZ4sc!itsFI#^sH~Ov`p`eP1izt%0e{Q42;~=`htb0)B&!PDZGwhmm@PobrxFf zUL)>(%rod4jqPfI<%?N^F#tr6OvNSxUH&ICo7sairFHW|L0ps0j}@1LNk zT39$FkeX1VXcx1RY7{jJ3%__w?Ny`5`VMQf8b$rOXjkqp^fDs46K+GUdutSBNp`MK z^cfaXS)-`ucNnY2)hJpl>_(x0m7!}fw@Gq02?cir^q*6ss18E3aYRY}ydDO*qfin( zq(vUwArv-g?=5>Icb`yjb+>od*C>>ungMhgYPX$?OUVh@b}nz7e?5eeC zJw;O!95AsV{jtB7+OT}&o4s4D7oKs`?`=ASzscU7_Jc(!IRThTnb=Go10G_-uEnL@%Mn zXW1mz{)lE`zsnVVkx=;E7Knx4l9 zXe(Ilw%4Cl599~^xwd&jr^T5$rIM(P@5%b*M|>|6DTJugeqsalA&2IYtJ_3H-A>gH z_Y(@eI^gyAza}cW`X}@~z>0)DNhn|*1Iw{tjl$j{6tEKv>;W6rBJ4v#0qbO7&)G1N ziggnT*og-Az76Xk?14f7OEs{c0Bg4&W*$XFB{}%HLC@X=zKB`Zw~su=oK4-dWyE_^ ziisAx5P45N1hWQ$NMqo+;t(75B62L|m+#c2Q8Y;u5uO0O=)#N2;fL^p&65(yQ%S4% zs-U&lwE2H3h%xc68XC=7&s1@PZ@4T-zq`=Zt%qu2m7`hDS?0*qGl35)NET(-a`Y=N6NjiFelOMhmITucs) zmqAw&-b`(P?^vO|KVy8YMb-#XnEo7x9ll|uJufj=1da`SUzBw zL3cS~Q7W$W{MQkfB4)9R4r6EQ?>dxZKoLucKRGC z9@%IHZ?CAMxSp&kgfytE#0i_+_?^YWwEG!5hzn2c|sWhK#S)+qUy zMJaf{ORM=834M?bn$&-h;$Lt%RB;&&PL*Eo#gP5(3%=*zwu$tNF{HD~>7T_bXcU2d)jgU(v~bT3V4|=jeJC z2t^_IU8CkkCAU&2xP!3FC;sFHovMotKt8^-k@Y9ELec5M!q+%Dqi9M-xsRA~yNZ3g z35DeLa=S}z524`da@&0`FAxkw3ixK6;l*})HJ_{N<7jWU2OVg*)<3Zac`Bbac!+<3 zbuzi69*v?bE;{FW+zgg$VWpx$BJWP2eTnE{B1-+B^8X|3df=oQyZ@QH+r3*;+h}L$ zB`iXDlkE>eSP4aCsT87}cJA&@J3DjD%+{8$Dz*LJYWqjB2)zoMLJ}>C5Edbn79sR{ z7a_#^`+U!Hp1U(!-d~?jd*(UkJm)#*Jm>j)pZi>c?gCr0Mq`Ru8&`+gt|_`;KXf_o zhi)QMoxW|`MRDW^gq^hrgSWBh;Q6#qNSZ~@r`>by*ex6+OqBv5=RwGsh)cs$FA&FT z7t4ijjX?0@;&OF2-WI{`5D4mO)VkVD6)cH$pgx9eOP>9=AZl$%-SMaMv`xzUI7@~V zodr8mAS6HiH&$R_Qy_c^f#7$qK@SR26QK#Vs*-0oTwT$K?bcLocU2!r(es9i9x_SY z!lWMmyx_qu_n98kU9x}9qs1IxMi-B!=lKQ5zmSa6>mD@!QHF`xM=p6bF)#V)ICKse zE9qSi9v&|+5R!OGn|qvUTJJ((^Vn$yb^E8%t*<~>o8bXDX#_6AbFi-6?MS>lW~-YU zwM~_0sr*T{Jz}6`yl$ApIzPZ~1A5Y6s)I#TgjO*}=QNWrKCUoe#}#QNW$zVF`9-Q% z=UB%%O4D#tP)*pNox-RyK<#t?Ms2PSSJAo)QWcKiGeSXnC9PMUMRU_k^;~~z8s=#z z-^M#~@`BkX$_Pd|^tEwllSOmV#m<-6&ZAnvPTZDRY)9x-R=YRjoI-lf*fqeSFegJ3 zZQ8-(>9ehrAL`i;rfHJT(R*c7Z(tH~hRK!OgFGrt{(|O8-o`J)4KYn3e?8FAF>;pW zJC+|eO_C!t|2A-hX0d6K-|2*@W*~lf2#+>U$g|+HBf+bSisE*He&ozQfR~O>BX6S2 zp`Q%AXV=$4QMo`m^j~HhZJFe+1!e+GP6N|qFcHG>gfw0J-DxQPAllDQ;%D|#b5*b`6^Jk^!}JBu?7Or!)$yJ|txYoVsJ=?r zG<(XU`Y71(sQw`oNG6WiXvUS25%MFDKV*VI+rVe`nPyOa|o@UT@VB_}< z3q=1rK*D44%r@GzY9W0J(=2==i%wR?{s?A#AgL#q&5~&bZSSG1ZV-s#`1<|X(+s+U z*%m=7A@3CkwtFD$xoHMH*v6y|FXNpLvVNFmkR!!C1_jvmPCZpAT?8Wgy`VCGt?;h_ zh7bSL3Ez5w;9r5_VCk#S%KFE2gBm2`gCONjH|V=ICS~=RZcwJzq|8gF8+4-=-3a`j z-%IH*N+4vi4*Z42I>D|N2%J^}q{|WEcmt0=BX(Ll7}%}Cpj~Gx5lsSNLObY*&wSm?Y&gTR_Z-ExPaxRX9QbxI zv!S4-a}`^99|ghI1Jdvvz>Q$Dwof;xR`kIOnOWaVH|WQ9CS|s*GU(_`Q&nb_NSG}U zr$8o~q|O`7rK=vG)LFt; z)6o;%l{WDAOc=<0)y_-gu2S*Ixt1>6}L1iCheQ$b0Zz+d~ev zU1&QahP0P)y%R)e{6zpt)pkgamwdkBvRiTA0|4uP}zd-O00=0SW5wwHlg$ce(OWujo z^;w&zRMGVs$A!}U0`X9s?&8hC^L-|H@#H!_ED*zo2xqjyQ~sNQj@aV|*a5z_nyPp= z^Tjw z&v%Jd^K4%6jUQ89)RTf;@3F{#lu5qvL}PGv=*pwaB(s}^IpqmgMsB}USw-RUINraA zV)Tw2WfDs#2g2uz@Cbxc2UE_>MzGh>xx?R<)i01JEO85>{zoqGQQoQ;&_S2D+Jhn& zpp@}M5Ao#`*;%^GhdjrOu;{!jll=Lorja*7&+2)shQ4}&B7m>ltGyObE$|cWhYASpr;lWVciN`WOqbv3S1Fn0!rC2-%98+G@wL8BM6p2Rg z?$ZQUYQYt$N{=CWlLh?x-|{5)k8G3tO~8a`GEe2sJ{oh<(-9u__%Spk4Q?qr z8s1i)ENDDEjnITfBugpr^y5s6zvkk-mWnqUcFDDbu`$CLw7StOfB*O0S{$F`U*rYwSwew2MBtUK$II!Eq9QRGz%mom&>czgfLYJgq)bxp+bAWAxRlql&W@;eJmiINLCa_G5cl>{O| zoYK}xIfGg#*MsUyWX@L&)bQ(hEz zi>Mu(QWQTatrcrG!`kMMTq;`C3Pi;whlX`bl|c=X_f_OQmtTnlDu`FD=H5Xi0IpDMjsaCL!)K(2=;{b zK<$tePhgpht|>GoY!ki7=a~NM`dFpaxk~D)8v5HXx!GOYM1ux_&?MPi+>-VR@t{E1 z@{YD;pCC065|l0MtPD}uFA#YfFf3SbbgpQ%2N*7Er0|6Wg1=FhHA;}0*j!d~n8xhF zXe@|%jO#2XUpoy|nCf2f50iZ3N{GHsL*HGBq@z>w{$Y~8 zpey=j`kCW;9r8x(@$_5TIdd%f3(06Wcu6>nqT@6*9q4n8Mbx-WC=|h*>uP*AtgzHo z%XdwxdU0yx$#>1Ms_E?EiP$s8>ZY@YC)n!6huW@b9DfCvsp7?lPmVPy^O*4l{r6Z? ztspAI`bh%e1NX&;laGUfJOQ39^lE|N3qUM}h0DRmuQ{v~@*06)<5_gGnef2XMKIO1 zt?n=zA8rM&hmONu579$B1)Y7Iw(%jRDjOTc#)qK{Y^*y@Y}|32*w|6TcM=GtTpNFd z?n?P?LhmgQd}}b@W)BP!Y`#EEWe*(J37&GRvWtGw!E;@0UgPkTs`Ql*J>LqUc2Osj z{5favLh4=q4%8UPv!+%Vlz)b*!xwQq#47Y59oFG**5)dM?&@Sxhu4r)%$36YQVZq| zU{2wz6V8|aU(QD1#LMu>3MiSX+?;_~Z!D9*(Prk4N+UC%hl5psD;o+dKiIR8h1%5~Kx;$v**g)D3Sys7suF<;-!Q z9iS6|QkxDka`6d>26Yd1Z8znbe;cH3(zZ^-rqesc1~mxjWb9ddS!~c5Cz|S0H38WOd|#^)fdXNPTKOfIeC)Nwhg5>}fC_=|H)YA=;Yt4-7*`LGtn zvqM_VISP>@qEpk6;S{WL7z0tmBW0?LS4_O) z8Uoch3l|K~8!X{IV0^hemw%J5*!UKh24Fbq;`BC~cXnrv5xhNgVW~m6JybpCrx96r zwWFX%T2lS++&AL}<@}BUQMbcTw|EBBR*;&Ax=o6U**B`ZO9dit5P4BnwIDSSc~x9+ z3|5P7IE%n#trz}!f#6qV9U+d?zK;%^#+Cs@(=BxMWt~-gOtBCj^N|vF(GgA)4aQC73EC!K1NtL$o4_A;RO2*7IV_W>4#PGvQFl4rG2(@dXX5Q)Te zfzSwtMzT83Flf%Hh>ycZl(@~0&f~5=c{iu%g`2RSvCt&eLWvTh^{nOBNU0-q>sd$d zXeLOHtz=Y^o#@u}xl;o|*8ZlzIKp69M8mTuZ zp9deaH3|8EK(IZh***i?5p3oV8e-eQ_zkF8ZE@Y`6w6`jcD6PBbj*!#Je;<(o?U?8 zc+!|bjIr$?OZ05#SaD7_$)DF#^($|)6KhU4$%}ZhgM8ln9hUbDu-tht@?A!L>>>w+ z%0dbHlCgiDjwLhR?As+3)hH0AzokvTz6(5gcy+VsgNHhSh@7p|M%NXj81Ho)dL-lF zg%-{0!t>UrGEj*hby3Y~Wd@qnp)MSTx#U^NRLVXeF3c5a-Vi;Jfk%5eU7~_S zngl}a({ZK2`Qr^50k*$W8(O=1=9i@Ei`SRvYre;1Vpo&YNoJM)80lh%zT%rwo;U;h zln(vC)_sW-9^S@jN*g?$I_sax!o6(awMcPA<4rP_J`N~ui+eNB7VkznsUz8&fsW(_ z#*$|*JLdC$;&B}Up^$#c_-nI8$9BUrJzuXh@^Y1My+6zsa9r38;|g}S^ZDev!j^M} zJY*=N9j#BSw`duo9H2OM=>9fnr<;&p4}SOaJpy~cX`VU5puJKt`vk)Kmsv;o}GB+aQ>KO*j zJJY1Br)L3>?nh3M<-Q(T9=h%T@_foj}Ok44LT5zT={?k6th2Eds&z z64-`F-15A)N#g-nYHJyQ$u{ zorE8F-}b)lvN$+6Mp<`AAc}elYYDtt{}MzJYrbFT2LytT<)i2?!DqIP8?-H`#O)FY zwqIdjr?^3F&Vqq>x|nAxw*CUawhe4}(s(Ab!4I2+yj>vJnwtHorFcxI-{ zEpnp-sfo=aHP1S##ZgazA2Wd};ja-0el-)|^|!BBm6an9Wi8fu{eslQq`c@yDus-1 z$Y4Q_ytlw)^dr}>$(ZoY7Ph4V!8RU6V3JcUNKHf$YU07>)QdS2zz=h_3I7g(;8*4x zq0cIgMaR3{RBfrU)FUen{zSL>`Z7JsZ8UL~Z0A11Ny5P? z(SA;(=c*oST^sbtrz6EZ7STGUUzN+fbPw{ZYl9gK`I~y9+uyA-IaP#%;wAG-J17>l@byGm|awQQDftJntU!t-Ij7Uv`A}y$|Xk}A#Sjm zKx#qNhYMWB0$&h;%e)w}KSzqkt7Tq{S7t9cww5RP2ML5%@Cib08T|#RiHLO7GPvP} zg*;Ut^4<$?p_OQ2g%FYVZ(9ir!@w@n5p7iUEh*lTaD2&&A^MD7D&T9`+QCT0iE7!} zTaaRFYuVaGy%4(Rq^V;@kMdm5k8t#d?)>mm?r4NwDYPcR!g`MyFPAP{WtwIb4k9nCbz5i4+~QdZ}g2E7O6yUjG{ z*WM;&_MU0bac7%kmN*7gi=1r&Auk^t?QF-Oi_SJFv&J!K%-OCv!yKjOD1pfEsMd2D z^Cbs3*M2CT=-NGIm*EJ$uKS$0lA~KpI22D1Eo|#AvgpyX(P(g81TEzIBHn`BBa011 z;&v?IipxzLN$eUH`(v}%H7xe%bIhc^JrE4ajq0wH>TxO3yrrQ?knU-R)%^MANRNJZ zJ1mEYPuJ1Bc4(EioP+%ZhnBR%CetdUqUs!&V%`Hxf@<60%$sqp+P9qB4&8Gfq~b(# z+u_{TsB^h@?@6Ay?Nskxe=eWndVtB5=OUEX78~U2qXKt{DH}%*g2aKfN<3005EXW} zJ{|H3vtcOJuAeGnzq#WM}c6Mde7gd1iW zRNBX+%-d!f^gth3Vh<`;zRed1y(WSk0lyWZcp;?8!;;u;MLDXkS}ExD0wLvT3=Qb3 zRtZuQp{?qx_|t3~gxn|)d7ps>*j_sXh4CfmUgtp^wq4pvG;|UO{zpJWSw2B(VvDkJ zggihX@~+ZlU3Z?Tw({nntmZ&hO-2W$4#w&V=V5V& zW>n8%`3KTv4sGMG?0LRPIxJQ85HJaPo5OPU`6?_ob6CEF6h}X8=J5aOd>xsaxh(Qm z_rVl`-r;1M3v^`GOC;d?mi%eIJdijt4~Z|*$18*26MVjsBcPDk5Sg0nOJaKqu0v$r zeSt(~hEO#Z{O?BQI}oMG`R)A07VS>9WNu+yrYZD}KE70V|B(|1kw*tXnQ794! zhbG!FH%J;MD&I=5c;obIJAA$2r@pFsf9C2v<3f{sMMOWh+c(UjAxK4HI5qM!$5jl7 zqEI9Oj^M=>Ee0aW$@>Z|+IS%c!`bBdS-Pp*^U~Bcb<;ApuD0mY3-zLXY9@Ni?2A+f zc~>Sn$UYY#SWwlK=c#V&7pxdjy{gyQAQ4|L5Y>XZ)rSMPb?y>klR#9?L0z$pg49Gv zP!-GFXPuPWN`HSc3YEB%I5a^yu!}enV%y;=IMn%qi=@t9V}6*>P5ANzf*&6!<%w6W zAT<$czz}?W+A*lVkS7U5UO&phV7wn?VK6@BVpxR^sZ#iA1cE;sU#CQeG*ytAh_aN) zEjyUzsL|0ht|!p=g{EYJp) zyHyDL`v{XG5OQ*~{o5{<$w-GhZGS@ess)1oByGPYP8A|bY-xYoPB^h>Q7CMWDK9Lw z6RzRTq?QhNB6H!37LCeN4tR_mun?&+M2}_qUb5(!JX39fH%T<%d#_0@*eQxM3WP!_ zE{Fi8**9%e;QKHhhx$#Eq@%U(FKis0KYq;so zl$!QB^jQ1*i!3^^pGoRv&N=NLdC8*dkS>bZ@e*3Wh}r#2JPrxlWpSda_UNSF@5jA* z5Asy84D#2Z+8vt9$=~`R66gZHM|mluI$a8sqfiepYA8@v)l7pLFHn8^T=-=5OoL`# zYEtIrnFiJ4$Lli<`U1>cDI;%Jc7z4OnKh}EGD=9A1ujai6fQKsuPSt@F4XKVg?7ac z6gsHCNs75nm>Sa!}u*4PTo1&BzvDr0~ReFs; zZ#WQ7&_^7uv*22uGE_@Fyq6jsC6dVz2;-8YgI&8*hzA71Jzr?|XyQI0LV~K6RQJG; z!2x}ji#DPu)fhc7|Aw`H{4#b?E_wEGT4|GzEL8%b&3CX07lNqUKq`b(B~a_6FLz>( z)Qd-&Ux8>rAacPM$yI}^4vO`?WT8kX;aX68m#PNOa$IV`Hw!&(4BcqamzSC3 z;~lI)(ZW)q#|>|}MXfK#+I>PC@0SC&d#XieUY@+pPAQ7_QFRgZ(^HD_hWXLhUVbU+ z8pw5s_Hfx%NU4W*dzici2sL&o#NNwsD)vIW=1qSYxX>fx3iM7n7vWR}O;5vBAs1hP zM>oL4XbvCNx))69a;EKK_)dW^-}Vq?ZJc6IJ@|P4aj%dM2n1UYY}nS^3pTzbr{SVB zCPhK|Y>GkF0Q3%TOfjhMG-Y<4KuB=eE@C!Z3Nls5cyS2L4{SII%a?+bgU!OFEp)Le zs2T-zn`+RS0VeUKEe*_b(Nu$Sg{KNUxV5GGKrE?~c37}y#x1{V_i`tQJC=0i)XrAg zN<4TAOYk0IkUr!igR=+XL=D&5LwpwbzXR2b>Hajt%(+*(4_ohN@{K_7j&_^`bq7#| z(MTdx3>5Y~9t4V?nrY0dSDNH6xR^IX)}(bBXwi39n&h28k8$Fht5DYspvTM0$^x+o z^i*2w85UiC70%h0M8h_1V#HThnUuX_rn2dPKyQd%=CgVI2Ei|WCl7NV5!Ar>>_H~^ z8-OpQcQ}|{RJ^&D;AT(S$@xzijJIV|IkTVk3H84fBXN45>;vAwwYI3%AvCv{r+Y1G)B66<;oCJ(G6MG^jyHe3RR+ zGY#5*wMkiNvkW>f-=wT#XBl)8ew;GPpvrsUBIaZ z4HK0{3WRF75{hH@qHACTi>ek;8?>ld*NB8JQnT0v)r|)dNM&r0jIZg8Ph4XXHx=Jy zO1mWHJVD|0J68BTT}t&V<-!_)TF<}jX*s6(HYB%QRnAi~bo=6G-<5pZ*ss?h3b=6{ z;?~pSTGhCIKDw5No}T1UY4TTIh7Pf$JW@(i(s5(WpE#fF zuWv?IF}n9q+3>99B>8hLM@E{Jj-GVkP_#$Ju&CM0^yyGkjl|96%8|G^k3%YZ7$N{2 zU_(pNc_5j%?Q6gEHU|X4qko~2aNE~1uvuWEE0l1T^gNRgUb#ZbFi6$b@xvu1(&rc) z3mF0-JE@u-$=FtBykxj^q_&ojF;_`wD^N?|xV(2bjAtF{M3hg9dS6TEBsp^gY6%jT zjgm1KK?o!y8|n& zNXPhzcTjqeM-tf^Bu+C#fOj0reJCAkhfA)*=3*&5#0QLn*I}qTbCyBNB~z_HXnhLK zb(%Qz(osa^2-H-5ygnU5{)cU@B?WhoNQclm}!@e6yE&SayWp>Y}H0%yi2Q=xLIMtR;+o z8))uf6x)a!O+3ox@rzcp!T`HF3FQuHi&>l9qfGLS&83x`vTwrN>naSauA?4e%BweF z@NNWYEUjnMw_t7>1m^NGdWv0sQ;d6a@8z@aPAXL;}eixoMlju zNf4NuuL^Af2?CdcWWGMjp#2L}vq)d4AS65lwr^$`)H$GqS0+n<@MTPb@H!#=f?N=O z(iokqF`0y1{XsHeNX`;fUT1+QmnFccVwWvf$h`%EjjaINOt7(6eb*=hzl09(YKKDc z>hwZ%GM?E6)ryE!0wD_gsxQtH328V@*KMjn?Ss;-_X^6uuv0Sb5(ohp02o2%z8JV$ z9~(q;@NIs5mnzfp1cEOMVsV?_{orH2RZ5Bcx;gx|g-NK&x?~dk_BBZCw_PH%Q6Pk~ z1URIP4JFc=PZA`}*LhCi_JY29m5$QCCwDlHo9Hsmv{i@mpov~Th?MSd9^`(i3MlTk zJPNS}2%eS*Vy}&NyRS(j+}=u0a%1UKWRk!7T5gW(7*kw?_Ug8Eg`8OgLwKlPF8y|` zKp1=$&fHp-YGW8UpbW5xqG=ne=bJ%SqD_Ks7M_z{e~(3C;_DrltMbh zBh^fx*k^quQ2GmmO*r(;%gY@uTTsX)0>Ku7|KQq#VB_k_8Kx>H4ic8Tp%D5C)MS23 z(j1UD1ZqU+Qh^YjfCS9;{sJ4%_9{h!OFDThgk!c>C!|}E3st&stW@brk-17BWUDH* z&YW#fQ*y=|XB+g4D>G-fvgI}{^W(A7WBjFs=dDn6+Fzg+&OOH2r5xkI*#>nIdS`*) zgIE=hjudoSD|77N&(oVN>;H zD!Cja+heAzL`#*a4~gQ~#IyLHa} zO4&+*$T%1oaj0-L*#6#Xoal6|&3RY}@+hm-%R}m`XY)KT<1NReHW)T}c|RQrkDKU;Yun^!BCC+>e9H|1D$#;6Lf8D}+P(+1rwt0)Yu~rCQoq@C(SrlT( zEhhPW*K=(wUm!=prH-UK`PJU|g>?F2v*lRJ%iwvp}>{5XcG66zn7a6pc zg@8?ymnX4J)NEgaOGe0XyfA&c$Z8PS*S#>^#Fgti1-(}w zG+V31R+gLUa~6$4)m$xvv|Xuu)KMUW;ATD6?H4V?FI3HyBm@W0HM*Oyxk7LNJv`2& ztj=+R=8Z$WwwP>Q8YnEWyUJu!HwJn{Ddkyy9(M(WM5p0}h$qM4=_2N+aiY@@pC63l zF0luBI4O%*^*ei*w5>G)y&?K1GX4JlDKf;>pfObwZ-_2Hmvj7h^s9k*DP4@S%y~%i zOg0Zqws5>j(D{7mJPir0^Z6+L(eYYmPKwUzxAitU)*I3YhF^fn{AP|pZ;dx8>xVf8 zrB|4g`5U@g{4nMkbXCRQJC*OEaZRZE*I`b*8VW`#)Lijuw7mrt7(;I4QRN0$`ZVPG z>wpNZ(t&@;D3k2J6uwk_B&1~3v)8yPF zw(HOgdH&IOqw>ipWW4N}!s4pU5GUOP&O1CU&bo5t)2Ll1k;j4INgGJ?8#Ce_o8&}x@vE-mYScFbbIjZp{<=#cG5q0tIt>UOI zk1E}}2~2VnB4L1_2ML7O8VEro{DRW0wsQ^2xmn3yitWpb<{FfLv#K>b&61~Tj)+JI zgs3GDg{Nx&n1t9vPED>zVp|5bo8}tS7i=6|l~Q6QNU&)1B(bRTYGqLufk_r2Xh#Zq zlt8F)rwZD+2Gxt$=@5JNT!W@eLeS1Nh($k?v zZb4bv4(lbT29sB|7v{_rfv zMB3vWOQ#{idftY41JMb+H(4|si4f5VpiDp_B8hu%Gbwwe1o$R_-csrg&KIGE8JTNP z7bzr9Ac{H}YR{N!(B9ij%9=mdpp4u9m)e(v!>+QmB1e?QS*vrPXt&!<%GMTXCU1z& zMK7NJ_u>n~c0lG=I#=W4E&XyOY>MBm{L&A_Ek+_l)DM)6NJJ#@DHQRGh;9PCrF1Pg zjXMy{=)IN-rA{FHf~%CXKACOMsdt#FOB)FOmOYNDPF5VA(dzo1NKqS}xdEz{-CpAh{6ztZc*s-*o zG4D@-XVe!5GDKiofrugQpYUM!2rjR2uWC zUTz}0QQUe+pc(4XPBIzJyKB&NXP!T_$C{IM<+O?=mU#ow)|>#*dHD zcTa;iQ|7U$#tkhCgu_Ez(<;}enCQj&zsf+IoidG=L*v!8`gp{n@YhdMF*e2c!e0rWhNzBtFPnj;2uua7Wha-+fO1sNUh*KEhngt)_;s6IQxF{;LL?Yt%tqT5~>QEeI~k3}<0 zLT_BlM@VKO6#)$~`}jiQhTnCH~9in z(x4#AdO-S;*>48Q8Z^(K>M?0- z>{l?>o@daaxh7?n%`<5GTvOGJ|5;^SM}hDSK4HLh^B+i3q8dch4_ee|^F)+0PeiR3 z5gP=ih*~%g)!ZE2_AT*nsL*!3Tbt@-d|qXWfy-TY&ojw4fh1*Bvuk>iXNrNNaFm@d z8K(;LhG;r}howigN!|*iFw_jIM)_{zD$9>Wi$)KzD-xGZC=Ayj+3s$q61(=T|kcvk)Pn<(XQg=;h(^c!{fAgYYLS znI}qiO;xf)SRH{V0*75wl$v3S}fGKlmy@B52AZoD8DWna?CEG1JZa%8enlR5GJc@&s=b@v1 zV4gu2F|9@Q=11e|erH#W#ur+u^BSuYn2-IUAgl8_tFsgs2beO4-e7e;pO5LZQ%Kuc zomLB2oy}tnst>9Nxir=J`^5MrfpA^2^VyUp$vaq^(gkukc-D)y4FX|tzOENd+#*B> zKXSbc<}uT?y|TWg4?bcaT(tnRIP^*%aQm5p^cdR7?syIf(B3!h9%a!_NR~PDF*~N? zLUGI|?3fD{sx6)!d{^(yNU6?GeUoDHLU~WB|7NAgNP#eKM5+e|2uZWR$Yc+)n|xwW zXMvD|M`QfnmtT;Y2nk1a6CY>N&dGmK=_XCgTS)uaNe?Si>ECSlZj~ye@7ZvwQDf1! z?6OmkQigxaUC9dX!ath;H6ae z#R3VNmaw>W5T{F6%%~4)xKr;zp2d8=nXFTa49XWT;gi~#=N1|CdyPq%c|`^tzsRJ_ zfkg%lU4$m+w)%KroXzSe^RyC;FQ+QQF<#52j9bLR_Np}WKp!B17{5OaF`l{DBwVF* zUs~?f7WG<;&2Vwd3Re3%pp;`)u(XLlj4uflmJqE-!^~^NVu|&g;*k9UQEiW;R{t&` zX%?HO@1rLeMn=k@rUE@H3p%;V=Bn@>Lr&4z~?72P6AVopceG<-Mw`lx7Ck z?Pb?3TVk^5`;@&f{TuZY4*i@R`aJxn9QrxaK3gKaNu4;R5K6u6euk@$E>$4RI?OR0 zMWx;XVH{2%aM!7cU4#e;$}ughEG~3y^KCoK#sh3)tEHlDqo|9cFiGl`NFk0u6n2=p z`-GS-r9jRYuZCxm@hzd0dn61VPhnL#dr_$ zFoCRNs}1rMsmH3wL?$qsMC)w=LBW6Z7`8z8FXA0{yfCv%_!?rFFpW(N{>?6O;M5u`SnUQaQ;eSqjn7*Fa%9bE}Oe+*CD4*M02 zt*w@lmkNXiS79x3ZnZ&wEydO{oU&ZVD+Pj$PeSBX8+7url;NVw8LrOpuIeo>tzT`b zo~WdUJ&BDLUA_$c+Jv}zpX*@{-sc(%vF;$0DixcAL(2;bU5RyXqdiO2cAkBPWY+ z$BDm5q26KC44|wls}0I6RJ?5`2!9}k2_{$D{ zwpLgR3yF0&Kk@qeg)=D=D%fysgCe8h`$>JLRYNh*bADt zBZ=7Tgx8^X zASB}}HLTSJK_(Mb-oJ~C!f-TV4~!(DZXo2ouly@51p~}CT-l!cF!>=#oqAvLlCR4d zxJGHHoxlgP<0Y<;oDa3Ii*eq`I|fTly5^*}EE;$po)SeIJ7tc+I2IcOMG6oYE9RD(o^h653;#m;AL2%9zveFxABYE8;6`9NvX zBoNO{E)6(jqu{3?2@g`B4uz0uKV+%hgxTVeKXdFbqEi%=D)WqgFChr5)hSHe- z1`MP-#~RcSQa6!fCQE9=)h8--6bSiuVC2DO_$l`zRq%Vd{J%D8VKQX5Kqf^*w1(n&f8IK&;T)fkU%(KH4klnRU4Eq*pUK3<#UY3&o}6w z51Q2B)cN=rLoWWBedilAOgNKsT!>!ihWQ2!L9t{O&NnD5d=&yA8DA;Rs+@1oEf1QM zHETYOV&ZY_lKBQzk5%!)Je%hm^bB}jn{Uv^;Ni+#BeLoQLgoftnSV0dj`;?4lnU!D z5Nw}-&9lIuoR!)$l|r5>5Nz|o_H(sCmx9fLi|R$O1t7sK6IQ0W#e!R!gv)isatJtb zaN(=72{){qk5j_SH-_kIuKmp`aZ0+hxlJGNEPC6bFIMU(qMtct%!lAZ)OA6r^5H(H z3M;xY3071mlVC;sp(9vPFI=t_k3xWQe&3Ijo_PY{t^+6tjrB9|vGYrWJXIjrS|dK- z{Pc(6{LBRgRSCI9AlP_XbcE)}FTW?BuXBA?@QKn%nx@Yoy4yJRZHrESSht+J4YVur zH^Gr{x`&fjK@V%sM1yj}%4K-)otb{CL6L{$OIGvo17EUQ|FC??YPr1DEvjFoef_EV_=6U{4iZiy+=;)(grR#^ndGkp zDsJCGjV!_X7o5#k6KxZVb_j&a@UaWNj_{&?$#sO9t3kLhU|~$mY8q=$fTjJv2FC2L zjm;QsSZ-sAfw1UjwrJ|V@ctb%b{zVJjaUU#PFWhU5x=q#Z*Z|Z*lrPDH3)1)4Ce0-SX2seZk4kr^$bu8sQ%30^_fQr@&$2U>?+UbODviPLGf52(JCGn*TI1E z78o>0@{AM+6<*|F5!A3?D+Gf245&xaqlc?N?cNkcyiPPuzws*l!$&dabZ zcb4l}gNu(Nxb9=jSenXflg?{UxD$xbR09*2GNhyW>*b2)LEzNq1m+v~oWMsw;9Ne= zFwJKpa^r$IsC*ZH~-(LszVBkwe5FY@7A-qzzLWtH4%(1nkiWPWg`L5UXma3#`>xNz%- zI}IuT*KuPFsyG7IaB%%|tU*&AhxYP`a9w_t5 z;Y7pXE9{6J3l;JkV_M0aue7q4qEFy%b(4r}5D3ZyN_p~8FC@)^?g)Kq%A@_g!gNp| z$1*|_4+s$w(4nOc=}?=G_IFh;?rL?bQ`N?sA{#spHCXg5{OSaWHhBE+Sd_U| zo`Ln34EX|~%d^l0E2RN~)I{h4Yh+bcBIHQ|k#`e_utO6aAtG-}JH-DnI}n`Us!sb- zJnxMa(|!XFvwE(@y+}G$vKHrgqSuy3h`uv!FSlqGFfj2u113I!WLY$5gN`_RZ>>qz z9SaO+3k>>otx1{BEimY~Cr!$HWr0B#J!w+AcNXB<56+V7s4RG@%be3S z=cCP>rYCGrx387@c>>{-1oj<96dTl6keZ0s`W7C8y0wtEQc4+*mV0v8pr4*Ji8Bt9 zj3Wi=j9Ir98+7zKw9~`Fnj2wZw5%+YaGl!N(z!I7pYEQw&Lm&4Lo|yYtd3GiPGc!v zxsK-}J;^hR+5e_6SA4^_$_XCTdc4JsLo3oS4z65>TUWwCdNwWnLW{E3<5)tF=-xEc zSsx@-o!y&;Ivcf~3+_dpdsV@{@qthx6h#IcHL6^X&zU(GWx_#H*Lkg6k7dYiRJ8c> zDfsi?0)t*%Z&H?Lp+Vn)=P-{2?LaUbirAqtC+ynL^zT$#V#V|=JE{Fs*y$~g#q3C8 zsC^54#ui-x?D%5(iFs~&O6=Rs_T7&prfjsEnYSX1@CO3+d;`SzSSVp@OuMJ0r5+NW zW_+jgL129f!|-^q2e{B=NvN6&%??eLCv_!HBTzV?3vN*X{R1SR4czy%NgW=I{56@K-$J^7Ax~_A7OL0-^RHv4MZmXsbF2tKC9_ z>ZL4PnWQjHg7ILCI(?x*JDx$ukIk9cQcueTqM)yJLDhoP#O8ty3xfU<1a8Gwes9RE z4kA6iK&+VPuJk8{T6FLkED-ElkVZJ4ydil@PP(^i?Lg2Ks)hOfa|EF?Sm@;&w9pwW z)H#yS5r`32s+LxJB&l;)YK<#(4oiI@MQWGi5k(y?(6TC`m!`{fwZr;j>fjwuC!#BR?O7b~VDdl6Nh79c4u5QYiDEjVAeu zf<)&aggZPZJ=Qs><8z+lTJ1@mbHI9dY5ih$pwum<_CQK;{yJ3d7#f*zkwrH=$M#gPLM#Y|HhSqFuYtpx2%=sl$y6vDa6KzlRs;mXdogr8IAZ?tt+9C@8@* zgV~g z^Xz~gBn71Mgjn4z`zRl?I_m>*f=QmY!oSRmMHfuQ2$adx7&UJJ<){ksSR z+vyOJYV`O(sa@{4*47HQSj{fJ3}$wRV7GFjaqby3H~pa$mR!wz@d@$5M0m`ENTAFf z7)kW%>9SU*X7NVL@roDxaBV%>6VlUp!95OXd=a6F$#>Vo-+?ll=q}I1%Po4oUc3A* zW{?N)l4#bY*iJ+WopQJ2yhABUvj%tbbB3=`B5QCDYv6qm^&J{R%RG%YT67kYP-r=q zH}pj=KbJg9IGtK#exTSMilb?|xTYf%`!E+f4syBJN4VI#kw&o(aj`ETiDFlAF`v7| zKFHju#axKn4Ku4cBlors5uU3$GIMY=a0puNV}9Tt_ptagmQF!12)ZlsDLL|+&f3SW5HR2Dah z#l@H`!{X1O6FVcPTsb48N#+&|ZSYgRkZ_`ybDaTFOC7noT?O-u!xXJdgQ7#WVBHiC z(C@5w49Su}Bp9}1bcnTGyhWMv8=LYh%5uFHpAZkkisP<$CoQ#@2(9Gh)^5lM#EJ`v z9$*A*#bJY3@i-u+?69cwR+G#X3k`Ba(+Yv8Ha@tzexX4Fwwjc+d7(k!tq2Y9R|?;3 zf#6@|A!7b{ntvVhUmr4DzBMiR;~|4S*lJSdZ6Sl&y<$@4^pHV4UctoCHP{J6LWP%> z*oCD%Tx0Xnwb27GEaIr=Y1mg7_6lY^g+wQ!(#OAo<`pj{I`J5M7sA@M(4fllG(x5v zg#7M>2Ho>_#r1THsXM&5-YD(`6o58QJ-C2orHiBaP@5mqxY_etrD%vtxGN;rI!ss)Zv#Fn!h(>z`|pJn1{_yL!{M?@klnLQ8Oe!Lw;jP-%E-ciGu##8 zWE`eg7>W%PVPQxv`&(iCTmin;hY5-y?|c!&iKqTv&~R5m-QkkPL8XsG(m06y^KT{f z;#$-~^4lDy)+FRV={4mnPF(id-#Lqg4R@t99WJes--Hf{IQ8QCoc|#YHL1l^dk<4? zD$lvsia3>e|L?_J>dMG%dzh@HEbBLsrBcVg{HVmg0byA-9Gy8-46hQ@`0w#!uaKbi3n)1q*6yvvr8`M+crg`Dbc2IUyNu%GZKz6hrzG?uG@;x8?sQA?c38AC}Wl_`;rf?=9FVP^M%E#PNE5Bxi2x>>v z;t0o}%ONDGelQ8`-rMzIzF#SzeOW<&7}y>RA)8wf5qmtl#AR>DPR$mi8EL4$Id7Td zjTh2P-XnezsbWWV=HGuy$8i-;&#s;+a@1Ic$tg1>unW$Pq6~4-ZoV&J5t_e zUEcP;DUbU*w=n9MQs@!%L#q|0e1YQlW@a`dW+%#H5toUMO_2Nbm&pIz0B55oX%OSj zz@8&|l8*0~swe6852Zz}z?6Pq+&kPzAb}>R>guK??9dYOCFd}KDH3|V3kl7RaALL- z3q=y_jNk?zdeX!O<;3?;@uJgQI_v-y zrXb7J>RY*Wd}yWkeeA@r{&8B%sG0AZ)E>{%9yMVA`GQ1`nlSA#P;SSL>Z4o=`Ew_5 zZ@S*Z-0Pk9P4ZVylnddXVPWc0_h;2_uS4&esHsjLXoW7p(rycDITXmka5P>Xv*{%h z@w@`4K&*H~D3~arr&-D&;Dk*~QH1D+Fogvw#DWj8eR(V2k^LO!?YI-0m${P|^(vz- z*omu1Cb7~z=nd9{P^QS<#$3~OnvBHZP=)!IU@i@W!zrxWQ3lTIj=*qnn`#NTXge!j zW6*zgn$&JmjX{)oSB*g(J~AnDL5)EJJ~CAsTPoqTTp(J=u{b(}(Yo{_v=EkDAd+)I zgXFmo1<7mi1H!+?4+ua0V-dbngzgfUB0TS7S9q-m@1cbkerys8pN1b0z6n1d{6{T3 z?*tX2{RO57&;G;}-Xy}$)x!IHBElp10pTn01HwQ4L^R(ZLN^Ia5&mbh@ci4A!~1CA zIlDyorT78i6YvAVpV%eBb52y6cNUl;{M}uy=G7wnJT3fZh=R}mx!Y6~8o&<-U$R?- zSBcQs0#k%<-0cc)65)Nd@ZGypLM7`{36+7Lie$=BYNrcKksSWim7IHr^2vo-^1M$| zBtNMo@6(d|h{V1EQzU!$xRMJ*@Wo)HDWW+3%RCA~o{()MPH&HaI=9osQn)C4kRdZ9LD3f!NlG#}xWV&sw zve7luSE(F`SB1H)JqS?{{tA8|sJ_7u2ygqD2%jWED+Q(qKkGABc)kd~N^5@YXA-e9 z@B_lv;0J`i{h3J?yiqNgTy1}3fz6{|%q|Msg$b-Fh6cvj?f{a1nld?Q@cf#)?$A%H#6DKBkPdL_#II#`^aIQ9_jU68 zrznsJgq3DmTwZR9SiI0byEXd@Z?(@+KjDwLt>KTN!{w={)N&eA<#~hA!dM_)LXWma zw9WWhy*U4fl8Yi%sh=p~UtGjvu%Ikn94C6XHQe6twMpjk8iTfp>>UCTB`>C9F5t!n zpI&8+Mwhv|)b~uW(L1_$H0|WF4t&iOm`k1yS-+$T465cfy3Ea6;LR7aT_>t^**VmnVftJNz7trwt@41L=v-Dl|1?zR}H%a?XMr98*$fH!_5zSs({zH{3&#o5vc|Ntkj4LQZZgk&q)u zP1F*SD>q&eEe{9t%i|?OL&Y2}ZtXUu)-oS_`-JQ0+HYm0@d?+_I3&X{lH}dr>N@&F z)sfk8kwMiWtwta;Ekm_1b){fe2?R9;YEnR#<6(F33Rf>*U*$v3@+*mOr(7cHIChZ6 zArN2qRz7mKz7+-#wK!O(etQG)36a7p>> zVlYhr`eC3s_h1^2$8JA-C&3#+C3nyaK?&sL za|D>^;zj6;K1u*G{)&ud4Gwe)wvRwie`hM6K@e=7Kv4g1se=SNOdzN~gK8mfov4J1 zLCL&ekwJCmD-9YhP!RmnpzyVe3|jiVNtrh;GHBEHrm}dwux}EGQ=#jyUjX|WVIP~` zI4zAy>oqC;KkPQQM~&I>@-q7hH|~5Fsp35<{@UDrZSIkxt$jQZNZ3S^4HXl<>0IA4 z_yJ@Wl)=S2)0OA(@|7}klf?I~3spHV6KCAnx~u*p*3}EwHi6nYCAD^X3!|bakeZF+ zkdh$pN!lbQ)iexAPZ)^sg~;xDgg5xkcDZXWR*H&4yoqQc5T?z1toWJ#$W!8m>B`QF zu;GQL#NR_CKMJNQMat8p4o#?m=HlYqB8CQv?EGjbl5h)b>X%w@nM3>esrWffCV9&p zs^(q5Fj72DJdlQQVqTLp-tXA9%YT$!?K|Fz9g8GJ9+jN?qe<=2$*Ck}RK3ab9ba33 z#Mww-#G>r#Jf+S~f!H2dl7@NYlRt77P=zia5)R@n$_JV7{*Rb33O<3a6Ru1<^%IM7 ze!@+S74#4rQ2G=6VHGbjC})Q9)j0U-_C*HG1&trW<_igza`I!?EiS1}NNbR5_dM`(`6#Q@bAx?2`lML zbaZnL-~<>D5$X=ahb+8VI&Y!jRcKdWeX3y8>80r4GJn>$@ytvklz9cEyjy@T$D*66 zmHc|p)59jUI`uZgm7aT2g<|TIOG~fE9ap2eRLz<#;OdElT?V=$#e^1&W1`Wp%Yu)u zqCO-*eB+2>7|_o7#cZjGdg7)tU=5s<(L1KRh^joDc3E`8FE|%UGx-VP?Z21=p%eQT zShW5Z45+j4(lyn3fZ6$rN!j@WmAVB2y&<}vGarHylzm9d={7*|c|){@=_mebl0Ogf z;`A6}`u&O~*uvn#XqgkXD_oVUuT*lh&4olSdG=4V$VP5AF4(K(=*V;i=c<&9Z1bz0 zDHAPP@+&$5+Qv$3`c>Kd3g1J%=WwBrsb%5wn@N6zuioQnLE6E?YM{ifaQPbt9j?o6 z*5&krtjnjY%bTjsx zR2}1C-1w@+*ACG(K>`>&V`ur66 z-m*Zf6yblj(RY_c;oq=y>_M}QiM!;>QL}jDss0Ubg++oS>Gen>FA&e{vS{aTCS^B> zRy9%x4w`fJL!cgNNyU4rre_gCL&s5oKOgY|x*-%UeO=Ym_KQAQY_e5%F6=Ie%bjH?`QH3L#Gt2)0FF zTUBh(rC=j95nd?_YXpLEB|3cb@mmcVBnpob2x=3k&5q+~(>bJFM#GhU9_6}bzM^QX z&@L`4vBQoXbJ_6Cz9dic{JO7*=r0h39t$R3B#snpSRknF@nTBzVsn&`Gz$i^l*Q(V z2?kXO(I{#gSzeKIz3$1Fwb=tyaKHqV{YcB`LRPLS!;_8qS-3uF7*&)ZY?%w@gdBfc-<~zj(9TMYn#6s9N1Z-ax8)W=xQs(!?2A%q+nLILMV-BzTX}2^dqVSC=goud51nV32c=eyy>2v5? z1CPdE{nMm25&E6Qk~dC&7{f+bbn0Kc)XgPNBd3*z3d9XK=gA%#@E1IE@_2)4g)|nX zpFiH9Qjj=4b4RMW?=KJ@3L~zX0Gl3LmdotynC@AWIcYJXPWtR!f^7CW?z-*Vgc7Y=?qbZ;8w zu_ydjd3gn&4jBGllYDWaX=!log#Y3ifZ1up-zKN~8F?=<@b}FHaS~bNFPMXUXj;iE z8^}U;h*)i$qhj@5R54dT&Rm6A0jp2}pMaYyAUH~?TpIXfeKh7 zO!WdGXRUs@tWJ=c2nk6QkbaZWp_@SDT@O`J0e_LDn#tK7Sm*}!m_V=$4<1~nH>NtD z&n|6AJFf7Exq75DpjPGC5Pl;<>My#z#n2cr3LokuR}m>AjYhP&UWnR8erLKq%_P z@Y38FR0&D5Ad(J?#ZCdGMIV8XbClkr)x>T>gaj3f&1Mxk)Wk465 z#!JM1jzDPM8;-)6@xE!6Ix{{RIrz-@2I1Qx5d7z9{>hsEA@K7`ziyuD2>OBtn*iHD zYBoGxSYij+bZxS)Sou{Fzm*P&Xzn`So1)}ciPnk{1`LQpwd?O2nf2> zS`o2cAVe+Fp}bO%nh0eM3uPSfFDs0eM-pybHm268IexK0eFQg5APRa8IyVPL*|m1u zj*YVi_ID)|l&I>E=xBd?ESEf6TVdxpIV0Y&k48AIbdLP7DLFZe-fM*w!rWFC@#|vm zw!&b!7RgYM=v@~3ek)5=R<#tpQXmxmIJL5Bgrr&EpOng)x!9m>!n8{uygC<9dBAh)`z7AHA(e-VUXIS&Y7Ra-+}Y;Oy7dc{P`+?!NYR$Opz0W9In}^ zA?1Lj0#WV(U9(k!)I@0BvS#sC`~=sJxa$a!Ej7VA((=rMf6KEF_Va9hLO$I@CzJ?a zK0SjUwZ8yNnL~3-IQ}!!Qa2tXAYb^Lu*wJi_Ta~3 z03*Xv8|9~ESn4srFkv4h5bW+_fGabg7iRLbKvkRj7$5>tQXu05=tMhFVvmo;!a>*P zxa}v&_u1P;tDG{Woi{{}vbPqnJa-CH7>F0eqGhA6h!+MTQWIKM?JX*Aa(zl2Cf6tb zPOfM9?Twcg7TWPRy~4G!J45PnE7v8pw#XL^2eH7Xtz7q=fr{AUlTZU%TV&y(ORo6k zdhOwGYw>V3Sm3$>VR5~>zP0vhwUAt|?gU9mt{2)ME%}g^oYO|)s7Y8{$^F}C$vF#K z)K>{eN%d72h$o`ON#507t&gR6m***;v1?|xNpj6+?3%hZ7Iyi2k>@jZCb@o6^c`(1 z%HAdQ)kh?IW3-RC53)|lb&faM(CD-hP9jAaFPf8j9y#4YPkNkJD(`pJZ~~IL@_uIx z?*&R%ouH^ZQDS0S zRZm3gEIdA4fpo+kuhTEVwq&ngad|9SCS}+`S29lOC$(KJVKbNT6(mN(L88rELYsCv z3^wzjAyUODV)u4dl0orA)EQP{kKkTHmry@0#TG0MKj4C{ZD%#_Q0%ZUtsK|RBJ-tN z4eBkK`U`~j-p3~scHU}Wym2k$Gaqi5x~$sqsb!WqbjU*IzN($2mhFwwh7P64#>O64 z!kuz|$s87lvj2;QicZ~r zSoKkvG6#N=j~cDWw8-zP;ko`x8Q4U5ADBE~;`DL`LiNP<@L2Z22})+pLO9jH7^I=cY8c9f+1(S!AX%8lry`|Iv0wHHax_n%uk03P> z64dmAb=W23CV|LXo~lEmkTeSc7XKT-?obKysyvyLB!i^XA(O8YJkE z0#WYGM>zVVn}J)6y83Y9IH|E?H!+qN7Amvp(bni`tJ+)Sb$Za;)~LD7NR>G>xiwnM z2|mzb(ZV>*XpPm+aGym!yDXF#h8?)e#@Ues(SI|r(y8!qSJ8t!|IL70${u!`s^o+~ zZ#WcB(A3trGGn<9=S3P-eJ|spcla#w=PttaFb*x}@_z-FYO~HF<+sV{(q@l63hRY+ zn9Yi7b_j%vroct2;slH1>hJ@o(_2(r3l?1k`WY$*Pu?VD%`kzGQ-eyxZd-prY9b^^ z@L)5rM95)*$a{A>5${V~$cDVR*q|yQ&lU)_`@#0ZVuK2p4P(y+A#V`~wny1s?7!|1 z>>+`mu7?oxU{j8g9&95^`+c!NeyN>Yf#6>QY0dpx8F#d9B<0+$JmHbOYpjO%@Tt1p zM_JS+icfA7meObHU|seG5xh?z-UzelJ3jsA>40v*?MPKYJ=_v~hInRR~Eb^97LmM=vS2|$y7U$4gd{*pFm_dutb@JibU)tQX$D)(65Zc*G4C-8| z1a}dL$|=D)F%IoMf*mOk)bi9*b(&>>upls#`y>u+oOy<4Rtgj3%)+TUgm#S}H4zdd zw7EYM@)m)}TZ6pl+tv$G6Ok9ClPb4S$Oi->?-JxixqAhviO8E&ZjQLTw?O0_ooah$ zA!!y!Kr#sxyf*^rkO(5di(O zFl;)bX|oqy?X6iB@x2nydzbC8=)NqAvinR?d20lE9eRzKUq(pyb2(Dz14exXRCd)= zm1F%~3VI#-lF66)v0aV~ar(-OF?fz2jm=*NoI{h_LWw%yc!AouSaq;3v?BE^<2{hL z``RULXcRb@h&JOuDYn&rWj2I@CLc&*doi_2_6kX}z@dj#Nr9M@5QySF)m0J{q$Waw zsuI>AeVTGZM}f$jfk&PQ#|%MgBJ!ei3CBJ{9wZQX+aNE(v9BOC5qYIt^t$;%t`La4 zUXzG>-D9(**S#hi4I9Jy7UA0|5d6QPVK)a>tUTf#{klBjhE-*ivQUSYLpAMClZkBE zB-$zQw_hMcFE>*T4eb(=W`QwqL`utOD+P5C2s!s_cW7cKAwq(3N3#KZV_cc5FwII; zyv(7U?Y3TN(UNSmi{jDrY&)!SJ{(d++VLGyCq&%+52+BxAAQO?;no7mQrw`_pOz9_ zAFc+L`xA!2xfa1dG)qEe_WSgbMl)mqPxdKmM6&|OHj?!ygXBUjyv`GA4vZCwhT_l_ z!n>N3VY|r8ZY4kkbLp#RId~TlaLaVMu%t1v2fyBp-CiB;f6}^VjNF{aqPw98p6FJJ z%yx+j+pHWPK=JB{S@&$1sSP>bkPS;H@~-G$Kw~b2Wq0|v@ZF5XmbZluvlUYkq4kd` zmF>x(83SA6?`^#*wHIydt}k zZt`UB7q(IVPub*&2VBuY`zM)o)I9r;&?*_G8=zkr9BDlgw)!?=Y?p5g3kT)F-V$1? zF+SwRVw(BifNjwBET){z2Av~?VM$hCJT<*BA_MEGTLb4-3?wd5QeEDj4rVoSaS%FdNI(k=w!UDYNVY1gKPwCRx8 zv_GC{8+m-4R~D*)(~=9$3t^#aqd2|)De-$=A?qsJ3!*yyFqBxiBECdVI&a1Xi&X{o zy>GBFKRLNYgDx$_tSgy{ZDb6~I;DI(nBju~E0U!nId&Lj;OjT5DA<8jesRw)C~bgZ zz{*Y8Yh&caz&U}%Po9*5U-sroOsD3_!cIB_KA0|>hdG^lNlV#3rYTq5Vzq7Zn(9PU>%MX`8l7 zX>o%IM|`mG^$o~eU|fltKoDNlsl0<%@uGTIuPvI8CptJhZfN`_bP~iGeYS}L13i(e?Biu!i0M|UW?iUn25lM zSU|mXq>yqUaqIOzJ!BdCApngX0~?^xfg&=r#i@sbhbWGcyPWtuAEA~8j1j^pHkq|v z=ubir-xRRMF8wmWXd1Ci7#_wz!g)CWJ538%Rz8~3%;-Oc+bj7-)E15APwv$!YA_#uLro?hAv z%P0Hk2=T34)UPo0|3^?{4kz=lRX-U|Lrv?Lb?|wr=g!R3hgO!HQwR0R6kBBAk@dfQ ziP)ZGw#X{JLZJI3$S%A-VF(UeYLoFtA0I;A&>An!%LT|@OjLLKt9ZsUMeIT)!^L-( zx;+{1uC}&yz@A_g^hXuH7$L=z?UsdXDN*q4*r0m->wk_{>LFh%4g)KVQOtz3LfXp! zMrf5{lREn*^~N)z1iV~xbO(MfEKt3dN34Jj&40WlU6kP)I3|KpWmw}CgItxis06-y zTQX8iVS1lQ1s##!=SWDr?o63Z+|(SAT8rAJI|;Ro6cSCc%LDE|F)ezbmXz9P+}!=;Mu|b~t|x90*r3d9(=B zG+CgT1Y;5?9wMP~nO;$j1h^Zs=)dWAp4x#*vummG)W5A)LWnxVI}3Y2bV;vJof?)F z8vzgq7Wpim(wQh`A-JjA;p-~=O%M>ma`*WTBEUsGzloB)f~8A9X-LL$TTu$rD!fuW zV+KyMLljojvt4i~CksJC@71CShlP_6O<<}3Tgi=`fH^(dLjtg=Q}ag=`@d3r-G&oe z;58mR*DVUJubcHc?Xrj{<`GPmyPu5m)JhKe(-8uBbZ8p=pO4BvdFgx=-!Aqq}Oz18q!7NskHDlW+ zbxZq154LLI0(yXT5?Dgt4h>_wx{(7hb+fE$n_clKHPtOcnnyPJN0JTr1H;^gm8@a(-fhZp$WsCQL>9%aL7TL z#vd}nuzk7k(SYT*CoUeaNSZ~HBpPZg%t0&q-Ae5TK55i%@n!)NA8x;EAWi^WscA6W zR2)cB*jdYSlpSQvBOs6h7jBbI`X?F&Kn}V~>G@lL05fDVKKtPP6f7BAY$fZj_(U$$e`tPZ z{TeFxr0-=tspMGjSmJVXmLTO8jlmzmoG4$2Z4ZcSIq{k^&9zX8NfqpGPAw3aCKLAc zW%zUQ3L=i19$nhn_FKYh4|ADzWxS_a17UcsQCTvgtzyq~MY=o=+>!5(zn3227%W2` z)hM%(T8#~nQ~-mRz}!TmiR6MygPJ}@1boc=XvbC2M#SB10&F97()yzHu8l^ah&w;m z64Ek2cAxx0%@tlsvG2U7zijlBd{cLDzE=GbtyxkDh}X~Y^VK~hW{zg})d|BZl*AF} zz~vH5Dq1hP(V3?GCEfP!ckJJRORq%#1K7`YV;4t37WDNN-5;Zv?(K2~=PL4-FTkbN zjB9(luRY~9Ddm=k-0$nzJTwaNAoWJYM`Q2)J0Kth88={_;n5f#>=L--&8Iut93W}s zB5Mic!te(jq7nOX;cC9H7_Fzv#U_m9Nc>dK_2N*^4V8b0T0AzA5+6;}sPhMOGI5i} zcfBL#LRVv1LApH+jxk%@_{nqf?fpjZ1*KhT_iYtE5yiu>BW%CJFQ04Jj#S!;FYmWU zckCgPiuL{`ie+PW;ynHOJ`kzgo^O`?AL)s~;^ZZ^w*Y#O1Ald>*@6(9W^+b}R2l+& z@aayz80~CzOCfkwzjh4!PU@QIGNZZX+lbp58JGTdWT-PwrpAPdId;pQh4e6A^hD~S z<^0iwK7ANr@7^>%j`(4eC%r+2w&*ENpt*hlo_P|CUX(Yo!avo(UC7VmQkW~O&j5(Q zdXAGtxA1?kX>;t25QFdQ5m8pAyKWX#tHi=AnBC9%NKu(3T<>!Dxt|pw$}0~T9s@)g z3Zk6TOeTW%2rW+VMkfqTgnTxdA7>}V4Dgy2~KM&hz!&)H+xzn)tn z!+Kl11QtT0&&jx2=5-v%-VSFG1Eq1nb;;+<6<*=G>P4(wTX9!nev`L`7|^1rLn@B_ zS@ZRz)dyL`tG2X@GRWF8gK22?%=X7XTE4jkse9&j z%rnAAp~$Hl*@NiH4LE6DjI`2MK4(~oMvo|XVrxZiWa*e&8Ai(0BhOS1jJWGBajhLs z$2;^>=QMPO?ooUvX)~@2SoXoW<7?y&G|uBW5NHvtiQuZ$U?T(r_^5W?|I-=cvJlOo zI2e$EGX&rK5lu5xWninEPs4>)m0i!wX?>Dfwa^QZtfGR-z1q`Ca006bZUuEj!{0+_jjU2r;#>cVH}~)=4k@>5W<9ZwxsEA z4FRPo{^xKS^k9sRtys%NfW-9{qQn-a#}Suwon-JtscDnX zTwJh^1c&DNTxwqY6osIVSH+pNywF^ih||!GFaf*y6xIGExv~Os;Bn<(D=y$2twqh^ zv)2$%(+!=R7@y#RJ0UsF_C6pvPW3MG<;Dd5^o~n`1YP3b^6;r$a=$O9WwgpRVPcJKopAhF`6IB~D+7m>u;7P_nC(s>^qOGC zIsMFxUBY0Tjj_@0pt~CbKg`k}mar~1@#IENlj2Njb=?#vx2h4n(^0eQnr3T~L+r>B zGshxSyhfBL41TnqRviPV$%;^7CYu9i!byGM^*R1ec=EV@hEc5{;#-NL4hbT32gbZ& zH|zmSW~btcHN9x`?5lB_q;7tlz&-t_D~-R^>qUG_#XCT4QVw`W^52pyOjgLpVGrmf z`7kl#{V*r;quixHjPP43+z)u;KFC2bM0wh`=M!IA>xaNW{0dVpc)# z^O=N3ZBU?5Qt}sx+`QQpBYOuDchNx*$y3GqD-(c<>WtzE;B$<~$i zxuGUglF(vKlmZ?)P3s>U8>xr;naYLW#}FZI#)RM~45@F}99rer8~=5cS{cXH;3OpGJBuCWZ0hu=dpt z9~MbkDC{<(L+(O+DYfzS8YLXC&~%aXGXJk?A|+QB1Ut4jh&)s0HZ>p_QjB| z<2Iki{|;g{0($oKhQo4ZaPndnwua0 zJ-)P9T??M%xBFdByA}A|4F4H(U`%4sSz}B*^DzY-)yfFlwBaNZLzSI2|H=(cF`z-q zHb8P3P~jG(M)BXX)4fxK5M8D0W!glXN)l1lH86IJrsbRRX;mxqfUx*I=5@ZQkQA$q6HKFmYKBpM5k(1G~9HK_(m-f2@A#v$s(Jp)929$cvj@u%X+i_R;(I zkboLu>R=Ws$?r;&is#p`Ib_z$qj8~9) zJXIxyNbpDk6DmGp%X)ynEzau9qWBoMGHzJygZ@PXWN2|hA>$yJN0Ruy5H<=pNe+>d z4LUw?mEO#E)*hE(858hs)s)A2!t9+oSp_X93Yf@c zJsJ6GXAg{lp#7$C1C!*(Ur0dcVvtkRZwq!T1Api)lE_+? zqfqe(gX`{1>LIRLm3Y!LtKH6Qm?x)Zm?vC0=8%Wk-&h*44?+7n91YP)bI3J{%C(6} z`PMJkihYHz_{^6-r9QjqJgl8c7hg-00><>`K8bKo&wpdOJgeoh^ zR@uh5>3aW>EItm2Fb??|v6ikc6Pr2$3MQOJLgcXkZm>Wd;*A=gy%L8<<5wgWI(50h zNr=Hhpn*JE+P7d-)T&s5Z`n-XH(DO$_`hbW5fe`QRUUaNV!U^u=~eIaF@}BGt`n-O zmJHG#FOh(dl=bR>v@=&I7?N@wYc3zfyZ7fM!9?od^7XY1$k9iS+)LI4vVsqFm}@$v zFie>me(bP=j0DAq(^|7P99{Phk?n2tTdB7Z@j>U5T_GH`Dpqi1zkC5hm03UCWscwl z$1g3vtEw>H>VrS<2CPuiESnWixe+8faWq;*l_Q{-get1I5J6nQzm|%t+7PCazANc! zloDkPWB}uyZBh0|11{Tqz0pZg*ZmltVx6Qgw0JIldi+?4vk<_Fp%QoTSKlU$=8?A( zUJhiBhtzl&aj{0R(k~@l72-v4ILfYOF+)LP6hCf1jY>|P{OTBfOh}3rBU;<@oZ>~>!m~^_%@cJBO3qlVt^&MR z-I`QFqyws9d~;87p#sO1H%FpU-SJ88^+erT6HSed&WHWG zq-`U7cPyIsLt~(!1yHf8%!klvQnvmed(o$$?UyNP`E1R{f}Qr8fNQ`2!THtUZu#Ti zClgOyzZ{0CWjKi*A}p6`=uS~U&u4UW2WN^+(l2M_k$}Qq zxqTMxJudM`%zMuFk#-D%D2K5!dsfpAwA~_O!E`Q)ts*qrrbKw)?K0%^tn!P}_5L{=tipY05>`PXDk zcf{)g#NI_rv>QQlax8^?WR&y7@{3t9;$XDVJ8PK!+0CKij0gPlQ2|Ksk6~vCB+eCs zl|LzN$3>g*&)%m$k})DJ)DTxe$`jI3hz#U(rlRyzL>?Q|@^U4K$PerNmzl9c%q@{1tCb@fU|B7wsmd|d>S;)6ZEQ~nv zSy&WE#91bZd|FV>v9jav_2%jdf`yzARXG=qW{ZmHC9stoISp0L&3 zF!1bFGdr6?#5gnof05XJXp9{+pxTENTERnYpou?yNgZ^ehcaMBGjGT1Uy&&jEqhN7 zNA@R#?$rQH8HOkJuzThlUSnkr9c)y|xb7TS8`np0t6ua+goQyZ=0w&(vmgi$A(47h|gf! zyU|Ht_QT{MS$2Ih1h|WXMR^smg&Cn2Y@DOUyUk_e2v=burbUUiea-gOA_*NVNJhfq zzzvUCW4Ab6>9fd|s{Qi88^xjTx6>@KHEvdPwkg`{$cYBrYAXEt#K~1xWI@X8iIgd? zacw5LNpk`k=6`>IqRlI|zg4^h!82FOMjWUF{X~6ABW#NJm*H>BkStGcD&5YS78g2Gyod5#vI~tR#jy#W&)Q7F-!6Hn!^tCS zv+nmy6s!q~{P>TZP?N4yV={$aj-!niR_qg)G|>iX`ttvp!U~*5-|cNAl0Ry$A<~Iu zM*fuBMG&gj7HSfx4~cTZoy&y!B2}byj}mH)7iWwkyzkBbvyS)IeW)ohC4k$!%;F@r}oS3U|y#V zJ#Q63BK7TVqJ_F%(cp6Kof0q7=hKNXY+d3HpQ)~!?>EI_sN@m<>nX9=O$D4EZSW6a zHY!r;?lowAV6eJ6jiljXI*rw`JP;MvH1$Lt$dAZ4mCvE3V%HDcP_v?YO(ZR~wW6y^ zRSi%%f60o0d2u;X4dmYX{xEWq^k-P3Jvfhb{Aw(Q)!tfuBp+9 z!HM}^3!wt3^t;!rTqlME0z1EE4X(`)P*KOZ)U|>(Y@P$Xle=Lo-Ue+hp|fDsj`p-$ z()%S)Jl-)#jLzK-qbgyxf@miJb;3BAc6}9Ma2muYY&?lXskJbh#oGlfLX{{@_+*>M zg#guWvVfc@jVU?-dBP=ng9XPXJi&sj4Rh2`-lGC`?S^42A$qV&&}TT>Kg2R95o)uGvkOh-P zmxJIXa6c~IlVTi_OOvVv- z*7r%hr>hf7#*L~TAiAU^zJwaia4-3dU$iA{dKM*%$?B{U@Xd%=R|?DO!1|+-2l3e! z&Pb=>-zq1`iTjU`}CY+CkK%obU< zT*0Ve8&gh&wa<6%CuA-+icjA=Zb$2`8$qtJUQ7;cve{CvJ!W{PG3Ncy1CLrBM%#qe z8`<9_q_VE8%BBX|^2eLaF9jmYJIxLX#wRyx>wOTx9|?`?>Ur3gad+5-dPE^Zf#NMcJxn$fbjx637G;|YRN)|I3 z<1Kb4zse0l1XsKse;wWlR88W97_>@*w+YP!NINeKrru-T)FK@`d{=21%e$_?aNq1$ zwg8=F27MqojnWtUJlvk0{!?Tg_t}V{nLRjUJi>WFShYmEcFywTJ6>8Tq_Dy?dCnszhN;)mObRIYwvoY}x1__LV3Xse%|+Q01gHYs zr5A5#3u)bZnbEFGUY4)<8MQt+X9_G>cZp?tytjdgIky=IVb-MM z7j9g05&dy*ou)rHYB57VoT><>&n&%TKA2Jmt{uK3kEc*LEsgd0WnNp&70n|j@eFPhQ+gdKUc~9?CopVGjPKoLr|TC5oSt z-gQ^37mS9C2`8kH6#KZ9gLzNHsopSKnQPH>r!2c>AaM$&Al$qTCKROZcL;I6*~4hDyc1%xK_AF zg+s(^<!gZo0e#Y9!zF&=wg%JS z(SbGAi2+?PnHM4iK(p8b>MS2R{x|g>*%DC1x3-;zm85A7B03Y4|23|-f)g|OgFcd@ z)W+jgXO=w#(h8M2$$S$IHfPD#sB@`|t_ksd3GVQ<_BvEf$Md3FSrUQbC`(;!x+cRt z+hs<4W;h!BvP$7ko@45#k1Cc`J0o%ZD=FQn)iQF5@cSiSeeu|5?D&2nihdVbfWGtb zE(Puy!;MRcix$6i1NxY1TPC#Nd}J5gw$%Ui|OMqe+)HeNPr#xg)vkL~D-tM~3=LXY7Wy%H2{&cHcDW`zfN zCLDp;B4@Dvm!@~h;^yv#fa5*psZySo9^DY4GTp_sq?!ky3XLk5Z+eJvo5S@6^X+7LS)G-@QDQ#B>(qO!+ zvCC}76~;GIZ7eI{@sWL@btlZdvp?q4ql`p20r_0CZY?X{-^ZyaqoI4LJeM_yC?Cs3 zzWbJuctCFx{SI{b_?zLQtV2^>7tFy<(fBLD?Fx24g!Ezen|FH!N|zFHJEqI1-_#)j z|EW^M-!${D*Fk%d(PLD3X7g_TP(Xj$_P$HWGnYL=a^`}8JEGS1bP*iH{V;mH<<)ilcvfJQU=-th>7;~4F;oL&hE#_c8ulG8V`N7kawzZ-(#M)ztIKy zM3(L)R`P?3S0`e_xsaljJSq07+1|AAGakt1Kpvz8T3g?Ct5okV%MXpYmKf50EMdEa z++2^y>Az-RM($Z`ZZNGr$p5^P_0-bh7zWq29yi@wc?^za$PU2Gx7!;Fo|R5Q@AnM& zfI&qeMDBP!@j6Ti_-Un`@F` zRJ+UHd&+VJdd0G$3(29p-viz0d8KVLn8-!2|CE#nVMI&GMy-5F5tablDiKrW$r*t+ z;?spDw`9CE4g2E4hUPYU>{I5Zt$#f^kROzaM8fDdh1QJJFiIm#&^f2jC}Dm{MA6H& zN;)kmYVR-!hCG-{m(SD(I~cYtBV`%9+E0ocjRF#;E)^o{4>6TtPpKjiTg(X1VCJ@_ ze<4WiM!ECmcr{f}f(n2MLzoTxc6tJ#$wl&Y19{Xoxp2pDkp=GWB=)%M_+rL+h3yDX z8*gXd8vYBBUklSfW&a!#{vMT_Nbl>HB46*yeg4bY^qZD#X^BXbJqcnh<=(>Ae?`&I zp_c#&@7L?$k6&6o0^b7K$(|0}DxcE4_#fKj^vaEl%D~^?n zO3KSNV*DM=I^9TD8k3ugFP095yGvVCL@D*6c1sGFkEWskBbt*(54X+GT?(|x=UxaL z#S6Tj1aVq{1?&D)5xEf+6bB3fbIL)=3+L7ldDqN4RVOZ3;IBOX+r#OAeV%1ovy@nJD_ z_aLxb$wcXiVl8#1bps7M4ms*TKf6M6ja&hUL_~T*{CBsQzI?zfr=ce7CSsvZK;UA$ z?3e1hvq18t7CQ36uE6DK5Ng)zI@Hyi-*4F1gxDvUs z`R1svF_it@!pBE_k`pLPLQMC(F+^yKt2-@oBsqar(3^r^YORAv9M6THzcS^&8Nx7m zA}{XM{AEd^h@p!)tGhmVY_`T<^wfdh0TGkp?9PQZ(Zyh2q0xe2R;%>4vOZ#s#e}31 z>|b?0{P?KokZp-d8rG_1l)YM{zU(^$7=}`jjPur(#2`>wsrnVS5f{hMoU~LFBctl3 z<>6{Ppt?a?{t`R3Yz(evs*sxl0IOX_^s%($IPEi=%`Prf+OPaE^tx7O>25`7x^SmI+<8VKpBC=0Iay}Nft_LgmKyk~v!iPRqWc+3 zXG8wxzQwUUnER7C^T|jN`bXdx5#N!eKn=Jb(hmhh@%-1^U1Y(~U zilJJeb$8PvX{=DNNxDmtbKvp5z`DtJIOO zNp%ud0Ua{~tx6+=Vty}vea&m_LdNQoL^Fn67Pem^N|F%&@xV;Y9XeK(Q%mzN6zR#< z30Gwfwi%oF6L0gwsu_DDr0YvXkR|>3Qznqt;e>|ZArrVUKCi-&8V#B_5C1E>jKbX= z(%kYd5>8?V8H%2xo0w)|woZ9LG#Jp0Z61~SZK(+9?^2}h{M}6d77>tte)Sy{PGWFN z<+hABhOS&MO^rheGS!Wi8VwNDsk9nlXCd%8)7b6%luN6tkfyv&@(XzAwwWxjgs_S zN+vrw80K^CH{PiD502E-I(%z7=fObuQ%DGtTcirO$b3k)wg#1!0%$A-h5{3Gy^b#& zw51<+DPbi9c~0s?A$^;KfG#vS)q_tu&dXiB za7Qi&rsPakm38RE1_Rn6OkswBpay6;%e$|j>Xdguk2?aJl+DW;!vvUTsgowiRAY@1 zD33tzYk`w3!QLtcQi&X;}Vg~?LpuOEUy!cj;z-f zsZv--QE^O)%BS~`N}uC*%l*Z+*B;WlwvhsCDy82i2g#Vc7Db>3+>@*7(KH647^uo< z_O99AC@;9zaJT^0Dbh+f_)fb%VBdKnt5P{X8;iuQz}~^1TQ75C2}0pLGTXKO{#DZ` zk=%@ek-t6zm^!$LD(cUTPqP#))pp}Fy4-ukmxSXqd?vxb4WJp8K@*_XS6pLKnS%$8 z8#;}@Y}K$Rywh_3wzXOzw}RGAUO0Awa8!u~U;n$zeL9kUa(|+mCu75H&!ZL2Se_ov z0Y366%g5+xCE~aBA$w$8^zVN%k>vSx_aDR2Hx8qYGw|ja5BCKV^%FbyZ!A|mwbq?z(q62x7_oDql+T7(nTvoM8 zKY8TOszS4jppJWS21)h6G4JwN^j`5~6Y`Q2rt!shhuB|Vgt#|73XfF*Xj6sNhi)Zq zBI9xs;UP@ea7}^E_&0$ydsVd^7_GuB@+wQKapFS3)MDtKNub`{#(fx`3CzOOdO}-J zbu5EzD%@YpA}ElIoo7jx3KI@$#DN60!QT>K{wU6itMH()NcqD|`zeDt78!Yx6!DQ9jwg`wr&sSk^_%UpjU!9Z~^Fz_h}6e z8;I&^5T^Luzjc92MNB+m+ZaSD$AbF34Y~M=rQ~Y8wD>9z#HJ=uX2TEmOdM_6euo@qnmLLCb}qeXSkANQZG?rtc4piS9!Xd`0|98V z6xO6x!rw2=Nff+HbYEdqzXp-X`~77--#$_WAA}h9)MDZ+lplFA^??xM%W~chr_{LH zkLQ@L7Ho{O1LEDEB0m)r>h@(~Kfm}yE9`audJd%LFxtH6x}uK7aZB;+R2F}(9kFcH z7SSD%z%{+t*60%Ps`6C$H(9Kgd`z{JckO)jI$6x0jJa}k&ZHU0dcuOvc${mLluA=X zs=en|&@!PW*{uWZM4W>;_}mp_?yhtg*K%fsTjN7WYtx3QZ~f(*cBa)VIV#)@ymUiQQcPN)c%kk^snt1BSvEgRF&e zL`Z>@*||o^YEXM<@sa~1k4WP;8;1uN%a;D{M6Rqc{tx&{-RTWyCxW4OsJvf;LeiUN z+XX^zAC4T&x^T1V2;8|`B^Ts!n}6YV^SBF}7_NOcf}CZ?vN^ z=j~R?-=nBZ2KdUgLA~=jBN;dKBdGd){luk{=j>YOR|}&?k_9aOb;UI&AcHSIs4GyB z&Iu$f(rM|imiv=HmGYp6lg2oMGHc8w0kyJ;xA@~8tUs~bQ&=DOJwV=^DJ+AQF)~A< zsee?Vw^==`Ni0R$$wA2e#-d@2qrFUIIIJe|QQqhhx+CqnBh!*2Cw3AN8Mq8nL$6D7 z7amScddAru)rQ6{?LTOza5YbYSGL)JPlz}c%=Bs;*b?%ggwPAW?;t6x^VvBHSQO6m zN5{cT11LhMvl{MSIM`3<2wsbU8;B=#zQ4fV%1AhW>nE#t4>Skh`XvR;DDlS4%7IqR zeW0Gv1=j|SmObiW3_C?WbYvn?ZZ=0Li4z8g z@Vtil2n|+!@6L#RiB>1Qm+CM2xaaSV z=9yd5)=WyU>EG&oDCdt9Uw1NCec!)Vqdx`{8|LT^iv{{@s5_M`i_}&ck_v^)yIr2E z)*hG#H@v~CW35S+9CE=!J@I;DwKj_XHzuL}WM{W~Yd^TMQul7X^ft2DSGx}J`d3xBCJ?SelJ2D^eQ-BPF2j6kkZ&+(KMVc z9^0P?WvDW*qv2CwHDx)hslk^|W~Izcj`RwXl(N|74pjR3q%SBjb-Y##n<(T(H6V8az>U8y*1{ zck74CcI=m=w`;>~cT6af4UX8#XOI1GJ$7Z*4tMTRe5>??uxsS{2S0CGRtM29bB~@W1rH{+B*E6{f z0m{c_x$_hJ$^zcXg7Nae{H)gv#>Zxd^OGP|;TMI%w!f$9*D{p_os|XDWr1x<9}i`L zBss4>V&_(o%kx~71yc7)46T;b*$iFgy+9oYTkNYO79IfFk0lslgK}M9(Ibw|jve;O z&0Jv)D-Q&FgCW9O!B*D6iPbF$I=54-l%h9c*)Npi`H|y+j>zFis8Z;v9 zwc!(bz5~WaG9@14Wh>&Y{?WjRta|I_v~9-!df89tyXKr}uuwWBBSG228-K7p@M^EX zHVL>d?cqp9;T}%zpF@i50$G4mQ zKwRm`Z~xa5mk}rkITB*uxeByTKf9mv5@ZQLGr054#n%_A~%s$z?DqKSb>>&=B$A(;F@j z)fpCAXQs&`fc4bs9$Y++412@8nVN?TyC&IYdI$kTEIriyZvpJKi-0N#M^RsfiemR! zMBFmlL_m(TS-hJ6pGXyS%oH-L9#5_bkHAk}fqoGcW?Ek5|AxC^R(`12SEeWGB0wpy zMk!!Y=FpT?{J(7Sp<_O|hzP=lvm%CNZkk9x!LO2+woUb)v`cX5x-JdwAU~=EH)fsT z>`*!pv0F*XuWtUY#XmT7U3<4D6383G1-B$zf^1XUc+NF+3H?W#X2aGYGggHEyu;%gh}XbrG~#+iRt)tKb8Cs zBthH0OHV9437am(Was@&cv=WhKfK1;vk5m`5}l99&l&IG1xdJs=zP4z)L(x&ABz^( zyl0UG$K?K|mAVuP!x;%+Fcm8JO;@SojK|(%XKY%iXoJjgHwuI^`hdf(g^FH!&!U{) z7ApD@1-JqY-L_`*eL;^3R1M<(YLUneLYHt_10-4qfjZH%zbSQvDb?7rR8*HbuuzeA zkGAd#lsaaSqK6wS$~kF~qUTKU{5{&ti$DUQKkDLL7Adl&IKS!Yzev%M?^~2put?Ea z?~BfLQv705eCYeEGw&^v;@1F&dsxQ;XWh6+QSM%?7^6llQdA4h;}l%_++OGToz56&=}81Ysg6e~9%Ry-f*@EC;f=!QhnA1?_d3;GZZLi`LuUObej zC=WS#qdt&esTQqofJz9K8NeV|>O@&5SYG}BZpcEgtd+Q}7l>fNGbRVi*B?l*WPOO| zQB<{|YiLG~G8`b8)Tx_cd#a+s(Qp#2&{Rsnou+c2pv!B= zLm(lFVZCs`W{Z5a`}jq|ZD_XT$SC-opWVlP{fkBKFn?ct{sQZBWW09i6Kei~_wOCQ<$0&{{ZWJ0U z{c#lE2UNTgKnKF8dckcza=zT?YfZpPbVw1MOZ|5#nRPcwcn*LZ< zzizRjFQIo-UB6h-VsJyt&J(Pm0=M4ahGF1s=B7hVT!(#c9CAM~&KW7?T=i8> z3Fq3tIYWo=rlC@3UV0-@nZIPh^o|8Pv)^a;N<>`tzKIB0auxrIDeAcWlkVW_$BpGeJl|7=ln^Pw!dQ&YaZlt)MB z)Z!bgY_k@a2$v+|{&Kq{=IGftIZaAiK1FTV0>yj91^5HA|k$8Ak@Gs!M3Om-HaNVRYo&e^p{ql zxh!oOiHrLR1kbnAO)G&#Fzr74fN86YX?eo8g=x6*%v5%oX*ELM+%(HxqNx5a-OX&m ziuCj)ir)V$EtdVk5fzD~?w@s4o7gD4PuGo04?~zwev*MXz@E?Wt|LibWW4#SMaOL8 zRKli4#$LG1Oe(i>Fc7!4tr=)-h1;+tBoQvrl4xtjmA_gv0VT%Ady;D_M<4l`{=)m^ zB>ln?mTtq)zhH@?q4#K&ngqh9U!&c;xkS;%Z5Cy}zeG_Jetfz_k?(U9{BDV&{`cyF z0|lbsuPEqQs^}ah1OEa+?-U5K-#`ZbH+?Sr$Kwb1FF?VxZUOIjBB8kByN0P+uJK`U z#9xx2r!ujh>W$BFi9*S6dOQ=&Y2X*!oMvQlbMiz&qe2my+6t5_zQExS%+sf5qJ6!G zbeP-M^h~s`-;kk)qUo7vU`KxmN83cxnfLi$V&A}l4Dv+j-%Qlu@Gtd4!NgWbJ&sfn z-Ph`mUoCnc#5Eue(-cN~8WA#9yQPX64(Mko)f;{ZR1lq5J@!SO2TkV?Lrb_}5GR#B}~dnLKiGmz3%i^C|P7u7j+N z(-c)xCfCotn^s}c=P=*A2 zdSi(nlMe9NJWf%e5S0o9pU2n(jSnhnklft@hY=CJ%D84~bmUS(-rvdxPm zrX#L?RBLHEIMgp5E7!xUqlEpKW+BSxDb#^h=;B*#w1j55%!pabyR18JHzVDQEV!W%=>XA;tVEMV6SiBr!)}sF zx*&rn2kmC*c67RU9K}7K(B>+ju&A;TC~7rpnsQ_}I69=%jpE@i>X$i?p(uPjO~1isB539gPMuZil3jVac2sN&POxNnEm%vst=`U3rav3QwNvUuu2%n_D5J58vkxH8x;N^h~$H+SG10ndQmwlJ?b@*AG={J>g}r-b%dXp5JBV}f8k z8#)4MJ>6MvVY>4GGWc;~y@lD%)8FtzR!?%Rx3EM)S?F8`&eEzB2!u61!x{uki{~S~ z)6*zllWv4JR25F*22@(=2K$e{XnJL$lULH?Z^t}7-n=SeinuC;{b0dgO z_|_t8_EJR!8M+tlotdUuITn6&uc0H$u+E*Ujgzi}Z{gkKhW9T0*20&i=sowFzgkob z0hroWi-7AgNzan+{njF$#jgAoeU%f*%|!A&GDcEvZMwuLt^=p-Y*xd!IL4iki3OV- zZfsWD1E$s+OBH!DwPhg)-nmrK(chu1?!yF6P{o-Qc#y>`9q4A#dJ$5k1?9mQ->h~6T@ol7z!HX^W9I0e15{eRaL} zvGP>bsV0l4BX|z@fxXs?T%07Iw^b&2VxvOw;z+EL_yXec9}tEYj8KGof1xA4d@CHG zsOATYa!N-idgcd3cEf59Ig%7bc_)ip^Qmm-^F4W8=%M{g!8|nmt zz6;uTD)t=zIX?3)N%tLGGX$QyZWm5c89Rm`B<|ZK-Wm*VtwM?&GZ?=50Lg&gCY{{3 zi~Z7*T!Y~z^3}jE;C?f>AG^Cb_nX1}LY$gmFEzBvWaWpzSa_*$w|ME%-QuMe9b(GT z#8|6fPkwG_Tt6DmtXZs$+$<2DL3B~p@MVg&O74Dvz~X;1zm>#el^l1Dzq~6oOA~X^ zP$i77;hmKoaoi^oio)E*F4$`$C*ZeJIqxFJrZ4y)Lcvcsu^g)?iiE)BA?ETLGMyS& z#5)4_BQF}NOk-a1v((Et)XOtJThs|7b(T$*kl<%chc<_X(+*8Ooi49 z&0C;Bg--fKDm3>AZC)pVU=GE&LYIR9>t8BpTOi0%8m^GsH3ET!hFqcVf=RRX#BB*Z zvD1zkTDB)Tz>T2k7tArjV?uN{zty zuNmDJ$g2zolchwzbNH*@xYs(1T$)pJl`&vrj^wDCw@SOsH4A6HTt2UxXC?Dlhtqz; zZ87;eOCMAkfUK-J%M|SpV|NNf`2`#}z*f66IcEtf>ZN6hA}E;Z#90$N7K`|CHqlX| z@yRrG^sU@4xO~MHJ@^}(NH4ku1}%C6i7I;Ebyu-PXYVn`mx$K5+!tAN;~sWFcXF*^ z3i8!yBi?2YjoX7e?~zkQ?=V5_9!%=8KDHHY7LRNd2)o{a6+hdGUI$&)o68h!6Lh0M zkZlB6<1$5mI%Ms|pbi2-#)oe}cKlvQb*7SzPm1HAkmCybsdSelsF7Weztj7a1njUKA5@JB5Pe(QSM>7DjK2PmpF{R*P^UvN)`F)H0urm&n6;#r8MWQQbpTY zxvXEqit+{DUm%S5imMu)s22V^!5?N>`wliM;186B;-TVjB;r_9{j?S@v4^kMhUfuq zA!qEvQM+&=N%t#M@iqJO6WBym@UTTQkP>4jDpdH(`*05XuuN=0euzta4JG(etvYew zI)Tu>4K`%sY=%MB3-UxF!tN^4wY*ufw+cjAT<*bkw)!2z1kO-)5KFoW1lds#fnx%> zl4+0-0fK`Xruc}@Gdj+xdnVmURaDFNb^0C60e#9m_SnqdwTEW0hdw|`JT!|vwC{I| z+PQ^UzCh1tTFBgv-H#sjl@W>>r8ZB7`tVSbsJ~wz)NkgYOkrhM!?KQe2Y^Tz1h(v< zVL}!W2(r!)0S^^Qra?jk2oCL`;Q_oNcN|l*I?X{?{&n{;r5;~MQ%}{y+F`hXpCzu znFg6Mj-#`$pbG?|Y%i3B@B2%pL87eoJ*D>=x)(LBXna1+C7xtyI8j3H@Eg@Be^}%h zMPDn-XkYsS=NgFK%|1iDgn`#q2a_wt`S4PoRChqVjMuS|BpUnKfr^0-qx71(Z33Pd56Ey)?+0-qPD*zBzGWO{}MC{HpCGUXtSx&lEL3PjmB$|CB9NTxxeEC{6HR|vXJAW)-BV9#Uq z(EF_x^csO68`CU4zF(%u_nbDNlR(hi0apJkQ?%|ci?XwpEBcOk!sK2;*Iyv$Cx9o; z(CcGMy#-}Rpgba@Ee_D*1@6$vifUWyp8syhs+z2*#{qa1A)A!)lLbP=J;pOtl4+1& z4g%66WR0Mw2?XjK76e2*9M@*+ zO8>}(983TjBG~+($;eNVg*9rvl&%lj?d7b2L6$tDPs96N_r~gPW zd;dkGA((dv-F|_f--T#N1@lfp84_3oZuFCn@UxuSGfGNs1P+&X@yE7rI)3px*|1MEGYQO9ido5n#u{(Iob2 znTRd?uU6MYZh1Ir)9d^)IfvZjDfd^|w2sqfBOMGyl73px88;#$T2W4KaB?iU$(soH zqc+iN{JwfFa*9SFIckkXuOsOXj?jy~uVq&3vFJN;Q=4K?L~+@-FRu+x?B8XM9+#VZ z)yOHL4>Qpux*?|#IW~R5G(ne}JR|5MPOL)0wrNY|@JlRuAH@0IOnelog1*h%k^LyUFCEbX&m9M^Rmg|$BfnQ<6@_A@~fS`Cg_bdPeAhp%$d z>6M%oi}$d>?<+TXHB0&}bLI0E?M041UV=16yJIrk)Mh;H)c7qEi#6n{WgDoDU)x`p z;U-U!KM|r8oSuwyNr3NQThj_(Ab0{f33{OwI)Se;+~g}blD+y07dSc-F0gWzE2=(H zJK$9~pzCr)=ViJn=e*^LZq0O4cHiZS?!b?$mn&L`Vp$!k743dm$Bg?G4H0(h!QuRB zMQ?(vr3-_hVg#M>UG1y7p!kq?-+j(6?0(2}<5;zX$mgvPBH69nJG zt=vReFrZ_-<}^?sRQU?3z?kb=xrtRD?a&tr-DH8F-)`t<8TxvMeu~ho76|$shJL%D zx3Y{rYlN;*An3m_^j)$MQqk?QN+yPojip_H|iUcI#)k^~bdW z^mrETA$iDh>%Hewv+xGvO(ZK4_yEaNF0cz3rg6~JEYx)yH^+WYa%md!<+jBftb}G{ z;q+)vx0}dUfV@~Fcxfz2PcyF?x0|q5hn#0P=NYD~24$jzUgXjrBaa8R{o)ULOB6E`pcy9k2A_)#M`fjI3rjovNbXdR z{f0KmRFm=Xr&-_cvB-b8n><_(o7hnkk&c23eaRVX50`p-gX^u8$4%a7sFJIi-e8i> z9yet@v|P~!i3smHEfPkLgtHbcS9F!fP1$RfD;kL(>y|5e5kEF9SM<3DEoSR-MZ=`z z8iC+29vpsJu83NTa|;DKMIfj)VZ$$c+Oaj5p*yG%baQ5(8nVklMp;=;DB37=2Lys$ zHH4nr+Ei%5reFBo>v2c8_0;bGzf$EU!1Xl4jV4)ogq!54>Ir@aTZ@eH zSUiMlb~jlIud`??vSN`S7kiwGwavzmk&{Ud>C;SlRyG=6H4t_nR$NRkvl2IEyUAk* zqWl&kf$+~txO2*FiY78y z$s>w7yr~_LFA!wkf^7UFik2~1`$rTt3VMe?ke!HEu)M{i^}Cu$dx5|nz%B>g^)sPC zV`~Kh`!+;i*U!c_Zpy*NpP%u=s!`O|i`c_MUXo3$fM zw3^_WbQoeXa3u7wiN59c+7pj-laGApokGPy6ARAc|P4h6F}X3yCPp()EYu%sPG>q5FGA6sHAMflipyo$HBHg znsChXeylYVGkt|HLO;GOI1CS2z1zCUSBG3)AzXAAmWS^`CbeUG7axWR+Kb4^M-E>F zwuCc}&VieW+SwmzDLVvu!t^Y2zdFZFz8Vxu&~seoZsar|hZ#N3neXQ?BMT4Hbd+{O zT_%RNGDUeuWjbRE>BqrdA}3!U{IM|8Jk3j{L1J9O1CW#*DrloK%C62#`!a+fi3q9T zkoE|*Q;?bBVeokwIzVTG+%H7n0D|U=a3!+u{VKohRFl0;J5s94ljIXnc7WD#Ou2n- z(kr{$IK2RAThFTBISkucnmC81ACA^k&@MHLfBi7b;uFZ>rBR~S4|DCc=&^QgYQqyJ7uP#(MP)}CvT>rbw|4?>$nk$#tNAsFGlU4@trY3 z(UI-ll+$yBqF(J0o6O(4RrBv85d42d0r0;81;BrPd*RJqZ{VaMAzr(>QItJ}}$+4K| z(y{oRah#hxfmlT}Nyj05?s0DNav$41x!0l?l76E0msD9a^*El}_8?b#2q2%0DhX2u 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⋙-NT*_ai$ofhOvI3A@J}H;B+GG=@dYYsl<167H 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

    Y}me7_{(lXM3TOk)EYrkMzQ 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 z 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

    bAP=O3gud7log##oP|!adyZ(%Wp%+gGc% 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

    g0Bq+g#T^p>RjMUJ4@Pi? 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

    C{3zr#@rtx-v?>USv*-(mUc> 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

    vqADPg0&P3W;oXB{n$; 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")F_1nLWE8Yd{%b_TfwTq_
    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

    +=upK_=^Qyhe(dzv6afeK+O2{II@ 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
  • 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≫Ud?^KWu-lk2P-9 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%0Dd`9&K_ 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⋘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 B5?BBL diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 137f0078..ff9e1712 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -96,11 +96,11 @@ type MethodDefaultOption struct { RESTQueryValues SliceStringValue `swipe:"option"` RESTPathVars map[string]string `swipe:"option"` RESTBodyType StringValue `swipe:"option"` - Aggregate []Aggregate `swipe:"option"` - ServerEncodeResponse FuncTypeValue `swipe:"option"` - ServerDecodeRequest FuncTypeValue `swipe:"option"` - ClientEncodeRequest FuncTypeValue `swipe:"option"` - ClientDecodeResponse FuncTypeValue `swipe:"option"` + //Aggregate []Aggregate `swipe:"option"` + ServerEncodeResponse FuncTypeValue `swipe:"option"` + ServerDecodeRequest FuncTypeValue `swipe:"option"` + ClientEncodeRequest FuncTypeValue `swipe:"option"` + ClientDecodeResponse FuncTypeValue `swipe:"option"` } type MethodOption struct { diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 2a533899..38310e7c 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOption ...\ntype MethodDefaultOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// AggregateOption ...\ntype AggregateOption string\n\n// Params ...\nfunc Params(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Results ...\nfunc Results(value []string) AggregateOption { return \"implementation not generated, run swipe\" }\n\n// Aggregate ...\n// @type:\"repeat\"\nfunc Aggregate(method interface{}, opts ...AggregateOption) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOption ...\ntype MethodDefaultOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } From 84c84f6d138bab8046e7d4c139f336b8a0723096 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 23 Aug 2021 11:30:38 +0300 Subject: [PATCH 219/293] refactor: fixed rest client/server wrap data generation --- v3/internal/plugin/gokit/config/config.go | 4 +- .../plugin/gokit/generator/rest_client.go | 6 +- .../plugin/gokit/generator/rest_server.go | 4 +- v3/internal/plugin/gokit/generator/utils.go | 68 ++++++++++--------- .../plugin/gokit/generator/utils_test.go | 49 ++++++++----- v3/swipe/swipe.go | 2 +- 6 files changed, 75 insertions(+), 58 deletions(-) diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index ff9e1712..35fca897 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -104,8 +104,8 @@ type MethodDefaultOption struct { } type MethodOption struct { - Signature *option.NamedType - MethodDefaultOption + Signature *option.NamedType + MethodDefaultOption `mapstructure:",squash"` } type OpenapiInfo struct { diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index e2d046a4..3d7473cd 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -273,7 +273,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { bytesPkg := importer.Import("bytes", "bytes") g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) } - case "x-www-form-urlencoded": + case "urlencoded": ioutilPkg := importer.Import("ioutil", "io/ioutil") bytesPkg := importer.Import("bytes", "bytes") g.w.W("r.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n") @@ -284,7 +284,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("params.Set(\"data\", %s)\n", name) } g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) - case "form-data": + case "multipart": bytesPkg := importer.Import("bytes", "bytes") multipartPkg := importer.Import("multipart", "mime/multipart") ioutilPkg := importer.Import("ioutil", "io/ioutil") @@ -386,7 +386,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n") if mopt.RESTWrapResponse.Value != "" { - g.w.W("return resp.%s.Data, nil\n", structPath) + g.w.W("return resp.%s, nil\n", structPath) } else { g.w.W("return resp, nil\n") } diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index d68270b6..8cb36a94 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -369,7 +369,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) g.w.W("}\n") - case "x-www-form-urlencoded": + case "urlencoded": if g.UseFast { } else { g.w.W("r.ParseForm()\n") @@ -378,7 +378,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") } } - case "form-data": + case "multipart": multipartMaxMemory := mopt.RESTMultipartMaxMemory.Value if multipartMaxMemory == 0 { multipartMaxMemory = 67108864 diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 527d72fa..e901aa6d 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -700,18 +700,6 @@ func isFileType(i interface{}, importer swipe.Importer) bool { } func wrapDataServer(parts []string) string { - var fn func(e *list.Element) string - fn = func(e *list.Element) (out string) { - if next := e.Next(); next != nil { - out += "map[string]interface{}{" - out += strconv.Quote(e.Value.(string)) + ": " - out += fn(next) - out += "}" - } else { - out += "map[string]interface{}{" + strconv.Quote(e.Value.(string)) + ": response }" - } - return out - } l := list.New() if len(parts) > 0 { e := l.PushFront(parts[0]) @@ -719,39 +707,53 @@ func wrapDataServer(parts []string) string { e = l.InsertAfter(parts[i], e) } } - return fn(l.Front()) + return wrapDataServerRecursive(l.Front()) } -func wrapDataClient(parts []string, responseType string) (result, structPath string) { - var fn func(e *list.Element) string - fn = func(e *list.Element) (out string) { - if next := e.Next(); next != nil { - out += "struct { " - out += strcase.ToCamel(e.Value.(string)) + " " - out += fn(next) - out += "}" - } else { - out += fmt.Sprintf("struct {\nData %s `json:\"%s\"`\n}", responseType, e.Value) - } - if prev := e.Prev(); prev != nil { - out += " `json:\"" + prev.Value.(string) + "\"`" - } - return out +func wrapDataServerRecursive(e *list.Element) (out string) { + value := e.Value.(string) + out += "map[string]interface{}{" + + if next := e.Next(); next != nil { + out += strconv.Quote(value) + ": " + out += wrapDataServerRecursive(next) + } else { + out += strconv.Quote(e.Value.(string)) + ": response " } - paths := make([]string, 0, len(parts)) + out += "}" + return +} + +func wrapDataClientRecursive(e *list.Element, responseType string) (out string) { + value := e.Value.(string) + out += strcase.ToCamel(value) + if next := e.Next(); next != nil { + out += " struct {\n" + out += wrapDataClientRecursive(next, responseType) + out += "} `json:\"" + value + "\"`" + } else { + out += fmt.Sprintf(" %s `json:\"%s\"`\n", responseType, e.Value) + } + return +} +func wrapDataClient(parts []string, responseType string) (result, structPath string) { + paths := make([]string, 0, len(parts)) l := list.New() if len(parts) > 0 { paths = append(paths, strcase.ToCamel(parts[0])) e := l.PushFront(parts[0]) for i := 1; i < len(parts); i++ { - if i != len(parts)-1 { - paths = append(paths, strcase.ToCamel(parts[i])) - } + paths = append(paths, strcase.ToCamel(parts[i])) e = l.InsertAfter(parts[i], e) } } - return fn(l.Front()), stdstrings.Join(paths, ".") + structPath = stdstrings.Join(paths, ".") + result += "struct { " + result += wrapDataClientRecursive(l.Front(), responseType) + result += "}" + return + } func findParam(p *option.VarType, vars []string) (varType, bool) { diff --git a/v3/internal/plugin/gokit/generator/utils_test.go b/v3/internal/plugin/gokit/generator/utils_test.go index dccb3a37..461d6228 100644 --- a/v3/internal/plugin/gokit/generator/utils_test.go +++ b/v3/internal/plugin/gokit/generator/utils_test.go @@ -21,11 +21,16 @@ func Test_wrapData(t *testing.T) { `map[string]interface{}{"a": response }`, args{[]string{"a"}}, }, + { + "success test 2", + `map[string]interface{}{"data": response }`, + args{[]string{"data"}}, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := wrapDataServer(tt.args.parts); got != tt.want { - t.Errorf("wrapDataClient() = %v, want %v", got, tt.want) + t.Errorf("wrapDataServer() = %v, want %v", got, tt.want) } }) } @@ -37,29 +42,39 @@ func Test_wrapDataClient(t *testing.T) { responseType string } tests := []struct { - name string - want string - wantPath string - args args + name string + args args + wantResult string + wantStructPath string }{ { - "success test 1", - "struct { A struct { B struct {\nData User `json:\"c\"`\n} `json:\"b\"`} `json:\"a\"`}", - "A.B", - args{ - []string{"a", "b", "c"}, - "User", - }, + "success 1", + args{[]string{"data"}, "string"}, + "struct { Data string `json:\"data\"`\n}", + "Data", + }, + { + "success 2", + args{[]string{"data", "user"}, "string"}, + "struct { Data struct {\nUser string `json:\"user\"`\n} `json:\"data\"`}", + "Data.User", + }, + { + "success 2", + args{[]string{"data", "user", "foo"}, "string"}, + "struct { Data struct {\nUser struct {\nFoo string `json:\"foo\"`\n} `json:\"user\"`} `json:\"data\"`}", + "Data.User.Foo", }, } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, path := wrapDataClient(tt.args.parts, tt.args.responseType) - if got != tt.want { - t.Errorf("wrapDataClient() = %v, want %v", got, tt.want) + gotResult, gotStructPath := wrapDataClient(tt.args.parts, tt.args.responseType) + if gotResult != tt.wantResult { + t.Errorf("wrapDataClient() gotResult = %v, want %v", gotResult, tt.wantResult) } - if path != tt.wantPath { - t.Errorf("wrapDataClient() = %v, want %v", path, tt.wantPath) + if gotStructPath != tt.wantStructPath { + t.Errorf("wrapDataClient() gotStructPath = %v, want %v", gotStructPath, tt.wantStructPath) } }) } diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 394bd1b3..8f253e72 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -11,7 +11,7 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -const Version = "v3.0.0-beta1" +const Version = "v3.0.0-beta2" type ContextKey string From b6db77af4b39c4497982d561cf72fa94c5ba71ed Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 23 Aug 2021 14:35:37 +0300 Subject: [PATCH 220/293] refactor: fixed default method options not working --- v3/internal/plugin/gokit/config/config.go | 54 ++++++++++++++++-- .../plugin/gokit/generator/instrumenting.go | 2 +- v3/internal/plugin/gokit/generator/logging.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 16 +++--- .../plugin/gokit/generator/rest_client.go | 14 ++--- .../plugin/gokit/generator/rest_server.go | 22 ++++---- v3/internal/plugin/gokit/generator/utils.go | 20 +++---- v3/internal/plugin/gokit/plugin.go | 54 +++--------------- v3/internal/plugin/gokit/utils.go | 55 +++++++++++++++++++ 9 files changed, 150 insertions(+), 89 deletions(-) diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 35fca897..0a086d31 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -29,19 +29,63 @@ type SliceStringValue struct { } type StringValue struct { - Value string + Value *string +} + +func (v StringValue) IsValid() bool { + return v.Value != nil +} + +func (v StringValue) Take() string { + if v.Value == nil { + return "" + } + return *v.Value } type IntValue struct { - Value int + Value *int +} + +func (v IntValue) IsValid() bool { + return v.Value != nil +} + +func (v IntValue) Take() int { + if v.Value == nil { + return 0 + } + return *v.Value } type Int64Value struct { - Value int64 + Value *int64 +} + +func (v Int64Value) IsValid() bool { + return v.Value != nil +} + +func (v Int64Value) Take() int64 { + if v.Value == nil { + return 0 + } + return *v.Value } type BoolValue struct { - Value bool + Value *bool +} + +func (v BoolValue) IsValid() bool { + return v.Value != nil +} + +func (v BoolValue) Take() bool { + if v.Value == nil { + return false + } + return *v.Value } type ExternalInterface struct { @@ -89,7 +133,7 @@ type MethodDefaultOption struct { LoggingContext []LoggingContext `swipe:"option"` RESTMethod StringValue `swipe:"option"` RESTWrapResponse StringValue `swipe:"option"` - RESTPath *StringValue `swipe:"option"` + RESTPath StringValue `swipe:"option"` RESTMultipartMaxMemory Int64Value `swipe:"option"` RESTHeaderVars SliceStringValue `swipe:"option"` RESTQueryVars SliceStringValue `swipe:"option"` diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index 06de0c38..7bbf7d66 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -59,7 +59,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) - if mopt.Instrumenting.Value { + if mopt.Instrumenting.Take() { methodName := iface.Named.Name.Lower() + "." + m.Name.Value g.w.WriteDefer( []string{"begin " + timePkg + ".Time"}, diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 816f8f82..1378add3 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -81,7 +81,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) - if mopt.Logging.Value && len(logParams) > 0 { + if mopt.Logging.Take() && len(logParams) > 0 { methodName := iface.Named.Name.Lower() + "." + m.Name.Value timePkg := importer.Import("time", "time") diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 1d71a112..4ebedb22 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -77,7 +77,7 @@ func (g *Openapi) Generate(ctx context.Context) []byte { var ( pathStr string op *openapi.Operation - httpMethodName = mopt.RESTMethod.Value + httpMethodName = mopt.RESTMethod.Take() ) tags := g.MethodTags[iface.Named.Name.Value+m.Name.Value] @@ -91,8 +91,8 @@ func (g *Openapi) Generate(ctx context.Context) []byte { } else { op = g.makeRestPath(m, mopt) - if mopt.RESTPath != nil { - pathStr = mopt.RESTPath.Value + if mopt.RESTPath.IsValid() { + pathStr = mopt.RESTPath.Take() } else { pathStr = strcase.ToKebab(m.Name.Value) } @@ -389,9 +389,9 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config responseSchema.Example = json.RawMessage("null") } - if mopt.RESTWrapResponse.Value != "" { + if mopt.RESTWrapResponse.Take() != "" { properties := openapi.Properties{} - properties[mopt.RESTWrapResponse.Value] = responseSchema + properties[mopt.RESTWrapResponse.Take()] = responseSchema responseSchema = &openapi.Schema{ Properties: properties, } @@ -571,9 +571,9 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodDefaultOpti g.fillTypeDef(m.Sig.Results[0].Type) responseSchema = g.schemaByType(m.Sig.Results[0].Type) } - if mopt.RESTWrapResponse.Value != "" { + if mopt.RESTWrapResponse.Take() != "" { properties := openapi.Properties{} - properties[mopt.RESTWrapResponse.Value] = responseSchema + properties[mopt.RESTWrapResponse.Take()] = responseSchema responseSchema = &openapi.Schema{ Properties: properties, } @@ -632,7 +632,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodDefaultOpti }) } - switch mopt.RESTMethod.Value { + switch mopt.RESTMethod.Take() { case "POST", "PUT", "PATCH": o.RequestBody = &openapi.RequestBody{ Required: true, diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 3d7473cd..6b11deb9 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -88,19 +88,19 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { epName := LcNameEndpoint(iface, m) - bodyType := mopt.RESTBodyType.Value + bodyType := mopt.RESTBodyType.Take() if bodyType == "" { bodyType = "json" } - httpMethod := mopt.RESTMethod.Value + httpMethod := mopt.RESTMethod.Take() if httpMethod == "" { httpMethod = "GET" } var pathStr string - if mopt.RESTPath != nil { - pathStr = mopt.RESTPath.Value + if mopt.RESTPath.IsValid() { + pathStr = mopt.RESTPath.Take() } else { pathStr = path.Join("/", strcase.ToKebab(m.Name.Value)) } @@ -359,8 +359,8 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { wrapData, structPath string ) - if mopt.RESTWrapResponse.Value != "" { - wrapData, structPath = wrapDataClient(stdstrings.Split(mopt.RESTWrapResponse.Value, "."), responseType) + if mopt.RESTWrapResponse.Take() != "" { + wrapData, structPath = wrapDataClient(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."), responseType) g.w.W("var resp %s\n", wrapData) } else { g.w.W("var resp %s\n", responseType) @@ -385,7 +385,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, responseType) g.w.W("}\n") - if mopt.RESTWrapResponse.Value != "" { + if mopt.RESTWrapResponse.Take() != "" { g.w.W("return resp.%s, nil\n", structPath) } else { g.w.W("return resp, nil\n") diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 8cb36a94..8210d74d 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -193,7 +193,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - bodyType := mopt.RESTBodyType.Value + bodyType := mopt.RESTBodyType.Take() if bodyType == "" { bodyType = "json" } @@ -226,8 +226,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } var urlPath string - if mopt.RESTPath != nil { - urlPath = mopt.RESTPath.Value + if mopt.RESTPath.IsValid() { + urlPath = mopt.RESTPath.Take() } else { urlPath = strcase.ToKebab(m.Name.Value) } @@ -240,8 +240,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if g.UseFast { g.w.W("r.To(") - if mopt.RESTMethod.Value != "" { - g.w.W(strconv.Quote(mopt.RESTMethod.Value)) + if mopt.RESTMethod.Take() != "" { + g.w.W(strconv.Quote(mopt.RESTMethod.Take())) } else { g.w.W(strconv.Quote("GET")) } @@ -257,8 +257,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W(", ") } else { g.w.W("r.Methods(") - if mopt.RESTMethod.Value != "" { - g.w.W(strconv.Quote(mopt.RESTMethod.Value)) + if mopt.RESTMethod.Take() != "" { + g.w.W(strconv.Quote(mopt.RESTMethod.Take())) } else { g.w.W(strconv.Quote("GET")) } @@ -348,7 +348,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } if len(paramVars) > 0 { - switch stdstrings.ToUpper(mopt.RESTMethod.Value) { + switch stdstrings.ToUpper(mopt.RESTMethod.Take()) { case "POST", "PUT", "PATCH": switch bodyType { case "json": @@ -379,7 +379,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } } case "multipart": - multipartMaxMemory := mopt.RESTMultipartMaxMemory.Value + multipartMaxMemory := mopt.RESTMultipartMaxMemory.Take() if multipartMaxMemory == 0 { multipartMaxMemory = 67108864 } @@ -447,7 +447,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if g.JSONRPCEnable { g.w.W("encodeResponseJSONRPC") } else { - if mopt.RESTWrapResponse.Value != "" { + if mopt.RESTWrapResponse.Take() != "" { var responseWriterType string if g.UseFast { responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) @@ -455,7 +455,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) } g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.w.W("return encodeResponseHTTP(ctx, w, %s)\n", wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Value, "."))) + g.w.W("return encodeResponseHTTP(ctx, w, %s)\n", wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."))) g.w.W("}") } else { g.w.W("encodeResponseHTTP") diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index e901aa6d..2387c362 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -136,13 +136,13 @@ func UcNameWithAppPrefix(iface *config.Interface, useServicePrefix ...bool) stri isUseServicePrefix = useServicePrefix[0] } if isUseServicePrefix && iface.Gateway != nil { - if iface.ClientName.Value != "" { - return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.ClientName.Value) + if iface.ClientName.Take() != "" { + return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.ClientName.Take()) } return strcase.ToCamel(iface.Named.Pkg.Module.ID) + iface.Named.Name.Upper() } - if iface.ClientName.Value != "" { - return strcase.ToCamel(iface.ClientName.Value) + if iface.ClientName.Take() != "" { + return strcase.ToCamel(iface.ClientName.Take()) } return iface.Named.Name.Upper() } @@ -156,15 +156,15 @@ func LcAppName(iface *config.Interface) string { } func UcNameJS(iface *config.Interface) string { - if iface.ClientName.Value != "" { - return strcase.ToCamel(iface.ClientName.Value) + if iface.ClientName.Take() != "" { + return strcase.ToCamel(iface.ClientName.Take()) } return iface.Named.Name.Upper() } func LcNameJS(iface *config.Interface) string { - if iface.ClientName.Value != "" { - return strcase.ToLowerCamel(iface.ClientName.Value) + if iface.ClientName.Take() != "" { + return strcase.ToLowerCamel(iface.ClientName.Take()) } return iface.Named.Name.Lower() } @@ -630,8 +630,8 @@ func jsDocTypeRecursive(i interface{}, nested int) string { } func docMethodName(iface *config.Interface, method *option.FuncType) string { - if iface.ClientName.Value != "" { - return "JSONRPCClient" + strcase.ToCamel(iface.ClientName.Value) + "." + method.Name.Lower() + if iface.ClientName.Take() != "" { + return "JSONRPCClient" + strcase.ToCamel(iface.ClientName.Take()) + "." + method.Name.Lower() } return "JSONRPCClient" + iface.Named.Name.Upper() + "." + method.Name.Lower() } diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 35dcf785..f0b34e63 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -8,7 +8,6 @@ import ( "path" "path/filepath" - "github.com/imdario/mergo" "github.com/mitchellh/mapstructure" "github.com/swipe-io/strcase" @@ -22,37 +21,6 @@ func init() { swipe.RegisterPlugin(&Plugin{}) } -//type override struct { -//} -// -//func (o override) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { -// //if typ == reflect.TypeOf(time.Time{}) { -// return func(dst, src reflect.Value) error { -// if dst.CanSet() { -// if dst.IsZero() { -// } -// //if t.overwrite { -// // isZero := src.MethodByName("IsZero") -// // -// // result := isZero.Call([]reflect.Value{}) -// // if !result[0].Bool() { -// // dst.Set(src) -// // } -// //} else { -// // isZero := dst.MethodByName("IsZero") -// // -// // result := isZero.Call([]reflect.Value{}) -// // if result[0].Bool() { -// // dst.Set(src) -// // } -// //} -// } -// return nil -// } -// //} -// //return nil -//} - type Plugin struct { config config.Config } @@ -89,24 +57,18 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *opti for _, m := range ifaceType.Methods { recvNamed := m.Sig.Recv.(*option.NamedType) - dstMethodOption := p.config.MethodDefaultOptions - srcMethodOption, ok := p.config.MethodOptionsMap[recvNamed.Name.Value+m.Name.Value] - if ok { - if err := mergo.Merge(&dstMethodOption, &srcMethodOption, mergo.WithOverride); err != nil { - errs = append(errs, err) - continue - } - } + dstMethodOption, _ := p.config.MethodOptionsMap[recvNamed.Name.Value+m.Name.Value] + dstMethodOption = fillMethodDefaultOptions(dstMethodOption, p.config.MethodDefaultOptions) - if !p.config.LoggingEnable && dstMethodOption.Logging.Value { + if !p.config.LoggingEnable && dstMethodOption.Logging.Take() { p.config.LoggingEnable = true } - if !p.config.InstrumentingEnable && dstMethodOption.Instrumenting.Value { + if !p.config.InstrumentingEnable && dstMethodOption.Instrumenting.Take() { p.config.InstrumentingEnable = true } - if p.config.JSONRPCEnable == nil && dstMethodOption.RESTPath != nil { - pathVars, err := pathVars(dstMethodOption.RESTPath.Value) + if p.config.JSONRPCEnable == nil && dstMethodOption.RESTPath.Value != nil { + pathVars, err := pathVars(*dstMethodOption.RESTPath.Value) if err != nil { errs = append(errs, err) continue @@ -226,7 +188,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { MethodTags: p.config.OpenapiMethodTags, Licence: p.config.OpenapiLicence, Servers: p.config.OpenapiServers, - Output: p.config.OpenapiOutput.Value, + Output: p.config.OpenapiOutput.Take(), Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, IfaceErrors: p.config.IfaceErrors, @@ -243,7 +205,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, DefaultErrorEncoder: p.config.DefaultErrorEncoder.Value, - JSONRPCPath: p.config.JSONRPCPath.Value, + JSONRPCPath: p.config.JSONRPCPath.Take(), }) if jsClientEnable { result = append(result, &generator.JSONRPCJSClientGenerator{ diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index 673a945e..80e09815 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -221,3 +221,58 @@ func makeFuncDeclTypes(pkgs []*packages.Package) (result map[string]typeInfo) { } return } + +func fillMethodDefaultOptions(method, methodDefault config.MethodDefaultOption) config.MethodDefaultOption { + if !method.RESTMethod.IsValid() { + method.RESTMethod = methodDefault.RESTMethod + } + if !method.RESTMultipartMaxMemory.IsValid() { + method.RESTMultipartMaxMemory = methodDefault.RESTMultipartMaxMemory + } + if !method.RESTBodyType.IsValid() { + method.RESTBodyType = methodDefault.RESTBodyType + } + if method.RESTHeaderVars.Value == nil { + method.RESTHeaderVars.Value = methodDefault.RESTHeaderVars.Value + } + if !method.RESTPath.IsValid() { + method.RESTPath = methodDefault.RESTPath + } + if method.RESTQueryValues.Value == nil { + method.RESTQueryValues.Value = methodDefault.RESTQueryValues.Value + } + if method.RESTQueryVars.Value == nil { + method.RESTQueryVars.Value = methodDefault.RESTQueryVars.Value + } + if !method.RESTWrapResponse.IsValid() { + method.RESTWrapResponse.Value = methodDefault.RESTWrapResponse.Value + } + if method.ClientEncodeRequest.Value == nil { + method.ClientEncodeRequest.Value = methodDefault.ClientEncodeRequest.Value + } + if method.ClientDecodeResponse.Value == nil { + method.ClientDecodeResponse.Value = methodDefault.ClientDecodeResponse.Value + } + if method.ServerDecodeRequest.Value == nil { + method.ServerDecodeRequest.Value = methodDefault.ServerDecodeRequest.Value + } + if method.ServerEncodeResponse.Value == nil { + method.ServerEncodeResponse.Value = methodDefault.ServerEncodeResponse.Value + } + if !method.Instrumenting.IsValid() { + method.Instrumenting = methodDefault.Instrumenting + } + if !method.Logging.IsValid() { + method.Logging = methodDefault.Logging + } + if method.LoggingContext == nil { + method.LoggingContext = methodDefault.LoggingContext + } + if method.LoggingParams.Excludes == nil { + method.LoggingParams.Excludes = methodDefault.LoggingParams.Excludes + } + if method.LoggingParams.Includes == nil { + method.LoggingParams.Includes = methodDefault.LoggingParams.Includes + } + return method +} From 6f756684130be61a946ff8e62f93513f89d622f0 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 2 Sep 2021 14:23:19 +0300 Subject: [PATCH 221/293] refactor: some improvements --- docs/swipe_gen_gokit_openapi.json | 1 - v3/{internal => }/format/fomrat.go | 0 v3/{internal => }/frame/bytes_frame.go | 0 v3/{internal => }/frame/factory.go | 0 v3/{internal => }/frame/golang_frame.go | 3 +- v3/{internal => }/frame/js_frame.go | 0 v3/internal/annotation/parser.go | 13 - v3/internal/ast/copy.go | 468 ---------------- v3/internal/ast/finder.go | 28 - v3/internal/ast/loader.go | 3 +- v3/internal/{types/types.go => ast/utils.go} | 4 +- .../gokit/generator/jsonrpc_js_client.go | 2 +- v3/internal/stcreator/config.go | 6 - v3/internal/stcreator/loader.go | 55 -- v3/internal/stcreator/mongo_loader.go | 13 - v3/internal/stcreator/postgres_loader.go | 281 ---------- v3/internal/stcreator/project.go | 295 ---------- v3/main2.go | 502 ------------------ v3/swipe/swipe.go | 3 +- 19 files changed, 8 insertions(+), 1669 deletions(-) delete mode 100755 docs/swipe_gen_gokit_openapi.json rename v3/{internal => }/format/fomrat.go (100%) rename v3/{internal => }/frame/bytes_frame.go (100%) rename v3/{internal => }/frame/factory.go (100%) rename v3/{internal => }/frame/golang_frame.go (95%) rename v3/{internal => }/frame/js_frame.go (100%) delete mode 100644 v3/internal/ast/copy.go delete mode 100644 v3/internal/ast/finder.go rename v3/internal/{types/types.go => ast/utils.go} (74%) delete mode 100644 v3/internal/stcreator/config.go delete mode 100644 v3/internal/stcreator/loader.go delete mode 100644 v3/internal/stcreator/mongo_loader.go delete mode 100644 v3/internal/stcreator/postgres_loader.go delete mode 100644 v3/internal/stcreator/project.go delete mode 100644 v3/main2.go diff --git a/docs/swipe_gen_gokit_openapi.json b/docs/swipe_gen_gokit_openapi.json deleted file mode 100755 index d78a13d8..00000000 --- a/docs/swipe_gen_gokit_openapi.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.0","info":{"title":"Statistic Search Queries Service","contact":{},"license":{},"version":"v1.0.0"},"paths":{"/stat/search":{"post":{"tags":["/stat"],"summary":"SearchQueries","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"dateFrom":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"dateTo":{"type":"string","format":"date-time","example":"1985-04-02T01:30:00.00Z"},"index":{"type":"string","format":"string","example":"abc"},"numberClicks":{"type":"string","format":"string","example":"abc"},"query":{"type":"string","format":"string","example":"abc"},"sizeIssuing":{"type":"string","format":"string","example":"abc"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}}} \ No newline at end of file diff --git a/v3/internal/format/fomrat.go b/v3/format/fomrat.go similarity index 100% rename from v3/internal/format/fomrat.go rename to v3/format/fomrat.go diff --git a/v3/internal/frame/bytes_frame.go b/v3/frame/bytes_frame.go similarity index 100% rename from v3/internal/frame/bytes_frame.go rename to v3/frame/bytes_frame.go diff --git a/v3/internal/frame/factory.go b/v3/frame/factory.go similarity index 100% rename from v3/internal/frame/factory.go rename to v3/frame/factory.go diff --git a/v3/internal/frame/golang_frame.go b/v3/frame/golang_frame.go similarity index 95% rename from v3/internal/frame/golang_frame.go rename to v3/frame/golang_frame.go index 48bde774..c3a4cdf7 100644 --- a/v3/internal/frame/golang_frame.go +++ b/v3/frame/golang_frame.go @@ -4,7 +4,8 @@ import ( "bytes" "fmt" - "github.com/swipe-io/swipe/v3/internal/format" + "github.com/swipe-io/swipe/v3/format" + "github.com/swipe-io/swipe/v3/internal/importer" ) diff --git a/v3/internal/frame/js_frame.go b/v3/frame/js_frame.go similarity index 100% rename from v3/internal/frame/js_frame.go rename to v3/frame/js_frame.go diff --git a/v3/internal/annotation/parser.go b/v3/internal/annotation/parser.go index 500ebc8c..53ac8226 100644 --- a/v3/internal/annotation/parser.go +++ b/v3/internal/annotation/parser.go @@ -11,10 +11,7 @@ var ( errAnnotationSyntax = errors.New("bad syntax for struct annotation pair") errAnnotationKeySyntax = errors.New("bad syntax for struct annotation key") errAnnotationValueSyntax = errors.New("bad syntax for struct annotation value") - - errKeyNotSet = errors.New("annotation key does not exist") errAnnotationNotExist = errors.New("annotation does not exist") - errAnnotationKeyMismatch = errors.New("mismatch between key and annotation.key") ) type Annotation struct { @@ -55,9 +52,7 @@ func (a *Annotations) Get(key string) (*Annotation, error) { func Parse(v string) (*Annotations, error) { var annotations []*Annotation - annotationParts := strings.Split(v, "\n") - for _, annotation := range annotationParts { annotation = strings.TrimSpace(annotation) for annotation != "" { @@ -69,13 +64,10 @@ func Parse(v string) (*Annotations, error) { if annotation == "" { break } - if annotation[0] != '@' { break } - annotation = annotation[1:] - i = 0 for i < len(annotation) && annotation[i] > ' ' && annotation[i] != ':' && annotation[i] != '"' && annotation[i] != 0x7f { i++ @@ -117,7 +109,6 @@ func Parse(v string) (*Annotations, error) { if len(options) == 0 { options = nil } - annotations = append(annotations, &Annotation{ Key: key, Name: name, @@ -125,9 +116,5 @@ func Parse(v string) (*Annotations, error) { }) } } - - //if hasAnnotation && len(annotations) == 0 { - // return nil, nil - //} return &Annotations{annotations: annotations}, nil } diff --git a/v3/internal/ast/copy.go b/v3/internal/ast/copy.go deleted file mode 100644 index 6225b5fe..00000000 --- a/v3/internal/ast/copy.go +++ /dev/null @@ -1,468 +0,0 @@ -package ast - -//import ( -// "fmt" -// "go/ast" -// -// "golang.org/x/tools/go/ast/astutil" -//) -// -//func Copy(original ast.Node) ast.Node { -// m := make(map[ast.Node]ast.Node) -// astutil.Apply(original, nil, func(c *astutil.Cursor) bool { -// switch node := c.Node().(type) { -// case nil: -// case *ast.ArrayType: -// m[node] = &ast.ArrayType{ -// Lbrack: node.Lbrack, -// Len: exprFromMap(m, node.Len), -// Elt: exprFromMap(m, node.Elt), -// } -// case *ast.AssignStmt: -// m[node] = &ast.AssignStmt{ -// Lhs: copyExprList(m, node.Lhs), -// TokPos: node.TokPos, -// Tok: node.Tok, -// Rhs: copyExprList(m, node.Rhs), -// } -// case *ast.BadDecl: -// m[node] = &ast.BadDecl{ -// From: node.From, -// To: node.To, -// } -// case *ast.BadExpr: -// m[node] = &ast.BadExpr{ -// From: node.From, -// To: node.To, -// } -// case *ast.BadStmt: -// m[node] = &ast.BadStmt{ -// From: node.From, -// To: node.To, -// } -// case *ast.BasicLit: -// m[node] = &ast.BasicLit{ -// ValuePos: node.ValuePos, -// Kind: node.Kind, -// Value: node.Value, -// } -// case *ast.BinaryExpr: -// m[node] = &ast.BinaryExpr{ -// X: exprFromMap(m, node.X), -// OpPos: node.OpPos, -// Op: node.Op, -// Y: exprFromMap(m, node.Y), -// } -// case *ast.BlockStmt: -// m[node] = &ast.BlockStmt{ -// Lbrace: node.Lbrace, -// List: copyStmtList(m, node.List), -// Rbrace: node.Rbrace, -// } -// case *ast.BranchStmt: -// m[node] = &ast.BranchStmt{ -// TokPos: node.TokPos, -// Tok: node.Tok, -// Label: identFromMap(m, node.Label), -// } -// case *ast.CallExpr: -// m[node] = &ast.CallExpr{ -// Fun: exprFromMap(m, node.Fun), -// Lparen: node.Lparen, -// Args: copyExprList(m, node.Args), -// Ellipsis: node.Ellipsis, -// Rparen: node.Rparen, -// } -// case *ast.CaseClause: -// m[node] = &ast.CaseClause{ -// Case: node.Case, -// List: copyExprList(m, node.List), -// Colon: node.Colon, -// Body: copyStmtList(m, node.Body), -// } -// case *ast.ChanType: -// m[node] = &ast.ChanType{ -// Begin: node.Begin, -// Arrow: node.Arrow, -// Dir: node.Dir, -// Value: exprFromMap(m, node.Value), -// } -// case *ast.CommClause: -// m[node] = &ast.CommClause{ -// Case: node.Case, -// Comm: stmtFromMap(m, node.Comm), -// Colon: node.Colon, -// Body: copyStmtList(m, node.Body), -// } -// case *ast.Comment: -// m[node] = &ast.Comment{ -// Slash: node.Slash, -// Text: node.Text, -// } -// case *ast.CommentGroup: -// cg := new(ast.CommentGroup) -// if node.List != nil { -// cg.List = make([]*ast.Comment, len(node.List)) -// for i := range node.List { -// cg.List[i] = m[node.List[i]].(*ast.Comment) -// } -// } -// m[node] = cg -// case *ast.CompositeLit: -// m[node] = &ast.CompositeLit{ -// Type: exprFromMap(m, node.Type), -// Lbrace: node.Lbrace, -// Elts: copyExprList(m, node.Elts), -// Rbrace: node.Rbrace, -// } -// case *ast.DeclStmt: -// m[node] = &ast.DeclStmt{ -// Decl: m[node.Decl].(ast.Decl), -// } -// case *ast.DeferStmt: -// m[node] = &ast.DeferStmt{ -// Defer: node.Defer, -// Call: callExprFromMap(m, node.Call), -// } -// case *ast.Ellipsis: -// m[node] = &ast.Ellipsis{ -// Ellipsis: node.Ellipsis, -// Elt: exprFromMap(m, node.Elt), -// } -// case *ast.EmptyStmt: -// m[node] = &ast.EmptyStmt{ -// Semicolon: node.Semicolon, -// Implicit: node.Implicit, -// } -// case *ast.ExprStmt: -// m[node] = &ast.ExprStmt{ -// X: exprFromMap(m, node.X), -// } -// case *ast.Field: -// m[node] = &ast.Field{ -// Doc: commentGroupFromMap(m, node.Doc), -// Names: copyIdentList(m, node.Names), -// Type: exprFromMap(m, node.Type), -// Tag: basicLitFromMap(m, node.Tag), -// Comment: commentGroupFromMap(m, node.Comment), -// } -// case *ast.FieldList: -// fl := &ast.FieldList{ -// Opening: node.Opening, -// Closing: node.Closing, -// } -// if node.List != nil { -// fl.List = make([]*ast.Field, len(node.List)) -// for i := range node.List { -// fl.List[i] = m[node.List[i]].(*ast.Field) -// } -// } -// m[node] = fl -// case *ast.ForStmt: -// m[node] = &ast.ForStmt{ -// For: node.For, -// Init: stmtFromMap(m, node.Init), -// Cond: exprFromMap(m, node.Cond), -// Post: stmtFromMap(m, node.Post), -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.FuncDecl: -// m[node] = &ast.FuncDecl{ -// Doc: commentGroupFromMap(m, node.Doc), -// Recv: fieldListFromMap(m, node.Recv), -// Name: identFromMap(m, node.Name), -// Type: funcTypeFromMap(m, node.Type), -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.FuncLit: -// m[node] = &ast.FuncLit{ -// Type: funcTypeFromMap(m, node.Type), -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.FuncType: -// m[node] = &ast.FuncType{ -// Func: node.Func, -// Params: fieldListFromMap(m, node.Params), -// Results: fieldListFromMap(m, node.Results), -// } -// case *ast.GenDecl: -// decl := &ast.GenDecl{ -// Doc: commentGroupFromMap(m, node.Doc), -// TokPos: node.TokPos, -// Tok: node.Tok, -// Lparen: node.Lparen, -// Rparen: node.Rparen, -// } -// if node.Specs != nil { -// decl.Specs = make([]ast.Spec, len(node.Specs)) -// for i := range node.Specs { -// decl.Specs[i] = m[node.Specs[i]].(ast.Spec) -// } -// } -// m[node] = decl -// case *ast.GoStmt: -// m[node] = &ast.GoStmt{ -// Go: node.Go, -// Call: callExprFromMap(m, node.Call), -// } -// case *ast.Ident: -// // Keep identifiers the same identity so they can be conveniently -// // used with the original *types.Info. -// m[node] = node -// case *ast.IfStmt: -// m[node] = &ast.IfStmt{ -// If: node.If, -// Init: stmtFromMap(m, node.Init), -// Cond: exprFromMap(m, node.Cond), -// Body: blockStmtFromMap(m, node.Body), -// Else: stmtFromMap(m, node.Else), -// } -// case *ast.ImportSpec: -// m[node] = &ast.ImportSpec{ -// Doc: commentGroupFromMap(m, node.Doc), -// Name: identFromMap(m, node.Name), -// Path: basicLitFromMap(m, node.Path), -// Comment: commentGroupFromMap(m, node.Comment), -// EndPos: node.EndPos, -// } -// case *ast.IncDecStmt: -// m[node] = &ast.IncDecStmt{ -// X: exprFromMap(m, node.X), -// TokPos: node.TokPos, -// Tok: node.Tok, -// } -// case *ast.IndexExpr: -// m[node] = &ast.IndexExpr{ -// X: exprFromMap(m, node.X), -// Lbrack: node.Lbrack, -// Index: exprFromMap(m, node.Index), -// Rbrack: node.Rbrack, -// } -// case *ast.InterfaceType: -// m[node] = &ast.InterfaceType{ -// Interface: node.Interface, -// Methods: fieldListFromMap(m, node.Methods), -// Incomplete: node.Incomplete, -// } -// case *ast.KeyValueExpr: -// m[node] = &ast.KeyValueExpr{ -// Key: exprFromMap(m, node.Key), -// Colon: node.Colon, -// Value: exprFromMap(m, node.Value), -// } -// case *ast.LabeledStmt: -// m[node] = &ast.LabeledStmt{ -// Label: identFromMap(m, node.Label), -// Colon: node.Colon, -// Stmt: stmtFromMap(m, node.Stmt), -// } -// case *ast.MapType: -// m[node] = &ast.MapType{ -// Map: node.Map, -// Key: exprFromMap(m, node.Key), -// Value: exprFromMap(m, node.Value), -// } -// case *ast.ParenExpr: -// m[node] = &ast.ParenExpr{ -// Lparen: node.Lparen, -// X: exprFromMap(m, node.X), -// Rparen: node.Rparen, -// } -// case *ast.RangeStmt: -// m[node] = &ast.RangeStmt{ -// For: node.For, -// Key: exprFromMap(m, node.Key), -// Value: exprFromMap(m, node.Value), -// TokPos: node.TokPos, -// Tok: node.Tok, -// X: exprFromMap(m, node.X), -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.ReturnStmt: -// m[node] = &ast.ReturnStmt{ -// Return: node.Return, -// Results: copyExprList(m, node.Results), -// } -// case *ast.SelectStmt: -// m[node] = &ast.SelectStmt{ -// Select: node.Select, -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.SelectorExpr: -// m[node] = &ast.SelectorExpr{ -// X: exprFromMap(m, node.X), -// Sel: identFromMap(m, node.Sel), -// } -// case *ast.SendStmt: -// m[node] = &ast.SendStmt{ -// Chan: exprFromMap(m, node.Chan), -// Arrow: node.Arrow, -// Value: exprFromMap(m, node.Value), -// } -// case *ast.SliceExpr: -// m[node] = &ast.SliceExpr{ -// X: exprFromMap(m, node.X), -// Lbrack: node.Lbrack, -// Low: exprFromMap(m, node.Low), -// High: exprFromMap(m, node.High), -// Max: exprFromMap(m, node.Max), -// Slice3: node.Slice3, -// Rbrack: node.Rbrack, -// } -// case *ast.StarExpr: -// m[node] = &ast.StarExpr{ -// Star: node.Star, -// X: exprFromMap(m, node.X), -// } -// case *ast.StructType: -// m[node] = &ast.StructType{ -// Struct: node.Struct, -// Fields: fieldListFromMap(m, node.Fields), -// Incomplete: node.Incomplete, -// } -// case *ast.SwitchStmt: -// m[node] = &ast.SwitchStmt{ -// Switch: node.Switch, -// Init: stmtFromMap(m, node.Init), -// Tag: exprFromMap(m, node.Tag), -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.TypeAssertExpr: -// m[node] = &ast.TypeAssertExpr{ -// X: exprFromMap(m, node.X), -// Lparen: node.Lparen, -// Type: exprFromMap(m, node.Type), -// Rparen: node.Rparen, -// } -// case *ast.TypeSpec: -// m[node] = &ast.TypeSpec{ -// Doc: commentGroupFromMap(m, node.Doc), -// Name: identFromMap(m, node.Name), -// Assign: node.Assign, -// Type: exprFromMap(m, node.Type), -// Comment: commentGroupFromMap(m, node.Comment), -// } -// case *ast.TypeSwitchStmt: -// m[node] = &ast.TypeSwitchStmt{ -// Switch: node.Switch, -// Init: stmtFromMap(m, node.Init), -// Assign: stmtFromMap(m, node.Assign), -// Body: blockStmtFromMap(m, node.Body), -// } -// case *ast.UnaryExpr: -// m[node] = &ast.UnaryExpr{ -// OpPos: node.OpPos, -// Op: node.Op, -// X: exprFromMap(m, node.X), -// } -// case *ast.ValueSpec: -// m[node] = &ast.ValueSpec{ -// Doc: commentGroupFromMap(m, node.Doc), -// Names: copyIdentList(m, node.Names), -// Type: exprFromMap(m, node.Type), -// Values: copyExprList(m, node.Values), -// Comment: commentGroupFromMap(m, node.Comment), -// } -// default: -// panic(fmt.Sprintf("unhandled AST node: %T", node)) -// } -// return true -// }) -// return m[original] -//} -// -//func commentGroupFromMap(m map[ast.Node]ast.Node, key *ast.CommentGroup) *ast.CommentGroup { -// if key == nil { -// return nil -// } -// return m[key].(*ast.CommentGroup) -//} -// -//func exprFromMap(m map[ast.Node]ast.Node, key ast.Expr) ast.Expr { -// if key == nil { -// return nil -// } -// return m[key].(ast.Expr) -//} -// -//func stmtFromMap(m map[ast.Node]ast.Node, key ast.Stmt) ast.Stmt { -// if key == nil { -// return nil -// } -// return m[key].(ast.Stmt) -//} -// -//func identFromMap(m map[ast.Node]ast.Node, key *ast.Ident) *ast.Ident { -// if key == nil { -// return nil -// } -// return m[key].(*ast.Ident) -//} -// -//func blockStmtFromMap(m map[ast.Node]ast.Node, key *ast.BlockStmt) *ast.BlockStmt { -// if key == nil { -// return nil -// } -// return m[key].(*ast.BlockStmt) -//} -// -//func fieldListFromMap(m map[ast.Node]ast.Node, key *ast.FieldList) *ast.FieldList { -// if key == nil { -// return nil -// } -// return m[key].(*ast.FieldList) -//} -// -//func callExprFromMap(m map[ast.Node]ast.Node, key *ast.CallExpr) *ast.CallExpr { -// if key == nil { -// return nil -// } -// return m[key].(*ast.CallExpr) -//} -// -//func basicLitFromMap(m map[ast.Node]ast.Node, key *ast.BasicLit) *ast.BasicLit { -// if key == nil { -// return nil -// } -// return m[key].(*ast.BasicLit) -//} -// -//func funcTypeFromMap(m map[ast.Node]ast.Node, key *ast.FuncType) *ast.FuncType { -// if key == nil { -// return nil -// } -// return m[key].(*ast.FuncType) -//} -// -//func copyExprList(m map[ast.Node]ast.Node, exprs []ast.Expr) []ast.Expr { -// if exprs == nil { -// return nil -// } -// newExprs := make([]ast.Expr, len(exprs)) -// for i := range exprs { -// newExprs[i] = m[exprs[i]].(ast.Expr) -// } -// return newExprs -//} -// -//func copyStmtList(m map[ast.Node]ast.Node, stmts []ast.Stmt) []ast.Stmt { -// if stmts == nil { -// return nil -// } -// newStmts := make([]ast.Stmt, len(stmts)) -// for i := range stmts { -// newStmts[i] = m[stmts[i]].(ast.Stmt) -// } -// return newStmts -//} -// -//func copyIdentList(m map[ast.Node]ast.Node, idents []*ast.Ident) []*ast.Ident { -// if idents == nil { -// return nil -// } -// newIdents := make([]*ast.Ident, len(idents)) -// for i := range idents { -// newIdents[i] = m[idents[i]].(*ast.Ident) -// } -// return newIdents -//} diff --git a/v3/internal/ast/finder.go b/v3/internal/ast/finder.go deleted file mode 100644 index 0fd59148..00000000 --- a/v3/internal/ast/finder.go +++ /dev/null @@ -1,28 +0,0 @@ -package ast - -import ( - "fmt" - - "github.com/swipe-io/swipe/v3/option" - - "golang.org/x/tools/go/packages" -) - -type Finder struct { - packages []*packages.Package -} - -func (f *Finder) FindImplIface(ifaceType option.IfaceType) { - for _, p := range f.packages { - for _, syntax := range p.Syntax { - for _, decl := range syntax.Decls { - fmt.Println(decl) - //stdtypes.Implements() - } - } - } -} - -func NewFinder(packages []*packages.Package) *Finder { - return &Finder{packages: packages} -} diff --git a/v3/internal/ast/loader.go b/v3/internal/ast/loader.go index 1ae58ae8..ef805342 100644 --- a/v3/internal/ast/loader.go +++ b/v3/internal/ast/loader.go @@ -6,7 +6,6 @@ import ( "go/ast" stdstrings "strings" - "github.com/swipe-io/swipe/v3/internal/types" "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/typeutil" ) @@ -106,7 +105,7 @@ func (l *Loader) run() (errs []error) { errs = append(errs, errors.New("go mod not found, run go mod init")) return } - types.Inspect(l.pkgs, func(p *packages.Package, n ast.Node) bool { + inspect(l.pkgs, func(p *packages.Package, n ast.Node) bool { if ts, ok := n.(*ast.TypeSpec); ok { obj := p.TypesInfo.ObjectOf(ts.Name) if st, ok := ts.Type.(*ast.StructType); ok { diff --git a/v3/internal/types/types.go b/v3/internal/ast/utils.go similarity index 74% rename from v3/internal/types/types.go rename to v3/internal/ast/utils.go index d37471a3..6c36be1f 100644 --- a/v3/internal/types/types.go +++ b/v3/internal/ast/utils.go @@ -1,4 +1,4 @@ -package types +package ast import ( "go/ast" @@ -6,7 +6,7 @@ import ( "golang.org/x/tools/go/packages" ) -func Inspect(pkgs []*packages.Package, f func(p *packages.Package, n ast.Node) bool) { +func inspect(pkgs []*packages.Package, f func(p *packages.Package, n ast.Node) bool) { for _, p := range pkgs { for _, syntax := range p.Syntax { ast.Inspect(syntax, func(n ast.Node) bool { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index 3b581313..91b2af23 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -169,7 +169,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { g.w.W("function %s%sConvertError(e) {\n", LcNameWithAppPrefix(iface), method.Name) g.w.W("switch(e.code) {\n") g.w.W("default:\n") - g.w.W("return new JSONRPCError(e.message, \"UnknownError\", e.code, e.data);\n") + g.w.W("return new JSONRPCError(\"%s: \"+e.message, \"UnknownError\", e.code, e.data);\n", LcNameIfaceMethod(iface, method)) for _, e := range methodErrors { g.w.W("case %d:\n", e.Code) g.w.W("return new %s(e.message, e.data);\n", e.Name) diff --git a/v3/internal/stcreator/config.go b/v3/internal/stcreator/config.go deleted file mode 100644 index 9bf0f38c..00000000 --- a/v3/internal/stcreator/config.go +++ /dev/null @@ -1,6 +0,0 @@ -package stcreator - -type Config struct { - Commands []string `yaml:"commands"` - Loaders Loaders `yaml:"loaders"` -} diff --git a/v3/internal/stcreator/loader.go b/v3/internal/stcreator/loader.go deleted file mode 100644 index 802d0b2d..00000000 --- a/v3/internal/stcreator/loader.go +++ /dev/null @@ -1,55 +0,0 @@ -package stcreator - -import ( - "errors" - "fmt" - - "gopkg.in/yaml.v3" -) - -type yamlLoader struct { - Type string `yaml:"type"` - Params yaml.Node `yaml:"params"` -} - -type Loaders []LoaderParams - -type LoaderParams interface { - Name() string - Process() ([]StructMetadata, error) -} - -func (l *Loaders) MarshalYAML() (interface{}, error) { - return l, nil -} - -func (l *Loaders) UnmarshalYAML(node *yaml.Node) error { - var yamlLoaders []yamlLoader - var dt LoaderParams - if err := node.Decode(&yamlLoaders); err != nil { - return errors.New(err.Error()) - } - ll := make([]LoaderParams, len(yamlLoaders)) - for i, loader := range yamlLoaders { - if f, ok := LoaderFactories[loader.Type]; ok { - dt = f() - if err := loader.Params.Decode(dt); err != nil { - return err - } - ll[i] = dt - } else { - return fmt.Errorf("could not find loader type %s", loader.Type) - } - } - *l = ll - return nil -} - -var LoaderFactories = map[string]func() LoaderParams{ - new(MongoLoader).Name(): func() LoaderParams { - return new(MongoLoader) - }, - new(PostgresLoader).Name(): func() LoaderParams { - return new(PostgresLoader) - }, -} diff --git a/v3/internal/stcreator/mongo_loader.go b/v3/internal/stcreator/mongo_loader.go deleted file mode 100644 index de58a124..00000000 --- a/v3/internal/stcreator/mongo_loader.go +++ /dev/null @@ -1,13 +0,0 @@ -package stcreator - -type MongoLoader struct { - Host string `yaml:"host"` -} - -func (*MongoLoader) Name() string { - return "mongo" -} - -func (*MongoLoader) Process() (result []StructMetadata, err error) { - return -} diff --git a/v3/internal/stcreator/postgres_loader.go b/v3/internal/stcreator/postgres_loader.go deleted file mode 100644 index c890b8dc..00000000 --- a/v3/internal/stcreator/postgres_loader.go +++ /dev/null @@ -1,281 +0,0 @@ -package stcreator - -import ( - "database/sql" - - "github.com/achiku/varfmt" - _ "github.com/lib/pq" - "github.com/swipe-io/strcase" -) - -const tablesSQL = ` -SELECT c.relkind AS type, c.relname AS table_name -FROM pg_class c -JOIN ONLY pg_namespace n ON n.oid = c.relnamespace -WHERE n.nspname = $1 -AND c.relkind = 'r' -ORDER BY c.relname; -` - -const columnsTableSQL = ` -SELECT - a.attname AS name, - a.attnotnull AS not_null, - COALESCE(ct.contype = 'p', false) AS is_primary_key, - COALESCE(pg_get_expr(ad.adbin, ad.adrelid), '') AS default_value, - CASE - WHEN a.atttypid = ANY ('{int,int8,int2}'::regtype[]) - AND EXISTS ( - SELECT 1 FROM pg_attrdef ad - WHERE ad.adrelid = a.attrelid - AND ad.adnum = a.attnum - AND ad.adbin = 'nextval(''' - || (pg_get_serial_sequence (a.attrelid::regclass::text - , a.attname))::regclass - || '''::regclass)' - ) - THEN CASE a.atttypid - WHEN 'int'::regtype THEN 'serial' - WHEN 'int8'::regtype THEN 'bigserial' - WHEN 'int2'::regtype THEN 'smallserial' - END - WHEN a.atttypid = ANY ('{uuid}'::regtype[]) AND COALESCE(pg_get_expr(ad.adbin, ad.adrelid), '') != '' - THEN 'autogenuuid' - ELSE format_type(a.atttypid, a.atttypmod) - END AS data_type -FROM pg_attribute a -JOIN ONLY pg_class c ON c.oid = a.attrelid -JOIN ONLY pg_namespace n ON n.oid = c.relnamespace -LEFT JOIN pg_constraint ct ON ct.conrelid = c.oid -AND a.attnum = ANY(ct.conkey) AND ct.contype = 'p' -LEFT JOIN pg_attrdef ad ON ad.adrelid = c.oid AND ad.adnum = a.attnum -WHERE a.attisdropped = false -AND n.nspname = $1 -AND c.relname = $2 -AND a.attnum > 0 -ORDER BY a.attnum; -` - -type MapType struct { - Type, NullType string - DBTypes []string -} - -type MapTypes []MapType - -func (m MapTypes) At(t string) (MapType, bool) { - for _, mapType := range m { - for _, dbType := range mapType.DBTypes { - if t == dbType { - return mapType, true - } - } - } - return MapType{}, false -} - -var mapTypesPkg = map[string]string{ - "uuid.UUID": "github.com/google/uuid", - "*uuid.UUID": "github.com/google/uuid", - "pg.NullTime": "github.com/go-pg/pg/v10", - "sql.NullString": "database/sql", - "sql.NullInt64": "database/sql", - "sql.NullFloat64": "database/sql", - "sql.NullTime": "database/sql", - "time.Duration": "time", - "time.Time": "time", - "*time.Duration": "time", -} - -var mapTypes = MapTypes{ - { - Type: "uuid.UUID", - NullType: "*uuid.UUID", - DBTypes: []string{"uuid"}, - }, - { - Type: "string", - NullType: "sql.NullString", - DBTypes: []string{"character", "character varying", "text", "money"}, - }, - { - Type: "time.Time", - NullType: "pg.NullTime", - DBTypes: []string{"time with time zone", "time without time zone", "timestamp without time zone", "timestamp with time zone", "date"}, - }, - { - Type: "bool", - NullType: "sql.NullBool", - DBTypes: []string{"boolean"}, - }, - { - Type: "int16", - NullType: "sql.NullInt64", - DBTypes: []string{"smallint"}, - }, - { - Type: "int", - NullType: "sql.NullInt64", - DBTypes: []string{"integer"}, - }, - { - Type: "int64", - NullType: "sql.NullInt64", - DBTypes: []string{"bigint"}, - }, - { - Type: "uint16", - NullType: "sql.NullInt64", - DBTypes: []string{"smallserial"}, - }, - { - Type: "uint32", - NullType: "sql.NullInt64", - DBTypes: []string{"serial"}, - }, { - Type: "float32", - NullType: "sql.NullFloat64", - DBTypes: []string{"real"}, - }, - { - Type: "float64", - NullType: "sql.NullFloat64", - DBTypes: []string{"numeric", "double precision"}, - }, - { - Type: "byte", - NullType: "byte", - DBTypes: []string{"bytea"}, - }, - { - Type: "[]byte", - NullType: "[]byte", - DBTypes: []string{"json", "jsonb"}, - }, - { - Type: "[]byte", - NullType: "[]byte", - DBTypes: []string{"xml"}, - }, - { - Type: "time.Duration", - NullType: "*time.Duration", - DBTypes: []string{"interval"}, - }, - { - Type: "[]int", - NullType: "[]int", - DBTypes: []string{"integer[]"}, - }, - { - Type: "[]string", - NullType: "[]string", - DBTypes: []string{"string[]"}, - }, -} - -type pgTable struct { - Name string - Type string -} - -type pgTableParam struct { - Name string - Type string - NotNull bool - Primary bool - Default string -} - -type PostgresLoader struct { - URL string `yaml:"url"` - Tables []string `yaml:"tables"` -} - -func (*PostgresLoader) Name() string { - return "postgres" -} - -func (l *PostgresLoader) Process() (result []StructMetadata, err error) { - conn, err := sql.Open("postgres", l.URL) - if err != nil { - return result, err - } - rows, err := conn.Query(tablesSQL, "public") - if err != nil { - return result, err - } - tables := map[string]*pgTable{} - for rows.Next() { - t := &pgTable{} - err := rows.Scan(&t.Type, &t.Name) - if err != nil { - return result, err - } - tables[t.Name] = t - } - for _, table := range l.Tables { - if t, ok := tables[table]; ok { - name := t.Name - if name[len(name)-1] == 's' { - name = name[:len(name)-1] - } - structName := varfmt.PublicVarName(name) - sm := StructMetadata{ - Name: structName, - LowerName: strcase.ToLowerCamel(structName), - } - rows, err := conn.Query(columnsTableSQL, "public", t.Name) - if err != nil { - return result, err - } - - existsPkgs := map[string]struct{}{} - - for rows.Next() { - p := &pgTableParam{} - err := rows.Scan(&p.Name, &p.NotNull, &p.Primary, &p.Default, &p.Type) - if err != nil { - return result, err - } - mt, ok := mapTypes.At(p.Type) - if !ok { - mt = MapType{ - Type: "interface{}", - NullType: "interface{}", - } - } - paramName := varfmt.PublicVarName(p.Name) - sp := StructParam{ - Name: paramName, - LowerName: strcase.ToLowerCamel(paramName), - RawType: mt.Type, - ColumnName: p.Name, - Primary: p.Primary, - NotNull: p.NotNull, - Default: p.Default, - } - if sp.NotNull { - sp.Type = mt.Type - } else { - sp.Type = mt.NullType - } - if sp.Primary { - sm.Primary = sp - } - if pkg, ok := mapTypesPkg[sp.Type]; ok { - if _, ok := existsPkgs[pkg]; !ok { - sm.Imports = append(sm.Imports, StructImport{ - Pkg: pkg, - Param: sp, - }) - existsPkgs[pkg] = struct{}{} - } - } - sm.Params = append(sm.Params, sp) - } - result = append(result, sm) - } - } - return -} diff --git a/v3/internal/stcreator/project.go b/v3/internal/stcreator/project.go deleted file mode 100644 index cc79ada8..00000000 --- a/v3/internal/stcreator/project.go +++ /dev/null @@ -1,295 +0,0 @@ -package stcreator - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "strconv" - "strings" - "text/template" - - "github.com/achiku/varfmt" - "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v3/internal/format" - - "gopkg.in/yaml.v3" -) - -type FormatError struct { - Err error - Data []byte -} - -func (e FormatError) Error() string { - var lines []string - for i, b := range bytes.Split(e.Data, []byte("\n")) { - lines = append(lines, fmt.Sprintf("%d %s", i+1, string(b))) - } - return fmt.Sprintf("%s:\n%s", e.Err.Error(), strings.Join(lines, "\n")) -} - -var funcs = template.FuncMap{ - "ToLowerCamel": strcase.ToLowerCamel, - "ToCamel": strcase.ToCamel, - "ToSnake": strcase.ToSnake, - "ToKebab": strcase.ToKebab, - "PublicVarName": varfmt.PublicVarName, - "Add": func(v, n int) int { - return v + n - }, -} - -type StructParam struct { - Name, LowerName, ColumnName string - Type, RawType string - Primary bool - NotNull bool - Default string -} - -type Imports []StructImport - -func (i Imports) At(p StructParam) string { - for _, structImport := range i { - if structImport.Param == p { - return strconv.Quote(structImport.Pkg) - } - } - return "" -} - -type StructImport struct { - Pkg string - Param StructParam -} - -type StructMetadata struct { - Name, LowerName string - Primary StructParam - Params []StructParam - Imports Imports -} - -type Entity struct { - Name string -} - -type Data struct { - Structure []Node `yaml:"structure"` -} - -type Import struct { - Resource string `yaml:"resource"` -} - -type Project struct { - Structs []StructMetadata -} - -type Node struct { - Name string `yaml:"name"` - Template string `yaml:"template"` - Data map[string]interface{} `yaml:"data"` - Children []Node `yaml:"children"` -} - -type ProjectLoader struct { - projectID string - projectName string - pkgName string - wd string -} - -func (l *ProjectLoader) loadEntities(loaders Loaders) (result []StructMetadata, err error) { - for _, loader := range loaders { - structs, err := loader.Process() - if err != nil { - return nil, err - } - result = append(result, structs...) - } - return -} - -func (l *ProjectLoader) exists(path string) bool { - if _, err := os.Stat(path); os.IsNotExist(err) { - return false - } - return true -} - -func (l *ProjectLoader) createDirIfNeeded(path string) error { - if !l.exists(path) { - if err := os.Mkdir(path, os.ModePerm); err != nil { - return err - } - return nil - } - return nil -} - -func (l *ProjectLoader) createFile(filename string, data []byte) error { - f, err := os.Create(filename) - if err != nil { - return err - } - defer func() { - _ = f.Close() - if err != nil { - _ = os.Remove(f.Name()) - } - }() - if filepath.Ext(filename) == ".go" { - fmtData, err := format.Source(data) - if err != nil { - return fmt.Errorf("filename: %s: %v", filename, FormatError{ - Err: err, - Data: data, - }) - } - data = fmtData - } - _, err = f.Write(data) - if err != nil { - return err - } - return nil -} - -func (l *ProjectLoader) normalizeName(filename string) string { - return strings.TrimSuffix(filename, ".tpl") -} - -func (l *ProjectLoader) executeTemplate(name string, data []byte, varsMap interface{}) ([]byte, error) { - var buf bytes.Buffer - t, err := template.New(name).Funcs(funcs).Parse(string(data)) - if err != nil { - return nil, err - } - if err := t.Execute(&buf, varsMap); err != nil { - return nil, err - } - return buf.Bytes(), nil -} - -func (l *ProjectLoader) loadConfig(configFilepath string) (*Config, error) { - var cfg Config - if configFilepath != "" { - configData, err := ioutil.ReadFile(configFilepath) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(configData, &cfg); err != nil { - return nil, err - } - } - return &cfg, nil -} - -func (l *ProjectLoader) Process(dir, configFilepath string) (*Project, error) { - cfg, err := l.loadConfig(configFilepath) - if err != nil { - return nil, err - } - structs, err := l.loadEntities(cfg.Loaders) - if err != nil { - return nil, err - } - wd := filepath.Join(l.wd, l.projectID) - err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - outputPath := filepath.Join(wd, strings.Replace(path, dir, "", -1)) - if !info.IsDir() { - fileData, err := ioutil.ReadFile(path) - if err != nil { - return err - } - if strings.HasSuffix(info.Name(), ".tpl") { - normalizeName := l.normalizeName(info.Name()) - if strings.HasPrefix(info.Name(), "$struct") { - for i, st := range structs { - data, err := l.executeTemplate(st.Name, fileData, map[string]interface{}{ - "Structs": structs, - "Struct": st, - "Index": i, - "PkgName": l.pkgName, - "ProjectName": l.projectName, - "ProjectID": l.projectID, - }) - if err != nil { - return err - } - filename := strings.Replace(normalizeName, "$struct", strcase.ToSnake(st.Name), -1) - if err := l.createFile(filepath.Join(filepath.Dir(outputPath), filename), data); err != nil { - return err - } - } - } else { - data, err := l.executeTemplate(info.Name(), fileData, map[string]interface{}{ - "Structs": structs, - "PkgName": l.pkgName, - "ProjectName": l.projectName, - "ProjectID": l.projectID, - }) - if err != nil { - return err - } - if err := l.createFile(filepath.Join(filepath.Dir(outputPath), normalizeName), data); err != nil { - return err - } - } - return nil - } else { - if err := l.createFile(filepath.Join(filepath.Dir(outputPath), info.Name()), fileData); err != nil { - return err - } - } - } else { - if err := l.createDirIfNeeded(outputPath); err != nil { - return err - } - } - return nil - }) - if err != nil { - return nil, err - } - for _, command := range cfg.Commands { - command = strings.TrimSpace(command) - parts := strings.Split(command, " ") - if len(parts) > 0 { - name := parts[0] - rawArgs := parts[1:] - args := make([]string, len(rawArgs)) - for i, arg := range rawArgs { - args[i] = strings.TrimSpace(arg) - } - if name != "" { - cmd := exec.Command(name, args...) - cmd.Dir = wd - stderr, err := cmd.StderrPipe() - if err != nil { - return nil, err - } - if err := cmd.Start(); err != nil { - return nil, err - } - out, err := ioutil.ReadAll(stderr) - if err != nil { - return nil, err - } - fmt.Println(string(out)) - if err := cmd.Wait(); err != nil { - return nil, err - } - } - } - } - return nil, nil -} - -func NewProjectLoader(projectName, projectID, pkgName, wd string) *ProjectLoader { - return &ProjectLoader{projectName: projectName, projectID: projectID, pkgName: pkgName, wd: wd} -} diff --git a/v3/main2.go b/v3/main2.go deleted file mode 100644 index cc0a969f..00000000 --- a/v3/main2.go +++ /dev/null @@ -1,502 +0,0 @@ -package v3 - -// -//import ( -// "bytes" -// "context" -// "flag" -// "fmt" -// goast "go/ast" -// "go/doc" -// "go/parser" -// "go/token" -// "io/ioutil" -// "log" -// "os" -// "path/filepath" -// "strconv" -// "strings" -// -// "github.com/fatih/structtag" -// "github.com/google/subcommands" -// "github.com/gookit/color" -// "github.com/pterm/pterm" -// -// "github.com/swipe-io/strcase" -// "github.com/swipe-io/swipe/v3/internal/annotation" -// "github.com/swipe-io/swipe/v3/internal/ast" -// "github.com/swipe-io/swipe/v3/internal/format" -// "github.com/swipe-io/swipe/v3/internal/gitattributes" -// _ "github.com/swipe-io/swipe/v3/internal/plugin/config" -// _ "github.com/swipe-io/swipe/v3/internal/plugin/gokit" -// "github.com/swipe-io/swipe/v3/swipe" -// -// "golang.org/x/tools/go/ast/astutil" -//) -// -//var ( -// colorSuccess = color.Green.Render -// colorAccent = color.Cyan.Render -// colorFail = color.Red.Render -//) -// -//func Main() { -// subcommands.Register(subcommands.CommandsCommand(), "") -// subcommands.Register(subcommands.FlagsCommand(), "") -// subcommands.Register(subcommands.HelpCommand(), "") -// subcommands.Register(&genCmd{}, "") -// subcommands.Register(&genOptionsCmd{}, "") -// subcommands.Register(&initCmd{}, "") -// -// flag.Parse() -// -// log.SetFlags(0) -// log.SetOutput(os.Stderr) -// -// allCmds := map[string]bool{ -// "commands": true, -// "gen-opts": true, -// "init": true, -// "help": true, -// "flags": true, -// "gen": true, -// //"fix-comment": true, -// } -// -// header := pterm.DefaultHeader.WithBackgroundStyle(pterm.NewStyle(pterm.BgWhite)) -// pterm.Println(header.Sprint("Swipe - " + swipe.Version)) -// -// var code int -// if args := flag.Args(); len(args) == 0 || !allCmds[args[0]] { -// genCmd := &genCmd{} -// code = int(genCmd.Execute(context.Background(), flag.CommandLine)) -// } else { -// code = int(subcommands.Execute(context.Background())) -// } -// os.Exit(code) -//} -// -//type initCmd struct { -// verbose bool -// init bool -// swipePkg string -// wd string -//} -// -//func (*initCmd) Name() string { return "init" } -//func (*initCmd) Synopsis() string { -// return "" -//} -//func (*initCmd) Usage() string { -// return `` -//} -// -//func (cmd *initCmd) SetFlags(f *flag.FlagSet) { -// f.StringVar(&cmd.wd, "w", "", "") -//} -// -//func (cmd *initCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { -// var err error -// if cmd.wd == "" { -// cmd.wd, err = os.Getwd() -// if err != nil { -// log.Println(colorFail("failed to get working directory: "), colorFail(err)) -// return subcommands.ExitFailure -// } -// } -// log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), cmd.wd) -// for name, data := range swipe.Options() { -// buf := bytes.NewBuffer(nil) -// path := filepath.Join(cmd.wd, "pkg", "swipe", name) -// if err := os.MkdirAll(path, 0775); err != nil { -// fmt.Println(err) -// return subcommands.ExitFailure -// } -// -// buf.WriteString("package " + name + "\n\n") -// buf.Write(data) -// -// filename := filepath.Join(path, "swipe.go") -// if err := os.Remove(filename); err != nil { -// //fmt.Println(err) -// //return subcommands.ExitFailure -// } -// if err := os.WriteFile(filename, buf.Bytes(), 0755); err != nil { -// fmt.Println(err) -// return subcommands.ExitFailure -// } -// } -// return subcommands.ExitSuccess -//} -// -//type genCmd struct { -// verbose bool -// init bool -// swipePkg string -// wd string -//} -// -//func (*genCmd) Name() string { return "gen" } -//func (*genCmd) Synopsis() string { -// return "generate the *_gen.go file for each package" -//} -//func (*genCmd) Usage() string { -// return `swipe [packages] -// Given one or more packages, gen creates the config.go file for each. -// If no packages are listed, it defaults to ".". -//` -//} -// -//func (cmd *genCmd) SetFlags(f *flag.FlagSet) { -// f.BoolVar(&cmd.verbose, "v", false, "show verbose output") -// f.BoolVar(&cmd.init, "init", false, "initial swipe project") -// f.StringVar(&cmd.swipePkg, "swipe-pkg", "", "package for generating swipe options file") -// f.StringVar(&cmd.wd, "w", "", "") -//} -// -//func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { -// pterm.DefaultBox.Println("Thanks for using Swipe") -// //pterm.Println("") -// //progressbar, _ := pterm.DefaultProgressbar.WithTotal(10).Start() -// // -// //progressbar.Title = "Generate" -// //progressbar.Increment() -// //log.Printf("%s %s", color.Yellow.Render("Thanks for using"), color.LightBlue.Render("swipe")) -// -// log.Println(color.Yellow.Render("Please wait the command is running, it may take some time")) -// -// var err error -// -// if cmd.wd == "" { -// cmd.wd, err = os.Getwd() -// if err != nil { -// log.Println(colorFail("failed to get working directory: "), colorFail(err)) -// return subcommands.ExitFailure -// } -// } -// log.Printf("%s: %s\n", color.Yellow.Render("Workdir"), cmd.wd) -// -// packages := f.Args() -// if data, err := ioutil.ReadFile(filepath.Join(cmd.wd, "pkgs")); err == nil { -// packages = append(packages, strings.Split(string(data), "\n")...) -// } -// log.Printf("%s: %s\n", color.Yellow.Render("Packages"), strings.Join(packages, ", ")) -// -// loader, errs := ast.NewLoader(cmd.wd, os.Environ(), packages) -// if len(errs) > 0 { -// for _, err := range errs { -// log.Println(colorFail(err)) -// } -// return subcommands.ExitFailure -// } -// cfg, err := swipe.GetConfig(loader) -// if err != nil { -// log.Println(colorFail(err)) -// return subcommands.ExitFailure -// } -// -// // clear all before generated files. -// _ = filepath.Walk(loader.WorkDir(), func(path string, info os.FileInfo, err error) error { -// if !strings.Contains(path, "/vendor/") { -// if !info.IsDir() { -// if strings.Contains(info.Name(), "swipe_gen_") { -// _ = os.Remove(path) -// } -// } -// } -// return nil -// }) -// -// result, errs := swipe.Generate(cfg) -// success := true -// -// if len(errs) > 0 { -// for _, err := range errs { -// log.Println(colorFail(err)) -// } -// success = false -// } -// -// diffExcludes := make([]string, 0, len(result)) -// -// for _, g := range result { -// if len(g.Errs) > 0 { -// for _, err := range g.Errs { -// log.Println(colorFail(err)) -// } -// success = false -// continue -// } -// if len(g.Content) == 0 { -// continue -// } -// -// diffExcludes = append(diffExcludes, strings.Replace(g.OutputPath, cfg.WorkDir+"/", "", -1)) -// -// dirPath := filepath.Dir(g.OutputPath) -// if err := os.MkdirAll(dirPath, 0755); err != nil { -// log.Printf("%s: failed to create dir %s: %v\n", colorSuccess(g.PkgPath), colorAccent(dirPath), colorFail(err)) -// return subcommands.ExitFailure -// } -// err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) -// if err == nil { -// if cmd.verbose { -// log.Printf("%s: wrote %s\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath)) -// } -// } else { -// log.Printf("%s: failed to write %s: %v\n", colorSuccess(g.PkgPath), colorAccent(g.OutputPath), colorFail(err)) -// success = false -// } -// } -// -// if !success { -// return subcommands.ExitFailure -// } -// -// if err := gitattributes.Generate(cfg.WorkDir, diffExcludes); err != nil { -// log.Println(colorFail(err)) -// return subcommands.ExitFailure -// } -// -// log.Println(color.LightGreen.Render("Command execution completed successfully")) -// -// return subcommands.ExitSuccess -//} -// -//type genOptionsCmd struct { -//} -// -//func (cmd *genOptionsCmd) Name() string { return "gen-opts" } -// -//func (cmd *genOptionsCmd) Synopsis() string { return "generating a plugin options" } -// -//func (cmd *genOptionsCmd) Usage() string { -// return `` -//} -// -//func (cmd *genOptionsCmd) SetFlags(set *flag.FlagSet) { -//} -// -//func (cmd *genOptionsCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interface{}) subcommands.ExitStatus { -// wd, err := filepath.Abs(f.Arg(0)) -// if err != nil { -// log.Println(colorFail("failed to get working directory: "), colorFail(err)) -// return subcommands.ExitFailure -// } -// fset := token.NewFileSet() -// d, err := parser.ParseDir(fset, wd, nil, parser.ParseComments) -// if err != nil { -// fmt.Println(err) -// return subcommands.ExitFailure -// } -// for _, file := range d { -// p := doc.New(file, "./", 0) -// for _, t := range p.Types { -// if annotations, err := annotation.Parse(t.Doc); err == nil { -// if len(t.Decl.Specs) > 0 { -// if ts, ok := t.Decl.Specs[0].(*goast.TypeSpec); ok { -// if s, ok := ts.Type.(*goast.StructType); ok { -// buf := bytes.NewBuffer(nil) -// if a, err := annotations.Get("swipe"); err == nil { -// baseTypeName := a.Value() + "Option" -// -// buf.WriteString(fmt.Sprintf("// %s\n", a.Value())) -// buf.WriteString(fmt.Sprintf("func %s(opts ...%s) {}\n", a.Value(), baseTypeName)) -// -// opts := getOpts(baseTypeName, s) -// optExists := map[string]struct{}{} -// optTypeExists := map[string]struct{}{} -// for _, opt := range opts { -// typeName := opt.typeName -// -// if !strings.HasSuffix(typeName, "Option") { -// typeName += "Option" -// } -// -// key := opt.name + ":" + typeName -// if _, ok := optTypeExists[typeName]; !ok { -// optTypeExists[typeName] = struct{}{} -// buf.WriteString(fmt.Sprintf("// %s ...\n", typeName)) -// buf.WriteString(fmt.Sprintf("type %s string\n", typeName)) -// } -// if _, ok := optExists[key]; !ok { -// optExists[key] = struct{}{} -// buf.WriteString(fmt.Sprintf("// %s ...\n", opt.name)) -// if opt.isRepeat { -// buf.WriteString("// @type:\"repeat\"\n") -// } -// paramsStr := strings.Join(opt.params, ",") -// -// optsType := opt.optsType -// if optsType != "" { -// if !strings.HasSuffix(optsType, "Option") { -// optsType += "Option" -// } -// paramsStr += ",opts ..." + optsType -// } -// -// buf.WriteString(fmt.Sprintf("func %s(%s) %s { return \"implementation not generated, run swipe\" }\n", opt.name, paramsStr, typeName)) -// } -// } -// -// data, err := format.Source(buf.Bytes()) -// if err != nil { -// log.Println(colorFail("failed generate: "), colorFail(err)) -// return subcommands.ExitFailure -// } -// -// f, err := os.Create(filepath.Join(wd, file.Name+"_gen.go")) -// if err != nil { -// log.Println(colorFail("failed generate: "), colorFail(err)) -// return subcommands.ExitFailure -// } -// _, _ = f.WriteString("package " + p.Name + "\n") -// _, _ = f.WriteString(fmt.Sprintf("func (*%s) Options() []byte { return []byte(%s)}\n", ts.Name.Name, strconv.Quote(string(data)))) -// _ = f.Close() -// } -// } -// } -// } -// } -// } -// } -// return subcommands.ExitSuccess -//} -// -//func getFieldType(f *goast.Field) string { -// if i, ok := f.Type.(*goast.Ident); ok { -// if i.Obj != nil { -// if ts, ok := i.Obj.Decl.(*goast.TypeSpec); ok { -// return getExprType(ts.Type) -// } -// } -// } -// return getExprType(f.Type) -//} -// -//func getExprType(e goast.Expr) string { -// switch t := e.(type) { -// case *goast.Ident: -// return t.Name -// case *goast.ArrayType: -// lenStr := "" -// if t.Len != nil { -// lenStr = t.Len.(*goast.Ident).Name -// } -// return fmt.Sprintf("[%s]%s", lenStr, getExprType(t.Elt)) -// case *goast.StarExpr: -// return getExprType(t.X) -// default: -// return "interface{}" -// } -//} -// -//func getOpt(optionName string, f *goast.Field, e goast.Expr, isRepeat bool) (result []optionFunc) { -// name, ok := getOptName(f) -// if !ok { -// return nil -// } -// switch t := e.(type) { -// case *goast.ArrayType: -// return getOpt(optionName, f, t.Elt, true) -// case *goast.StarExpr: -// return getOpt(optionName, f, t.X, isRepeat) -// case *goast.StructType: -// for _, ident := range f.Names { -// result = append(result, optionFunc{ -// typeName: optionName, -// name: ident.Name, -// }) -// } -// case *goast.Ident: -// of := optionFunc{ -// typeName: optionName, -// name: name, -// isRepeat: isRepeat, -// } -// if ts, ok := t.Obj.Decl.(*goast.TypeSpec); ok { -// if s, ok := ts.Type.(*goast.StructType); ok { -// var hasOpts bool -// if s.Fields != nil { -// for _, f := range s.Fields.List { -// name, ok := getOptName(f) -// if !ok { -// continue -// } -// if isFiledOpt(f) { -// hasOpts = true -// expr := astutil.Unparen(f.Type) -// if e, ok := expr.(*goast.StarExpr); ok { -// expr = e.X -// } -// result = append(result, getOpt(ts.Name.Name, f, expr, false)...) -// continue -// } -// of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) -// } -// } -// if hasOpts { -// of.optsType = ts.Name.Name -// } -// } -// } -// result = append(result, of) -// } -// return -//} -// -//type optionFunc struct { -// params []string -// typeName string -// name string -// isRepeat bool -// optsType string -//} -// -//func getOpts(optionName string, s *goast.StructType) []optionFunc { -// if s.Fields == nil { -// return nil -// } -// var result []optionFunc -// for _, f := range s.Fields.List { -// expr := astutil.Unparen(f.Type) -// if e, ok := expr.(*goast.StarExpr); ok { -// expr = e.X -// } -// if opts := getOpt(optionName, f, expr, false); len(opts) > 0 { -// result = append(result, opts...) -// } -// -// } -// return result -//} -// -//func isFiledOpt(f *goast.Field) bool { -// if f.Tag != nil { -// if tags, err := structtag.Parse(strings.Trim(f.Tag.Value, "`")); err == nil { -// if t, err := tags.Get("swipe"); err == nil { -// if t.Value() == "option" { -// return true -// } -// } -// } -// } -// return false -//} -// -//func getOptName(f *goast.Field) (name string, ok bool) { -// name = f.Names[0].Name -// ok = true -// if f.Tag != nil { -// tags, err := structtag.Parse(strings.Trim(f.Tag.Value, "`")) -// if err == nil { -// if tag, err := tags.Get("mapstructure"); err == nil { -// if tag.Value() == "-" { -// ok = false -// } -// name = tag.Value() -// } -// } -// } -// return -//} diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 8f253e72..d87d5848 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -5,8 +5,9 @@ import ( "fmt" "path/filepath" + "github.com/swipe-io/swipe/v3/frame" + "github.com/swipe-io/strcase" - "github.com/swipe-io/swipe/v3/internal/frame" "github.com/swipe-io/swipe/v3/internal/importer" "github.com/swipe-io/swipe/v3/option" ) From 80a01e494610947aec7e87ca7517052b83d72215 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 9 Sep 2021 17:20:12 +0300 Subject: [PATCH 222/293] refactor: fixed generate plugin option without options --- v3/cmd/options.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/v3/cmd/options.go b/v3/cmd/options.go index ad0cf924..6f9108d1 100644 --- a/v3/cmd/options.go +++ b/v3/cmd/options.go @@ -84,10 +84,15 @@ var optionsCmd = &cobra.Command{ if a, err := annotations.Get("swipe"); err == nil { baseTypeName := a.Value() + "Option" + opts := getOpts(baseTypeName, s) + buf.WriteString(fmt.Sprintf("// %s\n", a.Value())) - buf.WriteString(fmt.Sprintf("func %s(opts ...%s) {}\n", a.Value(), baseTypeName)) + buf.WriteString(fmt.Sprintf("func %s(", a.Value())) + if len(opts) > 0 { + buf.WriteString(fmt.Sprintf("opts ...%s", baseTypeName)) + } + buf.WriteString(") {}\n") - opts := getOpts(baseTypeName, s) optExists := map[string]struct{}{} optTypeExists := map[string]struct{}{} for _, opt := range opts { From a246bf5a55850f0520aae3741c6f5d7498df5631 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Mon, 11 Oct 2021 09:25:40 +0300 Subject: [PATCH 223/293] refactor: fixed find gokit errors --- v2/cmd/swipe/main.go | 2 +- v3/internal/importer/importer.go | 89 ----- v3/internal/plugin/config/config.go | 2 +- v3/internal/plugin/config/plugin.go | 16 +- v3/internal/plugin/es/config/config.go | 13 + v3/internal/plugin/es/config/config_gen.go | 5 + v3/internal/plugin/es/generator/update.go | 26 ++ v3/internal/plugin/es/plugin.go | 43 +++ v3/internal/plugin/gokit/config/config.go | 119 ++----- .../plugin/gokit/generator/client_struct.go | 4 +- .../plugin/gokit/generator/endpoint.go | 19 +- v3/internal/plugin/gokit/generator/helpers.go | 7 +- .../plugin/gokit/generator/instrumenting.go | 2 +- .../plugin/gokit/generator/interface.go | 4 +- .../plugin/gokit/generator/jsonrpc_client.go | 2 +- .../gokit/generator/jsonrpc_js_client.go | 18 +- .../plugin/gokit/generator/jsonrpc_server.go | 18 +- v3/internal/plugin/gokit/generator/logging.go | 11 +- v3/internal/plugin/gokit/generator/openapi.go | 48 ++- .../plugin/gokit/generator/rest_client.go | 8 +- .../plugin/gokit/generator/rest_server.go | 48 ++- v3/internal/plugin/gokit/generator/utils.go | 33 +- v3/internal/plugin/gokit/plugin.go | 53 +-- v3/internal/plugin/gokit/utils.go | 307 ++++++++++++++---- v3/main.go | 1 + v3/option/decoder.go | 8 +- v3/option/values.go | 65 ++++ v3/swipe/config.go | 10 +- v3/swipe/plugin.go | 2 +- v3/swipe/swipe.go | 8 +- v3/swipe/type.go | 96 ++++++ v3/writer/golang_writer.go | 2 +- 32 files changed, 720 insertions(+), 369 deletions(-) create mode 100644 v3/internal/plugin/es/config/config.go create mode 100644 v3/internal/plugin/es/config/config_gen.go create mode 100644 v3/internal/plugin/es/generator/update.go create mode 100644 v3/internal/plugin/es/plugin.go create mode 100644 v3/option/values.go create mode 100644 v3/swipe/type.go diff --git a/v2/cmd/swipe/main.go b/v2/cmd/swipe/main.go index 3b2ae602..a5264643 100644 --- a/v2/cmd/swipe/main.go +++ b/v2/cmd/swipe/main.go @@ -166,7 +166,7 @@ func (cmd *genCmd) Execute(ctx context.Context, f *flag.FlagSet, args ...interfa w.W("package %s\n\n", pkgName) w.W("// A Option is an option for a Swipe.\ntype Option string\n\n") - w.W("// Build the basic option for defining the generation.\nfunc Build(Option) {}\n\n") + w.W("// Inject the basic option for defining the generation.\nfunc Inject(Option) {}\n\n") for _, name := range processorFactory.Names() { f, ok := processorFactory.GetOptGen(name) diff --git a/v3/internal/importer/importer.go b/v3/internal/importer/importer.go index bcec0f5d..9d85d1c2 100644 --- a/v3/internal/importer/importer.go +++ b/v3/internal/importer/importer.go @@ -1,7 +1,6 @@ package importer import ( - "bytes" "fmt" "go/token" "sort" @@ -75,97 +74,9 @@ func (i *Importer) SortedImports() (result []string) { } -func (i *Importer) TypeString(v interface{}) string { - return i.typeString(v, false) -} - -func (i *Importer) TypeSigString(v interface{}) string { - return i.typeString(v, true) -} - -func (i *Importer) typeString(v interface{}, onlySign bool) string { - switch t := v.(type) { - case *option.IfaceType: - return "interface{}" - case *option.MapType: - return pointerPrefix(t.IsPointer) + fmt.Sprintf("map[%s]%s", i.typeString(t.Key, onlySign), i.typeString(t.Value, onlySign)) - case *option.ArrayType: - return pointerPrefix(t.IsPointer) + fmt.Sprintf("[%d]%s", t.Len, i.typeString(t.Value, onlySign)) - case *option.SliceType: - return pointerPrefix(t.IsPointer) + "[]" + i.typeString(t.Value, onlySign) - case *option.BasicType: - return pointerPrefix(t.IsPointer) + t.Name - case *option.VarType: - return t.Name.Value + " " + i.typeString(t.Type, onlySign) - case option.VarsType: - var buf bytes.Buffer - buf.WriteByte('(') - for j, param := range t { - typ := param.Type - if j > 0 { - buf.WriteString(", ") - } - if !onlySign && param.Name.Value != "" { - buf.WriteString(param.Name.Value) - buf.WriteByte(' ') - } - if param.IsVariadic { - buf.WriteString("...") - if s, ok := typ.(*option.SliceType); ok { - typ = s.Value - } - } - buf.WriteString(i.typeString(typ, onlySign)) - } - buf.WriteByte(')') - return buf.String() - case *option.SignType: - var buf bytes.Buffer - buf.WriteString(i.typeString(t.Params, onlySign)) - n := len(t.Results) - if n == 0 { - return buf.String() - } - buf.WriteByte(' ') - if n == 1 && t.Results[0].Name.Value == "" { - buf.WriteString(i.typeString(t.Results[0].Type, onlySign)) - return buf.String() - } - buf.WriteString(i.typeString(t.Results, onlySign)) - return buf.String() - case *option.FuncType: - var buf bytes.Buffer - buf.WriteString(t.Name.Value) - if t.Sig != nil { - buf.WriteString(i.typeString(t.Sig, onlySign)) - } - return buf.String() - case *option.NamedType: - if t.Pkg == nil { - return pointerPrefix(t.IsPointer) + t.Name.Value - } - pkg := t.Pkg.Name - if !onlySign { - pkg = i.Import(t.Pkg.Name, t.Pkg.Path) - } - if pkg != "" { - pkg = pkg + "." - } - return pointerPrefix(t.IsPointer) + pkg + t.Name.Value - } - return "" -} - func NewImporter(pkg *option.PackageType) *Importer { return &Importer{ pkg: pkg, imports: map[string]ImportInfo{}, } } - -func pointerPrefix(isPointer bool) string { - if isPointer { - return "*" - } - return "" -} diff --git a/v3/internal/plugin/config/config.go b/v3/internal/plugin/config/config.go index 54a97ceb..cc614d99 100644 --- a/v3/internal/plugin/config/config.go +++ b/v3/internal/plugin/config/config.go @@ -20,7 +20,7 @@ type Generator struct { func (g *Generator) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - typeName := importer.TypeString(g.Struct) + typeName := swipe.TypeString(g.Struct, false, importer) g.w.W("func %s() (cfg *%s, errs []error) {\n", g.FuncName, typeName) g.w.W("cfg = &%s{}\n", typeName) diff --git a/v3/internal/plugin/config/plugin.go b/v3/internal/plugin/config/plugin.go index 8dddfe51..994d2c60 100644 --- a/v3/internal/plugin/config/plugin.go +++ b/v3/internal/plugin/config/plugin.go @@ -12,15 +12,11 @@ func init() { swipe.RegisterPlugin(&Plugin{}) } -type StringValue struct { - Value string -} - type Environment struct { StructType *option.NamedType - FuncName *StringValue `swipe:"option"` - EnableDoc *struct{} `swipe:"option"` - OutputDoc StringValue `swipe:"option"` + FuncName *option.StringValue `swipe:"option"` + EnableDoc *struct{} `swipe:"option"` + OutputDoc option.StringValue `swipe:"option"` } // Config @@ -36,12 +32,12 @@ type Plugin struct { func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { funcName := defaultFuncName if p.config.Environment.FuncName != nil { - funcName = p.config.Environment.FuncName.Value + funcName = p.config.Environment.FuncName.Take() } if p.config.Environment.EnableDoc != nil { generators = append(generators, &MarkdownDocGenerator{ Struct: p.config.Environment.StructType, - Output: p.config.Environment.OutputDoc.Value, + Output: p.config.Environment.OutputDoc.Take(), }) } generators = append(generators, &Generator{ @@ -51,7 +47,7 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { return } -func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *option.Build, options map[string]interface{}) []error { +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { if err := mapstructure.Decode(options, &p.config); err != nil { return []error{err} } diff --git a/v3/internal/plugin/es/config/config.go b/v3/internal/plugin/es/config/config.go new file mode 100644 index 00000000..7d88308e --- /dev/null +++ b/v3/internal/plugin/es/config/config.go @@ -0,0 +1,13 @@ +package config + +import "github.com/swipe-io/swipe/v3/option" + +type Entity struct { + Value *option.NamedType +} + +// Config +// @swipe:"EventSourcing" +type Config struct { + Entity Entity +} diff --git a/v3/internal/plugin/es/config/config_gen.go b/v3/internal/plugin/es/config/config_gen.go new file mode 100644 index 00000000..cc1a645a --- /dev/null +++ b/v3/internal/plugin/es/config/config_gen.go @@ -0,0 +1,5 @@ +package config + +func (*Config) Options() []byte { + return []byte("// EventSourcing\nfunc EventSourcing(opts ...EventSourcingOption) {}\n\n// EventSourcingOption ...\ntype EventSourcingOption string\n\n// Entity ...\nfunc Entity(value interface{}) EventSourcingOption { return \"implementation not generated, run swipe\" }\n") +} diff --git a/v3/internal/plugin/es/generator/update.go b/v3/internal/plugin/es/generator/update.go new file mode 100644 index 00000000..c48c2fd6 --- /dev/null +++ b/v3/internal/plugin/es/generator/update.go @@ -0,0 +1,26 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/writer" +) + +type UpdateGenerator struct { + w writer.GoWriter + Entity *option.NamedType +} + +func (g *UpdateGenerator) Generate(ctx context.Context) []byte { + g.w.W("type %sUpdate struct {}\n", g.Entity.Name) + return g.w.Bytes() +} + +func (g *UpdateGenerator) OutputDir() string { + return "" +} + +func (g *UpdateGenerator) Filename() string { + return "update.go" +} diff --git a/v3/internal/plugin/es/plugin.go b/v3/internal/plugin/es/plugin.go new file mode 100644 index 00000000..5ad626b2 --- /dev/null +++ b/v3/internal/plugin/es/plugin.go @@ -0,0 +1,43 @@ +package es + +import ( + "github.com/mitchellh/mapstructure" + "github.com/swipe-io/swipe/v3/internal/plugin/es/generator" + + "github.com/swipe-io/swipe/v3/internal/plugin/es/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" +) + +func init() { + swipe.RegisterPlugin(&Plugin{}) +} + +type Plugin struct { + config config.Config +} + +func (p *Plugin) ID() string { + return "EventSourcing" +} + +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { + p.config = config.Config{} + if err := mapstructure.Decode(options, &p.config); err != nil { + return []error{err} + } + return nil +} + +func (p *Plugin) Generators() ([]swipe.Generator, []error) { + generators := []swipe.Generator{ + &generator.UpdateGenerator{ + Entity: p.config.Entity.Value, + }, + } + return generators, nil +} + +func (p *Plugin) Options() []byte { + return (&config.Config{}).Options() +} diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 0a086d31..462c0412 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -11,94 +11,29 @@ const ( JRPCErrorType ErrorType = "jrpc" ) -type Error struct { - PkgName string - PkgPath string - IsPointer bool - Name string - Type ErrorType - Code int64 -} - type FuncTypeValue struct { Value *option.FuncType } -type SliceStringValue struct { - Value []string -} - -type StringValue struct { - Value *string -} - -func (v StringValue) IsValid() bool { - return v.Value != nil -} - -func (v StringValue) Take() string { - if v.Value == nil { - return "" - } - return *v.Value -} - -type IntValue struct { - Value *int -} - -func (v IntValue) IsValid() bool { - return v.Value != nil -} - -func (v IntValue) Take() int { - if v.Value == nil { - return 0 - } - return *v.Value -} - -type Int64Value struct { - Value *int64 -} - -func (v Int64Value) IsValid() bool { - return v.Value != nil -} - -func (v Int64Value) Take() int64 { - if v.Value == nil { - return 0 - } - return *v.Value -} - -type BoolValue struct { - Value *bool -} - -func (v BoolValue) IsValid() bool { - return v.Value != nil -} - -func (v BoolValue) Take() bool { - if v.Value == nil { - return false - } - return *v.Value +type Error struct { + PkgName string + PkgPath string + Name string + Type ErrorType + Code int64 } type ExternalInterface struct { Iface *Interface Config *Config - Build *option.Build + Build *option.Inject } type Interface struct { Named *option.NamedType `mapstructure:"iface"` Namespace string `mapstructure:"ns"` - ClientName StringValue `swipe:"option"` - Gateway *struct{} `swipe:"option"` + ClientName option.StringValue + Gateway *struct{} `swipe:"option"` } type OpenapiTag struct { @@ -122,24 +57,24 @@ type RESTMultipart struct { type Aggregate struct { Method *option.NamedType - Params SliceStringValue `swipe:"option"` - Results SliceStringValue `swipe:"option"` + Params option.SliceStringValue `swipe:"option"` + Results option.SliceStringValue `swipe:"option"` } type MethodDefaultOption struct { - Instrumenting BoolValue `swipe:"option"` - Logging BoolValue `swipe:"option"` - LoggingParams LoggingParams `swipe:"option"` - LoggingContext []LoggingContext `swipe:"option"` - RESTMethod StringValue `swipe:"option"` - RESTWrapResponse StringValue `swipe:"option"` - RESTPath StringValue `swipe:"option"` - RESTMultipartMaxMemory Int64Value `swipe:"option"` - RESTHeaderVars SliceStringValue `swipe:"option"` - RESTQueryVars SliceStringValue `swipe:"option"` - RESTQueryValues SliceStringValue `swipe:"option"` - RESTPathVars map[string]string `swipe:"option"` - RESTBodyType StringValue `swipe:"option"` + Instrumenting option.BoolValue `swipe:"option"` + Logging option.BoolValue `swipe:"option"` + LoggingParams LoggingParams `swipe:"option"` + LoggingContext []LoggingContext `swipe:"option"` + RESTMethod option.StringValue `swipe:"option"` + RESTWrapResponse option.StringValue `swipe:"option"` + RESTPath option.StringValue `swipe:"option"` + RESTMultipartMaxMemory option.Int64Value `swipe:"option"` + RESTHeaderVars option.SliceStringValue `swipe:"option"` + RESTQueryVars option.SliceStringValue `swipe:"option"` + RESTQueryValues option.SliceStringValue `swipe:"option"` + RESTPathVars map[string]string `swipe:"option"` + RESTBodyType option.StringValue `swipe:"option"` //Aggregate []Aggregate `swipe:"option"` ServerEncodeResponse FuncTypeValue `swipe:"option"` ServerDecodeRequest FuncTypeValue `swipe:"option"` @@ -196,13 +131,13 @@ type Config struct { HTTPFast *struct{} ClientsEnable ClientsEnable JSONRPCEnable *struct{} - JSONRPCPath StringValue + JSONRPCPath option.StringValue JSONRPCDocEnable *struct{} - JSONRPCDocOutput StringValue + JSONRPCDocOutput option.StringValue Interfaces []*Interface `mapstructure:"Interface"` OpenapiEnable *struct{} OpenapiTags []OpenapiTag - OpenapiOutput StringValue + OpenapiOutput option.StringValue OpenapiInfo OpenapiInfo OpenapiContact OpenapiContact OpenapiLicence OpenapiLicence diff --git a/v3/internal/plugin/gokit/generator/client_struct.go b/v3/internal/plugin/gokit/generator/client_struct.go index 4bbe6440..5bf51d26 100644 --- a/v3/internal/plugin/gokit/generator/client_struct.go +++ b/v3/internal/plugin/gokit/generator/client_struct.go @@ -152,7 +152,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { responseVarName = "_" } - g.w.W("func (c *%s) %s %s {\n", clientType, m.Name.Value, importer.TypeString(m.Sig)) + g.w.W("func (c *%s) %s %s {\n", clientType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if responseVarName != "_" { g.w.W("var %s interface{}\n", responseVarName) } @@ -184,7 +184,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { continue } if lenResults == 1 { - g.w.W("%s = %s.(%s)\n", result.Name.Value, responseVarName, importer.TypeString(result.Type)) + g.w.W("%s = %s.(%s)\n", result.Name.Value, responseVarName, swipe.TypeString(result.Type, false, importer)) } else { g.w.W("%s = %s.(%s).%s\n", result.Name.Value, responseVarName, NameResponse(m, iface), result.Name.Upper()) } diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index 66b12c76..f24744a6 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -35,7 +35,6 @@ func (g *Endpoint) Filename() string { func (g *Endpoint) writeReqResp(importer swipe.Importer) { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - for _, m := range ifaceType.Methods { if len(m.Sig.Params) > 0 { g.w.W("type %s struct {\n", NameRequest(m, iface)) @@ -43,19 +42,21 @@ func (g *Endpoint) writeReqResp(importer swipe.Importer) { if IsContext(param) { continue } - g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), importer.TypeString(param.Type), param.Name) + g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), swipe.TypeString(param.Type, false, importer), param.Name) } g.w.W("}\n") } - if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 0 { - g.w.W("type %s struct {\n", NameResponse(m, iface)) - for _, param := range m.Sig.Results { - if IsError(param) { - continue + if DownloadFile(m.Sig.Results) == nil { + if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 0 { + g.w.W("type %s struct {\n", NameResponse(m, iface)) + for _, param := range m.Sig.Results { + if IsError(param) { + continue + } + g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), swipe.TypeString(param.Type, false, importer), param.Name) } - g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), importer.TypeString(param.Type), param.Name) + g.w.W("}\n") } - g.w.W("}\n") } } } diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index 61aeeed4..a98a72f3 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -150,11 +150,8 @@ func (g *Helpers) Generate(ctx context.Context) []byte { if pkgName != "" { pkgName += "." } - newPrefix := "" - if e.IsPointer { - newPrefix = "&" - } - g.w.W("err = %s%s%s{}\n", newPrefix, pkgName, e.Name) + + g.w.W("err = &%s%s%s{}\n", pkgName, e.Name) } } g.w.W("}\n") diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index 7bbf7d66..fe8a1ce1 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -58,7 +58,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) + g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Instrumenting.Take() { methodName := iface.Named.Name.Lower() + "." + m.Name.Value g.w.WriteDefer( diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go index c54cf79d..ac930ac2 100644 --- a/v3/internal/plugin/gokit/generator/interface.go +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -17,6 +17,8 @@ type InterfaceGenerator struct { func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + g.w.W("type downloader interface {\nName() string\nContentType() string\nData() []byte\n}\n\n") + for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) ifaceTypeName := NameInterface(iface) @@ -24,7 +26,7 @@ func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { g.w.W("type %s interface {\n", ifaceTypeName) for _, m := range ifaceType.Methods { g.w.W(m.Name.Value) - g.w.W(importer.TypeString(m.Sig)) + g.w.W(swipe.TypeString(m.Sig, false, importer)) g.w.W("\n") } g.w.W("}\n") diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 44f49012..94ac71b1 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -109,7 +109,7 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { if m.Sig.IsNamed { responseType = responseName } else { - responseType = importer.TypeString(m.Sig.Results[0].Type) + responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) } g.w.W("var resp %s\n", responseType) g.w.W("err := %s.Unmarshal(response.Result, &resp)\n", ffJSONPkg) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index 91b2af23..a93461a9 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -68,15 +68,26 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { } } if m.Sig.IsNamed { - results = append(results, fmt.Sprintf("%s: ", p.Name)) + results = append(results, fmt.Sprintf("%s: %s", p.Name, jsDocType(p.Type))) + } else { + mw.W(jsDocType(p.Type)) } - mw.W(jsDocType(p.Type)) } if m.Sig.IsNamed { mw.W("{%s}", strings.Join(results, ",")) } mw.W(">}\n") + } + + ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] + methodErrors := ifaceErrors[m.Name.Value] + httpErrorsDub := map[int64]struct{}{} + for _, e := range methodErrors { + if _, ok := httpErrorsDub[e.Code]; !ok { + httpErrorsDub[e.Code] = struct{}{} + mw.W("* @throws {%s}\n", e.Name) + } } mw.W("**/\n") @@ -139,12 +150,9 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { } httpErrorsDub := map[string]struct{}{} - for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] - for _, method := range ifaceType.Methods { methodErrors := ifaceErrors[method.Name.Value] for _, e := range methodErrors { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index 76860abb..97ff51e8 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -83,7 +83,12 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("Decode: ") if mopt.ServerDecodeRequest.Value != nil { - g.w.W(importer.TypeString(mopt.ServerDecodeRequest.Value)) + pkg := importer.Import(mopt.ServerDecodeRequest.Value.Pkg.Name, mopt.ServerDecodeRequest.Value.Pkg.Path) + fnName := mopt.ServerDecodeRequest.Value.Name.String() + if pkg != "" { + fnName = pkg + "." + fnName + } + g.w.W(fnName) } else { g.w.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) @@ -101,7 +106,16 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("}") } g.w.W(",\n") - g.w.W("Encode: encodeResponseJSONRPC,\n") + if mopt.ServerEncodeResponse.Value != nil { + pkg := importer.Import(mopt.ServerEncodeResponse.Value.Pkg.Name, mopt.ServerEncodeResponse.Value.Pkg.Path) + fnName := mopt.ServerEncodeResponse.Value.Name.String() + if pkg != "" { + fnName = pkg + "." + fnName + } + g.w.W("Encode: " + fnName + ",\n") + } else { + g.w.W("Encode: encodeResponseJSONRPC,\n") + } g.w.W("}\n}\n") } g.w.W("return ecm\n") diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 1378add3..0e865bee 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -56,7 +56,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { if len(mopt.LoggingContext) > 0 { for _, lc := range mopt.LoggingContext { - logParams = append(logParams, strconv.Quote(lc.Name), "ctx.Value("+importer.TypeString(lc.Key)+")") + logParams = append(logParams, strconv.Quote(lc.Name), "ctx.Value("+swipe.TypeString(lc.Key, false, importer)+")") } } @@ -67,7 +67,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { if param.IsVariadic { prefix = "..." } - params = append(params, prefix+importer.TypeString(param)) + params = append(params, prefix+swipe.TypeString(param, false, importer)) } for _, result := range m.Sig.Results { @@ -75,11 +75,12 @@ func (g *Logging) Generate(ctx context.Context) []byte { logParams = append(logParams, strconv.Quote("err"), result.Name.Value) continue } - logParams = append(logParams, strconv.Quote(result.Name.Value), result.Name.Value) - results = append(results, result.Name.Value, importer.TypeString(result)) + + logParams = append(logParams, makeLogParam(result.Name.Value, result.Type)...) + results = append(results, result.Name.Value, swipe.TypeString(result, false, importer)) } - g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, importer.TypeString(m.Sig)) + g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Logging.Take() && len(logParams) > 0 { methodName := iface.Named.Name.Lower() + "." + m.Name.Value diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 4ebedb22..ebd8f8d4 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -378,13 +378,18 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config if IsError(r) { continue } + if isFileDownloadType(r.Type) { + continue + } g.fillTypeDef(r.Type) schema := g.schemaByType(r.Type) responseSchema.Properties[r.Name.Lower()] = schema } } else if lenResults == 1 { - g.fillTypeDef(m.Sig.Results[0].Type) - responseSchema = g.schemaByType(m.Sig.Results[0].Type) + if !isFileDownloadType(m.Sig.Results[0].Type) { + g.fillTypeDef(m.Sig.Results[0].Type) + responseSchema = g.schemaByType(m.Sig.Results[0].Type) + } } else { responseSchema.Example = json.RawMessage("null") } @@ -564,12 +569,22 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodDefaultOpti if IsError(r) { continue } + if isFileDownloadType(r.Type) { + responseSchema.Type = "string" + responseSchema.Format = "binary" + continue + } g.fillTypeDef(r.Type) responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) } } else if lenResults == 1 { - g.fillTypeDef(m.Sig.Results[0].Type) - responseSchema = g.schemaByType(m.Sig.Results[0].Type) + if !isFileDownloadType(m.Sig.Results[0].Type) { + g.fillTypeDef(m.Sig.Results[0].Type) + responseSchema = g.schemaByType(m.Sig.Results[0].Type) + } else { + responseSchema.Type = "string" + responseSchema.Format = "binary" + } } if mopt.RESTWrapResponse.Take() != "" { properties := openapi.Properties{} @@ -587,14 +602,27 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodDefaultOpti }, } } else { - responses["200"] = &openapi.Response{ - Description: "OK", - Content: openapi.Content{ - "application/json": { - Schema: responseSchema, + + if responseSchema.Type == "string" && responseSchema.Format == "binary" { + responses["200"] = &openapi.Response{ + Description: "OK", + Content: openapi.Content{ + "application/file": { + Schema: responseSchema, + }, }, - }, + } + } else { + responses["200"] = &openapi.Response{ + Description: "OK", + Content: openapi.Content{ + "application/json": { + Schema: responseSchema, + }, + }, + } } + } o := &openapi.Operation{ diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 6b11deb9..329b166a 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -170,7 +170,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("u,\n") if mopt.ClientEncodeRequest.Value != nil { - g.w.W(importer.TypeString(mopt.ClientEncodeRequest.Value)) + g.w.W(swipe.TypeString(mopt.ClientEncodeRequest.Value, false, importer)) } else { g.w.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) @@ -293,7 +293,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) for _, p := range paramVars { - if isFileType(p.Type, importer) { + if isFileUploadType(p.Type, importer) { g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) g.w.WriteCheckErr("err", func() { g.w.W("return err\n") @@ -334,7 +334,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W(",\n") if mopt.ClientDecodeResponse.Value != nil { - g.w.W(importer.TypeString(mopt.ClientDecodeResponse.Value)) + g.w.W(swipe.TypeString(mopt.ClientDecodeResponse.Value, false, importer)) } else { g.w.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) statusCode := "r.StatusCode" @@ -352,7 +352,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { if m.Sig.IsNamed { responseType = NameResponse(m, iface) } else { - responseType = importer.TypeString(m.Sig.Results[0].Type) + responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) } var ( diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 8210d74d..490370bc 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -84,7 +84,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("for _, o := range options {\n o(opts)\n }\n") if g.DefaultErrorEncoder != nil { g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(", kitHTTPPkg) - g.w.W(importer.TypeString(g.DefaultErrorEncoder)) + g.w.W(swipe.TypeString(g.DefaultErrorEncoder, false, importer)) g.w.W("))\n") } else { g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) @@ -277,7 +277,12 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { m.Name, ) if mopt.ServerDecodeRequest.Value != nil { - g.w.W(importer.TypeString(mopt.ServerDecodeRequest.Value)) + pkg := importer.Import(mopt.ServerDecodeRequest.Value.Pkg.Name, mopt.ServerDecodeRequest.Value.Pkg.Path) + fnName := mopt.ServerDecodeRequest.Value.Name.String() + if pkg != "" { + fnName = pkg + "." + fnName + } + g.w.W(fnName) } else { g.w.W("func(ctx %s.Context, r *%s.Request) (_ interface{}, err error) {\n", contextPkg, httpPkg) @@ -392,7 +397,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil, err\n") }) for _, p := range paramVars { - if isFileType(p.Type, importer) { + if isFileUploadType(p.Type, importer) { osPkg := importer.Import("os", "os") if g.UseFast { @@ -442,24 +447,25 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W(",\n") if mopt.ServerEncodeResponse.Value != nil { - g.w.W(importer.TypeString(mopt.ServerEncodeResponse.Value)) + pkg := importer.Import(mopt.ServerEncodeResponse.Value.Pkg.Name, mopt.ServerEncodeResponse.Value.Pkg.Path) + fnName := mopt.ServerEncodeResponse.Value.Name.String() + if pkg != "" { + fnName = pkg + "." + fnName + } + g.w.W(fnName) } else { - if g.JSONRPCEnable { - g.w.W("encodeResponseJSONRPC") - } else { - if mopt.RESTWrapResponse.Take() != "" { - var responseWriterType string - if g.UseFast { - responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) - } else { - responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) - } - g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.w.W("return encodeResponseHTTP(ctx, w, %s)\n", wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."))) - g.w.W("}") + if mopt.RESTWrapResponse.Take() != "" { + var responseWriterType string + if g.UseFast { + responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) } else { - g.w.W("encodeResponseHTTP") + responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) } + g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) + g.w.W("return encodeResponseHTTP(ctx, w, %s)\n", wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."))) + g.w.W("}") + } else { + g.w.W("encodeResponseHTTP") } } g.w.W(",\n") @@ -502,11 +508,17 @@ func (g *RESTServerGenerator) writeEncodeResponseFunc(contextPkg, httpPkg, jsonP g.w.W("contentType := \"application/json; charset=utf-8\"\n") g.w.W("statusCode := 200\n") g.w.W("var data []byte\n") + g.w.W("if response != nil {\n") + g.w.W("if download, ok := response.(downloader); ok {\n") + g.w.W("contentType = download.ContentType()\n") + g.w.W("data = download.Data()\n") + g.w.W("} else {\n") g.w.W("data, err = %s.Marshal(response)\n", jsonPkg) g.w.W("if err != nil {\n") g.w.W("return err\n") g.w.W("}\n") + g.w.W("}\n") g.w.W("} else {\n") g.w.W("contentType = \"text/plain; charset=utf-8\"\n") g.w.W("statusCode = 201\n") diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 2387c362..20127ebc 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -232,6 +232,15 @@ func Error(vars option.VarsType) *option.VarType { return nil } +func DownloadFile(vars option.VarsType) *option.VarType { + for _, v := range vars { + if isFileDownloadType(v.Type) { + return v + } + } + return nil +} + func Contexts(vars option.VarsType) (result []*option.VarType) { for _, v := range vars { if IsContext(v) { @@ -284,6 +293,9 @@ func makeLogParam(name string, t interface{}) []string { default: return []string{quoteName, name} case *option.NamedType: + if isFileDownloadType(t) { + return []string{quoteName, "len(" + name + ".Data())"} + } if hasMethodString(t) { return []string{quoteName, name + ".String()"} } @@ -680,12 +692,12 @@ func fillType(i interface{}, visited map[string]*option.NamedType) { } } -func isFileType(i interface{}, importer swipe.Importer) bool { +func isFileUploadType(i interface{}, importer swipe.Importer) bool { if n, ok := i.(*option.NamedType); ok { if iface, ok := n.Type.(*option.IfaceType); ok { var done int for _, method := range iface.Methods { - sigStr := importer.TypeSigString(method) + sigStr := swipe.TypeStringWithoutImport(method, true) switch sigStr { case "Close() (error)", "Name() (string)", "Read([]byte) (int, error)": done++ @@ -699,6 +711,23 @@ func isFileType(i interface{}, importer swipe.Importer) bool { return false } +func isFileDownloadType(i interface{}) bool { + if n, ok := i.(*option.NamedType); ok { + var done int + for _, method := range n.Methods { + sigStr := swipe.TypeStringWithoutImport(method, true) + switch sigStr { + case "ContentType() (string)", "Name() (string)", "Data() ([]byte)": + done++ + } + } + if done == 3 { + return true + } + } + return false +} + func wrapDataServer(parts []string) string { l := list.New() if len(parts) > 0 { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index f0b34e63..fd5262f0 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -29,7 +29,7 @@ func (p *Plugin) ID() string { return "Gokit" } -func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *option.Build, options map[string]interface{}) []error { +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { p.config = config.Config{} if err := mapstructure.Decode(options, &p.config); err != nil { return []error{err} @@ -42,8 +42,11 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *opti p.config.AppName = strcase.ToCamel(appName) funcDeclTypes := makeFuncDeclTypes(cfg.Packages) + funcDeclIfaceTypes := makeFuncIfaceDeclTypes(cfg.Packages, funcDeclTypes) - p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, cfg.Packages, p.config.Interfaces) + funcErrors := findErrors(cfg.Module.Path, funcDeclTypes, cfg.Packages) + + p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, funcDeclIfaceTypes, funcErrors, cfg.Packages, p.config.Interfaces) p.config.MethodOptionsMap = map[string]config.MethodDefaultOption{} for _, methodOption := range p.config.MethodOptions { @@ -110,29 +113,6 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, build *opti return errs } -func (p *Plugin) checkExternalPackage(cfg *swipe.Config) (errs []error, hasExternal bool) { - - for _, iface := range p.config.Interfaces { - if iface.Named.Pkg.Module == nil { - errs = append(errs, errors.New("not add package for "+iface.Named.Pkg.Path+"."+iface.Named.Name.Value)) - continue - } - if iface.Gateway != nil { - hasExternal = true - } - } - return -} - -func (p *Plugin) validateConfig() (errs []error) { - for _, iface := range p.config.Interfaces { - if _, ok := iface.Named.Type.(*option.IfaceType); !ok { - errs = append(errs, fmt.Errorf("type is not an interface")) - } - } - return -} - func (p *Plugin) Options() []byte { var cfg interface{} = &config.Config{} if o, ok := cfg.(interface{ Options() []byte }); ok { @@ -254,3 +234,26 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } return } + +func (p *Plugin) checkExternalPackage(cfg *swipe.Config) (errs []error, hasExternal bool) { + + for _, iface := range p.config.Interfaces { + if iface.Named.Pkg.Module == nil { + errs = append(errs, errors.New("not add package for "+iface.Named.Pkg.Path+"."+iface.Named.Name.Value)) + continue + } + if iface.Gateway != nil { + hasExternal = true + } + } + return +} + +func (p *Plugin) validateConfig() (errs []error) { + for _, iface := range p.config.Interfaces { + if _, ok := iface.Named.Type.(*option.IfaceType); !ok { + errs = append(errs, fmt.Errorf("type is not an interface")) + } + } + return +} diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index 80e09815..8a61d538 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -5,12 +5,13 @@ import ( "go/ast" "go/constant" "go/token" + "go/types" stdtypes "go/types" "strings" - "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "golang.org/x/tools/go/ast/astutil" "golang.org/x/tools/go/packages" ) @@ -64,6 +65,7 @@ type typeInfo struct { obj stdtypes.Object stmtList []ast.Stmt pkg *packages.Package + recv *types.Var } func extractValues(pkg *packages.Package, stmtList []ast.Stmt) (values []interface{}) { @@ -81,67 +83,115 @@ func extractValues(pkg *packages.Package, stmtList []ast.Stmt) (values []interfa return } -func findErrorsRecursive(funcDecl map[string]typeInfo, pkgs []*packages.Package, stmts []ast.Stmt) (result []config.Error) { - for _, stmt := range stmts { - ret, ok := stmt.(*ast.ReturnStmt) - if !ok { - continue - } - for _, r := range ret.Results { - switch t := r.(type) { - default: - named := extractNamed(pkgs, t) - if named != nil { - for i := 0; i < named.NumMethods(); i++ { - m := named.Method(i) +func findErrors(modulePath string, declTypes map[string]*typeInfo, pkgs []*packages.Package) (result map[string]config.Error) { + result = make(map[string]config.Error, 1024) + for _, pkg := range pkgs { + if strings.Contains(pkg.PkgPath, modulePath) { + for _, object := range pkg.TypesInfo.Uses { + if t, ok := object.Type().(*types.Named); ok { + for i := 0; i < t.NumMethods(); i++ { + m := t.Method(i) if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { - info, ok := funcDecl[m.Id()] - if !ok { - continue + sig := m.Type().(*types.Signature) + id := m.Name() + if recv := sig.Recv(); recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() + } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id } - values := extractValues(info.pkg, info.stmtList) - if len(values) != 1 { - continue - } - val, ok := values[0].(int64) - if !ok { - continue + if info, ok := declTypes[pkg.PkgPath+id]; ok { + values := extractValues(pkg, info.stmtList) + if len(values) != 1 { + continue + } + val, ok := values[0].(int64) + if !ok { + continue + } + tp := config.RESTErrorType + if m.Name() == "ErrorCode" { + tp = config.JRPCErrorType + } + result[t.Obj().Pkg().Path()+"/"+t.Obj().Name()] = config.Error{ + PkgName: t.Obj().Pkg().Name(), + PkgPath: t.Obj().Pkg().Path(), + Name: t.Obj().Name(), + Type: tp, + Code: val, + } } - tp := config.RESTErrorType - if m.Name() == "ErrorCode" { - tp = config.JRPCErrorType - } - result = append(result, config.Error{ - PkgName: named.Obj().Pkg().Name(), - PkgPath: named.Obj().Pkg().Path(), - IsPointer: named.IsPointer, - Name: named.Obj().Name(), - Type: tp, - Code: val, - }) - } - } - } - case *ast.CallExpr: - if id, ok := t.Fun.(*ast.Ident); ok && id.Obj != nil { - if f, ok := id.Obj.Decl.(*ast.FuncDecl); ok { - result = append(result, findErrorsRecursive(funcDecl, pkgs, f.Body.List)...) - } - } else if sel, ok := t.Fun.(*ast.SelectorExpr); ok { - if xID, ok := sel.X.(*ast.Ident); ok { - if info, ok := funcDecl[xID.Name+"."+sel.Sel.Name]; ok { - result = append(result, findErrorsRecursive(funcDecl, pkgs, info.stmtList)...) } } } } } } + + //for _, pkg := range pkgs { + + //for _, syntax := range pkg.Syntax { + // for _, decl := range syntax.Decls { + // if f, ok := decl.(*ast.FuncDecl); ok { + // for _, stmt := range f.Body.List { + // ret, ok := stmt.(*ast.ReturnStmt) + // if !ok { + // continue + // } + // for _, r := range ret.Results { + // named := extractNamed(pkgs, r) + // if named != nil { + // for i := 0; i < named.NumMethods(); i++ { + // m := named.Method(i) + // if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { + // info, ok := funcDecl[m.Id()] + // if !ok { + // continue + // } + // values := extractValues(info.pkg, info.stmtList) + // if len(values) != 1 { + // continue + // } + // val, ok := values[0].(int64) + // if !ok { + // continue + // } + // tp := config.RESTErrorType + // if m.Name() == "ErrorCode" { + // tp = config.JRPCErrorType + // } + // result = append(result, config.Error{ + // PkgName: named.Obj().Pkg().Name(), + // PkgPath: named.Obj().Pkg().Path(), + // IsPointer: named.IsPointer, + // Name: named.Obj().Name(), + // FuncName: f.Name.Name, + // Type: tp, + // Code: val, + // }) + // } + // } + // } + // } + // } + // } + // } + //} + //} + return } -func findErrors(funcDecl map[string]typeInfo, pkgs []*packages.Package, stmts []ast.Stmt) []config.Error { - return findErrorsRecursive(funcDecl, pkgs, stmts) +func extractSelector(e ast.Expr) *ast.SelectorExpr { + switch t := e.(type) { + case *ast.SelectorExpr: + return t + } + return nil } type named struct { @@ -168,28 +218,133 @@ func extractNamedRecursive(pkgs []*packages.Package, expr ast.Expr, isPointer bo return nil } -func extractNamed(pkgs []*packages.Package, expr ast.Expr) *named { - return extractNamedRecursive(pkgs, expr, false) +func findIfaceErrorsRecursive(pkgs []*packages.Package, funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typeInfo, errors map[string]config.Error, visited map[string]struct{}, stmts []ast.Stmt) (results []config.Error) { + for _, stmt := range stmts { + switch t := stmt.(type) { + case *ast.ReturnStmt: + for _, result := range t.Results { + call, ok := result.(*ast.CallExpr) + if !ok { + if unary, ok := result.(*ast.UnaryExpr); ok { + if cpl, ok := unary.X.(*ast.CompositeLit); ok { + if sel, ok := cpl.Type.(*ast.SelectorExpr); ok { + for _, pkg := range pkgs { + obj := pkg.TypesInfo.ObjectOf(sel.Sel) + if obj != nil { + if e, ok := errors[obj.Pkg().Path()+"/"+obj.Name()]; ok { + results = append(results, e) + } + break + } + } + } + } + } + continue + } + selFun := extractSelector(call.Fun) + if selFun != nil { + sel := extractSelector(selFun.X) + for _, pkg := range pkgs { + obj := pkg.TypesInfo.ObjectOf(sel.Sel) + if obj != nil { + if named, ok := obj.Type().(*types.Named); ok { + if _, ok := named.Obj().Type().Underlying().(*types.Interface); ok { + id := named.Obj().Pkg().Path() + "/" + named.Obj().Name() + "." + selFun.Sel.Name + if _, ok := visited[id]; ok { + break + } + visited[id] = struct{}{} + if infos, ok := ifaceTypes[id]; ok { + for _, info := range infos { + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, info.stmtList)...) + } + break + } + } + } + } + } + } + } + case *ast.IfStmt: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.Body.List)...) + case *ast.SwitchStmt: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.Body.List)...) + case *ast.BlockStmt: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.List)...) + case *ast.CommClause: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.Body)...) + case *ast.SelectStmt: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.Body.List)...) + case *ast.ForStmt: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.Body.List)...) + case *ast.RangeStmt: + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, t.Body.List)...) + } + } + return } -func findIfaceErrors(funcDecl map[string]typeInfo, pkgs []*packages.Package, ifaces []*config.Interface) (result map[string]map[string][]config.Error) { +func findIfaceErrors(funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typeInfo, errors map[string]config.Error, pkgs []*packages.Package, ifaces []*config.Interface) (result map[string]map[string][]config.Error) { result = map[string]map[string][]config.Error{} - for _, info := range funcDecl { - if info.obj == nil { - continue + visited := map[string]struct{}{} + for _, iface := range ifaces { + i := iface.Named.Type.(*option.IfaceType) + for _, m := range i.Methods { + id := iface.Named.Pkg.Path + "/" + iface.Named.Name.Value + "." + m.Name.Value + if fns, ok := ifaceTypes[id]; ok { + for _, info := range fns { + visited[id] = struct{}{} + if _, ok := result[iface.Named.Name.Value]; !ok { + result[iface.Named.Name.Value] = map[string][]config.Error{} + } + result[iface.Named.Name.Value][info.obj.Name()] = findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, info.stmtList) + } + } } - sig, ok := info.obj.Type().(*stdtypes.Signature) - if !ok || sig.Recv() == nil { + } + return +} + +func makeFuncIfaceDeclTypes(pkgs []*packages.Package, funcDecl map[string]*typeInfo) (result map[string][]*typeInfo) { + result = make(map[string][]*typeInfo, 1024) + for _, pkg := range pkgs { + if strings.Contains(pkg.PkgPath, "/pkg/swipe/") { continue } - for _, iface := range ifaces { - if ptr, ok := sig.Recv().Type().(*stdtypes.Pointer); ok { - imp := stdtypes.Implements(ptr.Underlying(), iface.Named.Type.(*option.IfaceType).Origin) - if imp { - if _, ok := result[iface.Named.Name.Value]; !ok { - result[iface.Named.Name.Value] = map[string][]config.Error{} + for _, syntax := range pkg.Syntax { + for _, decl := range syntax.Decls { + switch t := decl.(type) { + case *ast.GenDecl: + for _, spec := range t.Specs { + if tp, ok := spec.(*ast.TypeSpec); ok { + obj := pkg.TypesInfo.ObjectOf(tp.Name) + named, ok := obj.Type().(*types.Named) + if !ok { + continue + } + iface, ok := named.Obj().Type().Underlying().(*types.Interface) + if !ok { + continue + } + for _, info := range funcDecl { + if info.recv == nil { + continue + } + ptr, ok := info.recv.Type().(*stdtypes.Pointer) + if !ok { + continue + } + imp := stdtypes.Implements(ptr.Underlying(), iface) + if imp { + id := pkg.PkgPath + "/" + named.Obj().Name() + "." + info.obj.Name() + + result[id] = append(result[id], info) + } + } + } } - result[iface.Named.Name.Value][info.obj.Name()] = findErrors(funcDecl, pkgs, info.stmtList) } } } @@ -197,10 +352,10 @@ func findIfaceErrors(funcDecl map[string]typeInfo, pkgs []*packages.Package, ifa return } -func makeFuncDeclTypes(pkgs []*packages.Package) (result map[string]typeInfo) { - result = make(map[string]typeInfo, 1024) +func makeFuncDeclTypes(pkgs []*packages.Package) (result map[string]*typeInfo) { + result = make(map[string]*typeInfo, 1024) for _, pkg := range pkgs { - if pkg.Name == "swipe" { + if strings.Contains(pkg.PkgPath, "/pkg/swipe/") { continue } for _, syntax := range pkg.Syntax { @@ -209,9 +364,23 @@ func makeFuncDeclTypes(pkgs []*packages.Package) (result map[string]typeInfo) { case *ast.FuncDecl: obj := pkg.TypesInfo.ObjectOf(t.Name) if obj != nil { - result[pkg.Name+"."+t.Name.Name] = typeInfo{ + sig := pkg.TypesInfo.TypeOf(t.Name).(*types.Signature) + id := t.Name.Name + recv := sig.Recv() + if recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() + } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id + } + result[pkg.PkgPath+id] = &typeInfo{ obj: obj, pkg: pkg, + recv: recv, stmtList: t.Body.List, } } diff --git a/v3/main.go b/v3/main.go index e24c3dec..7e6ffb9c 100644 --- a/v3/main.go +++ b/v3/main.go @@ -3,6 +3,7 @@ package v3 import ( "github.com/swipe-io/swipe/v3/cmd" _ "github.com/swipe-io/swipe/v3/internal/plugin/config" + _ "github.com/swipe-io/swipe/v3/internal/plugin/es" _ "github.com/swipe-io/swipe/v3/internal/plugin/gokit" ) diff --git a/v3/option/decoder.go b/v3/option/decoder.go index c14be42e..c4866632 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -16,7 +16,7 @@ import ( "golang.org/x/tools/go/types/typeutil" ) -type Build struct { +type Inject struct { Pkg *PackageType BasePath string Option map[string]interface{} @@ -25,7 +25,7 @@ type Build struct { type Module struct { Path string External bool - Builds []*Build + Injects []*Inject } type Result struct { @@ -472,7 +472,7 @@ func (d *Decoder) decode() (result map[string]*Module, err error) { return nil, err } - build := &Build{ + build := &Inject{ Pkg: &PackageType{ Name: pkg.Name, Path: pkg.PkgPath, @@ -483,7 +483,7 @@ func (d *Decoder) decode() (result map[string]*Module, err error) { buildName: option, }, } - result[pkg.Module.Path].Builds = append(result[pkg.Module.Path].Builds, build) + result[pkg.Module.Path].Injects = append(result[pkg.Module.Path].Injects, build) } } } diff --git a/v3/option/values.go b/v3/option/values.go new file mode 100644 index 00000000..60d6373a --- /dev/null +++ b/v3/option/values.go @@ -0,0 +1,65 @@ +package option + +type SliceStringValue struct { + Value []string +} + +type StringValue struct { + Value *string +} + +func (v StringValue) IsValid() bool { + return v.Value != nil +} + +func (v StringValue) Take() string { + if v.Value == nil { + return "" + } + return *v.Value +} + +type IntValue struct { + Value *int +} + +func (v IntValue) IsValid() bool { + return v.Value != nil +} + +func (v IntValue) Take() int { + if v.Value == nil { + return 0 + } + return *v.Value +} + +type Int64Value struct { + Value *int64 +} + +func (v Int64Value) IsValid() bool { + return v.Value != nil +} + +func (v Int64Value) Take() int64 { + if v.Value == nil { + return 0 + } + return *v.Value +} + +type BoolValue struct { + Value *bool +} + +func (v BoolValue) IsValid() bool { + return v.Value != nil +} + +func (v BoolValue) Take() bool { + if v.Value == nil { + return false + } + return *v.Value +} diff --git a/v3/swipe/config.go b/v3/swipe/config.go index 19e49ebf..c42d31e5 100644 --- a/v3/swipe/config.go +++ b/v3/swipe/config.go @@ -23,7 +23,7 @@ func (e *warnError) Error() string { type PluginConfig struct { Plugin Plugin - Build *option.Build + Build *option.Inject Module *option.Module } @@ -53,9 +53,9 @@ func GetConfig(loader *ast.Loader) (*Config, error) { return &cfg, nil } -func (c *Config) WalkBuilds(fn func(module *option.Module, build *option.Build) bool) { +func (c *Config) WalkBuilds(fn func(module *option.Module, build *option.Inject) bool) { for _, module := range c.Modules { - for _, build := range module.Builds { + for _, build := range module.Injects { if !fn(module, build) { break } @@ -66,7 +66,7 @@ func (c *Config) WalkBuilds(fn func(module *option.Module, build *option.Build) func (c *Config) Load() (err error) { optionPkgs := map[string]string{} for _, plugin := range registeredPlugins { - optionPkgs["swipe"+strings.ToLower(plugin.ID())] = plugin.ID() + optionPkgs[strings.ToLower(plugin.ID())] = plugin.ID() } c.Modules, err = option.Decode(optionPkgs, c.Module, c.Packages, c.CommentFuncs) return @@ -75,7 +75,7 @@ func (c *Config) Load() (err error) { func Options() (data map[string][]byte) { data = map[string][]byte{} for _, plugin := range registeredPlugins { - name := "swipe" + strings.ToLower(plugin.ID()) + name := strings.ToLower(plugin.ID()) data[name] = append(data[name], plugin.Options()...) } return diff --git a/v3/swipe/plugin.go b/v3/swipe/plugin.go index 337ce19d..23f74fd1 100644 --- a/v3/swipe/plugin.go +++ b/v3/swipe/plugin.go @@ -8,7 +8,7 @@ import ( type Plugin interface { ID() string - Configure(cfg *Config, module *option.Module, build *option.Build, options map[string]interface{}) []error + Configure(cfg *Config, module *option.Module, options map[string]interface{}) []error Generators() ([]Generator, []error) Options() []byte } diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index d87d5848..7f49c19b 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -22,8 +22,6 @@ const ( type Importer interface { Import(name string, path string) string - TypeString(v interface{}) string - TypeSigString(v interface{}) string } type AstFinder interface { @@ -39,21 +37,19 @@ type GenerateResult struct { func Generate(cfg *Config) (result []GenerateResult, errs []error) { result = make([]GenerateResult, 0, 100) - importerMap := map[string]*importer.Importer{} - for _, module := range cfg.Modules { if module.External { continue } - for _, build := range module.Builds { + for _, build := range module.Injects { for id, options := range build.Option { p, ok := registeredPlugins[id] if !ok { errs = append(errs, &warnError{Err: fmt.Errorf("plugin %q not found", id)}) continue } - cfgErrs := p.Configure(cfg, module, build, options.(map[string]interface{})) + cfgErrs := p.Configure(cfg, module, options.(map[string]interface{})) if len(cfgErrs) > 0 { errs = append(errs, cfgErrs...) continue diff --git a/v3/swipe/type.go b/v3/swipe/type.go new file mode 100644 index 00000000..25f63481 --- /dev/null +++ b/v3/swipe/type.go @@ -0,0 +1,96 @@ +package swipe + +import ( + "bytes" + "fmt" + + "github.com/swipe-io/swipe/v3/option" +) + +func TypeStringWithoutImport(v interface{}, onlySign bool) string { + return typeString(v, onlySign, nil) +} + +func TypeString(v interface{}, onlySign bool, importer Importer) string { + return typeString(v, onlySign, importer) +} + +func typeString(v interface{}, onlySign bool, importer Importer) string { + switch t := v.(type) { + case *option.IfaceType: + return "interface{}" + case *option.MapType: + return pointerPrefix(t.IsPointer) + fmt.Sprintf("map[%s]%s", typeString(t.Key, onlySign, importer), typeString(t.Value, onlySign, importer)) + case *option.ArrayType: + return pointerPrefix(t.IsPointer) + fmt.Sprintf("[%d]%s", t.Len, typeString(t.Value, onlySign, importer)) + case *option.SliceType: + return pointerPrefix(t.IsPointer) + "[]" + typeString(t.Value, onlySign, importer) + case *option.BasicType: + return pointerPrefix(t.IsPointer) + t.Name + case *option.VarType: + return t.Name.Value + " " + typeString(t.Type, onlySign, importer) + case option.VarsType: + var buf bytes.Buffer + buf.WriteByte('(') + for j, param := range t { + typ := param.Type + if j > 0 { + buf.WriteString(", ") + } + if !onlySign && param.Name.Value != "" { + buf.WriteString(param.Name.Value) + buf.WriteByte(' ') + } + if param.IsVariadic { + buf.WriteString("...") + if s, ok := typ.(*option.SliceType); ok { + typ = s.Value + } + } + buf.WriteString(typeString(typ, onlySign, importer)) + } + buf.WriteByte(')') + return buf.String() + case *option.SignType: + var buf bytes.Buffer + buf.WriteString(typeString(t.Params, onlySign, importer)) + n := len(t.Results) + if n == 0 { + return buf.String() + } + buf.WriteByte(' ') + if n == 1 && t.Results[0].Name.Value == "" { + buf.WriteString(typeString(t.Results[0].Type, onlySign, importer)) + return buf.String() + } + buf.WriteString(typeString(t.Results, onlySign, importer)) + return buf.String() + case *option.FuncType: + var buf bytes.Buffer + buf.WriteString(t.Name.Value) + if t.Sig != nil { + buf.WriteString(typeString(t.Sig, onlySign, importer)) + } + return buf.String() + case *option.NamedType: + if t.Pkg == nil { + return pointerPrefix(t.IsPointer) + t.Name.Value + } + pkg := t.Pkg.Name + if importer != nil { + pkg = importer.Import(t.Pkg.Name, t.Pkg.Path) + } + if pkg != "" { + pkg = pkg + "." + } + return pointerPrefix(t.IsPointer) + pkg + t.Name.Value + } + return "" +} + +func pointerPrefix(isPointer bool) string { + if isPointer { + return "*" + } + return "" +} diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go index e32eb59d..bcb83385 100644 --- a/v3/writer/golang_writer.go +++ b/v3/writer/golang_writer.go @@ -255,7 +255,7 @@ func (w *GoWriter) WriteConvertType( if v, ok := t.Value.(*option.BasicType); ok { tmpID = "parts" + f.Name.Lower() w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) - w.W("%s = make(%s, len(%s))\n", assignId, importer.TypeString(t), tmpID) + w.W("%s = make(%s, len(%s))\n", assignId, swipe.TypeString(t, false, importer), tmpID) if v.IsNumeric() { w.W("for _, s := range %s {\n", tmpID) w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) From bc74478768f10f40900d47a8fa1820944cac6480 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 11 Oct 2021 11:20:15 +0300 Subject: [PATCH 224/293] refactor: fixed method options default and errors js/go client generate --- v3/internal/packages/packages.go | 89 +++++ v3/internal/plugin/gokit/config/config.go | 2 +- v3/internal/plugin/gokit/generator/helpers.go | 2 +- .../plugin/gokit/generator/instrumenting.go | 1 - .../gokit/generator/jsonrpc_js_client.go | 19 +- v3/internal/plugin/gokit/generator/openapi.go | 13 +- v3/internal/plugin/gokit/plugin.go | 21 +- v3/internal/plugin/gokit/utils.go | 343 +++++++----------- v3/option/decoder.go | 98 +++-- v3/option/decoder_test.go.bak | 84 ----- v3/option/utils.go | 9 - v3/swipe/config.go | 15 +- 12 files changed, 309 insertions(+), 387 deletions(-) create mode 100644 v3/internal/packages/packages.go delete mode 100644 v3/option/decoder_test.go.bak diff --git a/v3/internal/packages/packages.go b/v3/internal/packages/packages.go new file mode 100644 index 00000000..a422c8b5 --- /dev/null +++ b/v3/internal/packages/packages.go @@ -0,0 +1,89 @@ +package packages + +import ( + "go/ast" + "go/types" + + "golang.org/x/tools/go/packages" +) + +type Packages struct { + pkgs []*packages.Package +} + +func (p *Packages) FindPkgByPath(path string) *packages.Package { + for _, pkg := range p.pkgs { + if pkg.PkgPath == path { + return pkg + } + } + return nil +} + +func (p *Packages) ObjectOf(id *ast.Ident) types.Object { + for _, pkg := range p.pkgs { + if obj := pkg.TypesInfo.ObjectOf(id); obj != nil { + return obj + } + } + return nil +} + +func (p *Packages) TypeOf(e ast.Expr) types.Type { + for _, pkg := range p.pkgs { + if t := pkg.TypesInfo.TypeOf(e); t != nil { + return t + } + } + return nil +} + +func (p *Packages) TraverseTypes(c func(pkg *packages.Package, expr ast.Expr, value types.TypeAndValue) error) error { + for _, pkg := range p.pkgs { + for expr, value := range pkg.TypesInfo.Types { + if err := c(pkg, expr, value); err != nil { + return err + } + } + } + return nil +} + +func (p *Packages) TraverseObjects(c func(pkg *packages.Package, id *ast.Ident, obj types.Object) error) error { + for _, pkg := range p.pkgs { + for id, obj := range pkg.TypesInfo.Uses { + if obj == nil { + continue + } + if err := c(pkg, id, obj); err != nil { + return err + } + } + for id, obj := range pkg.TypesInfo.Defs { + if obj == nil { + continue + } + if err := c(pkg, id, obj); err != nil { + return err + } + } + } + return nil +} + +func (p *Packages) TraverseDecls(c func(pkg *packages.Package, file *ast.File, decl ast.Decl) error) error { + for _, pkg := range p.pkgs { + for _, file := range pkg.Syntax { + for _, decl := range file.Decls { + if err := c(pkg, file, decl); err != nil { + return err + } + } + } + } + return nil +} + +func NewPackages(pkgs []*packages.Package) *Packages { + return &Packages{pkgs: pkgs} +} diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 462c0412..4bfff548 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -90,7 +90,7 @@ type MethodOption struct { type OpenapiInfo struct { Title string Description string - Version string + Version interface{} } type OpenapiContact struct { diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index a98a72f3..53245fb2 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -151,7 +151,7 @@ func (g *Helpers) Generate(ctx context.Context) []byte { pkgName += "." } - g.w.W("err = &%s%s%s{}\n", pkgName, e.Name) + g.w.W("err = &%s%s{}\n", pkgName, e.Name) } } g.w.W("}\n") diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index fe8a1ce1..50818235 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -57,7 +57,6 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Instrumenting.Take() { methodName := iface.Named.Name.Lower() + "." + m.Name.Value diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index a93461a9..867380b3 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -82,10 +82,10 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] methodErrors := ifaceErrors[m.Name.Value] - httpErrorsDub := map[int64]struct{}{} + errorsDub := map[int64]struct{}{} for _, e := range methodErrors { - if _, ok := httpErrorsDub[e.Code]; !ok { - httpErrorsDub[e.Code] = struct{}{} + if _, ok := errorsDub[e.Code]; !ok { + errorsDub[e.Code] = struct{}{} mw.W("* @throws {%s}\n", e.Name) } } @@ -149,17 +149,17 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { g.w.W("export default JSONRPCClient%s\n\n", UcNameJS(g.Interfaces[0])) } - httpErrorsDub := map[string]struct{}{} + errorsDub := map[int64]struct{}{} for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] for _, method := range ifaceType.Methods { methodErrors := ifaceErrors[method.Name.Value] for _, e := range methodErrors { - if _, ok := httpErrorsDub[e.Name]; ok { + if _, ok := errorsDub[e.Code]; ok { continue } - httpErrorsDub[e.Name] = struct{}{} + errorsDub[e.Code] = struct{}{} g.w.W( "export class %[1]s extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]s\", %[2]d, data);\n}\n}\n", e.Name, e.Code, @@ -178,7 +178,14 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { g.w.W("switch(e.code) {\n") g.w.W("default:\n") g.w.W("return new JSONRPCError(\"%s: \"+e.message, \"UnknownError\", e.code, e.data);\n", LcNameIfaceMethod(iface, method)) + + errorsDub := map[int64]struct{}{} for _, e := range methodErrors { + if _, ok := errorsDub[e.Code]; ok { + continue + } + errorsDub[e.Code] = struct{}{} + g.w.W("case %d:\n", e.Code) g.w.W("return new %s(e.message, e.data);\n", e.Name) } diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index ebd8f8d4..82283a4f 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -3,6 +3,7 @@ package generator import ( "context" "encoding/json" + "go/types" "net/http" "path" "strconv" @@ -35,6 +36,16 @@ type Openapi struct { func (g *Openapi) Generate(ctx context.Context) []byte { g.defTypes = make(map[string]*option.NamedType, 1024) + version := "" + switch t := g.Info.Version.(type) { + case string: + version = t + case *option.NamedType: + if c, ok := t.Obj.(*types.Const); ok { + version, _ = strconv.Unquote(c.Val().String()) + } + } + o := openapi.OpenAPI{ OpenAPI: "3.0.0", Info: openapi.Info{ @@ -50,7 +61,7 @@ func (g *Openapi) Generate(ctx context.Context) []byte { Name: g.Licence.Name, URL: g.Licence.Url, }, - Version: g.Info.Version, + Version: version, }, Paths: map[string]*openapi.Path{}, Components: openapi.Components{ diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index fd5262f0..31168691 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -43,24 +43,15 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map funcDeclTypes := makeFuncDeclTypes(cfg.Packages) funcDeclIfaceTypes := makeFuncIfaceDeclTypes(cfg.Packages, funcDeclTypes) - funcErrors := findErrors(cfg.Module.Path, funcDeclTypes, cfg.Packages) p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, funcDeclIfaceTypes, funcErrors, cfg.Packages, p.config.Interfaces) p.config.MethodOptionsMap = map[string]config.MethodDefaultOption{} - for _, methodOption := range p.config.MethodOptions { - sig := methodOption.Signature.Type.(*option.SignType) - recvNamed := sig.Recv.(*option.NamedType) - p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption.MethodDefaultOption - } - for _, iface := range p.config.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { - recvNamed := m.Sig.Recv.(*option.NamedType) - - dstMethodOption, _ := p.config.MethodOptionsMap[recvNamed.Name.Value+m.Name.Value] + dstMethodOption, _ := p.config.MethodOptionsMap[iface.Named.Name.Value+m.Name.Value] dstMethodOption = fillMethodDefaultOptions(dstMethodOption, p.config.MethodDefaultOptions) if !p.config.LoggingEnable && dstMethodOption.Logging.Take() { @@ -78,7 +69,7 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } dstMethodOption.RESTPathVars = pathVars } - p.config.MethodOptionsMap[recvNamed.Name.Value+m.Name.Value] = dstMethodOption + p.config.MethodOptionsMap[iface.Named.Name.Value+m.Name.Value] = dstMethodOption } } @@ -105,7 +96,7 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map errs = append(errs, err) } } - checkErrs, hasExternal := p.checkExternalPackage(cfg) + checkErrs, hasExternal := p.checkExternalPackage() if len(checkErrs) > 0 { errs = append(errs, checkErrs...) } @@ -127,7 +118,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { jsonRPCEnable := p.config.JSONRPCEnable != nil httpServerEnable := p.config.HTTPServer != nil useFast := p.config.HTTPFast != nil - jsonrpcDocEnable := p.config.JSONRPCDocEnable != nil + jsonRPCDocEnable := p.config.JSONRPCDocEnable != nil result = append(result, &generator.Helpers{ @@ -193,7 +184,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { IfaceErrors: p.config.IfaceErrors, }) } - if jsonrpcDocEnable { + if jsonRPCDocEnable { result = append(result, &generator.JSONRPCDocGenerator{ AppName: p.config.AppName, JSPkgImportPath: p.config.JSPkgImportPath, @@ -235,7 +226,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { return } -func (p *Plugin) checkExternalPackage(cfg *swipe.Config) (errs []error, hasExternal bool) { +func (p *Plugin) checkExternalPackage() (errs []error, hasExternal bool) { for _, iface := range p.config.Interfaces { if iface.Named.Pkg.Module == nil { diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index 8a61d538..e672b874 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -4,16 +4,15 @@ import ( "fmt" "go/ast" "go/constant" - "go/token" "go/types" stdtypes "go/types" "strings" "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/internal/packages" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" - "golang.org/x/tools/go/ast/astutil" - "golang.org/x/tools/go/packages" + stdpackages "golang.org/x/tools/go/packages" ) func httpBraceIndices(s string) ([]int, error) { @@ -64,18 +63,16 @@ func pathVars(path string) (map[string]string, error) { type typeInfo struct { obj stdtypes.Object stmtList []ast.Stmt - pkg *packages.Package + pkg *stdpackages.Package recv *types.Var } -func extractValues(pkg *packages.Package, stmtList []ast.Stmt) (values []interface{}) { +func extractValues(pkg *stdpackages.Package, stmtList []ast.Stmt) (values []interface{}) { for _, stmt := range stmtList { if ret, ok := stmt.(*ast.ReturnStmt); ok { for _, result := range ret.Results { - if l, ok := result.(*ast.BasicLit); ok { - if v, ok := pkg.TypesInfo.Types[l]; ok { - values = append(values, constant.Val(v.Value)) - } + if v, ok := pkg.TypesInfo.Types[result]; ok { + values = append(values, constant.Val(v.Value)) } } } @@ -83,106 +80,54 @@ func extractValues(pkg *packages.Package, stmtList []ast.Stmt) (values []interfa return } -func findErrors(modulePath string, declTypes map[string]*typeInfo, pkgs []*packages.Package) (result map[string]config.Error) { +func findErrors(modulePath string, declTypes map[string]*typeInfo, pkgs *packages.Packages) (result map[string]config.Error) { result = make(map[string]config.Error, 1024) - for _, pkg := range pkgs { - if strings.Contains(pkg.PkgPath, modulePath) { - for _, object := range pkg.TypesInfo.Uses { - if t, ok := object.Type().(*types.Named); ok { - for i := 0; i < t.NumMethods(); i++ { - m := t.Method(i) - if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { - sig := m.Type().(*types.Signature) - id := m.Name() - if recv := sig.Recv(); recv != nil { - recvType := recv.Type() - if ptr, ok := recvType.(*types.Pointer); ok { - recvType = ptr.Elem() - } - recvNamed := recvType.(*types.Named) - id = "/" + recvNamed.Obj().Name() + "." + id - } else { - id = "." + id - } - if info, ok := declTypes[pkg.PkgPath+id]; ok { - values := extractValues(pkg, info.stmtList) - if len(values) != 1 { - continue - } - val, ok := values[0].(int64) - if !ok { - continue - } - tp := config.RESTErrorType - if m.Name() == "ErrorCode" { - tp = config.JRPCErrorType - } - result[t.Obj().Pkg().Path()+"/"+t.Obj().Name()] = config.Error{ - PkgName: t.Obj().Pkg().Name(), - PkgPath: t.Obj().Pkg().Path(), - Name: t.Obj().Name(), - Type: tp, - Code: val, - } - } + _ = pkgs.TraverseObjects(func(pkg *stdpackages.Package, id *ast.Ident, obj stdtypes.Object) (err error) { + if !strings.Contains(pkg.PkgPath, modulePath) { + return + } + if t, ok := obj.Type().(*types.Named); ok { + for i := 0; i < t.NumMethods(); i++ { + m := t.Method(i) + if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { + sig := m.Type().(*types.Signature) + id := m.Name() + if recv := sig.Recv(); recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() + } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id + } + if info, ok := declTypes[pkg.PkgPath+id]; ok { + values := extractValues(pkg, info.stmtList) + if len(values) != 1 { + continue + } + val, ok := values[0].(int64) + if !ok { + continue + } + tp := config.RESTErrorType + if m.Name() == "ErrorCode" { + tp = config.JRPCErrorType + } + result[t.Obj().Pkg().Path()+"/"+t.Obj().Name()] = config.Error{ + PkgName: t.Obj().Pkg().Name(), + PkgPath: t.Obj().Pkg().Path(), + Name: t.Obj().Name(), + Type: tp, + Code: val, } } } } } - } - - //for _, pkg := range pkgs { - - //for _, syntax := range pkg.Syntax { - // for _, decl := range syntax.Decls { - // if f, ok := decl.(*ast.FuncDecl); ok { - // for _, stmt := range f.Body.List { - // ret, ok := stmt.(*ast.ReturnStmt) - // if !ok { - // continue - // } - // for _, r := range ret.Results { - // named := extractNamed(pkgs, r) - // if named != nil { - // for i := 0; i < named.NumMethods(); i++ { - // m := named.Method(i) - // if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { - // info, ok := funcDecl[m.Id()] - // if !ok { - // continue - // } - // values := extractValues(info.pkg, info.stmtList) - // if len(values) != 1 { - // continue - // } - // val, ok := values[0].(int64) - // if !ok { - // continue - // } - // tp := config.RESTErrorType - // if m.Name() == "ErrorCode" { - // tp = config.JRPCErrorType - // } - // result = append(result, config.Error{ - // PkgName: named.Obj().Pkg().Name(), - // PkgPath: named.Obj().Pkg().Path(), - // IsPointer: named.IsPointer, - // Name: named.Obj().Name(), - // FuncName: f.Name.Name, - // Type: tp, - // Code: val, - // }) - // } - // } - // } - // } - // } - // } - // } - //} - //} - + return + }) return } @@ -194,31 +139,7 @@ func extractSelector(e ast.Expr) *ast.SelectorExpr { return nil } -type named struct { - *stdtypes.Named - IsPointer bool -} - -func extractNamedRecursive(pkgs []*packages.Package, expr ast.Expr, isPointer bool) *named { - expr = astutil.Unparen(expr) - switch t := expr.(type) { - case *ast.CompositeLit: - for _, pkg := range pkgs { - if v, ok := pkg.TypesInfo.Types[t.Type]; ok { - if n, ok := v.Type.(*stdtypes.Named); ok { - return &named{Named: n, IsPointer: isPointer} - } - } - } - case *ast.StarExpr: - return extractNamedRecursive(pkgs, t.X, isPointer) - case *ast.UnaryExpr: - return extractNamedRecursive(pkgs, t.X, t.Op == token.AND) - } - return nil -} - -func findIfaceErrorsRecursive(pkgs []*packages.Package, funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typeInfo, errors map[string]config.Error, visited map[string]struct{}, stmts []ast.Stmt) (results []config.Error) { +func findIfaceErrorsRecursive(pkgs *packages.Packages, funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typeInfo, errors map[string]config.Error, visited map[string]struct{}, stmts []ast.Stmt) (results []config.Error) { for _, stmt := range stmts { switch t := stmt.(type) { case *ast.ReturnStmt: @@ -228,14 +149,11 @@ func findIfaceErrorsRecursive(pkgs []*packages.Package, funcDecl map[string]*typ if unary, ok := result.(*ast.UnaryExpr); ok { if cpl, ok := unary.X.(*ast.CompositeLit); ok { if sel, ok := cpl.Type.(*ast.SelectorExpr); ok { - for _, pkg := range pkgs { - obj := pkg.TypesInfo.ObjectOf(sel.Sel) - if obj != nil { - if e, ok := errors[obj.Pkg().Path()+"/"+obj.Name()]; ok { - results = append(results, e) - } - break + if obj := pkgs.ObjectOf(sel.Sel); obj != nil { + if e, ok := errors[obj.Pkg().Path()+"/"+obj.Name()]; ok { + results = append(results, e) } + break } } } @@ -245,22 +163,19 @@ func findIfaceErrorsRecursive(pkgs []*packages.Package, funcDecl map[string]*typ selFun := extractSelector(call.Fun) if selFun != nil { sel := extractSelector(selFun.X) - for _, pkg := range pkgs { - obj := pkg.TypesInfo.ObjectOf(sel.Sel) - if obj != nil { - if named, ok := obj.Type().(*types.Named); ok { - if _, ok := named.Obj().Type().Underlying().(*types.Interface); ok { - id := named.Obj().Pkg().Path() + "/" + named.Obj().Name() + "." + selFun.Sel.Name - if _, ok := visited[id]; ok { - break - } - visited[id] = struct{}{} - if infos, ok := ifaceTypes[id]; ok { - for _, info := range infos { - results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, info.stmtList)...) - } - break + if obj := pkgs.ObjectOf(sel.Sel); obj != nil { + if named, ok := obj.Type().(*types.Named); ok { + if _, ok := named.Obj().Type().Underlying().(*types.Interface); ok { + id := named.Obj().Pkg().Path() + "/" + named.Obj().Name() + "." + selFun.Sel.Name + if _, ok := visited[id]; ok { + break + } + visited[id] = struct{}{} + if infos, ok := ifaceTypes[id]; ok { + for _, info := range infos { + results = append(results, findIfaceErrorsRecursive(pkgs, funcDecl, ifaceTypes, errors, visited, info.stmtList)...) } + break } } } @@ -286,7 +201,7 @@ func findIfaceErrorsRecursive(pkgs []*packages.Package, funcDecl map[string]*typ return } -func findIfaceErrors(funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typeInfo, errors map[string]config.Error, pkgs []*packages.Package, ifaces []*config.Interface) (result map[string]map[string][]config.Error) { +func findIfaceErrors(funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typeInfo, errors map[string]config.Error, pkgs *packages.Packages, ifaces []*config.Interface) (result map[string]map[string][]config.Error) { result = map[string]map[string][]config.Error{} visited := map[string]struct{}{} for _, iface := range ifaces { @@ -307,87 +222,91 @@ func findIfaceErrors(funcDecl map[string]*typeInfo, ifaceTypes map[string][]*typ return } -func makeFuncIfaceDeclTypes(pkgs []*packages.Package, funcDecl map[string]*typeInfo) (result map[string][]*typeInfo) { +func makeFuncIfaceDeclTypes(pkgs *packages.Packages, funcDecl map[string]*typeInfo) (result map[string][]*typeInfo) { result = make(map[string][]*typeInfo, 1024) - for _, pkg := range pkgs { + _ = pkgs.TraverseDecls(func(pkg *stdpackages.Package, file *ast.File, decl ast.Decl) (err error) { if strings.Contains(pkg.PkgPath, "/pkg/swipe/") { - continue + return } - for _, syntax := range pkg.Syntax { - for _, decl := range syntax.Decls { - switch t := decl.(type) { - case *ast.GenDecl: - for _, spec := range t.Specs { - if tp, ok := spec.(*ast.TypeSpec); ok { - obj := pkg.TypesInfo.ObjectOf(tp.Name) - named, ok := obj.Type().(*types.Named) - if !ok { - continue - } - iface, ok := named.Obj().Type().Underlying().(*types.Interface) - if !ok { - continue - } - for _, info := range funcDecl { - if info.recv == nil { - continue - } - ptr, ok := info.recv.Type().(*stdtypes.Pointer) - if !ok { - continue - } - imp := stdtypes.Implements(ptr.Underlying(), iface) - if imp { - id := pkg.PkgPath + "/" + named.Obj().Name() + "." + info.obj.Name() - - result[id] = append(result[id], info) + switch t := decl.(type) { + case *ast.GenDecl: + for _, spec := range t.Specs { + if tp, ok := spec.(*ast.TypeSpec); ok { + obj := pkg.TypesInfo.ObjectOf(tp.Name) + named, ok := obj.Type().(*types.Named) + if !ok { + continue + } + iface, ok := named.Obj().Type().Underlying().(*types.Interface) + if !ok { + continue + } + for _, info := range funcDecl { + if info.recv == nil { + continue + } + ptr, ok := info.recv.Type().(*stdtypes.Pointer) + if !ok { + continue + } + for i := 0; i < iface.NumEmbeddeds(); i++ { + if embeddedNamed, ok := iface.EmbeddedType(i).(*types.Named); ok { + if embeddedIface, ok := embeddedNamed.Obj().Type().Underlying().(*types.Interface); ok { + imp := stdtypes.Implements(ptr.Underlying(), embeddedIface) + if imp { + id := pkg.PkgPath + "/" + named.Obj().Name() + "." + info.obj.Name() + result[id] = append(result[id], info) + } } } } + imp := stdtypes.Implements(ptr.Underlying(), iface) + if imp { + id := pkg.PkgPath + "/" + named.Obj().Name() + "." + info.obj.Name() + result[id] = append(result[id], info) + } } } } } - } + return + }) return } -func makeFuncDeclTypes(pkgs []*packages.Package) (result map[string]*typeInfo) { +func makeFuncDeclTypes(pkgs *packages.Packages) (result map[string]*typeInfo) { result = make(map[string]*typeInfo, 1024) - for _, pkg := range pkgs { + _ = pkgs.TraverseDecls(func(pkg *stdpackages.Package, file *ast.File, decl ast.Decl) (err error) { if strings.Contains(pkg.PkgPath, "/pkg/swipe/") { - continue + return } - for _, syntax := range pkg.Syntax { - for _, decl := range syntax.Decls { - switch t := decl.(type) { - case *ast.FuncDecl: - obj := pkg.TypesInfo.ObjectOf(t.Name) - if obj != nil { - sig := pkg.TypesInfo.TypeOf(t.Name).(*types.Signature) - id := t.Name.Name - recv := sig.Recv() - if recv != nil { - recvType := recv.Type() - if ptr, ok := recvType.(*types.Pointer); ok { - recvType = ptr.Elem() - } - recvNamed := recvType.(*types.Named) - id = "/" + recvNamed.Obj().Name() + "." + id - } else { - id = "." + id - } - result[pkg.PkgPath+id] = &typeInfo{ - obj: obj, - pkg: pkg, - recv: recv, - stmtList: t.Body.List, - } + switch t := decl.(type) { + case *ast.FuncDecl: + obj := pkg.TypesInfo.ObjectOf(t.Name) + if obj != nil { + sig := pkg.TypesInfo.TypeOf(t.Name).(*types.Signature) + id := t.Name.Name + recv := sig.Recv() + if recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id + } + result[pkg.PkgPath+id] = &typeInfo{ + obj: obj, + pkg: pkg, + recv: recv, + stmtList: t.Body.List, } } } - } + return + }) return } diff --git a/v3/option/decoder.go b/v3/option/decoder.go index c4866632..b71af82e 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -9,6 +9,8 @@ import ( stdtypes "go/types" "path/filepath" + packages2 "github.com/swipe-io/swipe/v3/internal/packages" + "github.com/fatih/structtag" "github.com/swipe-io/swipe/v3/internal/annotation" "golang.org/x/tools/go/ast/astutil" @@ -35,7 +37,7 @@ type Result struct { type Decoder struct { optionPkgs map[string]string module *packages.Module - pkgs []*packages.Package + pkgs *packages2.Packages commentFuncMap map[string][]string typesCache map[uint32]interface{} hasher typeutil.Hasher @@ -147,7 +149,6 @@ func (d *Decoder) normalizeNamed(pkg *packages.Package, named *stdtypes.Named, i Methods: v.Methods, } } - nt := &NamedType{ Obj: named.Obj(), Pkg: d.normalizePkg(named.Obj().Pkg()), @@ -168,7 +169,7 @@ func (d *Decoder) normalizeNamed(pkg *packages.Package, named *stdtypes.Named, i func (d *Decoder) normalizePkg(pkg *stdtypes.Package) *PackageType { if pkg != nil { var module *ModuleType - fndPkg := findPkgByID(d.pkgs, pkg.Path()) + fndPkg := d.pkgs.FindPkgByPath(pkg.Path()) if fndPkg != nil { module = d.normalizeModule(fndPkg.Module) } @@ -436,61 +437,58 @@ func (d *Decoder) callDecode(pkg *packages.Package, e *goast.CallExpr) (map[stri func (d *Decoder) decode() (result map[string]*Module, err error) { result = map[string]*Module{} - for _, pkg := range d.pkgs { - for expr := range pkg.TypesInfo.Types { - expr = astutil.Unparen(expr) - callExpr, ok := expr.(*goast.CallExpr) - if !ok { - continue + err = d.pkgs.TraverseTypes(func(pkg *packages.Package, expr goast.Expr, value stdtypes.TypeAndValue) (err error) { + expr = astutil.Unparen(expr) + callExpr, ok := expr.(*goast.CallExpr) + if !ok { + return + } + fun := callExpr.Fun + if selExpr, ok := fun.(*goast.SelectorExpr); ok { + fun = selExpr.Sel + } + callIdent, ok := fun.(*goast.Ident) + if !ok { + return + } + obj := d.pkgs.ObjectOf(callIdent) + if obj == nil || obj.Pkg() == nil { + return + } + if buildName, ok := d.optionPkgs[obj.Pkg().Name()]; ok && obj.Name() == buildName { + if _, ok := result[pkg.Module.Path]; !ok { + result[pkg.Module.Path] = &Module{ + Path: pkg.Module.Path, + External: d.module.Path != pkg.Module.Path, + } } - fun := callExpr.Fun - if selExpr, ok := fun.(*goast.SelectorExpr); ok { - fun = selExpr.Sel + option, err := d.callDecodeArgs(pkg, obj, callExpr.Args) + if err != nil { + return err } - callIdent, ok := fun.(*goast.Ident) - if !ok { - continue + basePath, err := detectBasePath(pkg) + if err != nil { + return err } - obj := pkg.TypesInfo.Uses[callIdent] - if obj == nil || obj.Pkg() == nil { - continue - } - - if buildName, ok := d.optionPkgs[obj.Pkg().Name()]; ok && obj.Name() == buildName { - if _, ok := result[pkg.Module.Path]; !ok { - result[pkg.Module.Path] = &Module{ - Path: pkg.Module.Path, - External: d.module.Path != pkg.Module.Path, - } - } - option, err := d.callDecodeArgs(pkg, obj, callExpr.Args) - if err != nil { - return nil, err - } - basePath, err := detectBasePath(pkg) - if err != nil { - return nil, err - } - - build := &Inject{ - Pkg: &PackageType{ - Name: pkg.Name, - Path: pkg.PkgPath, - Types: pkg.Types, - }, - BasePath: basePath, - Option: map[string]interface{}{ - buildName: option, - }, - } - result[pkg.Module.Path].Injects = append(result[pkg.Module.Path].Injects, build) + build := &Inject{ + Pkg: &PackageType{ + Name: pkg.Name, + Path: pkg.PkgPath, + Types: pkg.Types, + }, + BasePath: basePath, + Option: map[string]interface{}{ + buildName: option, + }, } + result[pkg.Module.Path].Injects = append(result[pkg.Module.Path].Injects, build) } - } + return + }) return } -func Decode(optionPkgs map[string]string, module *packages.Module, pkgs []*packages.Package, commentFuncs map[string][]string) (result map[string]*Module, err error) { +func Decode(optionPkgs map[string]string, module *packages.Module, pkgs *packages2.Packages, commentFuncs map[string][]string) (result map[string]*Module, err error) { return (&Decoder{ optionPkgs: optionPkgs, module: module, diff --git a/v3/option/decoder_test.go.bak b/v3/option/decoder_test.go.bak deleted file mode 100644 index f3fbfb2d..00000000 --- a/v3/option/decoder_test.go.bak +++ /dev/null @@ -1,84 +0,0 @@ -package option_test - -import ( - "fmt" - "os" - "path/filepath" - "testing" - - "github.com/mitchellh/mapstructure" - - "github.com/swipe-io/swipe/v2/internal/ast" - "github.com/swipe-io/swipe/v2/option" -) - -type Interface struct { - Type *option.IfaceType `mapstructure:"iface"` - Namespace string `mapstructure:"ns"` -} - -type OpenapiTag struct { - Methods []*option.SelectorType `mapstructure:"methods"` - Tags []string `mapstructure:"tags"` -} - -type ServiceOptions struct { - HTTPServer *struct{} - Interfaces []*Interface `mapstructure:"Interface"` - OpenapiTags *OpenapiTag `mapstructure:"Tags"` -} - -func TestParser_Parse(t *testing.T) { - wd, err := filepath.Abs("./fixtures") - if err != nil { - t.Fatal(err) - } - astLoader, errs := ast.NewLoader(wd, os.Environ(), []string{"./fixtures/..", "github.pie.apple.com/ISS-Tools/zeus-service/pkg/..."}) - if len(errs) > 0 { - for _, err := range errs { - t.Log(err) - } - t.Fatal("AST loader failed") - } - - modules, err := option.Decode(astLoader.Pkg(), astLoader.Pkgs(), astLoader.CommentFuncs()) - if err != nil { - t.Fatal(err) - } - - for _, module := range modules { - for _, build := range module.Builds { - if opts, ok := build.Option["Service"]; ok { - var o ServiceOptions - err = mapstructure.Decode(opts, &o) - fmt.Println(o, err) - } - } - } - - //p := NewParser() - //p.Parse(nil) - - //type args struct { - // s interface{} - //} - //tests := []struct { - // name string - // args args - // want interface{} - //}{ - // { - // name: "", - // args: args{s: &TestStruct{}}, - // want: nil, - // }, - //} - //for _, tt := range tests { - // t.Run(tt.name, func(t *testing.T) { - // p := NewParser() - // if got := p.Parse(tt.args.s, data); !reflect.DeepEqual(got, tt.want) { - // t.Errorf("Parse() = %v, want %v", got, tt.want) - // } - // }) - //} -} diff --git a/v3/option/utils.go b/v3/option/utils.go index 14109556..89d577b0 100644 --- a/v3/option/utils.go +++ b/v3/option/utils.go @@ -84,15 +84,6 @@ func qualifiedIdentObject(info *types.Info, expr ast.Expr) types.Object { } } -func findPkgByID(pkgs []*packages.Package, path string) *packages.Package { - for _, pkg := range pkgs { - if pkg.PkgPath == path { - return pkg - } - } - return nil -} - func detectBasePath(pkg *packages.Package) (string, error) { paths := pkg.GoFiles if len(paths) == 0 { diff --git a/v3/swipe/config.go b/v3/swipe/config.go index c42d31e5..509d437d 100644 --- a/v3/swipe/config.go +++ b/v3/swipe/config.go @@ -3,6 +3,8 @@ package swipe import ( "strings" + packages2 "github.com/swipe-io/swipe/v3/internal/packages" + "github.com/swipe-io/swipe/v3/internal/ast" "github.com/swipe-io/swipe/v3/option" @@ -28,13 +30,12 @@ type PluginConfig struct { } type Config struct { - WorkDir string - Envs []string - Patterns []string - Modules map[string]*option.Module - + WorkDir string + Envs []string + Patterns []string + Modules map[string]*option.Module Module *packages.Module - Packages []*packages.Package + Packages *packages2.Packages CommentFuncs map[string][]string } @@ -44,7 +45,7 @@ func GetConfig(loader *ast.Loader) (*Config, error) { Envs: loader.Env(), Patterns: loader.Patterns(), Module: loader.Module(), - Packages: loader.Pkgs(), + Packages: packages2.NewPackages(loader.Pkgs()), CommentFuncs: loader.CommentFuncs(), } if err := cfg.Load(); err != nil { From afd397d0bf384e7b9f53a2c340f990c48805c3e5 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 11 Oct 2021 11:22:41 +0300 Subject: [PATCH 225/293] refactor: fixed --- v3/internal/plugin/gokit/generator/helpers.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index 53245fb2..7c18b98c 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -144,7 +144,13 @@ func (g *Helpers) Generate(ctx context.Context) []byte { g.w.W("switch code {\n") g.w.W("default:\nerr = &httpError{code: code}\n") if g.JSONRPCEnable { + errorsDub := map[int64]struct{}{} for _, e := range methodErrors { + if _, ok := errorsDub[e.Code]; ok { + continue + } + errorsDub[e.Code] = struct{}{} + g.w.W("case %d:\n", e.Code) pkgName := importer.Import(e.PkgName, e.PkgPath) if pkgName != "" { From 43daf3a545afef8c2b76b1b0a07f76c8c1b061f9 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 11 Oct 2021 16:41:46 +0300 Subject: [PATCH 226/293] refactor: fixed generate typedef for js client --- .../plugin/gokit/generator/jsonrpc_doc.go | 12 ++++-- .../gokit/generator/jsonrpc_js_client.go | 22 +++++----- v3/internal/plugin/gokit/generator/utils.go | 41 ++++++++++--------- v3/internal/plugin/gokit/plugin.go | 1 + v3/internal/plugin/gokit/utils.go | 3 ++ 5 files changed, 45 insertions(+), 34 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index aa8a78d4..7f80fb80 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -14,6 +14,7 @@ type JSONRPCDocGenerator struct { JSPkgImportPath string Interfaces []*config.Interface IfaceErrors map[string]map[string][]config.Error + Output string } func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { @@ -97,9 +98,15 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { } if len(errors) > 0 { + errorsDub := map[int64]struct{}{} + g.w.W("**Throws**:\n\n") for _, e := range errors { - g.w.W("%sException\n\n", jsErrorName(iface, e)) + if _, ok := errorsDub[e.Code]; ok { + continue + } + errorsDub[e.Code] = struct{}{} + g.w.W("%s\n\n", jsErrorName(iface, e)) } g.w.W("\n\n") } @@ -135,7 +142,6 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { for _, named := range visitedTypes { st := named.Type.(*option.StructType) - g.w.W("### %s\n\n", named.Name) g.w.W("| Field | Type | Description |\n|------|------|------|\n") for _, f := range st.Fields { @@ -152,7 +158,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { } func (g *JSONRPCDocGenerator) OutputDir() string { - return "" + return g.Output } func (g *JSONRPCDocGenerator) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index 867380b3..5e81aa07 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -41,10 +41,10 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { if IsContext(p) { continue } - if t, ok := p.Type.(*option.NamedType); ok { - key := t.ID() - if _, ok := defTypes[key]; !ok { - defTypes[key] = t + nameds := extractNamed(p.Type) + for _, named := range nameds { + if _, ok := defTypes[named.ID()]; !ok { + defTypes[named.ID()] = named } } if p.IsVariadic { @@ -61,10 +61,10 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { if IsError(p) { continue } - if t, ok := p.Type.(*option.NamedType); ok { - key := t.ID() - if _, ok := defTypes[key]; !ok { - defTypes[key] = t + nameds := extractNamed(p.Type) + for _, named := range nameds { + if _, ok := defTypes[named.ID()]; !ok { + defTypes[named.ID()] = named } } if m.Sig.IsNamed { @@ -86,7 +86,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { for _, e := range methodErrors { if _, ok := errorsDub[e.Code]; !ok { errorsDub[e.Code] = struct{}{} - mw.W("* @throws {%s}\n", e.Name) + mw.W("* @throws {%s}\n", jsErrorName(iface, e)) } } @@ -162,7 +162,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { errorsDub[e.Code] = struct{}{} g.w.W( "export class %[1]s extends JSONRPCError {\nconstructor(message, data) {\nsuper(message, \"%[1]s\", %[2]d, data);\n}\n}\n", - e.Name, e.Code, + jsErrorName(iface, e), e.Code, ) } } @@ -187,7 +187,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { errorsDub[e.Code] = struct{}{} g.w.W("case %d:\n", e.Code) - g.w.W("return new %s(e.message, e.data);\n", e.Name) + g.w.W("return new %s(e.message, e.data);\n", jsErrorName(iface, e)) } g.w.W("}\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 20127ebc..5a5e51da 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -496,24 +496,8 @@ func jsTypeDef(i interface{}) string { func jsTypeDefRecursive(i interface{}, nested int, visited map[string]struct{}) string { switch t := i.(type) { case *option.NamedType: - if st, ok := t.Type.(*option.SliceType); ok { - return jsTypeDefRecursive(st.Value, nested, visited) - - //result += "/**\n" - //result += "* @typedef " - // - //result += "**/\n" - //return result - // - // out := jsTypeDefRecursive(st.Value, nested, visited) - // out += "\n\n/**\n" - // out += "* @typedef " - // out += "{Array<>} " + t.Name.Value + "\n" - // out += "**/\n" - // return out - //result += jsDocType(st) + " " + t.Name.Value + "\n" } else { result := "/**\n" result += "* @typedef " @@ -541,9 +525,6 @@ func jsTypeDefRecursive(i interface{}, nested int, visited map[string]struct{}) result += "**/\n" return result } - - //case *option.SliceType: - // return jsDocType(t) case *option.StructType: out := "" for _, f := range t.Fields { @@ -649,7 +630,7 @@ func docMethodName(iface *config.Interface, method *option.FuncType) string { } func jsErrorName(iface *config.Interface, e config.Error) (errorName string) { - return UcNameWithAppPrefix(iface) + singular(e.Name) + return UcNameWithAppPrefix(iface) + singular(e.Name) + "Exception" } func singular(word string) string { @@ -843,3 +824,23 @@ func makeOpenapiSchemaJRPCError(code int64) *openapi.Schema { }, } } + +func extractNamed(i interface{}) (result []*option.NamedType) { + switch t := i.(type) { + case *option.NamedType: + switch nt := t.Type.(type) { + case *option.StructType: + for _, field := range nt.Fields { + result = append(result, extractNamed(field.Var.Type)...) + } + } + result = append(result, t) + case *option.MapType: + result = append(result, extractNamed(t.Value)...) + case *option.ArrayType: + result = append(result, extractNamed(t.Value)...) + case *option.SliceType: + result = append(result, extractNamed(t.Value)...) + } + return +} diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 31168691..fd7a8560 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -190,6 +190,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { JSPkgImportPath: p.config.JSPkgImportPath, Interfaces: p.config.Interfaces, IfaceErrors: p.config.IfaceErrors, + Output: p.config.JSONRPCDocOutput.Take(), }) } diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index e672b874..6bdac462 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -163,6 +163,9 @@ func findIfaceErrorsRecursive(pkgs *packages.Packages, funcDecl map[string]*type selFun := extractSelector(call.Fun) if selFun != nil { sel := extractSelector(selFun.X) + if sel == nil { + sel = selFun + } if obj := pkgs.ObjectOf(sel.Sel); obj != nil { if named, ok := obj.Type().(*types.Named); ok { if _, ok := named.Obj().Type().Underlying().(*types.Interface); ok { From e59cef71874dd438848c782c6b25db71e2217279 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 11 Oct 2021 16:47:34 +0300 Subject: [PATCH 227/293] refactor: fixed openapi invalid field name from json tag --- v2/internal/interface/typevisitor/openapi_def_visitor.go | 2 +- v3/internal/plugin/gokit/generator/jsonrpc_doc.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v2/internal/interface/typevisitor/openapi_def_visitor.go b/v2/internal/interface/typevisitor/openapi_def_visitor.go index c510e11c..dafd2cff 100644 --- a/v2/internal/interface/typevisitor/openapi_def_visitor.go +++ b/v2/internal/interface/typevisitor/openapi_def_visitor.go @@ -95,7 +95,7 @@ func (v *openapiDefVisitor) VisitStruct(t *stdtypes.Struct, nested int) { name := f.Name() if tags, err := structtag.Parse(t.Tag(i)); err == nil { if tag, err := tags.Get("json"); err == nil { - name = tag.Value() + name = tag.Name } } if name == "-" { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index 7f80fb80..2bb137da 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -146,7 +146,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("| Field | Type | Description |\n|------|------|------|\n") for _, f := range st.Fields { if tag, err := f.Tags.Get("json"); err == nil { - if tag.Value() == "-" { + if tag.Name == "-" { continue } } diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 82283a4f..a6bd4488 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -262,7 +262,7 @@ func (g *Openapi) schemaByTypeRecursive(schema *openapi.Schema, t interface{}) { for _, field := range t.Fields { name := field.Var.Name.Value if tag, err := field.Tags.Get("json"); err == nil { - name = tag.Value() + name = tag.Name } if name == "-" { continue From 9c45a21e7e6d782c7c50042075f7222bdd81ce04 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 11 Oct 2021 16:58:11 +0300 Subject: [PATCH 228/293] refactor: fixed generate js client doc --- .../plugin/gokit/generator/jsonrpc_doc.go | 35 +++++++++++++---- v3/internal/plugin/gokit/generator/utils.go | 38 +++++++++---------- 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index 2bb137da..f559229f 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -31,7 +31,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("## API\n## Methods\n\n") } - visitedTypes := map[string]*option.NamedType{} + defTypes := map[string]*option.NamedType{} responseTypes := map[string]option.VarsType{} for _, iface := range g.Interfaces { @@ -54,7 +54,13 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { if IsContext(p) { continue } - fillType(p.Type, visitedTypes) + nameds := extractNamed(p.Type) + for _, named := range nameds { + if _, ok := defTypes[named.ID()]; ok { + continue + } + defTypes[named.ID()] = named + } if p.IsVariadic { g.w.W(", ...%s", p.Name.Value) } else { @@ -72,7 +78,13 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("void") } else if resultRen > 0 { if resultRen == 1 { - fillType(m.Sig.Results[0].Type, visitedTypes) + nameds := extractNamed(m.Sig.Results[0].Type) + for _, named := range nameds { + if _, ok := defTypes[named.ID()]; ok { + continue + } + defTypes[named.ID()] = named + } g.w.W("%s", jsDocType(m.Sig.Results[0].Type)) } else if resultRen > 1 { responseName := m.Name.Value + "Response" @@ -85,7 +97,13 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { if IsError(p) { continue } - fillType(p.Type, visitedTypes) + nameds := extractNamed(p.Type) + for _, named := range nameds { + if _, ok := defTypes[named.ID()]; ok { + continue + } + defTypes[named.ID()] = named + } } } } @@ -123,7 +141,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("\n") - if len(visitedTypes) > 0 || len(responseTypes) > 0 { + if len(defTypes) > 0 || len(responseTypes) > 0 { g.w.W("## Members\n\n") } @@ -140,8 +158,11 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("\n") - for _, named := range visitedTypes { - st := named.Type.(*option.StructType) + for _, named := range defTypes { + st, ok := named.Type.(*option.StructType) + if !ok { + continue + } g.w.W("### %s\n\n", named.Name) g.w.W("| Field | Type | Description |\n|------|------|------|\n") for _, f := range st.Fields { diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 5a5e51da..e69f7240 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -653,25 +653,25 @@ func isGolangNamedType(t *option.NamedType) bool { return false } -func fillType(i interface{}, visited map[string]*option.NamedType) { - switch t := i.(type) { - case *option.NamedType: - if _, ok := t.Type.(*option.StructType); ok { - key := t.Pkg.Path + t.Name.Value - _, ok := visited[key] - if !ok { - visited[key] = t - fillType(t.Type, visited) - } - } - case *option.SliceType: - fillType(t.Value, visited) - case *option.ArrayType: - fillType(t.Value, visited) - case *option.MapType: - fillType(t.Value, visited) - } -} +//func fillType(i interface{}, visited map[string]*option.NamedType) { +// switch t := i.(type) { +// case *option.NamedType: +// if _, ok := t.Type.(*option.StructType); ok { +// key := t.Pkg.Path + t.Name.Value +// _, ok := visited[key] +// if !ok { +// visited[key] = t +// fillType(t.Type, visited) +// } +// } +// case *option.SliceType: +// fillType(t.Value, visited) +// case *option.ArrayType: +// fillType(t.Value, visited) +// case *option.MapType: +// fillType(t.Value, visited) +// } +//} func isFileUploadType(i interface{}, importer swipe.Importer) bool { if n, ok := i.(*option.NamedType); ok { From 432d888372a705b2ba2dd54ca03607d3c36fa949 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Tue, 12 Oct 2021 10:03:04 +0300 Subject: [PATCH 229/293] refactor: fixed loading method options --- v3/cmd/gen.go | 2 ++ v3/internal/plugin/gokit/plugin.go | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index 2775c96e..253a705a 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -57,6 +57,8 @@ var genCmd = &cobra.Command{ } cmd.Printf("Packages: %s\n", strings.Join(packages, ", ")) + packages = append(packages, filepath.Join(wd, "pkg", "swipe", "...")) + loader, errs := ast.NewLoader(wd, os.Environ(), packages) if len(errs) > 0 { for _, err := range errs { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index fd7a8560..0ad703bd 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -48,6 +48,14 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, funcDeclIfaceTypes, funcErrors, cfg.Packages, p.config.Interfaces) p.config.MethodOptionsMap = map[string]config.MethodDefaultOption{} + for _, methodOption := range p.config.MethodOptions { + if sig, ok := methodOption.Signature.Type.(*option.SignType); ok { + if recvNamed, ok := sig.Recv.(*option.NamedType); ok { + p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption.MethodDefaultOption + } + } + } + for _, iface := range p.config.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { @@ -228,7 +236,6 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } func (p *Plugin) checkExternalPackage() (errs []error, hasExternal bool) { - for _, iface := range p.config.Interfaces { if iface.Named.Pkg.Module == nil { errs = append(errs, errors.New("not add package for "+iface.Named.Pkg.Path+"."+iface.Named.Name.Value)) From d0b3c135e29cd95fbc1ed3944214e6670f42263c Mon Sep 17 00:00:00 2001 From: vitaly Date: Thu, 14 Oct 2021 12:42:47 +0300 Subject: [PATCH 230/293] refactor: fixed generate openapi for named slice, map, array --- v3/internal/plugin/gokit/generator/openapi.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index a6bd4488..9cdc0574 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -218,8 +218,15 @@ func (g *Openapi) fillTypeDefRecursive(t interface{}) { if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { g.defTypes[t.Pkg.Path+t.Name.Value] = t } - if st, ok := t.Type.(*option.StructType); ok { - for _, field := range st.Fields { + switch tt := t.Type.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(tt.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(tt.Value) + case *option.MapType: + g.fillTypeDefRecursive(tt.Value) + case *option.StructType: + for _, field := range tt.Fields { g.fillTypeDefRecursive(field.Var.Type) } } From 0510590e1b280e678f2e88ebff20e253f682eaf6 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Thu, 14 Oct 2021 16:01:23 +0300 Subject: [PATCH 231/293] refactor: fixed get value string from const --- v3/internal/plugin/config/utils.go | 39 ++++++++++++----------- v3/internal/plugin/gokit/config/config.go | 4 +-- v3/internal/plugin/gokit/plugin.go | 2 +- v3/option/values.go | 22 +++++++++++++ 4 files changed, 45 insertions(+), 22 deletions(-) diff --git a/v3/internal/plugin/config/utils.go b/v3/internal/plugin/config/utils.go index f7a1e2ef..4927ac0e 100644 --- a/v3/internal/plugin/config/utils.go +++ b/v3/internal/plugin/config/utils.go @@ -40,30 +40,31 @@ func getFieldOpts(f *option.VarType, tags *structtag.Tags) (result fldOpts) { result.fieldPath = f.Name.Value result.t = f.Type - if tag, err := tags.Get("env"); err == nil { - for _, o := range tag.Options { - switch o { - case "use_zero": - result.useZero = true - case "required": - result.required = true - case "use_flag": - result.name = strcase.ToKebab(f.Name.Upper()) - result.isFlag = true - default: - if stdstrings.HasPrefix(o, "desc:") { - descParts := stdstrings.Split(o, "desc:") - if len(descParts) == 2 { - result.desc = descParts[1] + if tags != nil { + if tag, err := tags.Get("env"); err == nil { + for _, o := range tag.Options { + switch o { + case "use_zero": + result.useZero = true + case "required": + result.required = true + case "use_flag": + result.name = strcase.ToKebab(f.Name.Upper()) + result.isFlag = true + default: + if stdstrings.HasPrefix(o, "desc:") { + descParts := stdstrings.Split(o, "desc:") + if len(descParts) == 2 { + result.desc = descParts[1] + } } } } - } - if tag.Name != "" { - result.name = tag.Name + if tag.Name != "" { + result.name = tag.Name + } } } - return } diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 4bfff548..b48c5157 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -66,9 +66,9 @@ type MethodDefaultOption struct { Logging option.BoolValue `swipe:"option"` LoggingParams LoggingParams `swipe:"option"` LoggingContext []LoggingContext `swipe:"option"` - RESTMethod option.StringValue `swipe:"option"` + RESTMethod option.ExprStringValue `swipe:"option"` RESTWrapResponse option.StringValue `swipe:"option"` - RESTPath option.StringValue `swipe:"option"` + RESTPath option.ExprStringValue `swipe:"option"` RESTMultipartMaxMemory option.Int64Value `swipe:"option"` RESTHeaderVars option.SliceStringValue `swipe:"option"` RESTQueryVars option.SliceStringValue `swipe:"option"` diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 0ad703bd..a8cdb69c 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -70,7 +70,7 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } if p.config.JSONRPCEnable == nil && dstMethodOption.RESTPath.Value != nil { - pathVars, err := pathVars(*dstMethodOption.RESTPath.Value) + pathVars, err := pathVars(dstMethodOption.RESTPath.Take()) if err != nil { errs = append(errs, err) continue diff --git a/v3/option/values.go b/v3/option/values.go index 60d6373a..eb18fd47 100644 --- a/v3/option/values.go +++ b/v3/option/values.go @@ -1,9 +1,31 @@ package option +import "go/types" + type SliceStringValue struct { Value []string } +type ExprStringValue struct { + Value interface{} +} + +func (v ExprStringValue) IsValid() bool { + return v.Value != nil +} + +func (v ExprStringValue) Take() string { + if v.Value == nil { + return "" + } + if named, ok := v.Value.(*NamedType); ok { + if c, ok := named.Obj.(*types.Const); ok { + return c.Val().String() + } + } + return "" +} + type StringValue struct { Value *string } From 28d5a80e680e58181ecef0009031e97086c5c721 Mon Sep 17 00:00:00 2001 From: Vitaly Lobchuk Date: Fri, 15 Oct 2021 12:33:57 +0300 Subject: [PATCH 232/293] refactor: fixed const values --- v3/option/values.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/v3/option/values.go b/v3/option/values.go index eb18fd47..c440d432 100644 --- a/v3/option/values.go +++ b/v3/option/values.go @@ -1,6 +1,9 @@ package option -import "go/types" +import ( + "go/types" + "strconv" +) type SliceStringValue struct { Value []string @@ -18,9 +21,13 @@ func (v ExprStringValue) Take() string { if v.Value == nil { return "" } - if named, ok := v.Value.(*NamedType); ok { - if c, ok := named.Obj.(*types.Const); ok { - return c.Val().String() + switch t := v.Value.(type) { + case string: + return t + case *NamedType: + if c, ok := t.Obj.(*types.Const); ok { + s, _ := strconv.Unquote(c.Val().String()) + return s } } return "" From 6f179a3b119481de1ff3085e033eeea33a6c59e2 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 22 Oct 2021 16:46:26 +0300 Subject: [PATCH 233/293] refactor: fixed generate jsonrpc client method name --- v3/internal/plugin/gokit/generator/jsonrpc_client.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 94ac71b1..9abcc5df 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -122,7 +122,11 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { } g.w.W("}),\n") g.w.W(")\n") + methodName := m.Name.Lower() + if iface.Namespace != "" { + methodName = iface.Namespace + "." + methodName + } g.w.W("c.%sEndpoint = %s.NewClient(\n", LcNameIfaceMethod(iface, m), jsonrpcPkg) g.w.W("u,\n") From 37ad175972374848937c7f3843c86a89d48d4313 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 22 Oct 2021 17:54:25 +0300 Subject: [PATCH 234/293] refactor: change middleware generate --- v3/internal/plugin/gokit/generator/interface.go | 6 ++++++ v3/internal/plugin/gokit/generator/logging.go | 12 +++++++----- v3/internal/plugin/gokit/generator/utils.go | 6 +++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go index ac930ac2..a6bf49e3 100644 --- a/v3/internal/plugin/gokit/generator/interface.go +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -22,6 +22,8 @@ func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) ifaceTypeName := NameInterface(iface) + middlewareChainName := UcNameWithAppPrefix(iface) + "MiddlewareChain" + middlewareTypeName := IfaceMiddlewareTypeName(iface) g.w.W("type %s interface {\n", ifaceTypeName) for _, m := range ifaceType.Methods { @@ -30,6 +32,10 @@ func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { g.w.W("\n") } g.w.W("}\n") + + g.w.W("type %[1]s func(%[2]s) %[2]s\n", middlewareTypeName, ifaceTypeName) + + g.w.W("func %[1]s(outer %[2]s, others ...%[2]s) %[2]s {return func(next %[3]s) %[3]s {\n\t\tfor i := len(others) - 1; i >= 0; i-- {\nnext = others[i](next)\n}\nreturn outer(next)\n}\n}\n", middlewareChainName, middlewareTypeName, ifaceTypeName) } return g.w.Bytes() } diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 0e865bee..53e2eeab 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -28,11 +28,12 @@ func (g *Logging) Generate(ctx context.Context) []byte { levelPkg := importer.Import("level", "github.com/go-kit/kit/log/level") ifaceTypeName := NameInterface(iface) - name := NameLoggingMiddleware(iface) - constructName := fmt.Sprintf("NewLogging%sMiddleware", UcNameWithAppPrefix(iface)) + middlewareNameType := NameLoggingMiddleware(iface) + middlewareFuncName := fmt.Sprintf("Logging%sMiddleware", UcNameWithAppPrefix(iface)) + middlewareTypeName := IfaceMiddlewareTypeName(iface) g.w.WriteTypeStruct( - name, + middlewareNameType, []string{ "next", ifaceTypeName, "logger", loggerPkg + ".Logger", @@ -80,7 +81,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { results = append(results, result.Name.Value, swipe.TypeString(result, false, importer)) } - g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) + g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Logging.Take() && len(logParams) > 0 { methodName := iface.Named.Name.Lower() + "." + m.Name.Value @@ -132,7 +133,8 @@ func (g *Logging) Generate(ctx context.Context) []byte { g.w.W("}\n") } - g.w.W("func %[1]s(s %[2]s, logger %[4]s.Logger) *%[3]s {\n return &%[3]s{next: s, logger: logger}\n}\n", constructName, ifaceTypeName, name, loggerPkg) + + g.w.W("func %[1]s(logger %[4]s.Logger) %[5]s {\nreturn func(next %[2]s) %[2]s {\nreturn &%[3]s{\nnext: next,\nlogger: logger,\n}\n}\n}\n", middlewareFuncName, ifaceTypeName, middlewareNameType, loggerPkg, middlewareTypeName) } return g.w.Bytes() } diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index e69f7240..68d776da 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -174,7 +174,7 @@ func NameInterface(iface *config.Interface) string { } func NameLoggingMiddleware(iface *config.Interface) string { - return UcNameWithAppPrefix(iface) + "LoggingMiddleware" + return LcNameWithAppPrefix(iface) + "LoggingMiddleware" } func NameInstrumentingMiddleware(iface *config.Interface) string { @@ -205,6 +205,10 @@ func ClientType(iface *config.Interface) string { return UcNameWithAppPrefix(iface) + "Client" } +func IfaceMiddlewareTypeName(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "Middleware" +} + func IsContext(v *option.VarType) bool { if named, ok := v.Type.(*option.NamedType); ok { if _, ok := named.Type.(*option.IfaceType); ok { From 36fde3b518754d5c94db508a7ac531561a2d2e16 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 25 Oct 2021 12:32:28 +0300 Subject: [PATCH 235/293] refactor: change middleware instrumenting generate --- .../plugin/gokit/generator/instrumenting.go | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index 50818235..978d09c5 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -45,19 +45,19 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - ifaceName := NameInterface(iface) - name := NameInstrumentingMiddleware(iface) + ifaceTypeName := NameInterface(iface) + middlewareFuncName := fmt.Sprintf("Instrumenting%sMiddleware", UcNameWithAppPrefix(iface)) + middlewareTypeName := IfaceMiddlewareTypeName(iface) + middlewareNameType := NameInstrumentingMiddleware(iface) - constructName := fmt.Sprintf("NewInstrumenting%sMiddleware", UcNameWithAppPrefix(iface)) - - g.w.W("type %s struct {\n", name) - g.w.W("next %s\n", ifaceName) + g.w.W("type %s struct {\n", middlewareNameType) + g.w.W("next %s\n", ifaceTypeName) g.w.W("opts *instrumentingOpts\n") g.w.W("}\n\n") for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - g.w.W("func (s *%s) %s %s {\n", name, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) + g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Instrumenting.Take() { methodName := iface.Named.Name.Lower() + "." + m.Name.Value g.w.WriteDefer( @@ -105,8 +105,9 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("}\n") } - g.w.W("func %[1]s(s %[2]s, opts ...InstrumentingOption) *%[3]s {\n", constructName, ifaceName, name) - g.w.W("i := &%s{next: s, opts: &instrumentingOpts{}}\n", name) + g.w.W("func %[1]s(opts ...InstrumentingOption) %[3]s {\nreturn func(next %[2]s) %[2]s {\n", middlewareFuncName, ifaceTypeName, middlewareTypeName) + + g.w.W("i := &%s{next: next, opts: &instrumentingOpts{}}\n", middlewareNameType) g.w.W("for _, o := range opts {\no(i.opts)\n}\n") @@ -128,7 +129,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("}, []string{\"method\"})\n") g.w.W("\n}\n") - g.w.W("return i\n}\n") + g.w.W("return i\n}\n}\n") } } From 2a66d7b90c83f228c6743fe766929ba9a81348b2 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 25 Oct 2021 13:00:25 +0300 Subject: [PATCH 236/293] refactor: fixed client construct generate --- v3/internal/plugin/gokit/generator/jsonrpc_client.go | 7 ++++++- v3/internal/plugin/gokit/generator/rest_client.go | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 9abcc5df..bcbb9e50 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -35,7 +35,12 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { clientType := ClientType(iface) - g.w.W("func NewClientJSONRPC%s(tgt string", UcNameWithAppPrefix(iface)) + constructPostfix := UcNameWithAppPrefix(iface) + if len(g.Interfaces) == 1 { + constructPostfix = "" + } + + g.w.W("func NewClientJSONRPC%s(tgt string", constructPostfix) g.w.W(" ,options ...ClientOption") g.w.W(") (*%s, error) {\n", clientType) g.w.W("opts := &clientOpts{}\n") diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 329b166a..1eb83ce3 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -42,9 +42,13 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - name := UcNameWithAppPrefix(iface) clientType := ClientType(iface) + constructPostfix := UcNameWithAppPrefix(iface) + if len(g.Interfaces) == 1 { + constructPostfix = "" + } + if g.UseFast { kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") } else { @@ -56,7 +60,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { httpPkg = importer.Import("http", "net/http") } - g.w.W("func NewClientREST%s(tgt string", name) + g.w.W("func NewClientREST%s(tgt string", constructPostfix) g.w.W(" ,options ...ClientOption") g.w.W(") (*%s, error) {\n", clientType) g.w.W("opts := &clientOpts{}\n") From 480aaca9600c517324336a065e3ec29aad5a9032 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 25 Oct 2021 17:26:29 +0300 Subject: [PATCH 237/293] refactor: fixed client generate response data --- v3/internal/plugin/gokit/generator/endpoint.go | 2 +- v3/internal/plugin/gokit/generator/jsonrpc_client.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index f24744a6..8544c07d 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -47,7 +47,7 @@ func (g *Endpoint) writeReqResp(importer swipe.Importer) { g.w.W("}\n") } if DownloadFile(m.Sig.Results) == nil { - if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 0 { + if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 1 { g.w.W("type %s struct {\n", NameResponse(m, iface)) for _, param := range m.Sig.Results { if IsError(param) { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index bcbb9e50..18a95880 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -111,7 +111,7 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { if resultsLen > 0 { var responseType string responseName := NameResponse(m, iface) - if m.Sig.IsNamed { + if m.Sig.IsNamed && resultsLen > 1 { responseType = responseName } else { responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) From e6eb88d4baaf6043809e0e5a9caa292aad9c22d0 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 26 Oct 2021 15:33:31 +0300 Subject: [PATCH 238/293] refactor: fixed client rest generate response data --- v3/internal/plugin/gokit/generator/rest_client.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 1eb83ce3..f3303538 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -349,11 +349,10 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil, %sErrorDecode(%s)\n", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) g.w.W("}\n") - resultLen := LenWithoutErrors(m.Sig.Results) - - if resultLen > 0 { + resultsLen := LenWithoutErrors(m.Sig.Results) + if resultsLen > 0 { var responseType string - if m.Sig.IsNamed { + if m.Sig.IsNamed && resultsLen > 1 { responseType = NameResponse(m, iface) } else { responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) From 161e45232351a918c3213a77105ebc9bbad1824c Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 27 Oct 2021 14:33:09 +0300 Subject: [PATCH 239/293] refactor: fixed options generator --- v3/cmd/options.go | 109 +++++++++++------- v3/frame/golang_frame.go | 2 +- v3/internal/plugin/es/plugin.go | 6 +- v3/internal/plugin/gokit/config/config.go | 32 ++--- v3/internal/plugin/gokit/config/config_gen.go | 5 +- .../plugin/gokit/generator/instrumenting.go | 2 +- .../plugin/gokit/generator/jsonrpc_server.go | 2 +- v3/internal/plugin/gokit/generator/logging.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 6 +- .../plugin/gokit/generator/rest_client.go | 2 +- .../plugin/gokit/generator/rest_server.go | 2 +- v3/internal/plugin/gokit/plugin.go | 5 +- v3/internal/plugin/gokit/utils.go | 2 +- 13 files changed, 99 insertions(+), 78 deletions(-) diff --git a/v3/cmd/options.go b/v3/cmd/options.go index 6f9108d1..17dc6bd1 100644 --- a/v3/cmd/options.go +++ b/v3/cmd/options.go @@ -63,12 +63,21 @@ var optionsCmd = &cobra.Command{ } } - wd, _ = filepath.Abs(filepath.Join(wd, args[0])) + basePath, err := filepath.Abs(filepath.Join(wd, args[0])) + if err != nil { + cmd.PrintErrf("failed to get base directory: %s", err) + os.Exit(1) + } cmd.Printf("Workdir: %s\n", wd) - fset := token.NewFileSet() - d, err := parser.ParseDir(fset, wd, nil, parser.ParseComments) + vd, err := parser.ParseDir(token.NewFileSet(), filepath.Join(wd, "option"), nil, parser.ParseComments) + if err != nil { + cmd.PrintErrln(err) + os.Exit(1) + } + + d, err := parser.ParseDir(token.NewFileSet(), basePath, nil, parser.ParseComments) if err != nil { cmd.PrintErrln(err) os.Exit(1) @@ -84,7 +93,7 @@ var optionsCmd = &cobra.Command{ if a, err := annotations.Get("swipe"); err == nil { baseTypeName := a.Value() + "Option" - opts := getOpts(baseTypeName, s) + opts := getOpts(baseTypeName, s, &valueTypeFinder{pkg: vd["option"]}) buf.WriteString(fmt.Sprintf("// %s\n", a.Value())) buf.WriteString(fmt.Sprintf("func %s(", a.Value())) @@ -137,7 +146,7 @@ var optionsCmd = &cobra.Command{ os.Exit(1) } - f, err := os.Create(filepath.Join(wd, file.Name+"_gen.go")) + f, err := os.Create(filepath.Join(basePath, file.Name+"_gen.go")) if err != nil { cmd.PrintErrf("failed generate: %s", err) os.Exit(1) @@ -187,16 +196,27 @@ func getExprType(e goast.Expr) string { } } -func getOpt(optionName string, f *goast.Field, e goast.Expr, isRepeat bool) (result []optionFunc) { +func getOpt(optionName string, f *goast.Field, e goast.Expr, vf *valueTypeFinder, isRepeat bool) (result []optionFunc) { name, ok := getOptName(f) if !ok { return nil } switch t := e.(type) { + case *goast.SelectorExpr: + for _, file := range vf.pkg.Files { + if obj, ok := file.Scope.Objects[t.Sel.Name]; ok { + of := optionFunc{ + typeName: optionName, + name: name, + } + result = append(result, buildFuncOpts(obj, &of, vf)...) + result = append(result, of) + } + } case *goast.ArrayType: - return getOpt(optionName, f, t.Elt, true) + return getOpt(optionName, f, t.Elt, vf, true) case *goast.StarExpr: - return getOpt(optionName, f, t.X, isRepeat) + return getOpt(optionName, f, t.X, vf, isRepeat) case *goast.StructType: for _, ident := range f.Names { result = append(result, optionFunc{ @@ -211,43 +231,44 @@ func getOpt(optionName string, f *goast.Field, e goast.Expr, isRepeat bool) (res isRepeat: isRepeat, } - var buildFuncOpts func(obj *goast.Object) - buildFuncOpts = func(obj *goast.Object) { - if ts, ok := obj.Decl.(*goast.TypeSpec); ok { - if s, ok := ts.Type.(*goast.StructType); ok { - var hasOpts bool - if s.Fields != nil { - for _, f := range s.Fields.List { - if len(f.Names) == 0 { - if ident, ok := f.Type.(*goast.Ident); ok { - buildFuncOpts(ident.Obj) - continue - } - } - name, ok := getOptName(f) - if !ok { - continue - } - if isFiledOpt(f) { - hasOpts = true - expr := astutil.Unparen(f.Type) - if e, ok := expr.(*goast.StarExpr); ok { - expr = e.X - } - result = append(result, getOpt(ts.Name.Name, f, expr, false)...) - continue - } - of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) + result = append(result, buildFuncOpts(t.Obj, &of, vf)...) + result = append(result, of) + } + return +} + +func buildFuncOpts(obj *goast.Object, of *optionFunc, vf *valueTypeFinder) (result []optionFunc) { + if ts, ok := obj.Decl.(*goast.TypeSpec); ok { + if s, ok := ts.Type.(*goast.StructType); ok { + var hasOpts bool + if s.Fields != nil { + for _, f := range s.Fields.List { + if len(f.Names) == 0 { + if ident, ok := f.Type.(*goast.Ident); ok { + result = append(result, buildFuncOpts(ident.Obj, of, vf)...) + continue } } - if hasOpts { - of.optsType = ts.Name.Name + name, ok := getOptName(f) + if !ok { + continue } + if isFiledOpt(f) { + hasOpts = true + expr := astutil.Unparen(f.Type) + if e, ok := expr.(*goast.StarExpr); ok { + expr = e.X + } + result = append(result, getOpt(ts.Name.Name, f, expr, vf, false)...) + continue + } + of.params = append(of.params, strcase.ToLowerCamel(name)+" "+getFieldType(f)) } } + if hasOpts { + of.optsType = ts.Name.Name + } } - buildFuncOpts(t.Obj) - result = append(result, of) } return } @@ -260,20 +281,18 @@ type optionFunc struct { optsType string } -func getOpts(optionName string, s *goast.StructType) []optionFunc { +func getOpts(optionName string, s *goast.StructType, vf *valueTypeFinder) (result []optionFunc) { if s.Fields == nil { return nil } - var result []optionFunc for _, f := range s.Fields.List { expr := astutil.Unparen(f.Type) if e, ok := expr.(*goast.StarExpr); ok { expr = e.X } - if opts := getOpt(optionName, f, expr, false); len(opts) > 0 { + if opts := getOpt(optionName, f, expr, vf, false); len(opts) > 0 { result = append(result, opts...) } - } return result } @@ -307,3 +326,7 @@ func getOptName(f *goast.Field) (name string, ok bool) { } return } + +type valueTypeFinder struct { + pkg *goast.Package +} diff --git a/v3/frame/golang_frame.go b/v3/frame/golang_frame.go index c3a4cdf7..dbb5f61f 100644 --- a/v3/frame/golang_frame.go +++ b/v3/frame/golang_frame.go @@ -17,7 +17,7 @@ type GolangFrame struct { func (f *GolangFrame) Frame(data []byte) ([]byte, error) { var buf bytes.Buffer - buf.WriteString("//+build !swipe\n\n") + //buf.WriteString("//+build !swipe\n\n") buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") buf.WriteString("package ") buf.WriteString(f.pkgName) diff --git a/v3/internal/plugin/es/plugin.go b/v3/internal/plugin/es/plugin.go index 5ad626b2..24ad3953 100644 --- a/v3/internal/plugin/es/plugin.go +++ b/v3/internal/plugin/es/plugin.go @@ -9,9 +9,9 @@ import ( "github.com/swipe-io/swipe/v3/swipe" ) -func init() { - swipe.RegisterPlugin(&Plugin{}) -} +//func init() { +//swipe.RegisterPlugin(&Plugin{}) +//} type Plugin struct { config config.Config diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index b48c5157..972aca19 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -30,10 +30,10 @@ type ExternalInterface struct { } type Interface struct { - Named *option.NamedType `mapstructure:"iface"` - Namespace string `mapstructure:"ns"` - ClientName option.StringValue - Gateway *struct{} `swipe:"option"` + Named *option.NamedType `mapstructure:"iface"` + Namespace string `mapstructure:"ns"` + ClientName option.StringValue `swipe:"option"` + Gateway *struct{} `swipe:"option"` } type OpenapiTag struct { @@ -61,7 +61,7 @@ type Aggregate struct { Results option.SliceStringValue `swipe:"option"` } -type MethodDefaultOption struct { +type MethodOptions struct { Instrumenting option.BoolValue `swipe:"option"` Logging option.BoolValue `swipe:"option"` LoggingParams LoggingParams `swipe:"option"` @@ -83,8 +83,8 @@ type MethodDefaultOption struct { } type MethodOption struct { - Signature *option.NamedType - MethodDefaultOption `mapstructure:",squash"` + Signature *option.NamedType + MethodOptions `mapstructure:",squash"` } type OpenapiInfo struct { @@ -143,16 +143,16 @@ type Config struct { OpenapiLicence OpenapiLicence OpenapiServers []OpenapiServer `mapstructure:"OpenapiServer"` MethodOptions []MethodOption - MethodDefaultOptions MethodDefaultOption + MethodDefaultOptions MethodOptions DefaultErrorEncoder FuncTypeValue // non options params - LoggingEnable bool `mapstructure:"-"` - InstrumentingEnable bool `mapstructure:"-"` - MethodOptionsMap map[string]MethodDefaultOption `mapstructure:"-"` - OpenapiMethodTags map[string][]string `mapstructure:"-"` - IfaceErrors map[string]map[string][]Error `mapstructure:"-"` - JSPkgImportPath string `mapstructure:"-"` - AppName string `mapstructure:"-"` - HasExternal bool `mapstructure:"-"` + LoggingEnable bool `mapstructure:"-"` + InstrumentingEnable bool `mapstructure:"-"` + MethodOptionsMap map[string]MethodOptions `mapstructure:"-"` + OpenapiMethodTags map[string][]string `mapstructure:"-"` + IfaceErrors map[string]map[string][]Error `mapstructure:"-"` + JSPkgImportPath string `mapstructure:"-"` + AppName string `mapstructure:"-"` + HasExternal bool `mapstructure:"-"` } diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 38310e7c..fa69c5fe 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,2 @@ package config - -func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOption ...\ntype MethodDefaultOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodDefaultOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodDefaultOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodDefaultOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") -} +func (*Config) Options() []byte { return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n")} diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index 978d09c5..39b56e1c 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -14,7 +14,7 @@ import ( type Instrumenting struct { w writer.GoWriter Interfaces []*config.Interface - MethodOptions map[string]config.MethodDefaultOption + MethodOptions map[string]config.MethodOptions } func (g *Instrumenting) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index 97ff51e8..f7dda450 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -15,7 +15,7 @@ type JSONRPCServerGenerator struct { w writer.GoWriter UseFast bool Interfaces []*config.Interface - MethodOptions map[string]config.MethodDefaultOption + MethodOptions map[string]config.MethodOptions DefaultErrorEncoder *option.FuncType JSONRPCPath string } diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 53e2eeab..b86470d0 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -15,7 +15,7 @@ import ( type Logging struct { w writer.GoWriter Interfaces []*config.Interface - MethodOptions map[string]config.MethodDefaultOption + MethodOptions map[string]config.MethodOptions } func (g *Logging) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 9cdc0574..458709f3 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -28,7 +28,7 @@ type Openapi struct { Licence config.OpenapiLicence Output string Interfaces []*config.Interface - MethodOptions map[string]config.MethodDefaultOption + MethodOptions map[string]config.MethodOptions IfaceErrors map[string]map[string][]config.Error defTypes map[string]*option.NamedType } @@ -362,7 +362,7 @@ func (g *Openapi) schemaByType(t interface{}) (schema *openapi.Schema) { return } -func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config.MethodDefaultOption) *openapi.Operation { +func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config.MethodOptions) *openapi.Operation { responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, @@ -531,7 +531,7 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config } } -func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodDefaultOption) *openapi.Operation { +func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *openapi.Operation { responseSchema := &openapi.Schema{ Type: "object", Properties: map[string]*openapi.Schema{}, diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index f3303538..89e08af2 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -23,7 +23,7 @@ type RESTClientGenerator struct { w writer.GoWriter Interfaces []*config.Interface UseFast bool - MethodOptions map[string]config.MethodDefaultOption + MethodOptions map[string]config.MethodOptions } func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 490370bc..7b9ed70c 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -20,7 +20,7 @@ type RESTServerGenerator struct { JSONRPCEnable bool DefaultErrorEncoder *option.FuncType Interfaces []*config.Interface - MethodOptions map[string]config.MethodDefaultOption + MethodOptions map[string]config.MethodOptions } func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index a8cdb69c..b51f285c 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -46,12 +46,12 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map funcErrors := findErrors(cfg.Module.Path, funcDeclTypes, cfg.Packages) p.config.IfaceErrors = findIfaceErrors(funcDeclTypes, funcDeclIfaceTypes, funcErrors, cfg.Packages, p.config.Interfaces) - p.config.MethodOptionsMap = map[string]config.MethodDefaultOption{} + p.config.MethodOptionsMap = map[string]config.MethodOptions{} for _, methodOption := range p.config.MethodOptions { if sig, ok := methodOption.Signature.Type.(*option.SignType); ok { if recvNamed, ok := sig.Recv.(*option.NamedType); ok { - p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption.MethodDefaultOption + p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption.MethodOptions } } } @@ -108,6 +108,7 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map if len(checkErrs) > 0 { errs = append(errs, checkErrs...) } + p.config.HasExternal = hasExternal return errs } diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index 6bdac462..e41bd647 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -313,7 +313,7 @@ func makeFuncDeclTypes(pkgs *packages.Packages) (result map[string]*typeInfo) { return } -func fillMethodDefaultOptions(method, methodDefault config.MethodDefaultOption) config.MethodDefaultOption { +func fillMethodDefaultOptions(method, methodDefault config.MethodOptions) config.MethodOptions { if !method.RESTMethod.IsValid() { method.RESTMethod = methodDefault.RESTMethod } From ba0cd7f906e22ba2997de4ade0e7cee0ae417faf Mon Sep 17 00:00:00 2001 From: vitaly Date: Thu, 28 Oct 2021 13:06:03 +0300 Subject: [PATCH 240/293] refactor: fixed generate same interface for different namespace --- v3/cmd/gen.go | 24 +++++++++---------- .../plugin/gokit/generator/jsonrpc_server.go | 5 ++-- v3/internal/plugin/gokit/generator/utils.go | 8 +++++++ 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index 253a705a..01a3d34b 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -52,6 +52,18 @@ var genCmd = &cobra.Command{ cmd.Printf("Workdir: %s\n", wd) + // clear all before generated files. + _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { + if !strings.Contains(path, "/vendor/") { + if !info.IsDir() { + if strings.Contains(info.Name(), "swipe_gen_") { + _ = os.Remove(path) + } + } + } + return nil + }) + if data, err := ioutil.ReadFile(filepath.Join(wd, "pkgs")); err == nil { packages = append(packages, strings.Split(string(data), "\n")...) } @@ -72,18 +84,6 @@ var genCmd = &cobra.Command{ os.Exit(1) } - // clear all before generated files. - _ = filepath.Walk(loader.WorkDir(), func(path string, info os.FileInfo, err error) error { - if !strings.Contains(path, "/vendor/") { - if !info.IsDir() { - if strings.Contains(info.Name(), "swipe_gen_") { - _ = os.Remove(path) - } - } - } - return nil - }) - result, errs := swipe.Generate(cfg) success := true diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index f7dda450..68a6222a 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -129,6 +129,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { for i, iface := range g.Interfaces { typeStr := NameInterface(iface) + if i > 0 { g.w.W(",") } @@ -136,7 +137,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { external = true g.w.W("%s %sOption", LcNameWithAppPrefix(iface, true), UcNameWithAppPrefix(iface, true)) } else { - g.w.W("svc%s %s", iface.Named.Name.Upper(), typeStr) + g.w.W("%s %s", ServicePropName(iface), typeStr) } } @@ -224,7 +225,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n") } } else { - g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) + g.w.W("%s := Make%s(%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), ServicePropName(iface)) for _, m := range ifaceType.Methods { g.w.W( "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 68d776da..54089a6c 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -169,6 +169,14 @@ func LcNameJS(iface *config.Interface) string { return iface.Named.Name.Lower() } +func ServicePropName(iface *config.Interface) string { + name := iface.Named.Name.Upper() + if iface.ClientName.IsValid() { + name = strcase.ToCamel(iface.ClientName.Take()) + } + return "svc" + name +} + func NameInterface(iface *config.Interface) string { return UcNameWithAppPrefix(iface) + "Interface" } From aff4b528810afd26bf6e43a27ab9e9112090ac4d Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 1 Nov 2021 17:56:35 +0300 Subject: [PATCH 241/293] refactor: typo --- v3/go.mod | 5 -- v3/go.sum | 126 -------------------------------- v3/internal/plugin/es/plugin.go | 2 +- 3 files changed, 1 insertion(+), 132 deletions(-) diff --git a/v3/go.mod b/v3/go.mod index 3f84035e..0cb5009d 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -3,17 +3,12 @@ module github.com/swipe-io/swipe/v3 go 1.16 require ( - github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee github.com/fatih/structtag v1.2.0 github.com/gertd/go-pluralize v0.1.7 - github.com/imdario/mergo v0.3.12 - github.com/lib/pq v1.8.0 github.com/mitchellh/mapstructure v1.4.1 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/spf13/cobra v1.2.0 - github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.8.1 github.com/swipe-io/strcase v0.1.5 golang.org/x/tools v0.1.2 - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b ) diff --git a/v3/go.sum b/v3/go.sum index 3c2fb9a3..f4112a69 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -17,70 +17,44 @@ cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKP cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee h1:IfTwtLm+DUeY8kZ8NKSxGRr2kaCe8qqIpJz4Uwh1efU= -github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee/go.mod h1:RKS7P4TSY/jV2QjH/ZxoAE2l4EEXZRPwQ/tIzXiFrk0= -github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.4 h1:w/jqZtC9YD4DS/Vp9GhWfWcCpuAL58oTnLoI8vE9YHU= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -90,11 +64,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d h1:QyzYnTnPE15SQyUeqU6qLbWxMkwyAyu+vGksa0b7j00= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= @@ -102,22 +73,15 @@ github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gertd/go-pluralize v0.1.7 h1:RgvJTJ5W7olOoAks97BOwOlekBFsLEyh00W48Z6ZEZY= github.com/gertd/go-pluralize v0.1.7/go.mod h1:O4eNeeIf91MHh1GJ2I47DNtaesm66NYvjYgAahcqSDQ= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -126,7 +90,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -144,10 +107,8 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -159,14 +120,10 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -178,140 +135,87 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5 h1:zIaiqGYDQwa4HVx5wGRTXbx38Pqxjemn4BP98wpzpXo= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -329,7 +233,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -346,13 +249,9 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0 h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0 h1:ftQ0nOOHMcbMS3KIaDQ0g5Qcd6bhaBrQT6b89DfwLTs= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -360,13 +259,9 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -374,7 +269,6 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -385,10 +279,8 @@ golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -401,10 +293,8 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= @@ -451,7 +341,6 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -464,7 +353,6 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -476,7 +364,6 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -520,7 +407,6 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -532,7 +418,6 @@ golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -612,7 +497,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -620,7 +504,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -662,7 +545,6 @@ google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -683,7 +565,6 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -696,19 +577,16 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -720,11 +598,7 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/v3/internal/plugin/es/plugin.go b/v3/internal/plugin/es/plugin.go index 5ad626b2..612013b3 100644 --- a/v3/internal/plugin/es/plugin.go +++ b/v3/internal/plugin/es/plugin.go @@ -2,9 +2,9 @@ package es import ( "github.com/mitchellh/mapstructure" - "github.com/swipe-io/swipe/v3/internal/plugin/es/generator" "github.com/swipe-io/swipe/v3/internal/plugin/es/config" + "github.com/swipe-io/swipe/v3/internal/plugin/es/generator" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" ) From 48aa6f88db2dab76607ec9f02e9baeac4fcb730a Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 1 Nov 2021 17:57:56 +0300 Subject: [PATCH 242/293] refactor: implement curl generate --- v3/go.mod | 1 + v3/go.sum | 2 + v3/internal/plugin/gokit/config/config.go | 2 + v3/internal/plugin/gokit/config/config_gen.go | 5 +- v3/internal/plugin/gokit/generator/curl.go | 85 +++++++++++++++++++ v3/internal/plugin/gokit/generator/utils.go | 20 ----- v3/internal/plugin/gokit/plugin.go | 10 ++- v3/option/decoder.go | 14 ++- v3/option/types.go | 1 + 9 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 v3/internal/plugin/gokit/generator/curl.go diff --git a/v3/go.mod b/v3/go.mod index 3f84035e..127c0735 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -3,6 +3,7 @@ module github.com/swipe-io/swipe/v3 go 1.16 require ( + github.com/555f/curlbuilder v1.0.0 // indirect github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee github.com/fatih/structtag v1.2.0 github.com/gertd/go-pluralize v0.1.7 diff --git a/v3/go.sum b/v3/go.sum index 3c2fb9a3..be688c60 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -44,6 +44,8 @@ cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09 cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/555f/curlbuilder v1.0.0 h1:ThgRRnVsc7R4ZfF1C3xgoIZxA9SOb1noqgvswGzcUyI= +github.com/555f/curlbuilder v1.0.0/go.mod h1:YrKmDm3t9q7mp/XwtMir0rwtcRNd+fW7or5qV3xDHWk= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 972aca19..6edc1671 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -130,6 +130,8 @@ type Config struct { HTTPServer *struct{} HTTPFast *struct{} ClientsEnable ClientsEnable + CURLEnable *struct{} + CURLOutput option.StringValue JSONRPCEnable *struct{} JSONRPCPath option.StringValue JSONRPCDocEnable *struct{} diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index fa69c5fe..cf087c37 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,2 +1,5 @@ package config -func (*Config) Options() []byte { return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n")} + +func (*Config) Options() []byte { + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") +} diff --git a/v3/internal/plugin/gokit/generator/curl.go b/v3/internal/plugin/gokit/generator/curl.go new file mode 100644 index 00000000..b9526b7b --- /dev/null +++ b/v3/internal/plugin/gokit/generator/curl.go @@ -0,0 +1,85 @@ +package generator + +import ( + "context" + + "github.com/555f/curlbuilder" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/writer" +) + +type CURL struct { + w writer.TextWriter + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions + JSONRPCEnable bool + JSONRPCPath string + Output string +} + +func (g *CURL) Generate(ctx context.Context) []byte { + for _, iface := range g.Interfaces { + + name := iface.Named.Name.Value + if iface.ClientName.IsValid() { + name = iface.ClientName.Take() + } + + g.w.W("# %s\n\n", name) + + if g.JSONRPCEnable { + g.writeCURLJSONRPC(iface) + } else { + g.writeCURLREST(iface) + } + } + return g.w.Bytes() +} + +func (g *CURL) buildBody() { + +} + +func (g *CURL) writeCURLJSONRPC(iface *config.Interface) { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + //mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + body := map[string]interface{}{} + for _, p := range m.Sig.Params { + if p.IsContext { + continue + } + body[p.Name.Value] = "" + } + methodName := m.Name.Lower() + if iface.Namespace != "" { + methodName = iface.Namespace + "." + methodName + } + result := curlbuilder.New(). + SetMethod("POST"). + SetURL(g.JSONRPCPath). + SetBody(map[string]interface{}{ + "jsonrpc": "2.0", + "id": 1, + "method": methodName, + "params": body, + }). + String() + + g.w.W("## %s\n\n", methodName) + g.w.W("```\n%s\n```\n", result) + } +} + +func (g *CURL) writeCURLREST(iface *config.Interface) { + //curlbuilder.New().SetMethod() +} + +func (g *CURL) OutputDir() string { + return g.Output +} + +func (g *CURL) Filename() string { + return "curl.md" +} diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 54089a6c..ea0b027d 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -665,26 +665,6 @@ func isGolangNamedType(t *option.NamedType) bool { return false } -//func fillType(i interface{}, visited map[string]*option.NamedType) { -// switch t := i.(type) { -// case *option.NamedType: -// if _, ok := t.Type.(*option.StructType); ok { -// key := t.Pkg.Path + t.Name.Value -// _, ok := visited[key] -// if !ok { -// visited[key] = t -// fillType(t.Type, visited) -// } -// } -// case *option.SliceType: -// fillType(t.Value, visited) -// case *option.ArrayType: -// fillType(t.Value, visited) -// case *option.MapType: -// fillType(t.Value, visited) -// } -//} - func isFileUploadType(i interface{}, importer swipe.Importer) bool { if n, ok := i.(*option.NamedType); ok { if iface, ok := n.Type.(*option.IfaceType); ok { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index b51f285c..2ec30f16 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -146,7 +146,15 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { Interfaces: p.config.Interfaces, }, ) - + if p.config.CURLEnable != nil { + result = append(result, &generator.CURL{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + JSONRPCEnable: jsonRPCEnable, + JSONRPCPath: p.config.JSONRPCPath.Take(), + Output: p.config.CURLOutput.Take(), + }) + } if httpServerEnable { if p.config.LoggingEnable { result = append(result, &generator.Logging{ diff --git a/v3/option/decoder.go b/v3/option/decoder.go index b71af82e..cac14e55 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -51,12 +51,24 @@ func (d *Decoder) normalizeVar(pkg *packages.Package, t *stdtypes.Var, comment s if t == nil { return nil } + varType := d.normalizeType(pkg, t.Type(), false, visited) + + var isContext bool + if named, ok := varType.(*NamedType); ok { + if _, ok := named.Type.(*IfaceType); ok { + if named.Name.Value == "Context" && named.Pkg.Path == "context" { + isContext = true + } + } + } + return &VarType{ Name: normalizeName(t.Name()), Embedded: t.Embedded(), Exported: t.Exported(), IsField: t.IsField(), - Type: d.normalizeType(pkg, t.Type(), false, visited), + IsContext: isContext, + Type: varType, originType: t.Type(), Zero: zeroValue(t.Type().Underlying()), Comment: comment, diff --git a/v3/option/types.go b/v3/option/types.go index b6b4dc06..5685b381 100644 --- a/v3/option/types.go +++ b/v3/option/types.go @@ -41,6 +41,7 @@ type VarType struct { Exported bool IsField bool IsVariadic bool + IsContext bool Type interface{} Comment string Zero string From cb74155caef0eb2f8c654fc47e1af7f45bd16293 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 1 Nov 2021 18:30:29 +0300 Subject: [PATCH 243/293] refactor: implement recursive body curl --- v3/go.mod | 3 +- v3/go.sum | 1 - v3/internal/plugin/gokit/generator/curl.go | 38 +++++++++++++++------ v3/internal/plugin/gokit/generator/utils.go | 33 ++++++++++++++++++ 4 files changed, 61 insertions(+), 14 deletions(-) diff --git a/v3/go.mod b/v3/go.mod index e378f168..eb131fd9 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -3,8 +3,7 @@ module github.com/swipe-io/swipe/v3 go 1.16 require ( - github.com/555f/curlbuilder v1.0.0 // indirect - github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee + github.com/555f/curlbuilder v1.0.0 github.com/fatih/structtag v1.2.0 github.com/gertd/go-pluralize v0.1.7 github.com/mitchellh/mapstructure v1.4.1 diff --git a/v3/go.sum b/v3/go.sum index fe334ae2..a2cd3a76 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -39,7 +39,6 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/555f/curlbuilder v1.0.0 h1:ThgRRnVsc7R4ZfF1C3xgoIZxA9SOb1noqgvswGzcUyI= github.com/555f/curlbuilder v1.0.0/go.mod h1:YrKmDm3t9q7mp/XwtMir0rwtcRNd+fW7or5qV3xDHWk= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= diff --git a/v3/internal/plugin/gokit/generator/curl.go b/v3/internal/plugin/gokit/generator/curl.go index b9526b7b..85382b43 100644 --- a/v3/internal/plugin/gokit/generator/curl.go +++ b/v3/internal/plugin/gokit/generator/curl.go @@ -37,21 +37,21 @@ func (g *CURL) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *CURL) buildBody() { - +func (g *CURL) buildBody(vars option.VarsType) map[string]interface{} { + body := map[string]interface{}{} + for _, v := range vars { + if v.IsContext { + continue + } + body[v.Name.Value] = curlTypeValue(v.Type) + } + return body } func (g *CURL) writeCURLJSONRPC(iface *config.Interface) { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { - //mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - body := map[string]interface{}{} - for _, p := range m.Sig.Params { - if p.IsContext { - continue - } - body[p.Name.Value] = "" - } + body := g.buildBody(m.Sig.Params) methodName := m.Name.Lower() if iface.Namespace != "" { methodName = iface.Namespace + "." + methodName @@ -73,7 +73,23 @@ func (g *CURL) writeCURLJSONRPC(iface *config.Interface) { } func (g *CURL) writeCURLREST(iface *config.Interface) { - //curlbuilder.New().SetMethod() + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + body := g.buildBody(m.Sig.Params) + methodName := m.Name.Lower() + if iface.Namespace != "" { + methodName = iface.Namespace + "." + methodName + } + result := curlbuilder.New(). + SetMethod(mopt.RESTMethod.Take()). + SetURL(mopt.RESTPath.Take()). + SetBody(body). + String() + + g.w.W("## %s\n\n", methodName) + g.w.W("```\n%s\n```\n", result) + } } func (g *CURL) OutputDir() string { diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index ea0b027d..da318f75 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -836,3 +836,36 @@ func extractNamed(i interface{}) (result []*option.NamedType) { } return } + +func curlTypeValue(v interface{}) interface{} { + return curlTypeValueRecursive(v, map[string]struct{}{}) +} + +func curlTypeValueRecursive(v interface{}, nested map[string]struct{}) interface{} { + switch t := v.(type) { + case *option.NamedType: + if _, ok := nested[t.Pkg.Path+t.Name.Value]; !ok { + nested[t.Pkg.Path+t.Name.Value] = struct{}{} + result := map[string]interface{}{} + if st, ok := t.Type.(*option.StructType); ok { + for _, field := range st.Fields { + result[field.Var.Name.Value] = curlTypeValueRecursive(field.Var.Type, nested) + } + } + return result + } + case *option.SliceType: + return []interface{}{curlTypeValueRecursive(t.Value, nested)} + case *option.ArrayType: + return []interface{}{curlTypeValueRecursive(t.Value, nested)} + case *option.MapType: + if b, ok := t.Key.(*option.BasicType); ok && b.IsString() { + return map[string]interface{}{"key": curlTypeValueRecursive(t.Value, nested)} + } + case *option.BasicType: + if t.IsNumeric() { + return 0 + } + } + return nil +} From 9f5b37ab9b30932e38c8b7bc86570448a7b3b3de Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 2 Nov 2021 11:45:24 +0300 Subject: [PATCH 244/293] refactor: fixed recursive nested struct for curl and openapi gen --- v3/go.mod | 1 + v3/go.sum | 1 + v3/internal/plugin/gokit/generator/curl.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 24 ++++--- v3/internal/plugin/gokit/generator/utils.go | 36 ++++++---- v3/option/decoder.go | 67 +++++++++---------- 6 files changed, 72 insertions(+), 59 deletions(-) diff --git a/v3/go.mod b/v3/go.mod index eb131fd9..a6e7cbd5 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -6,6 +6,7 @@ require ( github.com/555f/curlbuilder v1.0.0 github.com/fatih/structtag v1.2.0 github.com/gertd/go-pluralize v0.1.7 + github.com/google/uuid v1.1.2 // indirect github.com/mitchellh/mapstructure v1.4.1 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/spf13/cobra v1.2.0 diff --git a/v3/go.sum b/v3/go.sum index a2cd3a76..9e04d418 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -139,6 +139,7 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= diff --git a/v3/internal/plugin/gokit/generator/curl.go b/v3/internal/plugin/gokit/generator/curl.go index 85382b43..5fdf1f83 100644 --- a/v3/internal/plugin/gokit/generator/curl.go +++ b/v3/internal/plugin/gokit/generator/curl.go @@ -51,11 +51,11 @@ func (g *CURL) buildBody(vars option.VarsType) map[string]interface{} { func (g *CURL) writeCURLJSONRPC(iface *config.Interface) { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { - body := g.buildBody(m.Sig.Params) methodName := m.Name.Lower() if iface.Namespace != "" { methodName = iface.Namespace + "." + methodName } + body := g.buildBody(m.Sig.Params) result := curlbuilder.New(). SetMethod("POST"). SetURL(g.JSONRPCPath). diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 458709f3..542ad824 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -217,19 +217,21 @@ func (g *Openapi) fillTypeDefRecursive(t interface{}) { } if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { g.defTypes[t.Pkg.Path+t.Name.Value] = t - } - switch tt := t.Type.(type) { - case *option.SliceType: - g.fillTypeDefRecursive(tt.Value) - case *option.ArrayType: - g.fillTypeDefRecursive(tt.Value) - case *option.MapType: - g.fillTypeDefRecursive(tt.Value) - case *option.StructType: - for _, field := range tt.Fields { - g.fillTypeDefRecursive(field.Var.Type) + + switch tt := t.Type.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(tt.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(tt.Value) + case *option.MapType: + g.fillTypeDefRecursive(tt.Value) + case *option.StructType: + for _, field := range tt.Fields { + g.fillTypeDefRecursive(field.Var.Type) + } } } + } } diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index da318f75..0677648c 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -5,15 +5,16 @@ import ( "fmt" "strconv" stdstrings "strings" - - "github.com/swipe-io/swipe/v3/swipe" + "time" "github.com/gertd/go-pluralize" + "github.com/google/uuid" "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/openapi" "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" ) const jsonRPCClientBase = ` @@ -838,22 +839,30 @@ func extractNamed(i interface{}) (result []*option.NamedType) { } func curlTypeValue(v interface{}) interface{} { - return curlTypeValueRecursive(v, map[string]struct{}{}) + return curlTypeValueRecursive(v, map[string]int{}) } -func curlTypeValueRecursive(v interface{}, nested map[string]struct{}) interface{} { +func curlTypeValueRecursive(v interface{}, nested map[string]int) interface{} { switch t := v.(type) { case *option.NamedType: - if _, ok := nested[t.Pkg.Path+t.Name.Value]; !ok { - nested[t.Pkg.Path+t.Name.Value] = struct{}{} - result := map[string]interface{}{} - if st, ok := t.Type.(*option.StructType); ok { - for _, field := range st.Fields { - result[field.Var.Name.Value] = curlTypeValueRecursive(field.Var.Type, nested) - } - } + if t.Name.Value == "UUID" { + return uuid.Must(uuid.NewRandom()).String() + } + if t.Pkg.Path == "time" && t.Name.Value == "Time" { + return time.Now().Format(time.RFC3339) + } + result := map[string]interface{}{} + nested[t.Pkg.Path+t.Name.Value]++ + n := nested[t.Pkg.Path+t.Name.Value] + if n > 2 { return result } + if st, ok := t.Type.(*option.StructType); ok { + for _, field := range st.Fields { + result[field.Var.Name.Lower()] = curlTypeValueRecursive(field.Var.Type, nested) + } + } + return result case *option.SliceType: return []interface{}{curlTypeValueRecursive(t.Value, nested)} case *option.ArrayType: @@ -866,6 +875,9 @@ func curlTypeValueRecursive(v interface{}, nested map[string]struct{}) interface if t.IsNumeric() { return 0 } + if t.IsString() { + return "" + } } return nil } diff --git a/v3/option/decoder.go b/v3/option/decoder.go index cac14e55..d3e5f29a 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -15,7 +15,6 @@ import ( "github.com/swipe-io/swipe/v3/internal/annotation" "golang.org/x/tools/go/ast/astutil" "golang.org/x/tools/go/packages" - "golang.org/x/tools/go/types/typeutil" ) type Inject struct { @@ -39,15 +38,13 @@ type Decoder struct { module *packages.Module pkgs *packages2.Packages commentFuncMap map[string][]string - typesCache map[uint32]interface{} - hasher typeutil.Hasher } func normalizeName(s string) String { return String{Value: s} } -func (d *Decoder) normalizeVar(pkg *packages.Package, t *stdtypes.Var, comment string, visited map[uint32]interface{}) *VarType { +func (d *Decoder) normalizeVar(pkg *packages.Package, t *stdtypes.Var, comment string, visited map[string]interface{}) *VarType { if t == nil { return nil } @@ -75,7 +72,7 @@ func (d *Decoder) normalizeVar(pkg *packages.Package, t *stdtypes.Var, comment s } } -func (d *Decoder) normalizeStruct(pkg *packages.Package, t *stdtypes.Struct, isPointer bool, visited map[uint32]interface{}) *StructType { +func (d *Decoder) normalizeStruct(pkg *packages.Package, t *stdtypes.Struct, isPointer bool, visited map[string]interface{}) *StructType { if t == nil { return nil } @@ -83,6 +80,7 @@ func (d *Decoder) normalizeStruct(pkg *packages.Package, t *stdtypes.Struct, isP IsPointer: isPointer, originType: t, } + for i := 0; i < t.NumFields(); i++ { f := &StructFieldType{ Var: d.normalizeVar(pkg, t.Field(i), "", visited), @@ -95,7 +93,7 @@ func (d *Decoder) normalizeStruct(pkg *packages.Package, t *stdtypes.Struct, isP return result } -func (d *Decoder) normalizeType(pkg *packages.Package, t interface{}, isPointer bool, visited map[uint32]interface{}) interface{} { +func (d *Decoder) normalizeType(pkg *packages.Package, t interface{}, isPointer bool, visited map[string]interface{}) interface{} { switch t := t.(type) { case *stdtypes.Func: return d.normalizeFunc(pkg, t, visited) @@ -123,17 +121,17 @@ func (d *Decoder) normalizeType(pkg *packages.Package, t interface{}, isPointer return nil } -func (d *Decoder) normalizeTypeName(pkg *packages.Package, obj *stdtypes.TypeName, isPointer bool, visited map[uint32]interface{}) *NamedType { - k := d.hasher.Hash(obj.Type()) +func (d *Decoder) normalizeTypeName(pkg *packages.Package, obj *stdtypes.TypeName, isPointer bool, visited map[string]interface{}) *NamedType { + var prefix string + if isPointer { + prefix = "*" + } + if obj.Pkg() != nil { + prefix += obj.Pkg().Path() + } + k := prefix + obj.Name() if v, ok := visited[k].(*NamedType); ok { - return &NamedType{ - Obj: obj, - Name: v.Name, - Type: v.Type, - Pkg: v.Pkg, - IsPointer: isPointer, - Methods: v.Methods, - } + return v } nt := &NamedType{ Obj: obj, @@ -149,17 +147,17 @@ func (d *Decoder) normalizeTypeName(pkg *packages.Package, obj *stdtypes.TypeNam return nt } -func (d *Decoder) normalizeNamed(pkg *packages.Package, named *stdtypes.Named, isPointer bool, visited map[uint32]interface{}) *NamedType { - k := d.hasher.Hash(named) +func (d *Decoder) normalizeNamed(pkg *packages.Package, named *stdtypes.Named, isPointer bool, visited map[string]interface{}) *NamedType { + var prefix string + if isPointer { + prefix = "*" + } + if named.Obj().Pkg() != nil { + prefix += named.Obj().Pkg().Path() + } + k := prefix + named.Obj().Name() if v, ok := visited[k].(*NamedType); ok { - return &NamedType{ - Obj: named.Obj(), - Name: v.Name, - Type: v.Type, - Pkg: v.Pkg, - IsPointer: isPointer, - Methods: v.Methods, - } + return v } nt := &NamedType{ Obj: named.Obj(), @@ -202,7 +200,7 @@ func (d *Decoder) normalizeBasic(t *stdtypes.Basic, isPointer bool) *BasicType { } } -func (d *Decoder) normalizeInterface(pkg *packages.Package, t *stdtypes.Interface, visited map[uint32]interface{}) *IfaceType { +func (d *Decoder) normalizeInterface(pkg *packages.Package, t *stdtypes.Interface, visited map[string]interface{}) *IfaceType { it := &IfaceType{ Origin: t, } @@ -218,7 +216,7 @@ func (d *Decoder) normalizeInterface(pkg *packages.Package, t *stdtypes.Interfac return it } -func (d *Decoder) normalizeFunc(pkg *packages.Package, t *stdtypes.Func, visited map[uint32]interface{}) *FuncType { +func (d *Decoder) normalizeFunc(pkg *packages.Package, t *stdtypes.Func, visited map[string]interface{}) *FuncType { comments := d.commentFuncMap[t.String()] comment, paramsComment := parseMethodComments(comments) @@ -232,7 +230,7 @@ func (d *Decoder) normalizeFunc(pkg *packages.Package, t *stdtypes.Func, visited } } -func (d *Decoder) normalizeSignature(pkg *packages.Package, t *stdtypes.Signature, comments map[string]string, visited map[uint32]interface{}) *SignType { +func (d *Decoder) normalizeSignature(pkg *packages.Package, t *stdtypes.Signature, comments map[string]string, visited map[string]interface{}) *SignType { if t == nil { return nil } @@ -263,21 +261,21 @@ func (d *Decoder) normalizeSignature(pkg *packages.Package, t *stdtypes.Signatur return st } -func (d *Decoder) normalizeMap(pkg *packages.Package, key stdtypes.Type, val stdtypes.Type, isPointer bool, visited map[uint32]interface{}) *MapType { +func (d *Decoder) normalizeMap(pkg *packages.Package, key stdtypes.Type, val stdtypes.Type, isPointer bool, visited map[string]interface{}) *MapType { mapType := &MapType{IsPointer: isPointer} mapType.Key = d.normalizeType(pkg, key, false, visited) mapType.Value = d.normalizeType(pkg, val, false, visited) return mapType } -func (d *Decoder) normalizeSlice(pkg *packages.Package, val stdtypes.Type, isPointer bool, visited map[uint32]interface{}) *SliceType { +func (d *Decoder) normalizeSlice(pkg *packages.Package, val stdtypes.Type, isPointer bool, visited map[string]interface{}) *SliceType { return &SliceType{ Value: d.normalizeType(pkg, val, false, visited), IsPointer: isPointer, } } -func (d *Decoder) normalizeArray(pkg *packages.Package, val stdtypes.Type, len int64, isPointer bool, visited map[uint32]interface{}) *ArrayType { +func (d *Decoder) normalizeArray(pkg *packages.Package, val stdtypes.Type, len int64, isPointer bool, visited map[string]interface{}) *ArrayType { return &ArrayType{ Value: d.normalizeType(pkg, val, false, visited), Len: len, @@ -289,13 +287,13 @@ func (d *Decoder) normalizeSelector(pkg *packages.Package, obj stdtypes.Object) return &NamedType{ Obj: obj, Name: normalizeName(obj.Name()), - Type: d.normalizeType(pkg, obj.Type().Underlying(), false, map[uint32]interface{}{}), + Type: d.normalizeType(pkg, obj.Type().Underlying(), false, map[string]interface{}{}), Pkg: d.normalizePkg(obj.Pkg()), } } func (d *Decoder) normalize(pkg *packages.Package, obj stdtypes.Object) interface{} { - return d.normalizeType(pkg, obj, false, map[uint32]interface{}{}) + return d.normalizeType(pkg, obj, false, map[string]interface{}{}) } func (d *Decoder) normalizeModule(module *packages.Module) *ModuleType { @@ -506,6 +504,5 @@ func Decode(optionPkgs map[string]string, module *packages.Module, pkgs *package module: module, pkgs: pkgs, commentFuncMap: commentFuncs, - hasher: typeutil.MakeHasher(), }).decode() } From 7df06ddbe647a8ace67168b9d3ef5d8a95e56be9 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 2 Nov 2021 12:42:21 +0300 Subject: [PATCH 245/293] refactor: added CURLURL option --- v3/internal/plugin/gokit/config/config.go | 1 + v3/internal/plugin/gokit/config/config_gen.go | 2 +- v3/internal/plugin/gokit/generator/curl.go | 7 +++++-- v3/internal/plugin/gokit/plugin.go | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 6edc1671..e3b26b75 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -132,6 +132,7 @@ type Config struct { ClientsEnable ClientsEnable CURLEnable *struct{} CURLOutput option.StringValue + CURLURL option.StringValue JSONRPCEnable *struct{} JSONRPCPath option.StringValue JSONRPCDocEnable *struct{} diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index cf087c37..217ec608 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/curl.go b/v3/internal/plugin/gokit/generator/curl.go index 5fdf1f83..8745f1e4 100644 --- a/v3/internal/plugin/gokit/generator/curl.go +++ b/v3/internal/plugin/gokit/generator/curl.go @@ -2,6 +2,7 @@ package generator import ( "context" + "strings" "github.com/555f/curlbuilder" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" @@ -16,6 +17,7 @@ type CURL struct { JSONRPCEnable bool JSONRPCPath string Output string + URL string } func (g *CURL) Generate(ctx context.Context) []byte { @@ -55,10 +57,11 @@ func (g *CURL) writeCURLJSONRPC(iface *config.Interface) { if iface.Namespace != "" { methodName = iface.Namespace + "." + methodName } + body := g.buildBody(m.Sig.Params) result := curlbuilder.New(). SetMethod("POST"). - SetURL(g.JSONRPCPath). + SetURL(strings.TrimRight(g.URL, "/") + "/" + strings.TrimLeft(g.JSONRPCPath, "/")). SetBody(map[string]interface{}{ "jsonrpc": "2.0", "id": 1, @@ -83,7 +86,7 @@ func (g *CURL) writeCURLREST(iface *config.Interface) { } result := curlbuilder.New(). SetMethod(mopt.RESTMethod.Take()). - SetURL(mopt.RESTPath.Take()). + SetURL(strings.TrimRight(g.URL, "/") + "/" + strings.TrimLeft(mopt.RESTPath.Take(), "/")). SetBody(body). String() diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 2ec30f16..806d6e2d 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -153,6 +153,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { JSONRPCEnable: jsonRPCEnable, JSONRPCPath: p.config.JSONRPCPath.Take(), Output: p.config.CURLOutput.Take(), + URL: p.config.CURLURL.Take(), }) } if httpServerEnable { From 02935e175ab5c5f0cacc8b9a64d856877f93c3e7 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 8 Nov 2021 17:13:17 +0300 Subject: [PATCH 246/293] refactor: added generation of comments to structure fields in openapi description --- v3/internal/ast/loader.go | 24 ++++++++++++--- v3/internal/plugin/gokit/generator/openapi.go | 1 + v3/option/decoder.go | 11 +++++-- v3/swipe/config.go | 30 ++++++++++--------- 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/v3/internal/ast/loader.go b/v3/internal/ast/loader.go index ef805342..f0be1ccc 100644 --- a/v3/internal/ast/loader.go +++ b/v3/internal/ast/loader.go @@ -4,12 +4,27 @@ import ( "context" "errors" "go/ast" + "go/types" stdstrings "strings" "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/typeutil" ) +type CommentFields struct { + fields map[uint32]map[string]string + h typeutil.Hasher +} + +func (c *CommentFields) GetByFieldName(t types.Type, name string) string { + comments := c.fields[c.h.Hash(t)] + return comments[name] +} + +func (c *CommentFields) Add(t types.Type, comments map[string]string) { + c.fields[c.h.Hash(t)] = comments +} + type Loader struct { ctx context.Context wd string @@ -17,12 +32,12 @@ type Loader struct { patterns []string module *packages.Module commentFuncs map[string][]string - commentFields map[string]map[string]string + commentFields *CommentFields pkgs []*packages.Package enums *typeutil.Map } -func (l *Loader) CommentFields() map[string]map[string]string { +func (l *Loader) CommentFields() *CommentFields { return l.commentFields } @@ -56,7 +71,7 @@ func (l *Loader) run() (errs []error) { ) l.commentFuncs = map[string][]string{} - l.commentFields = map[string]map[string]string{} + l.commentFields = &CommentFields{fields: map[uint32]map[string]string{}, h: typeutil.MakeHasher()} l.enums = new(typeutil.Map) cfg := &packages.Config{ @@ -105,6 +120,7 @@ func (l *Loader) run() (errs []error) { errs = append(errs, errors.New("go mod not found, run go mod init")) return } + inspect(l.pkgs, func(p *packages.Package, n ast.Node) bool { if ts, ok := n.(*ast.TypeSpec); ok { obj := p.TypesInfo.ObjectOf(ts.Name) @@ -120,7 +136,7 @@ func (l *Loader) run() (errs []error) { } } if len(comments) > 0 { - l.commentFields[obj.String()] = comments + l.commentFields.Add(obj.Type().Underlying(), comments) } } } else if spec, ok := n.(*ast.Field); ok { diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 542ad824..78a86ce4 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -279,6 +279,7 @@ func (g *Openapi) schemaByTypeRecursive(schema *openapi.Schema, t interface{}) { filedSchema := &openapi.Schema{ Properties: openapi.Properties{}, } + filedSchema.Description = field.Var.Comment schema.Properties[name] = filedSchema g.schemaByTypeRecursive(filedSchema, field.Var.Type) } diff --git a/v3/option/decoder.go b/v3/option/decoder.go index d3e5f29a..7dc6e094 100644 --- a/v3/option/decoder.go +++ b/v3/option/decoder.go @@ -9,6 +9,8 @@ import ( stdtypes "go/types" "path/filepath" + "github.com/swipe-io/swipe/v3/internal/ast" + packages2 "github.com/swipe-io/swipe/v3/internal/packages" "github.com/fatih/structtag" @@ -38,6 +40,7 @@ type Decoder struct { module *packages.Module pkgs *packages2.Packages commentFuncMap map[string][]string + commentFields *ast.CommentFields } func normalizeName(s string) String { @@ -80,10 +83,11 @@ func (d *Decoder) normalizeStruct(pkg *packages.Package, t *stdtypes.Struct, isP IsPointer: isPointer, originType: t, } - for i := 0; i < t.NumFields(); i++ { + field := t.Field(i) + comment := d.commentFields.GetByFieldName(t, field.Name()) f := &StructFieldType{ - Var: d.normalizeVar(pkg, t.Field(i), "", visited), + Var: d.normalizeVar(pkg, field, comment, visited), } if tags, err := structtag.Parse(t.Tag(i)); err == nil { f.Tags = tags @@ -498,11 +502,12 @@ func (d *Decoder) decode() (result map[string]*Module, err error) { return } -func Decode(optionPkgs map[string]string, module *packages.Module, pkgs *packages2.Packages, commentFuncs map[string][]string) (result map[string]*Module, err error) { +func Decode(optionPkgs map[string]string, module *packages.Module, pkgs *packages2.Packages, commentFuncs map[string][]string, commentFields *ast.CommentFields) (result map[string]*Module, err error) { return (&Decoder{ optionPkgs: optionPkgs, module: module, pkgs: pkgs, commentFuncMap: commentFuncs, + commentFields: commentFields, }).decode() } diff --git a/v3/swipe/config.go b/v3/swipe/config.go index 509d437d..8981758a 100644 --- a/v3/swipe/config.go +++ b/v3/swipe/config.go @@ -30,23 +30,25 @@ type PluginConfig struct { } type Config struct { - WorkDir string - Envs []string - Patterns []string - Modules map[string]*option.Module - Module *packages.Module - Packages *packages2.Packages - CommentFuncs map[string][]string + WorkDir string + Envs []string + Patterns []string + Modules map[string]*option.Module + Module *packages.Module + Packages *packages2.Packages + CommentFuncs map[string][]string + CommentFields *ast.CommentFields } func GetConfig(loader *ast.Loader) (*Config, error) { cfg := Config{ - WorkDir: loader.WorkDir(), - Envs: loader.Env(), - Patterns: loader.Patterns(), - Module: loader.Module(), - Packages: packages2.NewPackages(loader.Pkgs()), - CommentFuncs: loader.CommentFuncs(), + WorkDir: loader.WorkDir(), + Envs: loader.Env(), + Patterns: loader.Patterns(), + Module: loader.Module(), + Packages: packages2.NewPackages(loader.Pkgs()), + CommentFuncs: loader.CommentFuncs(), + CommentFields: loader.CommentFields(), } if err := cfg.Load(); err != nil { return nil, err @@ -69,7 +71,7 @@ func (c *Config) Load() (err error) { for _, plugin := range registeredPlugins { optionPkgs[strings.ToLower(plugin.ID())] = plugin.ID() } - c.Modules, err = option.Decode(optionPkgs, c.Module, c.Packages, c.CommentFuncs) + c.Modules, err = option.Decode(optionPkgs, c.Module, c.Packages, c.CommentFuncs, c.CommentFields) return } From 3e7e3fd80959ec0bd342b6ef915fe99fce05238c Mon Sep 17 00:00:00 2001 From: vitaly Date: Thu, 11 Nov 2021 14:28:22 +0300 Subject: [PATCH 247/293] refactor: fixed wrong generate for ServerDecodeRequest, ServerDecodeRequest, ClientEncodeRequest and implement ClientEncodeRequest --- v3/cmd/options.go | 11 +++++++++- v3/internal/plugin/gokit/config/config.go | 15 ++++++-------- v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/jsonrpc_server.go | 20 +++++++------------ .../plugin/gokit/generator/rest_client.go | 16 +++++++++++---- .../plugin/gokit/generator/rest_server.go | 18 ++++++++--------- v3/internal/plugin/gokit/plugin.go | 12 +++++------ v3/internal/plugin/gokit/utils.go | 3 +++ v3/option/values.go | 4 ++++ v3/writer/golang_writer.go | 13 ++++++++++++ 10 files changed, 71 insertions(+), 43 deletions(-) diff --git a/v3/cmd/options.go b/v3/cmd/options.go index 17dc6bd1..09645ff8 100644 --- a/v3/cmd/options.go +++ b/v3/cmd/options.go @@ -179,10 +179,19 @@ func getFieldType(f *goast.Field) string { return getExprType(f.Type) } +func typeByIdent(id *goast.Ident) string { + switch id.Name { + default: + return "interface{}" + case "string", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "float32", "float64", "complex64", "complex128", "byte", "rune": + return id.Name + } +} + func getExprType(e goast.Expr) string { switch t := e.(type) { case *goast.Ident: - return t.Name + return typeByIdent(t) case *goast.ArrayType: lenStr := "" if t.Len != nil { diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index e3b26b75..1fb50869 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -11,10 +11,6 @@ const ( JRPCErrorType ErrorType = "jrpc" ) -type FuncTypeValue struct { - Value *option.FuncType -} - type Error struct { PkgName string PkgPath string @@ -76,10 +72,11 @@ type MethodOptions struct { RESTPathVars map[string]string `swipe:"option"` RESTBodyType option.StringValue `swipe:"option"` //Aggregate []Aggregate `swipe:"option"` - ServerEncodeResponse FuncTypeValue `swipe:"option"` - ServerDecodeRequest FuncTypeValue `swipe:"option"` - ClientEncodeRequest FuncTypeValue `swipe:"option"` - ClientDecodeResponse FuncTypeValue `swipe:"option"` + ServerEncodeResponse option.FuncTypeValue `swipe:"option"` + ServerDecodeRequest option.FuncTypeValue `swipe:"option"` + ClientEncodeRequest option.FuncTypeValue `swipe:"option"` + ClientDecodeResponse option.FuncTypeValue `swipe:"option"` + ClientErrorDecode option.FuncTypeValue `swipe:"option"` } type MethodOption struct { @@ -147,7 +144,7 @@ type Config struct { OpenapiServers []OpenapiServer `mapstructure:"OpenapiServer"` MethodOptions []MethodOption MethodDefaultOptions MethodOptions - DefaultErrorEncoder FuncTypeValue + ServerErrorEncoder option.FuncTypeValue // non options params LoggingEnable bool `mapstructure:"-"` diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 217ec608..f376086f 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// DefaultErrorEncoder ...\nfunc DefaultErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index 68a6222a..2f473d66 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -83,12 +83,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("Decode: ") if mopt.ServerDecodeRequest.Value != nil { - pkg := importer.Import(mopt.ServerDecodeRequest.Value.Pkg.Name, mopt.ServerDecodeRequest.Value.Pkg.Path) - fnName := mopt.ServerDecodeRequest.Value.Name.String() - if pkg != "" { - fnName = pkg + "." + fnName - } - g.w.W(fnName) + g.w.WriteFuncByFuncType(mopt.ServerDecodeRequest.Value, importer) } else { g.w.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) @@ -106,15 +101,14 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("}") } g.w.W(",\n") + + g.w.W("Encode: ") + if mopt.ServerEncodeResponse.Value != nil { - pkg := importer.Import(mopt.ServerEncodeResponse.Value.Pkg.Name, mopt.ServerEncodeResponse.Value.Pkg.Path) - fnName := mopt.ServerEncodeResponse.Value.Name.String() - if pkg != "" { - fnName = pkg + "." + fnName - } - g.w.W("Encode: " + fnName + ",\n") + g.w.WriteFuncByFuncType(mopt.ServerEncodeResponse.Value, importer) + g.w.W(",\n") } else { - g.w.W("Encode: encodeResponseJSONRPC,\n") + g.w.W("encodeResponseJSONRPC,\n") } g.w.W("}\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 89e08af2..bae87a8c 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -174,7 +174,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("u,\n") if mopt.ClientEncodeRequest.Value != nil { - g.w.W(swipe.TypeString(mopt.ClientEncodeRequest.Value, false, importer)) + g.w.WriteFuncByFuncType(mopt.ClientEncodeRequest.Value, importer) } else { g.w.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) @@ -338,7 +338,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W(",\n") if mopt.ClientDecodeResponse.Value != nil { - g.w.W(swipe.TypeString(mopt.ClientDecodeResponse.Value, false, importer)) + g.w.WriteFuncByFuncType(mopt.ClientDecodeResponse.Value, importer) } else { g.w.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) statusCode := "r.StatusCode" @@ -346,8 +346,16 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { statusCode = "r.StatusCode()" } g.w.W("if %s > 299 {\n", statusCode) - g.w.W("return nil, %sErrorDecode(%s)\n", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) - g.w.W("}\n") + + g.w.W("return nil, ") + + if mopt.ClientErrorDecode.Value != nil { + g.w.WriteFuncCallByFuncType(mopt.ClientErrorDecode.Value, []string{"r"}, importer) + } else { + g.w.W("%sErrorDecode(%s)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) + } + + g.w.W("\n}\n") resultsLen := LenWithoutErrors(m.Sig.Results) if resultsLen > 0 { diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 7b9ed70c..d8cbf42a 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -15,12 +15,12 @@ import ( ) type RESTServerGenerator struct { - w writer.GoWriter - UseFast bool - JSONRPCEnable bool - DefaultErrorEncoder *option.FuncType - Interfaces []*config.Interface - MethodOptions map[string]config.MethodOptions + w writer.GoWriter + UseFast bool + JSONRPCEnable bool + ServerErrorEncoder *option.FuncType + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions } func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { @@ -44,7 +44,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") httpPkg = importer.Import("http", "net/http") } - if g.DefaultErrorEncoder == nil { + if g.ServerErrorEncoder == nil { g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) } g.writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg) @@ -82,9 +82,9 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("opts := &serverOpts{}\n") g.w.W("for _, o := range options {\n o(opts)\n }\n") - if g.DefaultErrorEncoder != nil { + if g.ServerErrorEncoder != nil { g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(", kitHTTPPkg) - g.w.W(swipe.TypeString(g.DefaultErrorEncoder, false, importer)) + g.w.W(swipe.TypeString(g.ServerErrorEncoder, false, importer)) g.w.W("))\n") } else { g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 806d6e2d..9a54810f 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -193,7 +193,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { UseFast: useFast, Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, - DefaultErrorEncoder: p.config.DefaultErrorEncoder.Value, + DefaultErrorEncoder: p.config.ServerErrorEncoder.Value, JSONRPCPath: p.config.JSONRPCPath.Take(), }) if jsClientEnable { @@ -214,11 +214,11 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } else { result = append(result, &generator.RESTServerGenerator{ - UseFast: useFast, - JSONRPCEnable: jsonRPCEnable, - MethodOptions: p.config.MethodOptionsMap, - DefaultErrorEncoder: p.config.DefaultErrorEncoder.Value, - Interfaces: p.config.Interfaces, + UseFast: useFast, + JSONRPCEnable: jsonRPCEnable, + MethodOptions: p.config.MethodOptionsMap, + ServerErrorEncoder: p.config.ServerErrorEncoder.Value, + Interfaces: p.config.Interfaces, }) } } diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index e41bd647..d0347c28 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -350,6 +350,9 @@ func fillMethodDefaultOptions(method, methodDefault config.MethodOptions) config if method.ServerEncodeResponse.Value == nil { method.ServerEncodeResponse.Value = methodDefault.ServerEncodeResponse.Value } + if method.ClientErrorDecode.Value == nil { + method.ClientErrorDecode.Value = methodDefault.ClientErrorDecode.Value + } if !method.Instrumenting.IsValid() { method.Instrumenting = methodDefault.Instrumenting } diff --git a/v3/option/values.go b/v3/option/values.go index c440d432..c619b103 100644 --- a/v3/option/values.go +++ b/v3/option/values.go @@ -5,6 +5,10 @@ import ( "strconv" ) +type FuncTypeValue struct { + Value *FuncType +} + type SliceStringValue struct { Value []string } diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go index bcb83385..f1cb937b 100644 --- a/v3/writer/golang_writer.go +++ b/v3/writer/golang_writer.go @@ -76,6 +76,19 @@ func (w *GoWriter) WriteStructAssign(keyvals []string) { w.W("}") } +func (w *GoWriter) WriteFuncByFuncType(f *option.FuncType, importer swipe.Importer) { + pkg := importer.Import(f.Pkg.Name, f.Pkg.Path) + if pkg != "" { + pkg += "." + } + w.W("%s%s", pkg, f.Name) +} + +func (w *GoWriter) WriteFuncCallByFuncType(f *option.FuncType, params []string, importer swipe.Importer) { + w.WriteFuncByFuncType(f, importer) + w.W("(%s)", stdstrings.Join(params, ",")) +} + func (w *GoWriter) WriteFuncCall(id, name string, params []string) { w.W(id + "." + name + "(") w.W(stdstrings.Join(params, ",")) From 3c7e517295b918c02a305d142c7fa76dc39f63a9 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 19 Nov 2021 09:46:29 +0300 Subject: [PATCH 248/293] refactor: fixed rest query array generate --- v3/internal/plugin/gokit/generator/openapi.go | 5 ++++- v3/writer/golang_writer.go | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 78a86ce4..4dce8ab3 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -677,7 +677,10 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o Name: queryVar.value, Description: queryVar.p.Comment, Required: queryVar.required, - Schema: g.schemaByType(queryVar.p.Type), + Schema: &openapi.Schema{ + Type: "string", + Properties: openapi.Properties{}, + }, }) } diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go index f1cb937b..f5352836 100644 --- a/v3/writer/golang_writer.go +++ b/v3/writer/golang_writer.go @@ -189,6 +189,16 @@ func (w *GoWriter) WriteFormatType(importer swipe.Importer, assignId, valueId st switch t := f.Type.(type) { case *option.BasicType: w.writeFormatBasicType(importer, assignId, valueId, t) + case *option.SliceType: + if bt, ok := t.Value.(*option.BasicType); ok { + w.W("var %s string\n", assignId) + w.W("for i, s := range %s {\n", valueId) + w.W("if i > 0 {\n %s += \",\"\n}\n", assignId) + w.writeFormatBasicType(importer, "v", "s", bt) + w.W("%s += v\n", assignId) + w.W("}\n") + } + case *option.NamedType: switch t.Pkg.Path { case "github.com/satori/uuid", "github.com/google/uuid": From e642cd1bb3563c3730fb06be57231e5272306a81 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 19 Nov 2021 10:07:49 +0300 Subject: [PATCH 249/293] refactor: fixed recursive nested struct --- v3/internal/plugin/gokit/generator/utils.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 0677648c..497c14b0 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -818,26 +818,34 @@ func makeOpenapiSchemaJRPCError(code int64) *openapi.Schema { } } -func extractNamed(i interface{}) (result []*option.NamedType) { +func extractNamedRecursive(i interface{}, visited map[string]struct{}) (result []*option.NamedType) { switch t := i.(type) { case *option.NamedType: + if _, ok := visited[t.ID()]; ok { + return + } + visited[t.ID()] = struct{}{} switch nt := t.Type.(type) { case *option.StructType: for _, field := range nt.Fields { - result = append(result, extractNamed(field.Var.Type)...) + result = append(result, extractNamedRecursive(field.Var.Type, visited)...) } } result = append(result, t) case *option.MapType: - result = append(result, extractNamed(t.Value)...) + result = append(result, extractNamedRecursive(t.Value, visited)...) case *option.ArrayType: - result = append(result, extractNamed(t.Value)...) + result = append(result, extractNamedRecursive(t.Value, visited)...) case *option.SliceType: - result = append(result, extractNamed(t.Value)...) + result = append(result, extractNamedRecursive(t.Value, visited)...) } return } +func extractNamed(i interface{}) []*option.NamedType { + return extractNamedRecursive(i, map[string]struct{}{}) +} + func curlTypeValue(v interface{}) interface{} { return curlTypeValueRecursive(v, map[string]int{}) } From 23c363045638d5561e19dcc49bbee6284069c96e Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 22 Nov 2021 15:42:27 +0300 Subject: [PATCH 250/293] refactor: fixed openapi boolean type --- v3/internal/plugin/gokit/generator/openapi.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 4dce8ab3..baefb0cf 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -331,6 +331,10 @@ func (g *Openapi) schemaByTypeRecursive(schema *openapi.Schema, t interface{}) { schema.Example = "abc" return } + if t.IsBool() { + schema.Type = "boolean" + schema.Example = "true" + } if t.IsNumeric() { if t.IsInt32() || t.IsUint32() { schema.Type = "integer" From 88d33eab5e98a5b45ed6b6168965777630e86327 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 23 Nov 2021 15:23:41 +0300 Subject: [PATCH 251/293] refactor: fixed openapi query, header and path name param --- v3/internal/plugin/gokit/generator/openapi.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index baefb0cf..e526b225 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -327,7 +327,6 @@ func (g *Openapi) schemaByTypeRecursive(schema *openapi.Schema, t interface{}) { case *option.BasicType: if t.IsString() { schema.Type = "string" - schema.Format = "string" schema.Example = "abc" return } @@ -658,7 +657,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o for _, pathVar := range pathVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "path", - Name: pathVar.value, + Name: pathVar.p.Name.Lower(), Description: pathVar.p.Comment, Required: pathVar.required, Schema: g.schemaByType(pathVar.p.Type), @@ -668,7 +667,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o for _, headerVar := range headerVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "header", - Name: headerVar.value, + Name: headerVar.p.Name.Lower(), Description: headerVar.p.Comment, Required: headerVar.required, Schema: g.schemaByType(headerVar.p.Type), @@ -678,7 +677,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o for _, queryVar := range queryVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "query", - Name: queryVar.value, + Name: queryVar.p.Name.Lower(), Description: queryVar.p.Comment, Required: queryVar.required, Schema: &openapi.Schema{ From 70e76214ea9a781c5bfe998af58271d266f34faf Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 30 Nov 2021 13:16:37 +0300 Subject: [PATCH 252/293] refactor: fixed generate server encode error for REST --- v3/internal/plugin/gokit/generator/rest_server.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index d8cbf42a..ba48cb15 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -84,7 +84,9 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("for _, o := range options {\n o(opts)\n }\n") if g.ServerErrorEncoder != nil { g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(", kitHTTPPkg) - g.w.W(swipe.TypeString(g.ServerErrorEncoder, false, importer)) + + g.w.WriteFuncByFuncType(g.ServerErrorEncoder, importer) + g.w.W("))\n") } else { g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) From 1654697c85a4737c959b8f4a6bc7635ca99a4638 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 1 Feb 2022 22:14:00 +0300 Subject: [PATCH 253/293] refactor: added client generate output option --- v3/frame/factory.go | 5 +- v3/internal/plugin/gokit/config/config.go | 1 + v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/client_struct.go | 8 +- .../plugin/gokit/generator/endpoint.go | 8 +- v3/internal/plugin/gokit/generator/helpers.go | 8 +- .../plugin/gokit/generator/interface.go | 8 +- .../plugin/gokit/generator/jsonrpc_client.go | 8 +- .../plugin/gokit/generator/rest_client.go | 8 +- .../plugin/gokit/generator/rest_server.go | 35 ++++---- v3/internal/plugin/gokit/plugin.go | 82 +++++++++++++------ v3/swipe/generator.go | 4 + v3/swipe/swipe.go | 8 +- 13 files changed, 132 insertions(+), 53 deletions(-) diff --git a/v3/frame/factory.go b/v3/frame/factory.go index 4273372d..2ec7d7c1 100644 --- a/v3/frame/factory.go +++ b/v3/frame/factory.go @@ -4,20 +4,19 @@ import ( "path/filepath" "github.com/swipe-io/swipe/v3/internal/importer" - "github.com/swipe-io/swipe/v3/option" ) type Framer interface { Frame(data []byte) ([]byte, error) } -func NewFrame(version string, filename string, importer *importer.Importer, pkg *option.PackageType) Framer { +func NewFrame(version string, filename string, importer *importer.Importer, pkgName string) Framer { ext := filepath.Ext(filename) switch ext { default: return NewBytesFrame() case ".go": - return NewGolangFrame(importer, version, pkg.Name) + return NewGolangFrame(importer, version, pkgName) case ".js": return NewJSFrame(version) } diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 1fb50869..73b43492 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -127,6 +127,7 @@ type Config struct { HTTPServer *struct{} HTTPFast *struct{} ClientsEnable ClientsEnable + ClientOutput option.StringValue CURLEnable *struct{} CURLOutput option.StringValue CURLURL option.StringValue diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index f376086f..9ba29f69 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/client_struct.go b/v3/internal/plugin/gokit/generator/client_struct.go index 5bf51d26..3242d3ea 100644 --- a/v3/internal/plugin/gokit/generator/client_struct.go +++ b/v3/internal/plugin/gokit/generator/client_struct.go @@ -15,6 +15,12 @@ type ClientStruct struct { UseFast bool JSONRPCEnable bool Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *ClientStruct) Package() string { + return g.Pkg } func (g *ClientStruct) Generate(ctx context.Context) []byte { @@ -200,7 +206,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { } func (g *ClientStruct) OutputDir() string { - return "" + return g.Output } func (g *ClientStruct) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index 8544c07d..6f107849 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -13,6 +13,12 @@ type Endpoint struct { w writer.GoWriter Interfaces []*config.Interface HTTPServerEnable bool + Output string + Pkg string +} + +func (g *Endpoint) Package() string { + return g.Pkg } func (g *Endpoint) Generate(ctx context.Context) []byte { @@ -25,7 +31,7 @@ func (g *Endpoint) Generate(ctx context.Context) []byte { } func (g *Endpoint) OutputDir() string { - return "" + return g.Output } func (g *Endpoint) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index 7c18b98c..2dac8f6e 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -18,6 +18,12 @@ type Helpers struct { HTTPServerEnable bool UseFast bool IfaceErrors map[string]map[string][]config.Error + Output string + Pkg string +} + +func (g *Helpers) Package() string { + return g.Pkg } func (g *Helpers) Generate(ctx context.Context) []byte { @@ -196,7 +202,7 @@ func (g *Helpers) writeFuncMiddlewareChain(endpointPkg string) { } func (g *Helpers) OutputDir() string { - return "" + return g.Output } func (g *Helpers) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go index a6bf49e3..6dd16abf 100644 --- a/v3/internal/plugin/gokit/generator/interface.go +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -12,6 +12,12 @@ import ( type InterfaceGenerator struct { w writer.GoWriter Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *InterfaceGenerator) Package() string { + return g.Pkg } func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { @@ -41,7 +47,7 @@ func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { } func (g *InterfaceGenerator) OutputDir() string { - return "" + return g.Output } func (g *InterfaceGenerator) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 18a95880..9c1420d7 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -14,6 +14,12 @@ type JSONRPCClientGenerator struct { w writer.GoWriter Interfaces []*config.Interface UseFast bool + Output string + Pkg string +} + +func (g *JSONRPCClientGenerator) Package() string { + return g.Pkg } func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { @@ -152,7 +158,7 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { } func (g *JSONRPCClientGenerator) OutputDir() string { - return "" + return g.Output } func (g *JSONRPCClientGenerator) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index bae87a8c..94bbb689 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -24,6 +24,12 @@ type RESTClientGenerator struct { Interfaces []*config.Interface UseFast bool MethodOptions map[string]config.MethodOptions + Output string + Pkg string +} + +func (g *RESTClientGenerator) Package() string { + return g.Pkg } func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { @@ -427,7 +433,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } func (g *RESTClientGenerator) OutputDir() string { - return "" + return g.Output } func (g *RESTClientGenerator) Filename() string { diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index ba48cb15..3b08e1db 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -168,21 +168,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } } } - - //for _, iface := range g.Interfaces { - // g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) - //} - - //for _, iface := range g.Interfaces { - // ifaceType := iface.Named.Type.(*option.IfaceType) - // epSetName := NameEndpointSetNameVar(iface) - // for _, m := range ifaceType.Methods { - // g.w.W( - // "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - // LcNameWithAppPrefix(iface)+m.Name.Value, m.Name, epSetName, - // ) - // } - //} if g.UseFast { g.w.W("r := %s.New()\n", routerPkg) } else { @@ -362,16 +347,28 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") fmtPkg := importer.Import("fmt", "fmt") pkgIO := importer.Import("io", "io") + + g.w.W("var data []byte\n") + if g.UseFast { - g.w.W("err = %s.Unmarshal(r.Body(), &req)\n", jsonPkg) + g.w.W("data = r.Body()\n") } else { ioutilPkg := importer.Import("ioutil", "io/ioutil") - - g.w.W("b, err := %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.W("data, err = %s.ReadAll(r.Body)\n", ioutilPkg) g.w.WriteCheckErr("err", func() { g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) }) - g.w.W("err = %s.Unmarshal(b, &req)\n", jsonPkg) + } + if len(paramVars) == 1 { + if s, ok := paramVars[0].Type.(*option.SliceType); ok { + if b, ok := s.Value.(*option.BasicType); ok && b.IsByte() { + g.w.W("req%s = data\n", "."+paramVars[0].Name.Upper()) + } + } else { + g.w.W("err = %s.Unmarshal(data, &req%s)\n", jsonPkg, "."+paramVars[0].Name.Upper()) + } + } else { + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 9a54810f..3adccb1f 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -22,7 +22,8 @@ func init() { } type Plugin struct { - config config.Config + config config.Config + workdir string } func (p *Plugin) ID() string { @@ -39,6 +40,9 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map return errs } _, appName := path.Split(module.Path) + + p.workdir = cfg.WorkDir + p.config.AppName = strcase.ToCamel(appName) funcDeclTypes := makeFuncDeclTypes(cfg.Packages) @@ -129,23 +133,6 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { useFast := p.config.HTTPFast != nil jsonRPCDocEnable := p.config.JSONRPCDocEnable != nil - result = append(result, - &generator.Helpers{ - Interfaces: p.config.Interfaces, - JSONRPCEnable: jsonRPCEnable, - GoClientEnable: goClientEnable, - HTTPServerEnable: httpServerEnable, - UseFast: useFast, - IfaceErrors: p.config.IfaceErrors, - }, - &generator.Endpoint{ - Interfaces: p.config.Interfaces, - HTTPServerEnable: httpServerEnable, - }, - &generator.InterfaceGenerator{ - Interfaces: p.config.Interfaces, - }, - ) if p.config.CURLEnable != nil { result = append(result, &generator.CURL{ Interfaces: p.config.Interfaces, @@ -157,6 +144,24 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { }) } if httpServerEnable { + result = append(result, + &generator.Helpers{ + Interfaces: p.config.Interfaces, + JSONRPCEnable: jsonRPCEnable, + GoClientEnable: goClientEnable, + HTTPServerEnable: httpServerEnable, + UseFast: useFast, + IfaceErrors: p.config.IfaceErrors, + }, + &generator.Endpoint{ + Interfaces: p.config.Interfaces, + HTTPServerEnable: httpServerEnable, + }, + &generator.InterfaceGenerator{ + Interfaces: p.config.Interfaces, + }, + ) + if p.config.LoggingEnable { result = append(result, &generator.Logging{ Interfaces: p.config.Interfaces, @@ -224,21 +229,52 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } if goClientEnable { - result = append(result, &generator.ClientStruct{ - UseFast: useFast, - JSONRPCEnable: jsonRPCEnable, - Interfaces: p.config.Interfaces, - }) + output := p.config.ClientOutput.Take() + pkg := strcase.ToSnake(filepath.Base(output)) + + result = append(result, + &generator.Helpers{ + Interfaces: p.config.Interfaces, + JSONRPCEnable: jsonRPCEnable, + GoClientEnable: goClientEnable, + HTTPServerEnable: httpServerEnable, + UseFast: useFast, + IfaceErrors: p.config.IfaceErrors, + Pkg: pkg, + Output: output, + }, + &generator.Endpoint{ + Interfaces: p.config.Interfaces, + HTTPServerEnable: httpServerEnable, + Pkg: pkg, + Output: output, + }, + &generator.InterfaceGenerator{ + Interfaces: p.config.Interfaces, + Pkg: pkg, + Output: output, + }, + &generator.ClientStruct{ + UseFast: useFast, + JSONRPCEnable: jsonRPCEnable, + Interfaces: p.config.Interfaces, + Pkg: pkg, + Output: output, + }) if jsonRPCEnable { result = append(result, &generator.JSONRPCClientGenerator{ Interfaces: p.config.Interfaces, UseFast: useFast, + Pkg: pkg, + Output: output, }) } else { result = append(result, &generator.RESTClientGenerator{ Interfaces: p.config.Interfaces, UseFast: useFast, MethodOptions: p.config.MethodOptionsMap, + Pkg: pkg, + Output: output, }) } } diff --git a/v3/swipe/generator.go b/v3/swipe/generator.go index defe5959..57573d5c 100644 --- a/v3/swipe/generator.go +++ b/v3/swipe/generator.go @@ -7,3 +7,7 @@ type Generator interface { OutputDir() string Filename() string } + +type GeneratorPackage interface { + Package() string +} diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 7f49c19b..b3f67beb 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -86,7 +86,13 @@ func Generate(cfg *Config) (result []GenerateResult, errs []error) { } generatorResult[i].OutputPath = filepath.Join(outputDir, filename) - f := frame.NewFrame(Version, filename, importerService, build.Pkg) + + pkgName := build.Pkg.Name + if gp, ok := g.(GeneratorPackage); ok && gp.Package() != "" { + pkgName = gp.Package() + } + + f := frame.NewFrame(Version, filename, importerService, pkgName) ctx := context.WithValue(context.TODO(), ImporterKey, importerService) From c314e1e0a1660333661578125818b8bcfb04529a Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 7 Feb 2022 10:43:32 +0300 Subject: [PATCH 254/293] refactor: fixed rest client generate --- v3/internal/plugin/gokit/generator/rest_client.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 94bbb689..06f2b5b1 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -39,7 +39,6 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { ) importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") fmtPkg := importer.Import("fmt", "fmt") contextPkg := importer.Import("context", "context") urlPkg := importer.Import("url", "net/url") @@ -150,7 +149,9 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { methodHeaderVars := make(map[string]string, len(mopt.RESTHeaderVars.Value)) for i := 0; i < len(mopt.RESTHeaderVars.Value); i += 2 { - methodHeaderVars[mopt.RESTHeaderVars.Value[i]] = mopt.RESTHeaderVars.Value[i+1] + headerName := mopt.RESTHeaderVars.Value[i] + fieldName := mopt.RESTHeaderVars.Value[i+1] + methodHeaderVars[fieldName] = headerName } for _, p := range m.Sig.Params { @@ -330,7 +331,6 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } } } - for _, p := range headerVars { name := p.Name.Value + "Str" g.w.WriteFormatType(importer, name, "req."+strcase.ToCamel(p.Name.Value), p) @@ -395,8 +395,9 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { }) } - g.w.W("if len(b) == 0 {\nreturn nil, nil\n}\n") + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + g.w.W("if len(b) == 0 {\nreturn nil, nil\n}\n") g.w.W("err = %s.Unmarshal(b, &resp)\n", jsonPkg) g.w.W("if err != nil {\n") g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, responseType) From 698b41cbfdfc520a27136d9f8f4293f1ee65f8a7 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 7 Feb 2022 10:44:00 +0300 Subject: [PATCH 255/293] refactor: fixed rest client output option --- v3/internal/plugin/gokit/plugin.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 3adccb1f..6b30866d 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -229,8 +229,12 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } if goClientEnable { + var pkg string + output := p.config.ClientOutput.Take() - pkg := strcase.ToSnake(filepath.Base(output)) + if output != "" { + pkg = strcase.ToSnake(filepath.Base(output)) + } result = append(result, &generator.Helpers{ From 883819ea4fc5c1ca754f8e1ec8df2668269746a5 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 7 Feb 2022 16:11:10 +0300 Subject: [PATCH 256/293] refactor: fixed open api header --- v3/internal/plugin/gokit/generator/openapi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index e526b225..c75c8dc5 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -667,7 +667,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o for _, headerVar := range headerVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "header", - Name: headerVar.p.Name.Lower(), + Name: headerVar.value, Description: headerVar.p.Comment, Required: headerVar.required, Schema: g.schemaByType(headerVar.p.Type), From 512543a08d583c67055cb1d8f2f8571ce24d38ae Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 9 Feb 2022 09:53:13 +0300 Subject: [PATCH 257/293] refactor: fixed generation of REST method parameter when it is a slice of structures and added RESTWrapRequest option --- v3/internal/plugin/gokit/config/config.go | 1 + v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/rest_client.go | 19 ++++++++++++++++--- .../plugin/gokit/generator/rest_server.go | 2 ++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 73b43492..92598945 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -64,6 +64,7 @@ type MethodOptions struct { LoggingContext []LoggingContext `swipe:"option"` RESTMethod option.ExprStringValue `swipe:"option"` RESTWrapResponse option.StringValue `swipe:"option"` + RESTWrapRequest option.StringValue `swipe:"option"` RESTPath option.ExprStringValue `swipe:"option"` RESTMultipartMaxMemory option.Int64Value `swipe:"option"` RESTHeaderVars option.SliceStringValue `swipe:"option"` diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 9ba29f69..28ea722d 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 06f2b5b1..d2b7b500 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -185,9 +185,9 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } else { g.w.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) - if paramsLen > 0 { - nameRequest := NameRequest(m, iface) + nameRequest := NameRequest(m, iface) + if paramsLen > 0 { g.w.W("req, ok := request.(%s)\n", nameRequest) g.w.W("if !ok {\n") g.w.W("return %s.Errorf(\"couldn't assert request as %s, got %%T\", request)\n", fmtPkg, nameRequest) @@ -273,7 +273,20 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { case "json": jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") - g.w.W("data, err := %s.Marshal(req)\n", jsonPkg) + + g.w.W("var reqData interface{}\n") + + if wrapRequest := mopt.RESTWrapRequest.Take(); wrapRequest != "" { + reqData, structPath := wrapDataClient(stdstrings.Split(wrapRequest, "."), nameRequest) + + g.w.W("var wrapReq %s\n", reqData) + g.w.W("wrapReq.%s = req\n", structPath) + g.w.W("reqData = wrapReq\n") + } else { + g.w.W("reqData = request\n") + } + + g.w.W("data, err := %s.Marshal(reqData)\n", jsonPkg) g.w.W("if err != nil {\n") g.w.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) g.w.W("}\n") diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 3b08e1db..b3ebc149 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -363,6 +363,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if s, ok := paramVars[0].Type.(*option.SliceType); ok { if b, ok := s.Value.(*option.BasicType); ok && b.IsByte() { g.w.W("req%s = data\n", "."+paramVars[0].Name.Upper()) + } else { + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } } else { g.w.W("err = %s.Unmarshal(data, &req%s)\n", jsonPkg, "."+paramVars[0].Name.Upper()) From 6d2d6418b51bee712eb7fb62de722279f8420edb Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 18 Feb 2022 23:15:55 +0300 Subject: [PATCH 258/293] refactor: added set OPTIONS --- v3/internal/plugin/gokit/generator/rest_server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index b3ebc149..c1b9abed 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -243,7 +243,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W(", ") } else { - g.w.W("r.Methods(") + g.w.W("r.Methods(%s,", strconv.Quote("OPTIONS")) if mopt.RESTMethod.Take() != "" { g.w.W(strconv.Quote(mopt.RESTMethod.Take())) } else { @@ -367,7 +367,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } } else { - g.w.W("err = %s.Unmarshal(data, &req%s)\n", jsonPkg, "."+paramVars[0].Name.Upper()) + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } } else { g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) From d378e720a02ab0733c28e0eba1b8431b6abecf54 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 23 Feb 2022 18:01:37 +0300 Subject: [PATCH 259/293] refactor: added error level control for logging generation --- v3/internal/plugin/gokit/generator/logging.go | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index b86470d0..db71a1c5 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -21,12 +21,23 @@ type Logging struct { func (g *Logging) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + loggerPkg := importer.Import("log", "github.com/go-kit/kit/log") + levelPkg := importer.Import("level", "github.com/go-kit/kit/log/level") + + g.w.W("type errLevel interface {\n\tLevel() string\n}\n\n") + + g.w.W("func levelLogger(e errLevel, logger %[1]s.Logger) %[1]s.Logger {\n", loggerPkg) + g.w.W("switch e.Level() {\n") + g.w.W("default:\nreturn %s.Error(logger)\n", levelPkg) + g.w.W("case \"debug\":\nreturn %s.Debug(logger)\n", levelPkg) + g.w.W("case \"info\":\nreturn %s.Info(logger)\n", levelPkg) + g.w.W("case \"warn\":\nreturn %s.Warn(logger)\n", levelPkg) + g.w.W("}\n") + g.w.W("}\n\n") + for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - loggerPkg := importer.Import("log", "github.com/go-kit/kit/log") - levelPkg := importer.Import("level", "github.com/go-kit/kit/log/level") - ifaceTypeName := NameInterface(iface) middlewareNameType := NameLoggingMiddleware(iface) middlewareFuncName := fmt.Sprintf("Logging%sMiddleware", UcNameWithAppPrefix(iface)) @@ -97,10 +108,13 @@ func (g *Logging) Generate(ctx context.Context) []byte { g.w.W("}\n") } } - g.w.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, methodName, timePkg) if resultErr != nil { - g.w.W("if %[2]s != nil {\nlogger = %[1]s.Error(logger)\n} else {\nlogger = %[1]s.Debug(logger)\n}\n", levelPkg, resultErr.Name) + g.w.W("if %s != nil {\n", resultErr.Name) + g.w.W("if e, ok := %s.(errLevel); ok {\n", resultErr.Name) + g.w.W("logger = levelLogger(e, logger)\n") + g.w.W("} else {\nlogger = %s.Error(logger)\n}\n", levelPkg) + g.w.W("} else {\nlogger = %s.Debug(logger)\n}\n", levelPkg) } g.w.W("_ = logger.Log(%s)\n", strings.Join(logParams, ",")) }) @@ -129,7 +143,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { } g.w.W(")\n") - g.w.W("return") + g.w.W("return\n") g.w.W("}\n") } From e0cc2b062cd85f586a90f1d2718dcaf257236341 Mon Sep 17 00:00:00 2001 From: vitaly Date: Thu, 3 Mar 2022 13:46:02 +0300 Subject: [PATCH 260/293] refactor: added the ability to add labels for metrics from the context --- v3/internal/plugin/gokit/config/config.go | 6 +++ v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/instrumenting.go | 50 ++++++++++++++++--- v3/internal/plugin/gokit/plugin.go | 1 + 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 92598945..f6333109 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -47,6 +47,11 @@ type LoggingContext struct { Name string } +type InstrumentingLabel struct { + Key interface{} + Name string +} + type RESTMultipart struct { MaxMemory int64 } @@ -147,6 +152,7 @@ type Config struct { MethodOptions []MethodOption MethodDefaultOptions MethodOptions ServerErrorEncoder option.FuncTypeValue + InstrumentingLabels []InstrumentingLabel `swipe:"option"` // non options params LoggingEnable bool `mapstructure:"-"` diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 28ea722d..5247e3a3 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// Labels ...\n// @type:\"repeat\"\nfunc Labels(key interface{}, name string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index 39b56e1c..c86a4846 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -15,6 +15,7 @@ type Instrumenting struct { w writer.GoWriter Interfaces []*config.Interface MethodOptions map[string]config.MethodOptions + Labels []config.InstrumentingLabel } func (g *Instrumenting) Generate(ctx context.Context) []byte { @@ -64,16 +65,38 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { []string{"begin " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + + g.w.W("requestCount := s.opts.requestCount.With(\"method\", \"%s\")\n", methodName) + g.w.W("requestLatency := s.opts.requestLatency.With(\"method\", \"%s\")\n", methodName) + + if len(g.Labels) > 0 { + g.w.W("requestCount = requestCount.With(") + for i, l := range g.Labels { + if i > 0 { + g.w.W(", ") + } + g.w.W("%s, ctx.Value(%s).(string)", strconv.Quote(l.Name), swipe.TypeString(l.Key, false, importer)) + } + g.w.W(")\n") + g.w.W("requestLatency = requestLatency.With(") + for i, l := range g.Labels { + if i > 0 { + g.w.W(", ") + } + g.w.W("%s, ctx.Value(%s).(string)", strconv.Quote(l.Name), swipe.TypeString(l.Key, false, importer)) + } + g.w.W(")\n") + } e := Error(m.Sig.Results) if e != nil { - g.w.W("if %[1]s != nil {\ns.opts.requestCount.With(\"method\", \"%[2]s\", \"err\", %[1]s.Error()).Add(1)\n} else {\n", e.Name, methodName) + g.w.W("if %[1]s != nil {\nrequestCount.With(\"err\", %[1]s.Error()).Add(1)\n} else {\n", e.Name) g.w.W("") } - g.w.W("s.opts.requestCount.With(\"method\", \"%s\", \"err\", \"\").Add(1)\n", methodName) + g.w.W("requestCount.With(\"err\", \"\").Add(1)\n") if e != nil { g.w.W("}\n") } - g.w.W("s.opts.requestLatency.With(\"method\", \"%s\").Observe(%s.Since(begin).Seconds())\n", methodName, timePkg) + g.w.W("requestLatency.Observe(%s.Since(begin).Seconds())\n", timePkg) }, ) } @@ -117,7 +140,15 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("Subsystem: i.opts.subsystem,\n") g.w.W("Name: %s,\n", strconv.Quote("request_count")) g.w.W("Help: %s,\n", strconv.Quote("Number of requests received.")) - g.w.W("}, []string{\"method\", \"err\"})\n") + + g.w.W("}, []string{\"method\", \"err\"") + if len(g.Labels) > 0 { + for _, l := range g.Labels { + g.w.W(", %s", strconv.Quote(l.Name)) + } + } + g.w.W("})\n") + g.w.W("\n}\n") g.w.W("if i.opts.requestLatency == nil {\n") @@ -126,9 +157,16 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("Subsystem: i.opts.subsystem,\n") g.w.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) g.w.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) - g.w.W("}, []string{\"method\"})\n") - g.w.W("\n}\n") + g.w.W("}, []string{\"method\"") + if len(g.Labels) > 0 { + for _, l := range g.Labels { + g.w.W(", %s", strconv.Quote(l.Name)) + } + } + + g.w.W("})\n") + g.w.W("\n}\n") g.w.W("return i\n}\n}\n") } } diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 6b30866d..a720d228 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -172,6 +172,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { result = append(result, &generator.Instrumenting{ Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, + Labels: p.config.InstrumentingLabels, }) } if p.config.OpenapiEnable != nil { From 33592014c7594f5c3733f3832c91c11f120d08f8 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 22 Mar 2022 00:49:17 +0300 Subject: [PATCH 261/293] refactor: change the package github.com/go-kit/kit/log to github.com/go-kit/log --- v3/internal/plugin/gokit/generator/jsonrpc_server.go | 2 +- v3/internal/plugin/gokit/generator/logging.go | 4 ++-- v3/internal/plugin/gokit/generator/rest_server.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index 2f473d66..edd3e67b 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -136,7 +136,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { } if external { - g.w.W(", logger %s.Logger", importer.Import("log", "github.com/go-kit/kit/log")) + g.w.W(", logger %s.Logger", importer.Import("log", "github.com/go-kit/log")) } g.w.W(", options ...ServerOption") diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index db71a1c5..13f9afd0 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -21,8 +21,8 @@ type Logging struct { func (g *Logging) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - loggerPkg := importer.Import("log", "github.com/go-kit/kit/log") - levelPkg := importer.Import("level", "github.com/go-kit/kit/log/level") + loggerPkg := importer.Import("log", "github.com/go-kit/log") + levelPkg := importer.Import("level", "github.com/go-kit/log/level") g.w.W("type errLevel interface {\n\tLevel() string\n}\n\n") diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index c1b9abed..eeba8130 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -68,7 +68,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } if external { - g.w.W(", logger %s.Logger", importer.Import("log", "github.com/go-kit/kit/log")) + g.w.W(", logger %s.Logger", importer.Import("log", "github.com/go-kit/log")) } g.w.W(", options ...ServerOption") From 2fccd3e35efe5d829caffe89c7d4afb595e0ef1c Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:01:34 +0300 Subject: [PATCH 262/293] refactor: internal changes and improvements --- .github/workflows/goreleaser.yml | 27 + v3/.gitignore | 2 + v3/.goreleaser.yaml | 30 + v3/go.mod | 6 +- v3/go.sum | 6 +- v3/internal/convert/convert_builder.go | 274 +++++++++ v3/internal/format/format_builder.go | 114 ++++ v3/internal/plugin/config/config.go | 13 +- v3/internal/plugin/echo/config/config.go | 37 ++ v3/internal/plugin/echo/config/config_gen.go | 5 + v3/internal/plugin/echo/generator/routes.go | 199 +++++++ v3/internal/plugin/echo/generator/utils.go | 27 + v3/internal/plugin/echo/plugin.go | 55 ++ v3/internal/plugin/es/config/config.go | 13 - v3/internal/plugin/es/config/config_gen.go | 5 - v3/internal/plugin/es/generator/update.go | 26 - v3/internal/plugin/es/plugin.go | 43 -- v3/internal/plugin/gokit/config/config.go | 15 +- v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/client_helpers.go | 210 +++++++ .../plugin/gokit/generator/client_struct.go | 65 +-- .../plugin/gokit/generator/endpoint.go | 18 +- v3/internal/plugin/gokit/generator/helpers.go | 210 ------- .../plugin/gokit/generator/instrumenting.go | 23 +- .../plugin/gokit/generator/interface.go | 2 +- .../plugin/gokit/generator/jsonrpc_doc.go | 8 +- .../gokit/generator/jsonrpc_js_client.go | 10 +- .../plugin/gokit/generator/jsonrpc_server.go | 61 +- v3/internal/plugin/gokit/generator/logging.go | 40 +- .../gokit/generator/middleware_chain.go | 48 ++ v3/internal/plugin/gokit/generator/openapi.go | 70 ++- .../plugin/gokit/generator/rest_client.go | 521 +++++++++-------- .../plugin/gokit/generator/rest_server.go | 424 ++++++++------ .../plugin/gokit/generator/server_helpers.go | 127 ++++ v3/internal/plugin/gokit/generator/utils.go | 104 +--- v3/internal/plugin/gokit/plugin.go | 72 +-- v3/internal/plugin/gokit/utils.go | 115 ++-- v3/internal/plugin/plugin.go | 60 ++ v3/main.go | 2 +- v3/writer/golang_writer.go | 541 +++++++++--------- 40 files changed, 2252 insertions(+), 1378 deletions(-) create mode 100644 .github/workflows/goreleaser.yml create mode 100644 v3/.gitignore create mode 100644 v3/.goreleaser.yaml create mode 100644 v3/internal/convert/convert_builder.go create mode 100644 v3/internal/format/format_builder.go create mode 100644 v3/internal/plugin/echo/config/config.go create mode 100644 v3/internal/plugin/echo/config/config_gen.go create mode 100644 v3/internal/plugin/echo/generator/routes.go create mode 100644 v3/internal/plugin/echo/generator/utils.go create mode 100644 v3/internal/plugin/echo/plugin.go delete mode 100644 v3/internal/plugin/es/config/config.go delete mode 100644 v3/internal/plugin/es/config/config_gen.go delete mode 100644 v3/internal/plugin/es/generator/update.go delete mode 100644 v3/internal/plugin/es/plugin.go create mode 100644 v3/internal/plugin/gokit/generator/client_helpers.go delete mode 100644 v3/internal/plugin/gokit/generator/helpers.go create mode 100644 v3/internal/plugin/gokit/generator/middleware_chain.go create mode 100644 v3/internal/plugin/gokit/generator/server_helpers.go create mode 100644 v3/internal/plugin/plugin.go diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml new file mode 100644 index 00000000..988d2a72 --- /dev/null +++ b/.github/workflows/goreleaser.yml @@ -0,0 +1,27 @@ +name: goreleaser + +on: + push: + tags: + - '*' + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.16 + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + distribution: goreleaser + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/v3/.gitignore b/v3/.gitignore new file mode 100644 index 00000000..cde01232 --- /dev/null +++ b/v3/.gitignore @@ -0,0 +1,2 @@ + +dist/ diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml new file mode 100644 index 00000000..5a903e69 --- /dev/null +++ b/v3/.goreleaser.yaml @@ -0,0 +1,30 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com +before: + hooks: + - go mod download +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + main: cmd/swipe/main.go +archives: + - replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ incpatch .Version }}-next" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' diff --git a/v3/go.mod b/v3/go.mod index a6e7cbd5..84285017 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -6,11 +6,11 @@ require ( github.com/555f/curlbuilder v1.0.0 github.com/fatih/structtag v1.2.0 github.com/gertd/go-pluralize v0.1.7 - github.com/google/uuid v1.1.2 // indirect - github.com/mitchellh/mapstructure v1.4.1 + github.com/google/uuid v1.1.2 + github.com/mitchellh/mapstructure v1.4.2 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/spf13/cobra v1.2.0 github.com/spf13/viper v1.8.1 github.com/swipe-io/strcase v0.1.5 - golang.org/x/tools v0.1.2 + golang.org/x/tools v0.1.5 ) diff --git a/v3/go.sum b/v3/go.sum index 9e04d418..552fb50d 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -196,8 +196,9 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= +github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -472,8 +473,9 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/v3/internal/convert/convert_builder.go b/v3/internal/convert/convert_builder.go new file mode 100644 index 00000000..ab07ea92 --- /dev/null +++ b/v3/internal/convert/convert_builder.go @@ -0,0 +1,274 @@ +package convert + +import ( + "fmt" + "io" + "strconv" + + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Builder struct { + importer swipe.Importer + declareErr bool + fieldName option.String + fieldType interface{} + assignOp string + assignVar string + valueVar string + errorReturn string + w writer.GoWriter +} + +func (b *Builder) SetDeclareErr(declareErr bool) *Builder { + b.declareErr = declareErr + return b +} + +func (b *Builder) SetAssignOp(assignOp string) { + b.assignOp = assignOp +} + +func (b *Builder) SetFieldType(fieldType interface{}) *Builder { + b.fieldType = fieldType + return b +} + +func (b *Builder) SetFieldName(fieldName option.String) *Builder { + b.fieldName = fieldName + return b +} + +func (b *Builder) SetErrorReturn(errorReturn string) *Builder { + b.errorReturn = errorReturn + return b +} + +func (b *Builder) SetAssignVar(assignVar string) *Builder { + b.assignVar = assignVar + return b +} + +func (b *Builder) SetValueVar(valueVar string) *Builder { + b.valueVar = valueVar + return b +} + +func (b *Builder) Write(w io.Writer) { + if b.fieldType == nil { + panic("field type must not be nil") + } + if b.assignOp == "" { + b.assignOp = "=" + } + switch t := b.fieldType.(type) { + case *option.BasicType: + b.writeBasicType(t) + case *option.MapType: + b.writeMapType(t) + case *option.SliceType: + b.writeSliceType(t) + case *option.ArrayType: + b.writeArrayType(t) + case *option.NamedType: + b.writeNameType(t) + } + _, _ = fmt.Fprint(w, b.w.String()) +} + +func (b *Builder) convertFuncName(t *option.BasicType) string { + if t.IsAnyInt() { + return "ParseInt(%s, 10, " + t.BitSize() + ")" + } + if t.IsAnyUint() { + return "ParseUint(%s, 10, " + t.BitSize() + ")" + } + if t.IsAnyFloat() { + return "ParseFloat(%s, " + t.BitSize() + ")" + } + if t.IsBool() { + return "ParseBool(%s)" + } + panic(fmt.Sprintf("convert unknown basic type: %v", t)) +} + +func (b *Builder) writeBasicType(t *option.BasicType) { + if t.IsString() { + if t.IsPointer { + tmpVar := b.fieldName.Lower() + "Str" + b.w.W("%s := %s\n", tmpVar, b.valueVar) + b.valueVar = "&" + tmpVar + } + b.w.W("%s%s%s\n", b.assignVar, b.assignOp, b.valueVar) + return + } + strconvPkg := b.importer.Import("strconv", "strconv") + funcName := b.convertFuncName(t) + + var tmpVar string + if t.Name != "int64" || t.IsPointer { + tmpVar = b.fieldName.Lower() + "Tmp" + } + + if b.declareErr && tmpVar == "" { + b.w.W("var err error\n") + } + + if tmpVar != "" { + b.w.W("%s, err := ", tmpVar) + } else { + b.w.W("%s, err %s ", b.assignVar, b.assignOp) + } + + b.w.W("%s.%s\n", strconvPkg, fmt.Sprintf(funcName, b.valueVar)) + b.w.W("if err != nil {\n %s\n}\n", b.errorReturn) + + if tmpVar != "" { + if t.Name != "int64" { + tmpVar = t.Name + "(" + tmpVar + ")" + } + if t.IsPointer { + newTmpVar := b.fieldName.Lower() + b.w.W("%s := %s\n", newTmpVar, tmpVar) + tmpVar = "&" + newTmpVar + } + b.w.W("%s %s %s\n", b.assignVar, b.assignOp, tmpVar) + } +} + +func (b *Builder) writeMapType(t *option.MapType) { + stringsPkg := b.importer.Import("strings", "strings") + if k, ok := t.Key.(*option.BasicType); ok && k.IsString() { + if v, ok := t.Value.(*option.BasicType); ok { + tmpID := b.fieldName.Lower() + "Parts" + + b.w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, b.valueVar) + b.w.W("%s = make(%s, len(%s))\n", b.assignVar, swipe.TypeString(t, false, b.importer), tmpID) + if v.IsNumeric() { + b.w.W("for _, s := range %s {\n", tmpID) + b.w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) + b.w.W("if len(kv) == 2 {\n") + + NewBuilder(b.importer). + SetDeclareErr(b.declareErr). + SetAssignVar(b.assignVar + "[kv[0]]"). + SetValueVar("kv[1]"). + SetFieldName(b.fieldName). + SetFieldType(v). + SetErrorReturn(b.errorReturn). + Write(&b.w) + + b.w.W("}\n") + b.w.W("}\n") + } else { + b.w.W("for _, s := range %s {\n", tmpID) + b.w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) + b.w.W("if len(kv) == 2 {\n") + b.w.W("%s[kv[0]] = kv[1]\n", b.assignVar) + b.w.W("}\n") + b.w.W("}\n") + } + } + } +} + +func (b *Builder) writeSliceType(t *option.SliceType) { + stringsPkg := b.importer.Import("strings", "strings") + switch v := t.Value.(type) { + case *option.BasicType: + if v.IsNumeric() { + tmpID := b.fieldName.Lower() + "Parts" + b.w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, b.valueVar) + + ptrPrefix := "" + if v.IsPointer { + ptrPrefix = "*" + } + + b.w.W("%s = make([]%s%s, len(%s))\n", b.assignVar, ptrPrefix, v.Name, tmpID) + b.w.W("for i, s := range %s {\n", tmpID) + + NewBuilder(b.importer). + SetDeclareErr(b.declareErr). + SetAssignVar(b.assignVar + "[i]"). + SetValueVar("s"). + SetFieldName(b.fieldName). + SetFieldType(v). + SetErrorReturn(b.errorReturn). + Write(&b.w) + + b.w.W("}\n") + } else { + b.w.W("%s = %s.Split(%s, \",\")\n", b.assignVar, stringsPkg, b.valueVar) + } + } +} + +func (b *Builder) writeArrayType(t *option.ArrayType) { + stringsPkg := b.importer.Import("strings", "strings") + switch v := t.Value.(type) { + case *option.BasicType: + if v.IsNumeric() { + tmpID := b.fieldName.Lower() + "Parts" + b.w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, b.valueVar) + b.w.W("if len(%s) > len(%s) {\n", tmpID, b.assignVar) + b.w.W("panic(\"%s\")\n", "array length must be less or equal"+strconv.FormatInt(t.Len, 10)) + b.w.W("} else {\n") + + b.w.W("for i, s := range %s {\n", tmpID) + + NewBuilder(b.importer). + SetDeclareErr(b.declareErr). + SetAssignVar(b.assignVar + "[i]"). + SetValueVar("s"). + SetFieldType(v). + SetErrorReturn(b.errorReturn). + Write(&b.w) + + b.w.W("}\n") + b.w.W("}\n") + } else { + b.w.W("%s = %s.Split(%s, \",\")\n", b.assignVar, stringsPkg, b.valueVar) + } + } +} + +func (b *Builder) writeNameType(t *option.NamedType) { + if b.declareErr { + b.w.W("var err error\n") + } + switch t.Pkg.Path { + case "net/url": + switch t.Name.Value { + case "URL": + urlPkg := b.importer.Import("url", "net/url") + b.w.W("%s, err %s %s.Parse(%s)\n", b.assignVar, b.assignOp, urlPkg, b.valueVar) + } + case "github.com/satori/uuid", "github.com/google/uuid": + if t.Name.Value == "UUID" { + uuidPkg := b.importer.Import(t.Pkg.Name, t.Pkg.Path) + switch t.Pkg.Path { + case "github.com/google/uuid": + b.w.W("%s, err %s %s.Parse(%s)\n", b.assignVar, b.assignOp, uuidPkg, b.valueVar) + case "github.com/satori/uuid": + b.w.W("%s, err %s %s.FromString(%s)\n", b.assignVar, b.assignOp, uuidPkg, b.valueVar) + } + } + case "time": + switch t.Name.Value { + case "Time": + timePkg := b.importer.Import("time", "time") + b.w.W("%[1]s, err %[4]s %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", b.assignVar, timePkg, b.valueVar, b.assignOp) + case "Duration": + timePkg := b.importer.Import("time", "time") + b.w.W("%s, err %s %s.ParseDuration(%s)\n", b.assignVar, b.assignOp, timePkg, b.valueVar) + } + } + b.w.W("if err != nil {\n %s\n}\n", b.errorReturn) +} + +func NewBuilder(importer swipe.Importer) *Builder { + return &Builder{importer: importer} +} diff --git a/v3/internal/format/format_builder.go b/v3/internal/format/format_builder.go new file mode 100644 index 00000000..3161b32b --- /dev/null +++ b/v3/internal/format/format_builder.go @@ -0,0 +1,114 @@ +package format + +import ( + "fmt" + "io" + + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Builder struct { + importer swipe.Importer + fieldType interface{} + assignVar string + valueVar string + w writer.GoWriter +} + +func (b *Builder) SetFieldType(fieldType interface{}) *Builder { + b.fieldType = fieldType + return b +} + +func (b *Builder) SetAssignVar(assignVar string) *Builder { + b.assignVar = assignVar + return b +} + +func (b *Builder) SetValueVar(valueVar string) *Builder { + b.valueVar = valueVar + return b +} + +func (b *Builder) Write(w io.Writer) { + if b.fieldType == nil { + panic("field type must not be nil") + } + switch t := b.fieldType.(type) { + case *option.BasicType: + b.writeBasicType(t) + case *option.SliceType: + b.writeSliceType(t) + case *option.NamedType: + b.writeNameType(t) + } + _, _ = fmt.Fprint(w, b.w.String()) +} + +func (b *Builder) formatFuncName(t *option.BasicType) string { + if t.IsAnyInt() { + return "FormatInt(int64(%s), 10)" + } + if t.IsAnyUint() { + return "FormatUint(uint64(%s), 10)" + } + if t.IsAnyFloat() { + return "FormatFloat(float64(%s), 'g', -1, " + t.BitSize() + ")" + } + if t.IsBool() { + return "FormatBool(%s)" + } + return "" +} + +func (b *Builder) writeBasicType(t *option.BasicType) { + funcName := b.formatFuncName(t) + if funcName != "" { + valueVar := b.valueVar + strconvPkg := b.importer.Import("strconv", "strconv") + if t.IsPointer { + valueVar = "*" + valueVar + } + b.w.W("%s := %s.%s\n", b.assignVar, strconvPkg, fmt.Sprintf(funcName, valueVar)) + return + } + b.w.W("%s := %s\n", b.assignVar, b.valueVar) +} + +func (b *Builder) writeSliceType(t *option.SliceType) { + if bt, ok := t.Value.(*option.BasicType); ok { + b.w.W("var %s string\n", b.assignVar) + b.w.W("for i, s := range %s {\n", b.valueVar) + b.w.W("if i > 0 {\n %s += \",\"\n}\n", b.assignVar) + NewBuilder(b.importer). + SetAssignVar("v"). + SetValueVar("s"). + SetFieldType(bt). + Write(&b.w) + b.w.W("%s += v\n", b.assignVar) + b.w.W("}\n") + } +} + +func (b *Builder) writeNameType(t *option.NamedType) { + switch t.Pkg.Path { + case "github.com/satori/uuid", "github.com/google/uuid": + if t.Name.Value == "UUID" { + b.w.W("%s := %s.String() \n", b.assignVar, b.valueVar) + } + case "time": + switch t.Name.Value { + case "Duration": + b.w.W("%s := %s.String()\n", b.assignVar, b.valueVar) + case "Time": + timePkg := b.importer.Import("time", "time") + b.w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", b.assignVar, timePkg, b.valueVar) + } + } +} + +func NewBuilder(importer swipe.Importer) *Builder { + return &Builder{importer: importer} +} diff --git a/v3/internal/plugin/config/config.go b/v3/internal/plugin/config/config.go index cc614d99..0bf2f846 100644 --- a/v3/internal/plugin/config/config.go +++ b/v3/internal/plugin/config/config.go @@ -5,6 +5,8 @@ import ( "fmt" "strconv" + "github.com/swipe-io/swipe/v3/internal/convert" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -117,10 +119,19 @@ func (g *Generator) Filename() string { func (g *Generator) writeEnv(importer swipe.Importer, f *option.VarType, opts fldOpts) { tmpVar := strcase.ToLowerCamel(opts.fieldPath) + "Tmp" pkgOS := importer.Import("os", "os") + pkgError := importer.Import("errors", "errors") g.w.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, pkgOS, strconv.Quote(opts.name)) g.w.W("if ok {\n") - g.w.WriteConvertType(importer, "cfg."+opts.fieldPath, tmpVar, f, nil, "errs", false, "convert "+opts.name+" error") + convert.NewBuilder(importer). + SetDeclareErr(true). + SetAssignVar("cfg." + opts.fieldPath). + SetValueVar(tmpVar). + SetFieldName(f.Name). + SetFieldType(f.Type). + SetErrorReturn(fmt.Sprintf("errs = append(errs, %s.New(%s))", pkgError, strconv.Quote("convert "+opts.name+" error"))). + Write(&g.w) + g.writeCheckZero(importer, f, opts) g.w.W("}") diff --git a/v3/internal/plugin/echo/config/config.go b/v3/internal/plugin/echo/config/config.go new file mode 100644 index 00000000..c5dc5d91 --- /dev/null +++ b/v3/internal/plugin/echo/config/config.go @@ -0,0 +1,37 @@ +package config + +import "github.com/swipe-io/swipe/v3/option" + +type Interface struct { + Named *option.NamedType `mapstructure:"iface"` + Namespace string `mapstructure:"ns"` + ClientName option.StringValue `swipe:"option"` +} + +type MethodOption struct { + Signature *option.NamedType + MethodOptions `mapstructure:",squash"` +} + +type MethodOptions struct { + RESTMethod option.ExprStringValue `swipe:"option"` + RESTWrapResponse option.StringValue `swipe:"option"` + RESTWrapRequest option.StringValue `swipe:"option"` + RESTPath option.ExprStringValue `swipe:"option"` + RESTMultipartMaxMemory option.Int64Value `swipe:"option"` + RESTHeaderVars option.SliceStringValue `swipe:"option"` + RESTQueryVars option.SliceStringValue `swipe:"option"` + RESTQueryValues option.SliceStringValue `swipe:"option"` + RESTPathVars map[string]string `swipe:"option"` + RESTBodyType option.StringValue `swipe:"option"` +} + +// Config +// @swipe:"Echo" +type Config struct { + Interfaces []*Interface `mapstructure:"Interface"` + MethodOptions []MethodOption + MethodDefaultOptions MethodOptions + + MethodOptionsMap map[string]MethodOptions `mapstructure:"-"` +} diff --git a/v3/internal/plugin/echo/config/config_gen.go b/v3/internal/plugin/echo/config/config_gen.go new file mode 100644 index 00000000..9ca44d28 --- /dev/null +++ b/v3/internal/plugin/echo/config/config_gen.go @@ -0,0 +1,5 @@ +package config + +func (*Config) Options() []byte { + return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") +} diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go new file mode 100644 index 00000000..7652ae96 --- /dev/null +++ b/v3/internal/plugin/echo/generator/routes.go @@ -0,0 +1,199 @@ +package generator + +import ( + "context" + "fmt" + "path" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/internal/convert" + + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/option" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type RoutesGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions +} + +func (g *RoutesGenerator) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + echoPkg := importer.Import("echo", "github.com/labstack/echo") + + g.w.W("func SetupRoutes(e *%s.Echo,", echoPkg) + + for i, iface := range g.Interfaces { + ifacePkg := importer.Import(iface.Named.Pkg.Name, iface.Named.Pkg.Path) + paramName := iface.Named.Name.Lower() + g.w.W("%s %s.%s", paramName, ifacePkg, iface.Named.Name) + if i > 0 { + g.w.W(",") + } + } + + g.w.W(") {\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + paramName := iface.Named.Name.Lower() + + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + bodyType := mopt.RESTBodyType.Take() + if bodyType == "" { + bodyType = "json" + } + + queryVars := make([]plugin.VarType, 0, len(mopt.RESTQueryVars.Value)) + headerVars := make([]plugin.VarType, 0, len(mopt.RESTHeaderVars.Value)) + pathVars := make([]plugin.VarType, 0, len(mopt.RESTPathVars)) + paramVars := make([]*option.VarType, 0, len(m.Sig.Params)) + + for _, p := range m.Sig.Params { + if plugin.IsContext(p) { + continue + } + if v, ok := plugin.FindParam(p, mopt.RESTQueryVars.Value); ok { + queryVars = append(queryVars, v) + continue + } + if v, ok := plugin.FindParam(p, mopt.RESTHeaderVars.Value); ok { + headerVars = append(headerVars, v) + continue + } + if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { + pathVars = append(pathVars, plugin.VarType{ + Param: p, + Value: regexp, + }) + continue + } + paramVars = append(paramVars, p) + } + + var urlPath string + if mopt.RESTPath.IsValid() { + urlPath = mopt.RESTPath.Take() + } else { + urlPath = strcase.ToKebab(m.Name.Value) + } + if iface.Namespace != "" { + urlPath = path.Join(iface.Namespace, urlPath) + } + if !stdstrings.HasPrefix(urlPath, "/") { + urlPath = "/" + urlPath + } + httpMethod := "GET" + if mopt.RESTMethod.Take() != "" { + httpMethod = stdstrings.ToUpper(mopt.RESTMethod.Take()) + } + g.w.W("e.%s(%s, func(ctx %s.Context) (err error) {\n", httpMethod, strconv.Quote(urlPath), echoPkg) + + var paramValues []string + + g.w.W("r := ctx.Request()\n") + + if len(m.Sig.Params) > 0 { + g.w.W("var req struct {\n") + for _, p := range m.Sig.Params { + g.w.W("%[1]s %[2]s `json:\"%[1]s\"`\n", p.Name.Lower(), swipe.TypeString(p.Type, true, importer)) + paramValues = append(paramValues, "req."+p.Name.Lower()) + } + g.w.W("}\n") + } + + if len(paramVars) > 0 { + switch stdstrings.ToUpper(mopt.RESTMethod.Take()) { + case "POST", "PUT", "PATCH": + switch bodyType { + case "json": + jsonPkg := importer.Import("json", "encoding/json") + fmtPkg := importer.Import("fmt", "fmt") + pkgIO := importer.Import("io", "io") + + g.w.W("var data []byte\n") + + ioutilPkg := importer.Import("ioutil", "io/ioutil") + g.w.W("data, err := %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, m.Name) + }) + + if len(paramVars) == 1 { + if s, ok := paramVars[0].Type.(*option.SliceType); ok { + if b, ok := s.Value.(*option.BasicType); ok && b.IsByte() { + g.w.W("req%s = data\n", "."+paramVars[0].Name.Upper()) + } else { + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) + } + } else { + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) + } + } else { + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) + } + g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) + g.w.W("return %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, m.Name) + g.w.W("}\n") + } + } + } + + for _, headerVar := range headerVars { + convert.NewBuilder(importer). + SetFieldName(headerVar.Param.Name). + SetFieldType(headerVar.Param.Type). + SetAssignVar("req." + headerVar.Param.Name.Lower()). + SetValueVar("r.Header.Get(" + strconv.Quote(headerVar.Value) + ")"). + SetErrorReturn(fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+headerVar.Param.Name.Lower())). + Write(&g.w) + + //valueID := "r.Header.Get(" + strconv.Quote(headerVar.Value) + ")" + //g.w.WriteConvertType(importer, "req."+headerVar.Param.Name.Lower(), valueID, headerVar.Param, []string{"nil"}, "", false, "") + } + + //if len(mopt.RESTQueryVars.Value) > 0 { + // g.w.W("q := r.URL.Query()\n") + //} + + //for _, queryVar := range queryVars { + // valueID := "q.Get(" + strconv.Quote(queryVar.Value) + ")" + // if queryVar.IsRequired { + // fmtPkg := importer.Import("fmt", "fmt") + // g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) + // } + // tmpID := queryVar.Param.Name.Value + "Str" + // g.w.W("%s := %s\n", tmpID, valueID) + // g.w.W("if %s != \"\" {\n", tmpID) + // g.w.WriteConvertType(importer, "req."+queryVar.Param.Name.Lower(), tmpID, queryVar.Param, []string{"nil"}, "", false, "") + // g.w.W("}\n") + //} + + g.w.W("%s.%s(%s)\n", paramName, m.Name, stdstrings.Join(paramValues, ",")) + g.w.W("return nil\n})\n") + } + } + + g.w.W("\n}\n") + + return g.w.Bytes() + +} + +func (g *RoutesGenerator) OutputDir() string { + return "" +} + +func (g *RoutesGenerator) Filename() string { + return "routes.go" +} diff --git a/v3/internal/plugin/echo/generator/utils.go b/v3/internal/plugin/echo/generator/utils.go new file mode 100644 index 00000000..b62f568f --- /dev/null +++ b/v3/internal/plugin/echo/generator/utils.go @@ -0,0 +1,27 @@ +package generator + +import ( + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" +) + +func NameInterface(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "Interface" +} + +func UcNameWithAppPrefix(iface *config.Interface, useServicePrefix ...bool) string { + var isUseServicePrefix bool + if len(useServicePrefix) > 0 { + isUseServicePrefix = useServicePrefix[0] + } + if isUseServicePrefix { + if iface.ClientName.Take() != "" { + return strcase.ToCamel(iface.Named.Pkg.Module.ID) + strcase.ToCamel(iface.ClientName.Take()) + } + return strcase.ToCamel(iface.Named.Pkg.Module.ID) + iface.Named.Name.Upper() + } + if iface.ClientName.Take() != "" { + return strcase.ToCamel(iface.ClientName.Take()) + } + return iface.Named.Name.Upper() +} diff --git a/v3/internal/plugin/echo/plugin.go b/v3/internal/plugin/echo/plugin.go new file mode 100644 index 00000000..79bd9226 --- /dev/null +++ b/v3/internal/plugin/echo/plugin.go @@ -0,0 +1,55 @@ +package echo + +import ( + "github.com/mitchellh/mapstructure" + + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/internal/plugin/echo/generator" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" +) + +func init() { + swipe.RegisterPlugin(&Plugin{}) +} + +type Plugin struct { + config config.Config +} + +func (p *Plugin) ID() string { + return "Echo" +} + +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { + p.config = config.Config{} + if err := mapstructure.Decode(options, &p.config); err != nil { + return []error{err} + } + + p.config.MethodOptionsMap = map[string]config.MethodOptions{} + + for _, methodOption := range p.config.MethodOptions { + if sig, ok := methodOption.Signature.Type.(*option.SignType); ok { + if recvNamed, ok := sig.Recv.(*option.NamedType); ok { + p.config.MethodOptionsMap[recvNamed.Name.Value+methodOption.Signature.Name.Value] = methodOption.MethodOptions + } + } + } + + return nil +} + +func (p *Plugin) Generators() ([]swipe.Generator, []error) { + generators := []swipe.Generator{ + &generator.RoutesGenerator{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + }, + } + return generators, nil +} + +func (p *Plugin) Options() []byte { + return (&config.Config{}).Options() +} diff --git a/v3/internal/plugin/es/config/config.go b/v3/internal/plugin/es/config/config.go deleted file mode 100644 index 7d88308e..00000000 --- a/v3/internal/plugin/es/config/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package config - -import "github.com/swipe-io/swipe/v3/option" - -type Entity struct { - Value *option.NamedType -} - -// Config -// @swipe:"EventSourcing" -type Config struct { - Entity Entity -} diff --git a/v3/internal/plugin/es/config/config_gen.go b/v3/internal/plugin/es/config/config_gen.go deleted file mode 100644 index cc1a645a..00000000 --- a/v3/internal/plugin/es/config/config_gen.go +++ /dev/null @@ -1,5 +0,0 @@ -package config - -func (*Config) Options() []byte { - return []byte("// EventSourcing\nfunc EventSourcing(opts ...EventSourcingOption) {}\n\n// EventSourcingOption ...\ntype EventSourcingOption string\n\n// Entity ...\nfunc Entity(value interface{}) EventSourcingOption { return \"implementation not generated, run swipe\" }\n") -} diff --git a/v3/internal/plugin/es/generator/update.go b/v3/internal/plugin/es/generator/update.go deleted file mode 100644 index c48c2fd6..00000000 --- a/v3/internal/plugin/es/generator/update.go +++ /dev/null @@ -1,26 +0,0 @@ -package generator - -import ( - "context" - - "github.com/swipe-io/swipe/v3/option" - "github.com/swipe-io/swipe/v3/writer" -) - -type UpdateGenerator struct { - w writer.GoWriter - Entity *option.NamedType -} - -func (g *UpdateGenerator) Generate(ctx context.Context) []byte { - g.w.W("type %sUpdate struct {}\n", g.Entity.Name) - return g.w.Bytes() -} - -func (g *UpdateGenerator) OutputDir() string { - return "" -} - -func (g *UpdateGenerator) Filename() string { - return "update.go" -} diff --git a/v3/internal/plugin/es/plugin.go b/v3/internal/plugin/es/plugin.go deleted file mode 100644 index 10e5650d..00000000 --- a/v3/internal/plugin/es/plugin.go +++ /dev/null @@ -1,43 +0,0 @@ -package es - -import ( - "github.com/mitchellh/mapstructure" - - "github.com/swipe-io/swipe/v3/internal/plugin/es/config" - "github.com/swipe-io/swipe/v3/internal/plugin/es/generator" - "github.com/swipe-io/swipe/v3/option" - "github.com/swipe-io/swipe/v3/swipe" -) - -//func init() { -//swipe.RegisterPlugin(&Plugin{}) -//} - -type Plugin struct { - config config.Config -} - -func (p *Plugin) ID() string { - return "EventSourcing" -} - -func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { - p.config = config.Config{} - if err := mapstructure.Decode(options, &p.config); err != nil { - return []error{err} - } - return nil -} - -func (p *Plugin) Generators() ([]swipe.Generator, []error) { - generators := []swipe.Generator{ - &generator.UpdateGenerator{ - Entity: p.config.Entity.Value, - }, - } - return generators, nil -} - -func (p *Plugin) Options() []byte { - return (&config.Config{}).Options() -} diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index f6333109..514aa81e 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -4,19 +4,12 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -type ErrorType string - -const ( - RESTErrorType ErrorType = "rest" - JRPCErrorType ErrorType = "jrpc" -) - type Error struct { PkgName string PkgPath string Name string - Type ErrorType Code int64 + ErrCode string } type ExternalInterface struct { @@ -78,11 +71,6 @@ type MethodOptions struct { RESTPathVars map[string]string `swipe:"option"` RESTBodyType option.StringValue `swipe:"option"` //Aggregate []Aggregate `swipe:"option"` - ServerEncodeResponse option.FuncTypeValue `swipe:"option"` - ServerDecodeRequest option.FuncTypeValue `swipe:"option"` - ClientEncodeRequest option.FuncTypeValue `swipe:"option"` - ClientDecodeResponse option.FuncTypeValue `swipe:"option"` - ClientErrorDecode option.FuncTypeValue `swipe:"option"` } type MethodOption struct { @@ -151,7 +139,6 @@ type Config struct { OpenapiServers []OpenapiServer `mapstructure:"OpenapiServer"` MethodOptions []MethodOption MethodDefaultOptions MethodOptions - ServerErrorEncoder option.FuncTypeValue InstrumentingLabels []InstrumentingLabel `swipe:"option"` // non options params diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index 5247e3a3..ed9526c4 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ServerEncodeResponse ...\nfunc ServerEncodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerDecodeRequest ...\nfunc ServerDecodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEncodeRequest ...\nfunc ClientEncodeRequest(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientDecodeResponse ...\nfunc ClientDecodeResponse(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientErrorDecode ...\nfunc ClientErrorDecode(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ServerErrorEncoder ...\nfunc ServerErrorEncoder(value interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// Labels ...\n// @type:\"repeat\"\nfunc Labels(key interface{}, name string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// InstrumentingLabels ...\n// @type:\"repeat\"\nfunc InstrumentingLabels(key interface{}, name string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/client_helpers.go b/v3/internal/plugin/gokit/generator/client_helpers.go new file mode 100644 index 00000000..38e3c2ea --- /dev/null +++ b/v3/internal/plugin/gokit/generator/client_helpers.go @@ -0,0 +1,210 @@ +package generator + +import ( + "context" + "fmt" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type ClientHelpers struct { + w writer.GoWriter + Interfaces []*config.Interface + JSONRPCEnable bool + UseFast bool + IfaceErrors map[string]map[string][]config.Error + Output string + Pkg string +} + +func (g *ClientHelpers) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + var ( + kitHTTPPkg string + ) + + if g.JSONRPCEnable { + if g.UseFast { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + } else { + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + } + endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + + kitHTTPClientOption := fmt.Sprintf("%s.ClientOption", kitHTTPPkg) + endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) + clientOptionType := "ClientOption" + + g.w.W("type Option func (*opts)\n\n") + + g.w.W("func ClientOptions(opt ...%s) Option {\n", kitHTTPClientOption) + g.w.W("return func(c *opts) { c.clientOption = opt }\n") + g.w.W("}\n") + + g.w.W("func MiddlewareOption(opt ...%s) Option {\n", endpointMiddlewareOption) + g.w.W("return func(c *opts) { c.endpointMiddleware = opt }\n") + g.w.W("}\n") + + //if !g.JSONRPCEnable { + // g.w.W("func DecodeRequestFuncOption(opt %s.CreateRequestFunc) Option {\n", kitHTTPPkg) + // g.w.W("return func(c *opts) { c.createReqFunc = opt }\n") + // g.w.W("}\n") + // + // g.w.W("func EncodeResponseFuncOption(opt %s.DecodeResponseFunc) Option {\n", kitHTTPPkg) + // g.w.W("return func(c *opts) { c.decRespFunc = opt }\n") + // g.w.W("}\n") + //} + + g.w.W("type opts struct {\n") + g.w.W("clientOption []%s\n", kitHTTPClientOption) + g.w.W("endpointMiddleware []%s\n", endpointMiddlewareOption) + //if !g.JSONRPCEnable { + // g.w.W("createReqFunc %s.CreateRequestFunc\n", kitHTTPPkg) + // g.w.W("decRespFunc %s.DecodeResponseFunc\n", kitHTTPPkg) + //} + g.w.W("}\n\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + name := LcNameIfaceMethod(iface, m) + clientOptType := name + "Opts" + + g.w.W("type %s struct { opts }\n\n", clientOptType) + } + } + + g.w.W("type %s func(*clientOpts)\n", clientOptionType) + + g.w.W("func GenericClientOptions(opt ...Option) %s {\nreturn func(c *clientOpts) {\nfor _, o := range opt {\no(&c.genericOpts)\n}\n}\n}\n\n", clientOptionType) + + g.w.W("type clientOpts struct {\n") + g.w.W("genericOpts opts\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + g.w.W("%[1]s %[1]s\n", LcNameWithAppPrefix(iface)+m.Name.Value+"Opts") + } + } + + g.w.W("}\n\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + clientOptName := LcNameIfaceMethod(iface, m) + "Opts" + clientOptFuncName := UcNameIfaceMethod(iface, m) + g.w.W("func %sOptions(opt ...Option) ClientOption {\nreturn func(c *clientOpts) {\nfor _, o := range opt {\no(&c.%s.opts)\n}\n}\n}\n\n", clientOptFuncName, clientOptName) + } + } + + g.w.W("type httpError struct {\n") + g.w.W("code int\n") + if g.JSONRPCEnable { + g.w.W("data interface{}\n") + g.w.W("message string\n") + } + g.w.W("}\n") + + if g.JSONRPCEnable { + g.w.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") + } else { + if g.UseFast { + httpPkg := importer.Import("fasthttp", "github.com/valyala/fasthttp") + g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) + } else { + httpPkg := importer.Import("http", "net/http") + g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) + } + } + + g.w.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") + + errorDecodeParams := []string{"code", "int"} + if g.JSONRPCEnable { + g.w.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") + g.w.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") + g.w.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") + + errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") + } + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] + + for _, m := range ifaceType.Methods { + methodErrors := ifaceErrors[m.Name.Value] + + g.w.W("func %sErrorDecode(", LcNameIfaceMethod(iface, m)) + + for i := 0; i < len(errorDecodeParams); i += 2 { + if i > 0 { + g.w.W(",") + } + g.w.W("%s %s", errorDecodeParams[i], errorDecodeParams[i+1]) + } + + g.w.W(") (err error) {\n") + + g.w.W("switch code {\n") + g.w.W("default:\nerr = &httpError{code: code}\n") + if g.JSONRPCEnable { + errorsDub := map[int64]struct{}{} + for _, e := range methodErrors { + if _, ok := errorsDub[e.Code]; ok { + continue + } + errorsDub[e.Code] = struct{}{} + + g.w.W("case %d:\n", e.Code) + pkgName := importer.Import(e.PkgName, e.PkgPath) + if pkgName != "" { + pkgName += "." + } + + g.w.W("err = &%s%s{}\n", pkgName, e.Name) + } + } + g.w.W("}\n") + if g.JSONRPCEnable { + g.w.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") + g.w.W("err.SetErrorData(data)\n") + g.w.W("}\n") + + g.w.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") + g.w.W("err.SetErrorMessage(message)\n") + g.w.W("}\n") + } + g.w.W("return\n") + g.w.W("}\n") + } + } + + return g.w.Bytes() +} + +func (g *ClientHelpers) Package() string { + return g.Pkg +} + +func (g *ClientHelpers) OutputDir() string { + return g.Output +} + +func (g *ClientHelpers) Filename() string { + return "client_helpers.go" +} diff --git a/v3/internal/plugin/gokit/generator/client_struct.go b/v3/internal/plugin/gokit/generator/client_struct.go index 3242d3ea..0db23b9a 100644 --- a/v3/internal/plugin/gokit/generator/client_struct.go +++ b/v3/internal/plugin/gokit/generator/client_struct.go @@ -4,6 +4,8 @@ import ( "context" "fmt" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -24,26 +26,9 @@ func (g *ClientStruct) Package() string { } func (g *ClientStruct) Generate(ctx context.Context) []byte { - var ( - kitHTTPPkg string - endpointPkg string - ) importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - if g.JSONRPCEnable { - if g.UseFast { - kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") - } else { - kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") - } - } else { - if g.UseFast { - kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") - } else { - kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") - } - } - endpointPkg = importer.Import("endpoint", "github.com/go-kit/kit/endpoint") - clientOptionType := "ClientOption" + + endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") if len(g.Interfaces) > 1 { g.w.W("type AppClient struct {\n") @@ -84,44 +69,6 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { g.w.W("}\n\n") } - g.w.W("type %s func(*clientOpts)\n", clientOptionType) - g.w.W("type clientOpts struct {\n") - for _, iface := range g.Interfaces { - ifaceType := iface.Named.Type.(*option.IfaceType) - for _, m := range ifaceType.Methods { - g.w.W("%sClientOption []%s.ClientOption\n", LcNameWithAppPrefix(iface)+m.Name.Value, kitHTTPPkg) - g.w.W("%sEndpointMiddleware []%s.Middleware\n", LcNameWithAppPrefix(iface)+m.Name.Value, endpointPkg) - } - } - g.w.W("genericClientOption []%s.ClientOption\n", kitHTTPPkg) - g.w.W("genericEndpointMiddleware []%s.Middleware\n", endpointPkg) - g.w.W("}\n\n") - - g.w.W("func GenericClientOptions(opt ...%s) %s {\n", kitHTTPPkg+".ClientOption", clientOptionType) - g.w.W("return func(c *clientOpts) { c.genericClientOption = opt }\n") - g.w.W("}\n") - - g.w.W("func GenericClientEndpointMiddlewares(opt ...%s) %s {\n", endpointPkg+".Middleware", clientOptionType) - g.w.W("return func(c *clientOpts) { c.genericEndpointMiddleware = opt }\n") - g.w.W("}\n") - - for _, iface := range g.Interfaces { - ifaceType := iface.Named.Type.(*option.IfaceType) - - for _, m := range ifaceType.Methods { - ucName := UcNameWithAppPrefix(iface) + m.Name.Value - lcName := LcNameWithAppPrefix(iface) + m.Name.Value - - g.w.W("func %sClientOptions(opt ...%s) %s {\n", ucName, kitHTTPPkg+".ClientOption", clientOptionType) - g.w.W("return func(c *clientOpts) { c.%sClientOption = opt }\n", lcName) - g.w.W("}\n") - - g.w.W("func %sClientEndpointMiddlewares(opt ...%s) %s {\n", ucName, endpointPkg+".Middleware", clientOptionType) - g.w.W("return func(c *clientOpts) { c.%sEndpointMiddleware = opt }\n", lcName) - g.w.W("}\n") - } - } - if len(g.Interfaces) > 0 { contextPkg := importer.Import("context", "context") @@ -167,7 +114,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { if len(m.Sig.Params) > 0 { g.w.W("%s{", NameRequest(m, iface)) for _, param := range m.Sig.Params { - if IsContext(param) { + if plugin.IsContext(param) { continue } g.w.W("%s: %s,", param.Name.Upper(), param.Name.Value) @@ -186,7 +133,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { lenResults := LenWithoutErrors(m.Sig.Results) if lenResults > 0 { for _, result := range m.Sig.Results { - if IsError(result) { + if plugin.IsError(result) { continue } if lenResults == 1 { diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index 6f107849..0fa92eca 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -3,6 +3,8 @@ package generator import ( "context" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -12,6 +14,7 @@ import ( type Endpoint struct { w writer.GoWriter Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions HTTPServerEnable bool Output string Pkg string @@ -42,21 +45,24 @@ func (g *Endpoint) writeReqResp(importer swipe.Importer) { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { + //mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + if len(m.Sig.Params) > 0 { g.w.W("type %s struct {\n", NameRequest(m, iface)) for _, param := range m.Sig.Params { - if IsContext(param) { + if plugin.IsContext(param) { continue } g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), swipe.TypeString(param.Type, false, importer), param.Name) } g.w.W("}\n") } + if DownloadFile(m.Sig.Results) == nil { if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 1 { g.w.W("type %s struct {\n", NameResponse(m, iface)) for _, param := range m.Sig.Results { - if IsError(param) { + if plugin.IsError(param) { continue } g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), swipe.TypeString(param.Type, false, importer), param.Name) @@ -98,7 +104,7 @@ func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { var callParams []string for _, param := range m.Sig.Params { - if IsContext(param) { + if plugin.IsContext(param) { callParams = append(callParams, "ctx") continue } @@ -129,7 +135,7 @@ func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { if len(m.Sig.Results) > 0 { for _, result := range m.Sig.Results { - if IsError(result) { + if plugin.IsError(result) { g.w.WriteCheckErr(result.Name.Value, func() { g.w.W("return nil, %s\n", result.Name.Value) }) @@ -143,7 +149,7 @@ func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { g.w.W("%s", NameResponse(m, iface)) var resultKeyVal []string for _, result := range m.Sig.Results { - if IsError(result) { + if plugin.IsError(result) { continue } resultKeyVal = append(resultKeyVal, result.Name.Upper(), result.Name.Value) @@ -151,7 +157,7 @@ func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { g.w.WriteStructAssign(resultKeyVal) } else if resultLen == 1 { for _, result := range m.Sig.Results { - if IsError(result) { + if plugin.IsError(result) { continue } g.w.W("%s", result.Name.Value) diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go deleted file mode 100644 index 2dac8f6e..00000000 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ /dev/null @@ -1,210 +0,0 @@ -package generator - -import ( - "context" - "fmt" - - "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" - "github.com/swipe-io/swipe/v3/option" - "github.com/swipe-io/swipe/v3/swipe" - "github.com/swipe-io/swipe/v3/writer" -) - -type Helpers struct { - w writer.GoWriter - Interfaces []*config.Interface - JSONRPCEnable bool - GoClientEnable bool - HTTPServerEnable bool - UseFast bool - IfaceErrors map[string]map[string][]config.Error - Output string - Pkg string -} - -func (g *Helpers) Package() string { - return g.Pkg -} - -func (g *Helpers) Generate(ctx context.Context) []byte { - importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - - endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") - - g.writeFuncMiddlewareChain(endpointPkg) - - if g.HTTPServerEnable { - var ( - kitHTTPPkg string - ) - - if g.JSONRPCEnable { - if g.UseFast { - kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") - } else { - kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") - } - } else { - if g.UseFast { - kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") - } else { - kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") - } - } - - serverOptType := "serverOpts" - serverOptionType := "ServerOption" - kitHTTPServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) - endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) - - g.w.W("type %s func (*%s)\n", serverOptionType, serverOptType) - - g.w.W("type %s struct {\n", serverOptType) - g.w.W("genericServerOption []%s\n", kitHTTPServerOption) - g.w.W("genericEndpointMiddleware []%s\n", endpointMiddlewareOption) - for _, iface := range g.Interfaces { - ifaceType := iface.Named.Type.(*option.IfaceType) - for _, m := range ifaceType.Methods { - name := LcNameWithAppPrefix(iface) + m.Name.Value - g.w.W("%sServerOption []%s\n", name, kitHTTPServerOption) - g.w.W("%sEndpointMiddleware []%s\n", name, endpointMiddlewareOption) - } - } - g.w.W("}\n") - - g.w.W("func GenericServerOptions(v ...%s) %s {\n", kitHTTPServerOption, serverOptionType) - g.w.W("return func(o *%s) { o.genericServerOption = v }\n", serverOptType) - g.w.W("}\n") - - g.w.W("func GenericServerEndpointMiddlewares(v ...%s) %s {\n", endpointMiddlewareOption, serverOptionType) - g.w.W("return func(o *%s) { o.genericEndpointMiddleware = v }\n", serverOptType) - g.w.W("}\n") - - for _, iface := range g.Interfaces { - ifaceType := iface.Named.Type.(*option.IfaceType) - for _, m := range ifaceType.Methods { - fnPrefix := UcNameWithAppPrefix(iface) + m.Name.Value - paramPrefix := LcNameWithAppPrefix(iface) + m.Name.Value - - g.w.W("func %sServerOptions(opt ...%s) %s {\n", fnPrefix, kitHTTPServerOption, serverOptionType) - g.w.W("return func(c *%s) { c.%sServerOption = opt }\n", serverOptType, paramPrefix) - g.w.W("}\n") - - g.w.W("func %sServerEndpointMiddlewares(opt ...%s) %s {\n", fnPrefix, endpointMiddlewareOption, serverOptionType) - g.w.W("return func(c *%s) { c.%sEndpointMiddleware = opt }\n", serverOptType, paramPrefix) - g.w.W("}\n") - } - } - } - - if g.GoClientEnable { - g.w.W("type httpError struct {\n") - g.w.W("code int\n") - if g.JSONRPCEnable { - g.w.W("data interface{}\n") - g.w.W("message string\n") - } - g.w.W("}\n") - - if g.JSONRPCEnable { - g.w.W("func (e *httpError) Error() string {\nreturn e.message\n}\n") - } else { - if g.UseFast { - httpPkg := importer.Import("fasthttp", "github.com/valyala/fasthttp") - g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusMessage(e.code)\n}\n", httpPkg) - } else { - httpPkg := importer.Import("http", "net/http") - g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) - } - } - - g.w.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") - - errorDecodeParams := []string{"code", "int"} - if g.JSONRPCEnable { - g.w.W("func (e *httpError) ErrorData() interface{} {\nreturn e.data\n}\n") - g.w.W("func (e *httpError) SetErrorData(data interface{}) {\ne.data = data\n}\n") - g.w.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") - - errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") - } - - for _, iface := range g.Interfaces { - ifaceType := iface.Named.Type.(*option.IfaceType) - ifaceErrors := g.IfaceErrors[iface.Named.Name.Value] - - for _, m := range ifaceType.Methods { - methodErrors := ifaceErrors[m.Name.Value] - - g.w.W("func %sErrorDecode(", LcNameIfaceMethod(iface, m)) - - for i := 0; i < len(errorDecodeParams); i += 2 { - if i > 0 { - g.w.W(",") - } - g.w.W("%s %s", errorDecodeParams[i], errorDecodeParams[i+1]) - } - - g.w.W(") (err error) {\n") - - g.w.W("switch code {\n") - g.w.W("default:\nerr = &httpError{code: code}\n") - if g.JSONRPCEnable { - errorsDub := map[int64]struct{}{} - for _, e := range methodErrors { - if _, ok := errorsDub[e.Code]; ok { - continue - } - errorsDub[e.Code] = struct{}{} - - g.w.W("case %d:\n", e.Code) - pkgName := importer.Import(e.PkgName, e.PkgPath) - if pkgName != "" { - pkgName += "." - } - - g.w.W("err = &%s%s{}\n", pkgName, e.Name) - } - } - g.w.W("}\n") - if g.JSONRPCEnable { - g.w.W("if err, ok := err.(interface{ SetErrorData(data interface{}) }); ok {\n") - g.w.W("err.SetErrorData(data)\n") - g.w.W("}\n") - - g.w.W("if err, ok := err.(interface{ SetErrorMessage(message string) }); ok {\n") - g.w.W("err.SetErrorMessage(message)\n") - g.w.W("}\n") - } - g.w.W("return\n") - g.w.W("}\n") - } - } - } - - return g.w.Bytes() -} - -func (g *Helpers) writeFuncMiddlewareChain(endpointPkg string) { - g.w.W("func middlewareChain(middlewares []%[1]s.Middleware) %[1]s.Middleware {\n", endpointPkg) - g.w.W("return func(next %[1]s.Endpoint) %[1]s.Endpoint {\n", endpointPkg) - g.w.W("if len(middlewares) == 0 {\n") - g.w.W("return next\n") - g.w.W("}\n") - g.w.W("outer := middlewares[0]\n") - g.w.W("others := middlewares[1:]\n") - g.w.W("for i := len(others) - 1; i >= 0; i-- {\n") - g.w.W("next = others[i](next)\n") - g.w.W("}\n") - g.w.W("return outer(next)\n") - g.w.W("}\n") - g.w.W("}\n") -} - -func (g *Helpers) OutputDir() string { - return g.Output -} - -func (g *Helpers) Filename() string { - return "helpers.go" -} diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index c86a4846..db64f444 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -5,6 +5,8 @@ import ( "fmt" "strconv" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -26,17 +28,12 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("type instrumentingOpts struct {\n") g.w.W("requestCount %s.Counter\n", metricsPkg) g.w.W("requestLatency %s.Histogram\n", metricsPkg) - g.w.W("namespace string\n") - g.w.W("subsystem string\n") g.w.W("}\n\n") g.w.W("type InstrumentingOption func(*instrumentingOpts)\n\n") - g.w.W("func Namespace(v string) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.namespace = v\n}\n}\n\n") - g.w.W("func Subsystem(v string) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.subsystem = v\n}\n}\n\n") - - g.w.W("func RequestLatency(requestLatency %s.Histogram) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) - g.w.W("func RequestCount(requestCount %s.Counter) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestCount = requestCount\n}\n}\n\n", metricsPkg) + g.w.W("func InstrumentingRequestLatency(requestLatency %s.Histogram) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) + g.w.W("func InstrumentingRequestCount(requestCount %s.Counter) InstrumentingOption {\nreturn func(o *instrumentingOpts) {\no.requestCount = requestCount\n}\n}\n\n", metricsPkg) if len(g.Interfaces) > 0 { timePkg := importer.Import("time", "time") @@ -87,7 +84,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { } g.w.W(")\n") } - e := Error(m.Sig.Results) + e := plugin.Error(m.Sig.Results) if e != nil { g.w.W("if %[1]s != nil {\nrequestCount.With(\"err\", %[1]s.Error()).Add(1)\n} else {\n", e.Name) g.w.W("") @@ -128,7 +125,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("}\n") } - g.w.W("func %[1]s(opts ...InstrumentingOption) %[3]s {\nreturn func(next %[2]s) %[2]s {\n", middlewareFuncName, ifaceTypeName, middlewareTypeName) + g.w.W("func %[1]s(namespace, subsystem string, opts ...InstrumentingOption) %[3]s {\nreturn func(next %[2]s) %[2]s {\n", middlewareFuncName, ifaceTypeName, middlewareTypeName) g.w.W("i := &%s{next: next, opts: &instrumentingOpts{}}\n", middlewareNameType) @@ -136,8 +133,8 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("if i.opts.requestCount == nil {\n") g.w.W("i.opts.requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.w.W("Namespace: i.opts.namespace,\n") - g.w.W("Subsystem: i.opts.subsystem,\n") + g.w.W("Namespace: namespace,\n") + g.w.W("Subsystem: subsystem,\n") g.w.W("Name: %s,\n", strconv.Quote("request_count")) g.w.W("Help: %s,\n", strconv.Quote("Number of requests received.")) @@ -153,8 +150,8 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { g.w.W("if i.opts.requestLatency == nil {\n") g.w.W("i.opts.requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) - g.w.W("Namespace: i.opts.namespace,\n") - g.w.W("Subsystem: i.opts.subsystem,\n") + g.w.W("Namespace: namespace,\n") + g.w.W("Subsystem: subsystem,\n") g.w.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) g.w.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) g.w.W("}, []string{\"method\"") diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go index 6dd16abf..5c73d0e1 100644 --- a/v3/internal/plugin/gokit/generator/interface.go +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -23,7 +23,7 @@ func (g *InterfaceGenerator) Package() string { func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - g.w.W("type downloader interface {\nName() string\nContentType() string\nData() []byte\n}\n\n") + g.w.W("type downloader interface {\nContentType() string\nData() []byte\n}\n\n") for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index f559229f..156132b9 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -3,6 +3,8 @@ package generator import ( "context" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/writer" @@ -51,7 +53,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("### %[1]s(", name) for i, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } nameds := extractNamed(p.Type) @@ -94,7 +96,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { responseTypes[responseName] = m.Sig.Results } for _, p := range m.Sig.Results { - if IsError(p) { + if plugin.IsError(p) { continue } nameds := extractNamed(p.Type) @@ -149,7 +151,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("### %s\n\n", name) g.w.W("| Field | Type | Description |\n|------|------|------|\n") for _, p := range results { - if IsError(p) { + if plugin.IsError(p) { continue } g.w.W("|%s|%s|%s|\n", p.Name.Value, jsDocType(p.Type), p.Comment) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index 5e81aa07..9fec05b9 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -5,6 +5,8 @@ import ( "fmt" "strings" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/writer" @@ -38,7 +40,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { mw.W("*\n") } for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } nameds := extractNamed(p.Type) @@ -58,7 +60,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { results := make([]string, 0, len(m.Sig.Results)) for _, p := range m.Sig.Results { - if IsError(p) { + if plugin.IsError(p) { continue } nameds := extractNamed(p.Type) @@ -95,7 +97,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { params := make([]string, 0, len(m.Sig.Params)) for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } name := p.Name.Value @@ -116,7 +118,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { requestParams := make([]string, 0, len(m.Sig.Params)) for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } requestParams = append(requestParams, fmt.Sprintf("%[1]s:%[1]s", p.Name)) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index edd3e67b..bfa8d539 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -12,12 +12,11 @@ import ( ) type JSONRPCServerGenerator struct { - w writer.GoWriter - UseFast bool - Interfaces []*config.Interface - MethodOptions map[string]config.MethodOptions - DefaultErrorEncoder *option.FuncType - JSONRPCPath string + w writer.GoWriter + UseFast bool + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions + JSONRPCPath string } func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { @@ -74,42 +73,26 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { nameRequest := NameRequest(m, iface) - mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - g.w.W("if ep.%sEndpoint != nil {\n", m.Name) - g.w.W("ecm[namespace+\"%s\"] = %s.EndpointCodec{\n", m.Name.Lower(), jsonrpcPkg) g.w.W("Endpoint: ep.%sEndpoint,\n", m.Name) g.w.W("Decode: ") - - if mopt.ServerDecodeRequest.Value != nil { - g.w.WriteFuncByFuncType(mopt.ServerDecodeRequest.Value, importer) + g.w.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) + if len(m.Sig.Params) > 0 { + fmtPkg := importer.Import("fmt", "fmt") + g.w.W("var req %s\n", nameRequest) + g.w.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, nameRequest) + g.w.W("}\n") + g.w.W("return req, nil\n") } else { - g.w.W("func(_ %s.Context, msg %s.RawMessage) (interface{}, error) {\n", contextPkg, jsonPkg) - - if len(m.Sig.Params) > 0 { - fmtPkg := importer.Import("fmt", "fmt") - g.w.W("var req %s\n", nameRequest) - g.w.W("err := %s.Unmarshal(msg, &req)\n", ffJSONPkg) - g.w.W("if err != nil {\n") - g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, nameRequest) - g.w.W("}\n") - g.w.W("return req, nil\n") - } else { - g.w.W("return nil, nil\n") - } - g.w.W("}") + g.w.W("return nil, nil\n") } - g.w.W(",\n") - + g.w.W("},\n") g.w.W("Encode: ") - if mopt.ServerEncodeResponse.Value != nil { - g.w.WriteFuncByFuncType(mopt.ServerEncodeResponse.Value, importer) - g.w.W(",\n") - } else { - g.w.W("encodeResponseJSONRPC,\n") - } + g.w.W("encodeResponseJSONRPC,\n") g.w.W("}\n}\n") } g.w.W("return ecm\n") @@ -213,8 +196,8 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { m.Name, epSetName, ) g.w.W( - "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericOpts.endpointMiddleware, opts.%[1]sOpts.endpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameIfaceMethod(iface, m), m.Name, epSetName, ) g.w.W("}\n") } @@ -222,8 +205,8 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W("%s := Make%s(%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), ServicePropName(iface)) for _, m := range ifaceType.Methods { g.w.W( - "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", - LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericOpts.endpointMiddleware, opts.%[1]sOpts.endpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + LcNameIfaceMethod(iface, m), m.Name, epSetName, ) } } @@ -260,7 +243,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { g.w.W(")") } - g.w.W(", opts.genericServerOption...)\n") + g.w.W(", opts.genericOpts.serverOption...)\n") jsonRPCPath := g.JSONRPCPath if g.UseFast { diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 13f9afd0..8ecba793 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -6,6 +6,8 @@ import ( "strconv" "strings" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -72,36 +74,25 @@ func (g *Logging) Generate(ctx context.Context) []byte { } } - var params, results []string - - for _, param := range m.Sig.Params { - var prefix string - if param.IsVariadic { - prefix = "..." - } - params = append(params, prefix+swipe.TypeString(param, false, importer)) - } - + var logResults []string for _, result := range m.Sig.Results { - if IsError(result) { - logParams = append(logParams, strconv.Quote("err"), result.Name.Value) + if plugin.IsError(result) { + logResults = append(logResults, strconv.Quote("err"), result.Name.Value) continue } - - logParams = append(logParams, makeLogParam(result.Name.Value, result.Type)...) - results = append(results, result.Name.Value, swipe.TypeString(result, false, importer)) + logResults = append(logResults, makeLogParam(result.Name.Value, result.Type)...) } g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) - if mopt.Logging.Take() && len(logParams) > 0 { + if mopt.Logging.Take() && (len(logParams) > 0 || len(logResults) > 0) { methodName := iface.Named.Name.Lower() + "." + m.Name.Value timePkg := importer.Import("time", "time") g.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { var resultErr *option.VarType for _, result := range m.Sig.Results { - if IsError(result) { + if plugin.IsError(result) { resultErr = result g.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name) g.w.W("%s = logErr.LogError()\n", result.Name) @@ -109,14 +100,23 @@ func (g *Logging) Generate(ctx context.Context) []byte { } } g.w.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, methodName, timePkg) + + logParamsStr := strings.Join(logParams, ",") + logResultsStr := strings.Join(logResults, ",") + + if logParamsStr != "" { + logResultsStr = "," + logResultsStr + } + if resultErr != nil { g.w.W("if %s != nil {\n", resultErr.Name) g.w.W("if e, ok := %s.(errLevel); ok {\n", resultErr.Name) g.w.W("logger = levelLogger(e, logger)\n") - g.w.W("} else {\nlogger = %s.Error(logger)\n}\n", levelPkg) - g.w.W("} else {\nlogger = %s.Debug(logger)\n}\n", levelPkg) + g.w.W("} else {\n_ = %s.Error(logger).Log(%s)\n}\n", levelPkg, logParamsStr) + g.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) + } else { + g.w.W("_ = %s.Debug(logger).Log(%s)\n", levelPkg, logParamsStr+logResultsStr) } - g.w.W("_ = logger.Log(%s)\n", strings.Join(logParams, ",")) }) } diff --git a/v3/internal/plugin/gokit/generator/middleware_chain.go b/v3/internal/plugin/gokit/generator/middleware_chain.go new file mode 100644 index 00000000..2efbc3d0 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/middleware_chain.go @@ -0,0 +1,48 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type MiddlewareChain struct { + w writer.GoWriter + Output string + Pkg string +} + +func (g *MiddlewareChain) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + + g.w.W("func middlewareChain(middlewares []%[1]s.Middleware) %[1]s.Middleware {\n", endpointPkg) + g.w.W("return func(next %[1]s.Endpoint) %[1]s.Endpoint {\n", endpointPkg) + g.w.W("if len(middlewares) == 0 {\n") + g.w.W("return next\n") + g.w.W("}\n") + g.w.W("outer := middlewares[0]\n") + g.w.W("others := middlewares[1:]\n") + g.w.W("for i := len(others) - 1; i >= 0; i-- {\n") + g.w.W("next = others[i](next)\n") + g.w.W("}\n") + g.w.W("return outer(next)\n") + g.w.W("}\n") + g.w.W("}\n") + + return g.w.Bytes() +} + +func (g *MiddlewareChain) Package() string { + return g.Pkg +} + +func (g *MiddlewareChain) OutputDir() string { + return g.Output +} + +func (g *MiddlewareChain) Filename() string { + return "middleware_chain.go" +} diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index c75c8dc5..cd044bc3 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -9,6 +9,8 @@ import ( "strconv" stdstrings "strings" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/pquerna/ffjson/ffjson" "github.com/swipe-io/strcase" @@ -70,9 +72,10 @@ func (g *Openapi) Generate(ctx context.Context) []byte { } if g.JSONRPCEnable { o.Components.Schemas = getOpenapiJSONRPCErrorSchemas() - } else { - o.Components.Schemas["Error"] = getOpenapiRESTErrorSchema() } + //else { + // o.Components.Schemas["Error"] = getOpenapiRESTErrorSchema() + //} for _, s := range g.Servers { o.Servers = append(o.Servers, openapi.Server{ URL: s.Url, @@ -108,7 +111,7 @@ func (g *Openapi) Generate(ctx context.Context) []byte { pathStr = strcase.ToKebab(m.Name.Value) } for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { @@ -120,16 +123,9 @@ func (g *Openapi) Generate(ctx context.Context) []byte { } } - errType := config.RESTErrorType - if g.JSONRPCEnable { - errType = config.JRPCErrorType - } if methodErrors, ok := g.IfaceErrors[iface.Named.Name.Value]; ok { for _, errors := range methodErrors { for _, e := range errors { - if e.Type != errType { - continue - } codeStr := strconv.FormatInt(e.Code, 10) errResponse := &openapi.Response{ Content: openapi.Content{ @@ -140,13 +136,13 @@ func (g *Openapi) Generate(ctx context.Context) []byte { }, }, } - if e.Type == config.JRPCErrorType { + if g.JSONRPCEnable { codeStr = "x-" + codeStr o.Components.Schemas[e.Name] = makeOpenapiSchemaJRPCError(e.Code) errResponse.Description = e.Name } else { errResponse.Description = http.StatusText(int(e.Code)) - o.Components.Schemas[e.Name] = makeOpenapiSchemaRESTError() + o.Components.Schemas[e.Name] = makeOpenapiSchemaRESTError(e.ErrCode) } op.Responses[codeStr] = errResponse @@ -380,7 +376,7 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config if LenWithoutErrors(m.Sig.Params) > 0 { for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } g.fillTypeDef(p.Type) @@ -399,7 +395,7 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config if lenResults > 1 { for _, r := range m.Sig.Results { - if IsError(r) { + if plugin.IsError(r) { continue } if isFileDownloadType(r.Type) { @@ -548,32 +544,32 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o Properties: map[string]*openapi.Schema{}, } - queryVars := make([]varType, 0, len(mopt.RESTQueryVars.Value)) - queryValues := make([]varType, 0, len(mopt.RESTQueryValues.Value)) - headerVars := make([]varType, 0, len(mopt.RESTHeaderVars.Value)) - pathVars := make([]varType, 0, len(mopt.RESTPathVars)) + queryVars := make([]plugin.VarType, 0, len(mopt.RESTQueryVars.Value)) + queryValues := make([]plugin.VarType, 0, len(mopt.RESTQueryValues.Value)) + headerVars := make([]plugin.VarType, 0, len(mopt.RESTHeaderVars.Value)) + pathVars := make([]plugin.VarType, 0, len(mopt.RESTPathVars)) paramVars := make([]*option.VarType, 0, len(m.Sig.Params)) for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } - if v, ok := findParam(p, mopt.RESTQueryVars.Value); ok { + if v, ok := plugin.FindParam(p, mopt.RESTQueryVars.Value); ok { queryVars = append(queryVars, v) continue } - if v, ok := findParam(p, mopt.RESTQueryValues.Value); ok { + if v, ok := plugin.FindParam(p, mopt.RESTQueryValues.Value); ok { queryValues = append(queryValues, v) continue } - if v, ok := findParam(p, mopt.RESTHeaderVars.Value); ok { + if v, ok := plugin.FindParam(p, mopt.RESTHeaderVars.Value); ok { headerVars = append(headerVars, v) continue } if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { - pathVars = append(pathVars, varType{ - p: p, - value: regexp, + pathVars = append(pathVars, plugin.VarType{ + Param: p, + Value: regexp, }) continue } @@ -590,7 +586,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o lenResults := LenWithoutErrors(m.Sig.Results) if lenResults > 1 { for _, r := range m.Sig.Results { - if IsError(r) { + if plugin.IsError(r) { continue } if isFileDownloadType(r.Type) { @@ -657,29 +653,29 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o for _, pathVar := range pathVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "path", - Name: pathVar.p.Name.Lower(), - Description: pathVar.p.Comment, - Required: pathVar.required, - Schema: g.schemaByType(pathVar.p.Type), + Name: pathVar.Param.Name.Lower(), + Description: pathVar.Param.Comment, + Required: pathVar.IsRequired, + Schema: g.schemaByType(pathVar.Param.Type), }) } for _, headerVar := range headerVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "header", - Name: headerVar.value, - Description: headerVar.p.Comment, - Required: headerVar.required, - Schema: g.schemaByType(headerVar.p.Type), + Name: headerVar.Value, + Description: headerVar.Param.Comment, + Required: headerVar.IsRequired, + Schema: g.schemaByType(headerVar.Param.Type), }) } for _, queryVar := range queryVars { o.Parameters = append(o.Parameters, openapi.Parameter{ In: "query", - Name: queryVar.p.Name.Lower(), - Description: queryVar.p.Comment, - Required: queryVar.required, + Name: queryVar.Param.Name.Lower(), + Description: queryVar.Param.Comment, + Required: queryVar.IsRequired, Schema: &openapi.Schema{ Type: "string", Properties: openapi.Properties{}, diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index d2b7b500..3dc22a92 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -6,6 +6,10 @@ import ( "strconv" stdstrings "strings" + "github.com/swipe-io/swipe/v3/internal/plugin" + + "github.com/swipe-io/swipe/v3/internal/format" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" @@ -45,6 +49,19 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { netPkg := importer.Import("net", "net") stringsPkg := importer.Import("strings", "strings") + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + if g.UseFast { + httpPkg = importer.Import("fasthttp", "github.com/valyala/fasthttp") + } else { + httpPkg = importer.Import("http", "net/http") + } + + g.writeCreateReqFuncs(importer, httpPkg, contextPkg, fmtPkg, urlPkg) + for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) clientType := ClientType(iface) @@ -54,17 +71,6 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { constructPostfix = "" } - if g.UseFast { - kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") - } else { - kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") - } - if g.UseFast { - httpPkg = importer.Import("fasthttp", "github.com/valyala/fasthttp") - } else { - httpPkg = importer.Import("http", "net/http") - } - g.w.W("func NewClientREST%s(tgt string", constructPostfix) g.w.W(" ,options ...ClientOption") g.w.W(") (*%s, error) {\n", clientType) @@ -97,16 +103,110 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { epName := LcNameEndpoint(iface, m) - bodyType := mopt.RESTBodyType.Take() - if bodyType == "" { - bodyType = "json" + httpMethod := mopt.RESTMethod.Take() + if httpMethod == "" { + httpMethod = "GET" + } + + g.w.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) + g.w.W(strconv.Quote(httpMethod)) + g.w.W(",\n") + g.w.W("u,\n") + g.w.W("%sReqFn,\n", LcNameIfaceMethod(iface, m)) + g.w.W("%sRespFn,\n", LcNameIfaceMethod(iface, m)) + g.w.W("append(opts.genericOpts.clientOption, opts.%sOpts.clientOption...)...,\n).Endpoint()\n", LcNameIfaceMethod(iface, m)) + g.w.W( + "c.%[1]s = middlewareChain(append(opts.genericOpts.endpointMiddleware, opts.%[2]sOpts.endpointMiddleware...))(c.%[1]s)\n", + epName, LcNameIfaceMethod(iface, m), + ) + } + g.w.W("return c, nil\n}\n\n") + } + return g.w.Bytes() +} + +func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpPkg, contextPkg, fmtPkg, urlPkg string) { + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + g.w.W("func %sRespFn(_ %s.Context, r *%s.Response) (response interface{}, err error) {\n", LcNameIfaceMethod(iface, m), contextPkg, httpPkg) + statusCode := "r.StatusCode" + if g.UseFast { + statusCode = "r.StatusCode()" } + g.w.W("if %s > 299 {\n", statusCode) + + g.w.W("return nil, ") + g.w.W("%sErrorDecode(%s)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) + + g.w.W("\n}\n") + + resultsLen := LenWithoutErrors(m.Sig.Results) + if resultsLen > 0 { + var responseType string + if m.Sig.IsNamed && resultsLen > 1 { + responseType = NameResponse(m, iface) + } else { + responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) + } + + var ( + wrapData, structPath string + ) + + if mopt.RESTWrapResponse.Take() != "" { + wrapData, structPath = wrapDataClient(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."), responseType) + g.w.W("var resp %s\n", wrapData) + } else { + g.w.W("var resp %s\n", responseType) + } + + g.w.W("var b []byte\n") + + if g.UseFast { + g.w.W("b = r.Body()\n") + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + g.w.W("b, err = %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + } + + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + + g.w.W("if len(b) == 0 {\nreturn nil, nil\n}\n") + g.w.W("err = %s.Unmarshal(b, &resp)\n", jsonPkg) + g.w.W("if err != nil {\n") + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, responseType) + g.w.W("}\n") + + if mopt.RESTWrapResponse.Take() != "" { + g.w.W("return resp.%s, nil\n", structPath) + } else { + g.w.W("return resp, nil\n") + } + } else { + g.w.W("return nil, nil\n") + } + g.w.W("}\n") + + g.w.W("func %sReqFn(_ %s.Context, r *%s.Request, request interface{}) error {\n", LcNameIfaceMethod(iface, m), contextPkg, httpPkg) + + nameRequest := NameRequest(m, iface) httpMethod := mopt.RESTMethod.Take() if httpMethod == "" { httpMethod = "GET" } + bodyType := mopt.RESTBodyType.Take() + if bodyType == "" { + bodyType = "json" + } + var pathStr string if mopt.RESTPath.IsValid() { pathStr = mopt.RESTPath.Take() @@ -155,7 +255,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { @@ -174,276 +274,201 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { } paramsLen := LenWithoutContexts(m.Sig.Params) + if paramsLen > 0 { + g.w.W("req, ok := request.(%s)\n", nameRequest) + g.w.W("if !ok {\n") + g.w.W("return %s.Errorf(\"couldn't assert request as %s, got %%T\", request)\n", fmtPkg, nameRequest) + g.w.W("}\n") + } - g.w.W("c.%s = %s.NewClient(\n", epName, kitHTTPPkg) + if g.UseFast { + g.w.W("r.Header.SetMethod(") + } else { + g.w.W("r.Method = ") + } g.w.W(strconv.Quote(httpMethod)) - g.w.W(",\n") - g.w.W("u,\n") - if mopt.ClientEncodeRequest.Value != nil { - g.w.WriteFuncByFuncType(mopt.ClientEncodeRequest.Value, importer) + if g.UseFast { + g.w.W(")") + } + g.w.W("\n") + + pathVarNames := make([]string, 0, len(pathVars)) + for _, p := range pathVars { + name := p.Name.Value + "Str" + pathVarNames = append(pathVarNames, name) + + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar("req." + p.Name.Upper()). + SetFieldType(p.Type). + Write(&g.w) + } + if g.UseFast { + g.w.W("r.URI().SetPath(") } else { - g.w.W("func(_ %s.Context, r *%s.Request, request interface{}) error {\n", contextPkg, httpPkg) - - nameRequest := NameRequest(m, iface) - - if paramsLen > 0 { - g.w.W("req, ok := request.(%s)\n", nameRequest) - g.w.W("if !ok {\n") - g.w.W("return %s.Errorf(\"couldn't assert request as %s, got %%T\", request)\n", fmtPkg, nameRequest) - g.w.W("}\n") - } + g.w.W("r.URL.Path += ") + } + if len(pathVars) > 0 { + g.w.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) + } else { + g.w.W(strconv.Quote(pathStr)) + } + if g.UseFast { + g.w.W(")") + } + g.w.W("\n") + if len(queryVars) > 0 || len(methodQueryValues) > 0 { if g.UseFast { - g.w.W("r.Header.SetMethod(") + g.w.W("q := r.URI().QueryArgs()\n") } else { - g.w.W("r.Method = ") + g.w.W("q := r.URL.Query()\n") } - g.w.W(strconv.Quote(httpMethod)) - - if g.UseFast { - g.w.W(")") - } - g.w.W("\n") - - pathVarNames := make([]string, 0, len(pathVars)) - for _, p := range pathVars { + for _, p := range queryVars { + var isPointer bool + valueVar := "req." + strcase.ToCamel(p.Name.Value) name := p.Name.Value + "Str" - pathVarNames = append(pathVarNames, name) - g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) - } - if g.UseFast { - g.w.W("r.URI().SetPath(") - } else { - g.w.W("r.URL.Path += ") - } - if len(pathVars) > 0 { - g.w.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) - } else { - g.w.W(strconv.Quote(pathStr)) - } - if g.UseFast { - g.w.W(")") - } - g.w.W("\n") - - if len(queryVars) > 0 || len(methodQueryValues) > 0 { - if g.UseFast { - g.w.W("q := r.URI().QueryArgs()\n") - } else { - g.w.W("q := r.URL.Query()\n") - } - for _, p := range queryVars { - var isPointer bool - valueID := "req." + strcase.ToCamel(p.Name.Value) - name := p.Name.Value + "Str" - if t, ok := p.Type.(*option.BasicType); ok { - if t.IsPointer { - isPointer = true - } - } - if isPointer { - g.w.W("if %s != nil {\n", valueID) - } - g.w.WriteFormatType(importer, name, valueID, p) - g.w.W("q.Add(%s, %s)\n", strconv.Quote(methodQueryVars[p.Name.Value].value), name) - - if isPointer { - g.w.W("}\n") + if t, ok := p.Type.(*option.BasicType); ok { + if t.IsPointer { + isPointer = true } } - - if len(methodQueryValues) > 0 { - for k, v := range methodQueryValues { - g.w.W("q.Add(%s, %s)\n", strconv.Quote(k), strconv.Quote(v)) - } + if isPointer { + g.w.W("if %s != nil {\n", valueVar) } - if g.UseFast { - g.w.W("r.URI().SetQueryString(q.String())\n") - } else { - g.w.W("r.URL.RawQuery = q.Encode()\n") - } - } - - if paramsLen > 0 { - switch stdstrings.ToUpper(httpMethod) { - case "POST", "PUT", "PATCH": - switch bodyType { - case "json": - jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar(valueVar). + SetFieldType(p.Type). + Write(&g.w) - g.w.W("var reqData interface{}\n") + g.w.W("q.Add(%s, %s)\n", strconv.Quote(methodQueryVars[p.Name.Value].value), name) - if wrapRequest := mopt.RESTWrapRequest.Take(); wrapRequest != "" { - reqData, structPath := wrapDataClient(stdstrings.Split(wrapRequest, "."), nameRequest) - - g.w.W("var wrapReq %s\n", reqData) - g.w.W("wrapReq.%s = req\n", structPath) - g.w.W("reqData = wrapReq\n") - } else { - g.w.W("reqData = request\n") - } - - g.w.W("data, err := %s.Marshal(reqData)\n", jsonPkg) - g.w.W("if err != nil {\n") - g.w.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) - g.w.W("}\n") - if g.UseFast { - g.w.W("r.SetBody(data)\n") - } else { - ioutilPkg := importer.Import("ioutil", "io/ioutil") - bytesPkg := importer.Import("bytes", "bytes") - g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) - } - case "urlencoded": - ioutilPkg := importer.Import("ioutil", "io/ioutil") - bytesPkg := importer.Import("bytes", "bytes") - g.w.W("r.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n") - g.w.W("params := %s.Values{}\n", urlPkg) - for _, p := range paramVars { - name := p.Name.Value + "Str" - g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) - g.w.W("params.Set(\"data\", %s)\n", name) - } - g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) - case "multipart": - bytesPkg := importer.Import("bytes", "bytes") - multipartPkg := importer.Import("multipart", "mime/multipart") - ioutilPkg := importer.Import("ioutil", "io/ioutil") - - g.w.W("body := new(%s.Buffer)\n", bytesPkg) - g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) - - for _, p := range paramVars { - if isFileUploadType(p.Type, importer) { - g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) - g.w.WriteCheckErr("err", func() { - g.w.W("return err\n") - }) - g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) - g.w.WriteCheckErr("err", func() { - g.w.W("return err\n") - }) - g.w.W("part.Write(data)\n") - continue - } - name := p.Name.Value + "Str" - g.w.WriteFormatType(importer, name, "req."+p.Name.Upper(), p) - g.w.W("_ = writer.WriteField(%s, %s)\n", strconv.Quote(p.Name.Value), name) - } - g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") - - if g.UseFast { - g.w.W("r.SetBody(body.Bytes())\n") - } else { - g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) - } - g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") - } + if isPointer { + g.w.W("}\n") } } - for _, p := range headerVars { - name := p.Name.Value + "Str" - g.w.WriteFormatType(importer, name, "req."+strcase.ToCamel(p.Name.Value), p) - g.w.W("r.Header.Add(%s, %s)\n", strconv.Quote(methodHeaderVars[p.Name.Value]), name) - } - - g.w.W("return nil\n") - g.w.W("}") - } - - g.w.W(",\n") - if mopt.ClientDecodeResponse.Value != nil { - g.w.WriteFuncByFuncType(mopt.ClientDecodeResponse.Value, importer) - } else { - g.w.W("func(_ %s.Context, r *%s.Response) (interface{}, error) {\n", contextPkg, httpPkg) - statusCode := "r.StatusCode" - if g.UseFast { - statusCode = "r.StatusCode()" + if len(methodQueryValues) > 0 { + for k, v := range methodQueryValues { + g.w.W("q.Add(%s, %s)\n", strconv.Quote(k), strconv.Quote(v)) + } } - g.w.W("if %s > 299 {\n", statusCode) - - g.w.W("return nil, ") - if mopt.ClientErrorDecode.Value != nil { - g.w.WriteFuncCallByFuncType(mopt.ClientErrorDecode.Value, []string{"r"}, importer) + if g.UseFast { + g.w.W("r.URI().SetQueryString(q.String())\n") } else { - g.w.W("%sErrorDecode(%s)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) + g.w.W("r.URL.RawQuery = q.Encode()\n") } + } - g.w.W("\n}\n") + if paramsLen > 0 { + switch stdstrings.ToUpper(httpMethod) { + case "POST", "PUT", "PATCH": + switch bodyType { + case "json": + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") - resultsLen := LenWithoutErrors(m.Sig.Results) - if resultsLen > 0 { - var responseType string - if m.Sig.IsNamed && resultsLen > 1 { - responseType = NameResponse(m, iface) - } else { - responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) - } + g.w.W("var reqData interface{}\n") - var ( - wrapData, structPath string - ) - - if mopt.RESTWrapResponse.Take() != "" { - wrapData, structPath = wrapDataClient(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."), responseType) - g.w.W("var resp %s\n", wrapData) - } else { - g.w.W("var resp %s\n", responseType) - } + if wrapRequest := mopt.RESTWrapRequest.Take(); wrapRequest != "" { + reqData, structPath := wrapDataClient(stdstrings.Split(wrapRequest, "."), nameRequest) - g.w.W("var b []byte\n") + g.w.W("var wrapReq %s\n", reqData) + g.w.W("wrapReq.%s = req\n", structPath) + g.w.W("reqData = wrapReq\n") + } else { + g.w.W("reqData = request\n") + } - if g.UseFast { - g.w.W("b = r.Body()\n") - } else { + g.w.W("data, err := %s.Marshal(reqData)\n", jsonPkg) + g.w.W("if err != nil {\n") + g.w.W("return %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\n", fmtPkg) + g.w.W("}\n") + if g.UseFast { + g.w.W("r.SetBody(data)\n") + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + bytesPkg := importer.Import("bytes", "bytes") + g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + } + case "urlencoded": + ioutilPkg := importer.Import("ioutil", "io/ioutil") + bytesPkg := importer.Import("bytes", "bytes") + g.w.W("r.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n") + g.w.W("params := %s.Values{}\n", urlPkg) + for _, p := range paramVars { + name := p.Name.Value + "Str" + + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar("req." + p.Name.Upper()). + SetFieldType(p.Type). + Write(&g.w) + + g.w.W("params.Set(\"data\", %s)\n", name) + } + g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) + case "multipart": + bytesPkg := importer.Import("bytes", "bytes") + multipartPkg := importer.Import("multipart", "mime/multipart") ioutilPkg := importer.Import("ioutil", "io/ioutil") - g.w.W("b, err = %s.ReadAll(r.Body)\n", ioutilPkg) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - } - jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + g.w.W("body := new(%s.Buffer)\n", bytesPkg) + g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) + + for _, p := range paramVars { + if isFileUploadType(p.Type, importer) { + g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("part.Write(data)\n") + continue + } + name := p.Name.Value + "Str" - g.w.W("if len(b) == 0 {\nreturn nil, nil\n}\n") - g.w.W("err = %s.Unmarshal(b, &resp)\n", jsonPkg) - g.w.W("if err != nil {\n") - g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%s\", err)\n", fmtPkg, responseType) - g.w.W("}\n") + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar("req." + p.Name.Upper()). + SetFieldType(p.Type). + Write(&g.w) - if mopt.RESTWrapResponse.Take() != "" { - g.w.W("return resp.%s, nil\n", structPath) - } else { - g.w.W("return resp, nil\n") + g.w.W("_ = writer.WriteField(%s, %s)\n", strconv.Quote(p.Name.Value), name) + } + g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") + + if g.UseFast { + g.w.W("r.SetBody(body.Bytes())\n") + } else { + g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) + } + g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") } - } else { - g.w.W("return nil, nil\n") } - - g.w.W("}") + } + for _, p := range headerVars { + name := p.Name.Value + "Str" + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar("req." + strcase.ToCamel(p.Name.Value)). + SetFieldType(p.Type). + Write(&g.w) + + g.w.W("r.Header.Add(%s, %s)\n", strconv.Quote(methodHeaderVars[p.Name.Value]), name) } - g.w.W(",\n") - - g.w.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", LcNameWithAppPrefix(iface)+m.Name.Value) - - g.w.W(").Endpoint()\n") - - g.w.W( - "c.%[1]s = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sMiddleware...))(c.%[1]s)\n", - epName, - ) + g.w.W("return nil\n") + g.w.W("}\n") } - g.w.W("return c, nil\n") - g.w.W("}\n\n") } - - return g.w.Bytes() } func (g *RESTClientGenerator) OutputDir() string { diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index eeba8130..d091ef1a 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -7,6 +7,10 @@ import ( "strconv" stdstrings "strings" + "github.com/swipe-io/swipe/v3/internal/convert" + + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" @@ -15,12 +19,11 @@ import ( ) type RESTServerGenerator struct { - w writer.GoWriter - UseFast bool - JSONRPCEnable bool - ServerErrorEncoder *option.FuncType - Interfaces []*config.Interface - MethodOptions map[string]config.MethodOptions + w writer.GoWriter + UseFast bool + JSONRPCEnable bool + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions } func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { @@ -44,9 +47,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") httpPkg = importer.Import("http", "net/http") } - if g.ServerErrorEncoder == nil { - g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) - } + + g.writeDefaultErrorEncoder(contextPkg, httpPkg, kitHTTPPkg, jsonPkg) g.writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg) g.w.W("// MakeHandlerREST make REST HTTP transport\n") @@ -82,15 +84,12 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("opts := &serverOpts{}\n") g.w.W("for _, o := range options {\n o(opts)\n }\n") - if g.ServerErrorEncoder != nil { - g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(", kitHTTPPkg) - - g.w.WriteFuncByFuncType(g.ServerErrorEncoder, importer) - g.w.W("))\n") - } else { - g.w.W("opts.genericServerOption = append(opts.genericServerOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) - } + g.w.W("if opts.errorEncoder == nil {\n") + g.w.W("opts.genericOpts.serverOption = append(opts.genericOpts.serverOption, %s.ServerErrorEncoder(defaultErrorEncoder))\n", kitHTTPPkg) + g.w.W("} else {\n") + g.w.W("opts.genericOpts.serverOption = append(opts.genericOpts.serverOption, %s.ServerErrorEncoder(opts.errorEncoder))\n", kitHTTPPkg) + g.w.W("}\n\n") for _, iface := range g.Interfaces { optName := LcNameWithAppPrefix(iface, iface.Gateway != nil) @@ -153,7 +152,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { m.Name, epSetName, ) g.w.W( - "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericOpts.endpointMiddleware, opts.%[1]sOpts.endpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, ) g.w.W("}\n") @@ -162,7 +161,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("%s := Make%s(svc%s)\n", NameEndpointSetNameVar(iface), NameEndpointSetName(iface), iface.Named.Name.Upper()) for _, m := range ifaceType.Methods { g.w.W( - "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", + "%[3]s.%[2]sEndpoint = middlewareChain(append(opts.genericOpts.endpointMiddleware, opts.%[1]sOpts.endpointMiddleware...))(%[3]s.%[2]sEndpoint)\n", LcNameWithAppPrefix(iface)+m.Name.Upper(), m.Name, epSetName, ) } @@ -180,32 +179,39 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + encRespFuncName := LcNameWithAppPrefix(iface) + m.Name.Upper() + + g.w.W("%s := encodeResponseHTTP\n", encRespFuncName) + //g.w.W("if opts.%sOpts.encRespFunc != nil {\n", encRespFuncName) + //g.w.W("%[1]s = opts.%[1]sOpts.encRespFunc\n", encRespFuncName) + //g.w.W("}\n") + bodyType := mopt.RESTBodyType.Take() if bodyType == "" { bodyType = "json" } - queryVars := make([]varType, 0, len(mopt.RESTQueryVars.Value)) - headerVars := make([]varType, 0, len(mopt.RESTHeaderVars.Value)) - pathVars := make([]varType, 0, len(mopt.RESTPathVars)) + queryVars := make([]plugin.VarType, 0, len(mopt.RESTQueryVars.Value)) + headerVars := make([]plugin.VarType, 0, len(mopt.RESTHeaderVars.Value)) + pathVars := make([]plugin.VarType, 0, len(mopt.RESTPathVars)) paramVars := make([]*option.VarType, 0, len(m.Sig.Params)) for _, p := range m.Sig.Params { - if IsContext(p) { + if plugin.IsContext(p) { continue } - if v, ok := findParam(p, mopt.RESTQueryVars.Value); ok { + if v, ok := plugin.FindParam(p, mopt.RESTQueryVars.Value); ok { queryVars = append(queryVars, v) continue } - if v, ok := findParam(p, mopt.RESTHeaderVars.Value); ok { + if v, ok := plugin.FindParam(p, mopt.RESTHeaderVars.Value); ok { headerVars = append(headerVars, v) continue } if regexp, ok := mopt.RESTPathVars[p.Name.Value]; ok { - pathVars = append(pathVars, varType{ - p: p, - value: regexp, + pathVars = append(pathVars, plugin.VarType{ + Param: p, + Value: regexp, }) continue } @@ -263,215 +269,244 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { epSetName, m.Name, ) - if mopt.ServerDecodeRequest.Value != nil { - pkg := importer.Import(mopt.ServerDecodeRequest.Value.Pkg.Name, mopt.ServerDecodeRequest.Value.Pkg.Path) - fnName := mopt.ServerDecodeRequest.Value.Name.String() - if pkg != "" { - fnName = pkg + "." + fnName - } - g.w.W(fnName) - } else { - g.w.W("func(ctx %s.Context, r *%s.Request) (_ interface{}, err error) {\n", contextPkg, httpPkg) - nameRequest := NameRequest(m, iface) + g.w.W("func(ctx %s.Context, r *%s.Request) (_ interface{}, err error) {\n", contextPkg, httpPkg) - if len(m.Sig.Params) > 0 { - g.w.W("var req %s\n", nameRequest) - if len(mopt.RESTPathVars) > 0 { - if g.UseFast { - fmtPkg := importer.Import("fmt", "fmt") + nameRequest := NameRequest(m, iface) + if len(m.Sig.Params) > 0 { + g.w.W("var req %s\n", nameRequest) + if len(mopt.RESTPathVars) > 0 { + if g.UseFast { + fmtPkg := importer.Import("fmt", "fmt") - g.w.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kitHTTPPkg, routerPkg) - g.w.W("if !ok {\n") - g.w.W("return nil, %s.Errorf(\"couldn't assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kitHTTPPkg, routerPkg) - g.w.W("}\n") - } else { - g.w.W("vars := %s.Vars(r)\n", routerPkg) - } + g.w.W("vars, ok := ctx.Value(%s.ContextKeyRouter).(*%s.Context)\n", kitHTTPPkg, routerPkg) + g.w.W("if !ok {\n") + g.w.W("return nil, %s.Errorf(\"couldn't assert %s.ContextKeyRouter to *%s.Context\")\n", fmtPkg, kitHTTPPkg, routerPkg) + g.w.W("}\n") + } else { + g.w.W("vars := %s.Vars(r)\n", routerPkg) } - if len(mopt.RESTQueryVars.Value) > 0 { - if g.UseFast { - g.w.W("q := r.URI().QueryArgs()\n") - } else { - g.w.W("q := r.URL.Query()\n") - } + } + if len(mopt.RESTQueryVars.Value) > 0 { + if g.UseFast { + g.w.W("q := r.URI().QueryArgs()\n") + } else { + g.w.W("q := r.URL.Query()\n") } + } + + if len(pathVars) > 0 { + errorPkg := importer.Import("errors", "errors") for _, pathVar := range pathVars { - var valueID string + var valueVar string if g.UseFast { - valueID = "vars.Param(" + strconv.Quote(pathVar.p.Name.Value) + ")" + valueVar = "vars.Param(" + strconv.Quote(pathVar.Param.Name.Value) + ")" } else { - valueID = "vars[" + strconv.Quote(pathVar.p.Name.Value) + "]" + valueVar = "vars[" + strconv.Quote(pathVar.Param.Name.Value) + "]" } - g.w.WriteConvertType(importer, "req."+strcase.ToCamel(pathVar.p.Name.Value), valueID, pathVar.p, []string{"nil"}, "", false, "") + + convert.NewBuilder(importer). + SetAssignVar("req." + strcase.ToCamel(pathVar.Param.Name.Value)). + SetValueVar(valueVar). + SetFieldName(pathVar.Param.Name). + SetFieldType(pathVar.Param.Type). + SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + Write(&g.w) + + //g.w.WriteConvertType(importer, "req."+strcase.ToCamel(pathVar.Param.Name.Value), valueID, pathVar.Param, []string{"nil"}, "", false, "") } + } + + if len(queryVars) > 0 { + errorPkg := importer.Import("errors", "errors") for _, queryVar := range queryVars { - var valueID string + var valueVar string if g.UseFast { - valueID = "string(q.Peek(" + strconv.Quote(queryVar.value) + "))" + valueVar = "string(q.Peek(" + strconv.Quote(queryVar.Value) + "))" } else { - valueID = "q.Get(" + strconv.Quote(queryVar.value) + ")" + valueVar = "q.Get(" + strconv.Quote(queryVar.Value) + ")" } - if queryVar.required { + if queryVar.IsRequired { fmtPkg := importer.Import("fmt", "fmt") if g.UseFast { - g.w.W("if !q.Has(\"%[1]s\") {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.value, fmtPkg) + g.w.W("if !q.Has(\"%[1]s\") {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) } else { - g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.value, fmtPkg) + g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn nil, %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) } } - tmpID := "tmp" + queryVar.p.Name.Value - g.w.W("%s := %s\n", tmpID, valueID) + tmpID := "tmp" + queryVar.Param.Name.Value + g.w.W("%s := %s\n", tmpID, valueVar) g.w.W("if %s != \"\" {\n", tmpID) - g.w.WriteConvertType(importer, "req."+queryVar.p.Name.Upper(), tmpID, queryVar.p, []string{"nil"}, "", false, "") + + convert.NewBuilder(importer). + SetAssignVar("req." + queryVar.Param.Name.Upper()). + SetValueVar(tmpID). + SetFieldName(queryVar.Param.Name). + SetFieldType(queryVar.Param.Type). + SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + Write(&g.w) g.w.W("}\n") } + } + if len(headerVars) > 0 { + errorPkg := importer.Import("errors", "errors") for _, headerVar := range headerVars { - var valueID string + var valueVar string if g.UseFast { - valueID = "string(r.Header.Peek(" + strconv.Quote(headerVar.value) + "))" + valueVar = "string(r.Header.Peek(" + strconv.Quote(headerVar.Value) + "))" } else { - valueID = "r.Header.Get(" + strconv.Quote(headerVar.value) + ")" + valueVar = "r.Header.Get(" + strconv.Quote(headerVar.Value) + ")" } - g.w.WriteConvertType(importer, "req."+headerVar.p.Name.Upper(), valueID, headerVar.p, []string{"nil"}, "", false, "") + convert.NewBuilder(importer). + SetAssignVar("req." + headerVar.Param.Name.Upper()). + SetValueVar(valueVar). + SetFieldName(headerVar.Param.Name). + SetFieldType(headerVar.Param.Type). + SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + Write(&g.w) } + } - if len(paramVars) > 0 { - switch stdstrings.ToUpper(mopt.RESTMethod.Take()) { - case "POST", "PUT", "PATCH": - switch bodyType { - case "json": - jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") - fmtPkg := importer.Import("fmt", "fmt") - pkgIO := importer.Import("io", "io") + if len(paramVars) > 0 { + errorPkg := importer.Import("errors", "errors") - g.w.W("var data []byte\n") + switch stdstrings.ToUpper(mopt.RESTMethod.Take()) { + case "POST", "PUT", "PATCH": + switch bodyType { + case "json": + jsonPkg := importer.Import("ffjson", "github.com/pquerna/ffjson/ffjson") + fmtPkg := importer.Import("fmt", "fmt") + pkgIO := importer.Import("io", "io") - if g.UseFast { - g.w.W("data = r.Body()\n") - } else { - ioutilPkg := importer.Import("ioutil", "io/ioutil") - g.w.W("data, err = %s.ReadAll(r.Body)\n", ioutilPkg) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) - }) - } - if len(paramVars) == 1 { - if s, ok := paramVars[0].Type.(*option.SliceType); ok { - if b, ok := s.Value.(*option.BasicType); ok && b.IsByte() { - g.w.W("req%s = data\n", "."+paramVars[0].Name.Upper()) - } else { - g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) - } + g.w.W("var data []byte\n") + if g.UseFast { + g.w.W("data = r.Body()\n") + } else { + ioutilPkg := importer.Import("ioutil", "io/ioutil") + g.w.W("data, err = %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) + }) + } + if len(paramVars) == 1 { + if s, ok := paramVars[0].Type.(*option.SliceType); ok { + if b, ok := s.Value.(*option.BasicType); ok && b.IsByte() { + g.w.W("req%s = data\n", "."+paramVars[0].Name.Upper()) } else { g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } } else { g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } - g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) - g.w.W("}\n") - case "urlencoded": - if g.UseFast { - } else { - g.w.W("r.ParseForm()\n") - for _, p := range paramVars { - valueID := "r.Form.Get(" + strconv.Quote(p.Name.Value) + ")" - g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") - } - } - case "multipart": - multipartMaxMemory := mopt.RESTMultipartMaxMemory.Take() - if multipartMaxMemory == 0 { - multipartMaxMemory = 67108864 - } - if g.UseFast { - g.w.W("form, err := r.MultipartForm()\n") - } else { - g.w.W("err = r.ParseMultipartForm(%d)\n", multipartMaxMemory) + } else { + g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) + } + g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) + g.w.W("return nil, %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, nameRequest) + g.w.W("}\n") + case "urlencoded": + if g.UseFast { + } else { + g.w.W("r.ParseForm()\n") + for _, paramVar := range paramVars { + valueVar := "r.Form.Get(" + strconv.Quote(paramVar.Name.Value) + ")" + + convert.NewBuilder(importer). + SetAssignVar("req." + "req." + paramVar.Name.Upper()). + SetValueVar(valueVar). + SetFieldName(paramVar.Name). + SetFieldType(paramVar.Type). + SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + Write(&g.w) } - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - for _, p := range paramVars { - if isFileUploadType(p.Type, importer) { - osPkg := importer.Import("os", "os") - - if g.UseFast { - g.w.W("parts := form.File[%s]\n", strconv.Quote(p.Name.Value)) - g.w.W("var (\nf *%s.File\n)\n", osPkg) - g.w.W("if len(parts) > 0 {\n") - g.w.W("f, err = %s.Open(parts[0].Filename)\n", osPkg) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - g.w.W("}\n") - } else { - g.w.W("_, h, err := r.FormFile(%s)\n", strconv.Quote(p.Name.Value)) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - g.w.W("f, err := %s.Open(h.Filename)\n", osPkg) - g.w.WriteCheckErr("err", func() { - g.w.W("return nil, err\n") - }) - } - g.w.W("req.%s = f\n", p.Name.Upper()) - continue - } - var valueID string + } + case "multipart": + multipartMaxMemory := mopt.RESTMultipartMaxMemory.Take() + if multipartMaxMemory == 0 { + multipartMaxMemory = 67108864 + } + if g.UseFast { + g.w.W("form, err := r.MultipartForm()\n") + } else { + g.w.W("err = r.ParseMultipartForm(%d)\n", multipartMaxMemory) + } + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + for _, paramVar := range paramVars { + if isFileUploadType(paramVar.Type, importer) { + osPkg := importer.Import("os", "os") + if g.UseFast { - valueID = "form" + p.Name.Upper() - g.w.W("var %s string\n", valueID) - g.w.W("if fv, ok := form.Value[%s]; ok && len(fv) > 0 {\n", strconv.Quote(p.Name.Value)) - g.w.W("%s = fv[0]\n", valueID) + g.w.W("parts := form.File[%s]\n", strconv.Quote(paramVar.Name.Value)) + g.w.W("var (\nf *%s.File\n)\n", osPkg) + g.w.W("if len(parts) > 0 {\n") + g.w.W("f, err = %s.Open(parts[0].Filename)\n", osPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) g.w.W("}\n") } else { - valueID = "r.FormValue(" + strconv.Quote(p.Name.Value) + ")" + g.w.W("_, h, err := r.FormFile(%s)\n", strconv.Quote(paramVar.Name.Value)) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("f, err := %s.Open(h.Filename)\n", osPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) } - g.w.WriteConvertType(importer, "req."+p.Name.Upper(), valueID, p, []string{"nil"}, "", false, "") + g.w.W("req.%s = f\n", paramVar.Name.Upper()) + continue + } + var valueVar string + if g.UseFast { + valueVar = "form" + paramVar.Name.Upper() + g.w.W("var %s string\n", valueVar) + g.w.W("if fv, ok := form.Value[%s]; ok && len(fv) > 0 {\n", strconv.Quote(paramVar.Name.Value)) + g.w.W("%s = fv[0]\n", valueVar) + g.w.W("}\n") + } else { + valueVar = "r.FormValue(" + strconv.Quote(paramVar.Name.Value) + ")" } + + convert.NewBuilder(importer). + SetAssignVar("req." + "req." + "req." + paramVar.Name.Upper()). + SetValueVar(valueVar). + SetFieldName(paramVar.Name). + SetFieldType(paramVar.Type). + SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + Write(&g.w) } } } - - g.w.W("return req, nil\n") - } else { - g.w.W("return nil, nil\n") } - g.w.W("}") - } - g.w.W(",\n") - if mopt.ServerEncodeResponse.Value != nil { - pkg := importer.Import(mopt.ServerEncodeResponse.Value.Pkg.Name, mopt.ServerEncodeResponse.Value.Pkg.Path) - fnName := mopt.ServerEncodeResponse.Value.Name.String() - if pkg != "" { - fnName = pkg + "." + fnName - } - g.w.W(fnName) + g.w.W("return req, nil\n") } else { - if mopt.RESTWrapResponse.Take() != "" { - var responseWriterType string - if g.UseFast { - responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) - } else { - responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) - } - g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) - g.w.W("return encodeResponseHTTP(ctx, w, %s)\n", wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."))) - g.w.W("}") + g.w.W("return nil, nil\n") + } + g.w.W("},\n") + + if mopt.RESTWrapResponse.Take() != "" { + var responseWriterType string + if g.UseFast { + responseWriterType = fmt.Sprintf("*%s.Response", httpPkg) } else { - g.w.W("encodeResponseHTTP") + responseWriterType = fmt.Sprintf("%s.ResponseWriter", httpPkg) } + g.w.W("func (ctx context.Context, w %s, response interface{}) error {\n", responseWriterType) + g.w.W("return %s(ctx, w, %s)\n", encRespFuncName, wrapDataServer(stdstrings.Split(mopt.RESTWrapResponse.Take(), "."))) + g.w.W("}") + } else { + g.w.W(encRespFuncName) } - g.w.W(",\n") - g.w.W("append(opts.genericServerOption, opts.%sServerOption...)...,\n", LcNameWithAppPrefix(iface)+m.Name.Value) + g.w.W(",\n") + g.w.W("append(opts.genericOpts.serverOption, opts.%sOpts.serverOption...)...,\n", LcNameWithAppPrefix(iface)+m.Name.Value) g.w.W(")") if g.UseFast { @@ -508,9 +543,17 @@ func (g *RESTServerGenerator) writeEncodeResponseFunc(contextPkg, httpPkg, jsonP g.w.W(", response interface{}) (err error) {\n") g.w.W("contentType := \"application/json; charset=utf-8\"\n") g.w.W("statusCode := 200\n") + g.w.W("var data []byte\n") g.w.W("if response != nil {\n") + + g.w.W("if cookie, ok := response.(interface{ HTTPCookies() []%s.Cookie }); ok {\n", httpPkg) + g.w.W("for _, c := range cookie.HTTPCookies() {\n") + g.w.W("%s.SetCookie(w, &c)\n", httpPkg) + g.w.W("}\n") + g.w.W("}\n") + g.w.W("if download, ok := response.(downloader); ok {\n") g.w.W("contentType = download.ContentType()\n") g.w.W("data = download.Data()\n") @@ -542,6 +585,7 @@ func (g *RESTServerGenerator) writeEncodeResponseFunc(contextPkg, httpPkg, jsonP func (g *RESTServerGenerator) writeDefaultErrorEncoder(contextPkg string, httpPkg string, kitHTTPPkg string, jsonPkg string) { g.w.W("type errorWrapper struct {\n") g.w.W("Error string `json:\"error\"`\n") + g.w.W("Code string `json:\"code,omitempty\"`\n") g.w.W("Data interface{} `json:\"data,omitempty\"`\n") g.w.W("}\n") @@ -552,19 +596,23 @@ func (g *RESTServerGenerator) writeDefaultErrorEncoder(contextPkg string, httpPk g.w.W("w %s.ResponseWriter) {\n", httpPkg) } - g.w.W("var errData interface{}\n") - g.w.W("if e, ok := err.(interface{ ErrorData() interface{} }); ok {\n") - g.w.W("errData = e.ErrorData()\n") + g.w.W("var (\nerrData interface{}\nerrCode string\n)\n") + g.w.W("if e, ok := err.(interface{ Data() interface{} }); ok {\n") + g.w.W("errData = e.Data()\n") + g.w.W("}\n") + + g.w.W("if e, ok := err.(interface{ Code() string }); ok {\n") + g.w.W("errCode = e.Code()\n") g.w.W("}\n") - g.w.W("data, merr := %s.Marshal(errorWrapper{Error: err.Error(), Data: errData})\n", jsonPkg) - g.w.W("if merr != nil {\n") + g.w.W("data, jsonErr := %s.Marshal(errorWrapper{Error: err.Error(), Code: errCode, Data: errData})\n", jsonPkg) + g.w.W("if jsonErr != nil {\n") if g.UseFast { g.w.W("w.SetBody([]byte(") } else { g.w.W("_, _ = w.Write([]byte(") } - g.w.W("%s))\n", strconv.Quote("unexpected error")) + g.w.W("%s))\n", strconv.Quote("unexpected marshal error")) g.w.W("return\n") g.w.W("}\n") diff --git a/v3/internal/plugin/gokit/generator/server_helpers.go b/v3/internal/plugin/gokit/generator/server_helpers.go new file mode 100644 index 00000000..3dadb206 --- /dev/null +++ b/v3/internal/plugin/gokit/generator/server_helpers.go @@ -0,0 +1,127 @@ +package generator + +import ( + "context" + "fmt" + + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type ServerHelpers struct { + w writer.GoWriter + Interfaces []*config.Interface + JSONRPCEnable bool + HTTPServerEnable bool + UseFast bool + Output string + Pkg string +} + +func (g *ServerHelpers) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + endpointPkg := importer.Import("endpoint", "github.com/go-kit/kit/endpoint") + + if g.HTTPServerEnable { + var ( + kitHTTPPkg string + ) + if g.JSONRPCEnable { + if g.UseFast { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/fasthttp/jsonrpc") + } else { + kitHTTPPkg = importer.Import("jsonrpc", "github.com/l-vitaly/go-kit/transport/http/jsonrpc") + } + } else { + if g.UseFast { + kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") + } else { + kitHTTPPkg = importer.Import("http", "github.com/go-kit/kit/transport/http") + } + } + + kitHTTPServerOption := fmt.Sprintf("%s.ServerOption", kitHTTPPkg) + endpointMiddlewareOption := fmt.Sprintf("%s.Middleware", endpointPkg) + endpointOption := fmt.Sprintf("%s.Endpoint", endpointPkg) + serverOptType := "serverOpts" + + g.w.W("type Option func (*opts)\n\n") + + g.w.W("func ServerOptions(opt ...%s) Option {\n", kitHTTPServerOption) + g.w.W("return func(c *opts) { c.serverOption = opt }\n") + g.w.W("}\n") + + g.w.W("func MiddlewareOption(opt ...%s) Option {\n", endpointMiddlewareOption) + g.w.W("return func(c *opts) { c.endpointMiddleware = opt }\n") + g.w.W("}\n") + + //if !g.JSONRPCEnable { + // g.w.W("func DecodeRequestFuncOption(opt %s.DecodeRequestFunc) Option {\n", kitHTTPPkg) + // g.w.W("return func(c *opts) { c.decReqFunc = opt }\n") + // g.w.W("}\n") + // + // g.w.W("func EncodeResponseFuncOption(opt %s.EncodeResponseFunc) Option {\n", kitHTTPPkg) + // g.w.W("return func(c *opts) { c.encRespFunc = opt }\n") + // g.w.W("}\n") + //} + g.w.W("type opts struct {\n") + g.w.W("serverOption []%s\n", kitHTTPServerOption) + g.w.W("endpoint %s\n", endpointOption) + g.w.W("endpointMiddleware []%s\n", endpointMiddlewareOption) + //if !g.JSONRPCEnable { + // g.w.W("decReqFunc %s.DecodeRequestFunc\n", kitHTTPPkg) + // g.w.W("encRespFunc %s.EncodeResponseFunc\n", kitHTTPPkg) + //} + g.w.W("}\n\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + g.w.W("type %s struct { opts }\n\n", LcNameIfaceMethod(iface, m)+"Opts") + } + } + + g.w.W("type ServerOption func(*%s)\n\n", serverOptType) + + g.w.W("func GenericServerOptions(opt ...Option) ServerOption {\nreturn func(c *serverOpts) {\nfor _, o := range opt {\no(&c.genericOpts)\n}\n}\n}\n\n") + g.w.W("func ErrorEncoderOption(opt %s.ErrorEncoder) ServerOption {\nreturn func(c *serverOpts) {\n c.errorEncoder = opt\n}\n}\n\n", kitHTTPPkg) + + g.w.W("type %s struct {\n", serverOptType) + g.w.W("errorEncoder %s.ErrorEncoder\n", kitHTTPPkg) + g.w.W("genericOpts opts\n") + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + serverOpt := LcNameWithAppPrefix(iface) + m.Name.Value + "Opts" + g.w.W("%[1]s %[1]s\n", serverOpt) + } + } + g.w.W("}\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + serverOptName := LcNameWithAppPrefix(iface) + m.Name.Value + "Opts" + serverOptFuncName := UcNameWithAppPrefix(iface) + m.Name.Value + g.w.W("func %sOptions(opt ...Option) ServerOption {\nreturn func(c *serverOpts) {\nfor _, o := range opt {\no(&c.%s.opts)\n}\n}\n}\n\n", serverOptFuncName, serverOptName) + } + } + } + + return g.w.Bytes() +} + +func (g *ServerHelpers) Package() string { + return g.Pkg +} + +func (g *ServerHelpers) OutputDir() string { + return g.Output +} + +func (g *ServerHelpers) Filename() string { + return "server_helpers.go" +} diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/utils.go index 497c14b0..67903492 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/utils.go @@ -11,6 +11,8 @@ import ( "github.com/google/uuid" "github.com/swipe-io/strcase" + + "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/openapi" "github.com/swipe-io/swipe/v3/option" @@ -218,33 +220,6 @@ func IfaceMiddlewareTypeName(iface *config.Interface) string { return UcNameWithAppPrefix(iface) + "Middleware" } -func IsContext(v *option.VarType) bool { - if named, ok := v.Type.(*option.NamedType); ok { - if _, ok := named.Type.(*option.IfaceType); ok { - return named.Name.Value == "Context" && named.Pkg.Path == "context" - } - } - return false -} - -func IsError(v *option.VarType) bool { - if named, ok := v.Type.(*option.NamedType); ok { - if _, ok := named.Type.(*option.IfaceType); ok && named.Name.Value == "error" { - return true - } - } - return false -} - -func Error(vars option.VarsType) *option.VarType { - for _, v := range vars { - if IsError(v) { - return v - } - } - return nil -} - func DownloadFile(vars option.VarsType) *option.VarType { for _, v := range vars { if isFileDownloadType(v.Type) { @@ -256,7 +231,7 @@ func DownloadFile(vars option.VarsType) *option.VarType { func Contexts(vars option.VarsType) (result []*option.VarType) { for _, v := range vars { - if IsContext(v) { + if plugin.IsContext(v) { result = append(result, v) } } @@ -264,7 +239,7 @@ func Contexts(vars option.VarsType) (result []*option.VarType) { } func LenWithoutErrors(vars option.VarsType) int { - if Error(vars) != nil { + if plugin.Error(vars) != nil { return len(vars) - 1 } return len(vars) @@ -280,7 +255,7 @@ func makeLogParams(include, exclude map[string]struct{}, data ...*option.VarType func makeLogParamsRecursive(include, exclude map[string]struct{}, parentName string, data ...*option.VarType) (result []string) { for _, v := range data { - if IsContext(v) { + if plugin.IsContext(v) { continue } if len(include) > 0 { @@ -338,7 +313,7 @@ func hasMethodString(v *option.NamedType) bool { func findContextVar(vars option.VarsType) (v *option.VarType) { for _, p := range vars { - if IsContext(p) { + if plugin.IsContext(p) { v = p break } @@ -348,7 +323,7 @@ func findContextVar(vars option.VarsType) (v *option.VarType) { func findErrorVar(vars option.VarsType) (v *option.VarType) { for _, p := range vars { - if IsError(p) { + if plugin.IsError(p) { v = p break } @@ -491,17 +466,6 @@ func getOpenapiJSONRPCErrorSchemas() openapi.Schemas { } } -func getOpenapiRESTErrorSchema() *openapi.Schema { - return &openapi.Schema{ - Type: "object", - Properties: openapi.Properties{ - "error": &openapi.Schema{ - Type: "string", - }, - }, - } -} - func jsTypeDef(i interface{}) string { return jsTypeDefRecursive(i, 0, map[string]struct{}{}) } @@ -650,22 +614,6 @@ func singular(word string) string { return pluralize.NewClient().Singular(word) } -func isGolangNamedType(t *option.NamedType) bool { - switch t.Pkg.Path { - case "time": - switch t.Name.Value { - case "Time", "Location": - return true - } - case "sql": - switch t.Name.Value { - case "NullBool", "NullFloat64", "NullInt32", "NullInt64", "NullString", "NullTime": - return true - } - } - return false -} - func isFileUploadType(i interface{}, importer swipe.Importer) bool { if n, ok := i.(*option.NamedType); ok { if iface, ok := n.Type.(*option.IfaceType); ok { @@ -759,30 +707,26 @@ func wrapDataClient(parts []string, responseType string) (result, structPath str } -func findParam(p *option.VarType, vars []string) (varType, bool) { - for i := 0; i < len(vars); i += 2 { - paramName := vars[i+1] - if paramName == p.Name.Value { - varName := vars[i] - var required bool - if stdstrings.HasPrefix(varName, "!") { - varName = varName[1:] - required = true - } - return varType{ - p: p, - value: varName, - required: required, - }, true - } - } - return varType{}, false -} - -func makeOpenapiSchemaRESTError() *openapi.Schema { +func makeOpenapiSchemaRESTError(errCode string) *openapi.Schema { return &openapi.Schema{ Type: "object", Properties: openapi.Properties{ + "data": &openapi.Schema{ + Type: "object", + Properties: openapi.Properties{ + "key": &openapi.Schema{AnyOf: []openapi.Schema{ + {Type: "string"}, + {Type: "number"}, + {Type: "integer"}, + {Type: "array"}, + {Type: "object"}, + }}, + }, + }, + "code": &openapi.Schema{ + Type: "string", + Example: errCode, + }, "error": &openapi.Schema{ Type: "string", }, diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index a720d228..e536dfcd 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -143,38 +143,37 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { URL: p.config.CURLURL.Take(), }) } + if p.config.LoggingEnable { + result = append(result, &generator.Logging{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + }) + } + if p.config.InstrumentingEnable { + result = append(result, &generator.Instrumenting{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + Labels: p.config.InstrumentingLabels, + }) + } if httpServerEnable { result = append(result, - &generator.Helpers{ + &generator.MiddlewareChain{}, + &generator.ServerHelpers{ Interfaces: p.config.Interfaces, JSONRPCEnable: jsonRPCEnable, - GoClientEnable: goClientEnable, HTTPServerEnable: httpServerEnable, UseFast: useFast, - IfaceErrors: p.config.IfaceErrors, }, &generator.Endpoint{ Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, HTTPServerEnable: httpServerEnable, }, &generator.InterfaceGenerator{ Interfaces: p.config.Interfaces, }, ) - - if p.config.LoggingEnable { - result = append(result, &generator.Logging{ - Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, - }) - } - if p.config.InstrumentingEnable { - result = append(result, &generator.Instrumenting{ - Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, - Labels: p.config.InstrumentingLabels, - }) - } if p.config.OpenapiEnable != nil { result = append(result, &generator.Openapi{ JSONRPCEnable: jsonRPCEnable, @@ -196,11 +195,10 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } if jsonRPCEnable { result = append(result, &generator.JSONRPCServerGenerator{ - UseFast: useFast, - Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, - DefaultErrorEncoder: p.config.ServerErrorEncoder.Value, - JSONRPCPath: p.config.JSONRPCPath.Take(), + UseFast: useFast, + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + JSONRPCPath: p.config.JSONRPCPath.Take(), }) if jsClientEnable { result = append(result, &generator.JSONRPCJSClientGenerator{ @@ -220,11 +218,10 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } else { result = append(result, &generator.RESTServerGenerator{ - UseFast: useFast, - JSONRPCEnable: jsonRPCEnable, - MethodOptions: p.config.MethodOptionsMap, - ServerErrorEncoder: p.config.ServerErrorEncoder.Value, - Interfaces: p.config.Interfaces, + UseFast: useFast, + JSONRPCEnable: jsonRPCEnable, + MethodOptions: p.config.MethodOptionsMap, + Interfaces: p.config.Interfaces, }) } } @@ -238,18 +235,21 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } result = append(result, - &generator.Helpers{ - Interfaces: p.config.Interfaces, - JSONRPCEnable: jsonRPCEnable, - GoClientEnable: goClientEnable, - HTTPServerEnable: httpServerEnable, - UseFast: useFast, - IfaceErrors: p.config.IfaceErrors, - Pkg: pkg, - Output: output, + &generator.MiddlewareChain{ + Output: output, + Pkg: pkg, + }, + &generator.ClientHelpers{ + Interfaces: p.config.Interfaces, + JSONRPCEnable: jsonRPCEnable, + UseFast: useFast, + IfaceErrors: p.config.IfaceErrors, + Pkg: pkg, + Output: output, }, &generator.Endpoint{ Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, HTTPServerEnable: httpServerEnable, Pkg: pkg, Output: output, diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/utils.go index d0347c28..1bbe923b 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/utils.go @@ -72,7 +72,12 @@ func extractValues(pkg *stdpackages.Package, stmtList []ast.Stmt) (values []inte if ret, ok := stmt.(*ast.ReturnStmt); ok { for _, result := range ret.Results { if v, ok := pkg.TypesInfo.Types[result]; ok { - values = append(values, constant.Val(v.Value)) + tv := constant.Val(v.Value) + if tv != nil { + values = append(values, tv) + } else { + values = append(values, v.Type) + } } } } @@ -80,6 +85,37 @@ func extractValues(pkg *stdpackages.Package, stmtList []ast.Stmt) (values []inte return } +func findMethodByNamed(t *stdtypes.Named, name ...string) *stdtypes.Func { + for i := 0; i < t.NumMethods(); i++ { + m := t.Method(i) + for _, s := range name { + if m.Name() == s { + return m + } + } + } + return nil +} + +func extractReturnValuesByFunc(pkg *stdpackages.Package, f *stdtypes.Func, declTypes map[string]*typeInfo) []interface{} { + sig := f.Type().(*types.Signature) + id := f.Name() + if recv := sig.Recv(); recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() + } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id + } + if info, ok := declTypes[pkg.PkgPath+id]; ok { + return extractValues(pkg, info.stmtList) + } + return nil +} + func findErrors(modulePath string, declTypes map[string]*typeInfo, pkgs *packages.Packages) (result map[string]config.Error) { result = make(map[string]config.Error, 1024) _ = pkgs.TraverseObjects(func(pkg *stdpackages.Package, id *ast.Ident, obj stdtypes.Object) (err error) { @@ -87,44 +123,34 @@ func findErrors(modulePath string, declTypes map[string]*typeInfo, pkgs *package return } if t, ok := obj.Type().(*types.Named); ok { - for i := 0; i < t.NumMethods(); i++ { - m := t.Method(i) - if m.Name() == "ErrorCode" || m.Name() == "StatusCode" { - sig := m.Type().(*types.Signature) - id := m.Name() - if recv := sig.Recv(); recv != nil { - recvType := recv.Type() - if ptr, ok := recvType.(*types.Pointer); ok { - recvType = ptr.Elem() - } - recvNamed := recvType.(*types.Named) - id = "/" + recvNamed.Obj().Name() + "." + id - } else { - id = "." + id - } - if info, ok := declTypes[pkg.PkgPath+id]; ok { - values := extractValues(pkg, info.stmtList) - if len(values) != 1 { - continue - } - val, ok := values[0].(int64) - if !ok { - continue - } - tp := config.RESTErrorType - if m.Name() == "ErrorCode" { - tp = config.JRPCErrorType - } - result[t.Obj().Pkg().Path()+"/"+t.Obj().Name()] = config.Error{ - PkgName: t.Obj().Pkg().Name(), - PkgPath: t.Obj().Pkg().Path(), - Name: t.Obj().Name(), - Type: tp, - Code: val, - } - } + f := findMethodByNamed(t, "ErrorCode", "StatusCode") + if f == nil { + return + } + values := extractReturnValuesByFunc(pkg, f, declTypes) + if len(values) != 1 { + return + } + code, ok := values[0].(int64) + if !ok { + return + } + + var errCode string + if f := findMethodByNamed(t, "Code"); f != nil { + values := extractReturnValuesByFunc(pkg, f, declTypes) + if len(values) > 0 { + errCode, _ = values[0].(string) } } + + result[t.Obj().Pkg().Path()+"/"+t.Obj().Name()] = config.Error{ + PkgName: t.Obj().Pkg().Name(), + PkgPath: t.Obj().Pkg().Path(), + Name: t.Obj().Name(), + Code: code, + ErrCode: errCode, + } } return }) @@ -338,21 +364,6 @@ func fillMethodDefaultOptions(method, methodDefault config.MethodOptions) config if !method.RESTWrapResponse.IsValid() { method.RESTWrapResponse.Value = methodDefault.RESTWrapResponse.Value } - if method.ClientEncodeRequest.Value == nil { - method.ClientEncodeRequest.Value = methodDefault.ClientEncodeRequest.Value - } - if method.ClientDecodeResponse.Value == nil { - method.ClientDecodeResponse.Value = methodDefault.ClientDecodeResponse.Value - } - if method.ServerDecodeRequest.Value == nil { - method.ServerDecodeRequest.Value = methodDefault.ServerDecodeRequest.Value - } - if method.ServerEncodeResponse.Value == nil { - method.ServerEncodeResponse.Value = methodDefault.ServerEncodeResponse.Value - } - if method.ClientErrorDecode.Value == nil { - method.ClientErrorDecode.Value = methodDefault.ClientErrorDecode.Value - } if !method.Instrumenting.IsValid() { method.Instrumenting = methodDefault.Instrumenting } diff --git a/v3/internal/plugin/plugin.go b/v3/internal/plugin/plugin.go new file mode 100644 index 00000000..19b8970d --- /dev/null +++ b/v3/internal/plugin/plugin.go @@ -0,0 +1,60 @@ +package plugin + +import ( + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/option" +) + +func IsContext(v *option.VarType) bool { + if named, ok := v.Type.(*option.NamedType); ok { + if _, ok := named.Type.(*option.IfaceType); ok { + return named.Name.Value == "Context" && named.Pkg.Path == "context" + } + } + return false +} + +func IsError(v *option.VarType) bool { + if named, ok := v.Type.(*option.NamedType); ok { + if _, ok := named.Type.(*option.IfaceType); ok && named.Name.Value == "error" { + return true + } + } + return false +} + +func Error(vars option.VarsType) *option.VarType { + for _, v := range vars { + if IsError(v) { + return v + } + } + return nil +} + +type VarType struct { + Param *option.VarType + Value string + IsRequired bool +} + +func FindParam(p *option.VarType, vars []string) (VarType, bool) { + for i := 0; i < len(vars); i += 2 { + paramName := vars[i+1] + if paramName == p.Name.Value { + varName := vars[i] + var required bool + if stdstrings.HasPrefix(varName, "!") { + varName = varName[1:] + required = true + } + return VarType{ + Param: p, + Value: varName, + IsRequired: required, + }, true + } + } + return VarType{}, false +} diff --git a/v3/main.go b/v3/main.go index 7e6ffb9c..1ba4667f 100644 --- a/v3/main.go +++ b/v3/main.go @@ -3,7 +3,7 @@ package v3 import ( "github.com/swipe-io/swipe/v3/cmd" _ "github.com/swipe-io/swipe/v3/internal/plugin/config" - _ "github.com/swipe-io/swipe/v3/internal/plugin/es" + _ "github.com/swipe-io/swipe/v3/internal/plugin/echo" _ "github.com/swipe-io/swipe/v3/internal/plugin/gokit" ) diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go index f5352836..b15353d8 100644 --- a/v3/writer/golang_writer.go +++ b/v3/writer/golang_writer.go @@ -1,11 +1,8 @@ package writer import ( - "fmt" - "strconv" stdstrings "strings" - "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" ) @@ -95,282 +92,280 @@ func (w *GoWriter) WriteFuncCall(id, name string, params []string) { w.W(")\n") } -func (w *GoWriter) getConvertFuncName(t *option.BasicType) string { - if t.IsAnyInt() { - return "Atoi(%s)" - } - if t.IsAnyUint() { - return "ParseUint(%s, 10, " + t.BitSize() + ")" - } - if t.IsAnyFloat() { - return "ParseFloat(%s, " + t.BitSize() + ")" - } - if t.IsBool() { - return "ParseBool(%s)" - } - return "" -} +//func (w *GoWriter) getConvertFuncName(t *option.BasicType) string { +// if t.IsAnyInt() { +// return "Atoi(%s)" +// } +// if t.IsAnyUint() { +// return "ParseUint(%s, 10, " + t.BitSize() + ")" +// } +// if t.IsAnyFloat() { +// return "ParseFloat(%s, " + t.BitSize() + ")" +// } +// if t.IsBool() { +// return "ParseBool(%s)" +// } +// return "" +//} -func (w *GoWriter) getFormatFuncName(t *option.BasicType) string { - if t.IsAnyInt() { - return "FormatInt(int64(%s), 10)" - } - if t.IsAnyUint() { - return "FormatUint(uint64(%s), 10)" - } - if t.IsAnyFloat() { - return "FormatFloat(float64(%s), 'g', -1, " + t.BitSize() + ")" - } - if t.IsBool() { - return "FormatBool(%s)" - } - return "" -} +//func (w *GoWriter) getFormatFuncName(t *option.BasicType) string { +// if t.IsAnyInt() { +// return "FormatInt(int64(%s), 10)" +// } +// if t.IsAnyUint() { +// return "FormatUint(uint64(%s), 10)" +// } +// if t.IsAnyFloat() { +// return "FormatFloat(float64(%s), 'g', -1, " + t.BitSize() + ")" +// } +// if t.IsBool() { +// return "FormatBool(%s)" +// } +// return "" +//} -func (w *GoWriter) writeFormatBasicType(importer swipe.Importer, assignId, valueId string, t *option.BasicType) { - funcName := w.getFormatFuncName(t) - if funcName != "" { - strconvPkg := importer.Import("strconv", "strconv") - if t.IsPointer { - valueId = "*" + valueId - } - w.W("%s := %s.%s\n", assignId, strconvPkg, fmt.Sprintf(funcName, valueId)) - } else { - w.W("%s := %s\n", assignId, valueId) - } -} +//func (w *GoWriter) writeFormatBasicType(importer swipe.Importer, assignId, valueId string, t *option.BasicType) { +// funcName := w.getFormatFuncName(t) +// if funcName != "" { +// strconvPkg := importer.Import("strconv", "strconv") +// if t.IsPointer { +// valueId = "*" + valueId +// } +// w.W("%s := %s.%s\n", assignId, strconvPkg, fmt.Sprintf(funcName, valueId)) +// } else { +// w.W("%s := %s\n", assignId, valueId) +// } +//} -func (w *GoWriter) WriteConvertBasicType(importer swipe.Importer, name, assignId, valueId string, t *option.BasicType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { - useCheckErr := true +//func (w *GoWriter) WriteConvertBasicType(importer swipe.Importer, name, assignId, valueId string, t *option.BasicType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { +// useCheckErr := true +// +// tmpId := strcase.ToLowerCamel(name) + strcase.ToCamel(t.Name) +// +// funcName := w.getConvertFuncName(t) +// if funcName != "" { +// strconvPkg := importer.Import("strconv", "strconv") +// w.W("%s, err := %s.%s\n", tmpId, strconvPkg, fmt.Sprintf(funcName, valueId)) +// } else { +// useCheckErr = false +// tmpId = valueId +// } +// if useCheckErr { +// if msgErrTemplate == "" { +// msgErrTemplate = "convert error" +// } +// errMsg := strconv.Quote(msgErrTemplate + ": %w") +// w.W("if err != nil {\n") +// if errSlice != "" { +// w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, importer.Import("fmt", "fmt"), errMsg) +// } else { +// w.W("return ") +// if len(errRet) > 0 { +// w.W("%s, ", stdstrings.Join(errRet, ",")) +// } +// w.W("%s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), tmpId) +// } +// w.W("}\n") +// } +// if declareVar { +// w.W("var ") +// } +// retId := fmt.Sprintf("%s(%s)", t.Name, tmpId) +// if t.IsPointer { +// ptrName := "ptr" + strcase.ToCamel(name) +// w.W("%s := %s\n", ptrName, tmpId) +// retId = "&" + ptrName +// } +// w.W("%s = %s", assignId, retId) +// w.W("\n") +//} - tmpId := strcase.ToLowerCamel(name) + strcase.ToCamel(t.Name) +//func (w *GoWriter) WriteFormatType(importer swipe.Importer, assignId, valueId string, f *option.VarType) { +// switch t := f.Type.(type) { +// case *option.BasicType: +// w.writeFormatBasicType(importer, assignId, valueId, t) +// case *option.SliceType: +// if bt, ok := t.Value.(*option.BasicType); ok { +// w.W("var %s string\n", assignId) +// w.W("for i, s := range %s {\n", valueId) +// w.W("if i > 0 {\n %s += \",\"\n}\n", assignId) +// w.writeFormatBasicType(importer, "v", "s", bt) +// w.W("%s += v\n", assignId) +// w.W("}\n") +// } +// +// case *option.NamedType: +// switch t.Pkg.Path { +// case "github.com/satori/uuid", "github.com/google/uuid": +// if t.Name.Value == "UUID" { +// w.WriteFormatUUID(importer, t, assignId, valueId) +// } +// case "time": +// w.WriteFormatTime(importer, t, assignId, valueId) +// } +// } +//} - funcName := w.getConvertFuncName(t) - if funcName != "" { - strconvPkg := importer.Import("strconv", "strconv") - w.W("%s, err := %s.%s\n", tmpId, strconvPkg, fmt.Sprintf(funcName, valueId)) - } else { - useCheckErr = false - tmpId = valueId - } - if useCheckErr { - if msgErrTemplate == "" { - msgErrTemplate = "convert error" - } - errMsg := strconv.Quote(msgErrTemplate + ": %w") - w.W("if err != nil {\n") - if errSlice != "" { - w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, importer.Import("fmt", "fmt"), errMsg) - } else { - w.W("return ") - if len(errRet) > 0 { - w.W("%s, ", stdstrings.Join(errRet, ",")) - } - w.W("%s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), tmpId) - } - w.W("}\n") - } - if declareVar { - w.W("var ") - } - retId := fmt.Sprintf("%s(%s)", t.Name, tmpId) - //if t.IsString() { - if t.IsPointer { - ptrName := "ptr" + strcase.ToCamel(name) - w.W("%s := %s\n", ptrName, tmpId) - retId = "&" + ptrName - } - //} - w.W("%s = %s", assignId, retId) - w.W("\n") -} +//func (w *GoWriter) WriteFormatTime(importer swipe.Importer, t *option.NamedType, assignId, valueId string) { +// switch t.Name.Value { +// case "Duration": +// w.W("%s := %s.String()\n", assignId, valueId) +// case "Time": +// timePkg := importer.Import("time", "time") +// w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", assignId, timePkg, valueId) +// } +//} +// +//func (w *GoWriter) WriteFormatUUID(_ swipe.Importer, t *option.NamedType, assignId, valueId string) { +// w.W("%s := %s.String() \n", assignId, valueId) +//} -func (w *GoWriter) WriteFormatType(importer swipe.Importer, assignId, valueId string, f *option.VarType) { - switch t := f.Type.(type) { - case *option.BasicType: - w.writeFormatBasicType(importer, assignId, valueId, t) - case *option.SliceType: - if bt, ok := t.Value.(*option.BasicType); ok { - w.W("var %s string\n", assignId) - w.W("for i, s := range %s {\n", valueId) - w.W("if i > 0 {\n %s += \",\"\n}\n", assignId) - w.writeFormatBasicType(importer, "v", "s", bt) - w.W("%s += v\n", assignId) - w.W("}\n") - } +//func (w *GoWriter) WriteConvertTime(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { +// switch t.Name.Value { +// case "Time": +// tmpID = t.Name.Lower() + "Time" +// timePkg := importer.Import("time", "time") +// w.W("%[1]s, err := %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", tmpID, timePkg, valueId) +// case "Duration": +// tmpID = t.Name.Lower() + "Dur" +// timePkg := importer.Import("time", "time") +// w.W("%s, err := %s.ParseDuration(%s)\n", tmpID, timePkg, valueId) +// } +// return +//} - case *option.NamedType: - switch t.Pkg.Path { - case "github.com/satori/uuid", "github.com/google/uuid": - if t.Name.Value == "UUID" { - w.WriteFormatUUID(importer, t, assignId, valueId) - } - case "time": - w.WriteFormatTime(importer, t, assignId, valueId) - } - } -} +//func (w *GoWriter) WriteConvertUUID(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { +// tmpID = t.Name.Lower() + "UUID" +// uuidPkg := importer.Import(t.Pkg.Name, t.Pkg.Path) +// +// switch t.Pkg.Path { +// case "github.com/google/uuid": +// w.W("%s, err := %s.Parse(%s)\n", tmpID, uuidPkg, valueId) +// case "github.com/satori/uuid": +// w.W("%s, err := %s.FromString(%s)\n", tmpID, uuidPkg, valueId) +// } +// return +//} -func (w *GoWriter) WriteFormatTime(importer swipe.Importer, t *option.NamedType, assignId, valueId string) { - switch t.Name.Value { - case "Duration": - w.W("%s := %s.String()\n", assignId, valueId) - case "Time": - timePkg := importer.Import("time", "time") - w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", assignId, timePkg, valueId) - } -} - -func (w *GoWriter) WriteFormatUUID(_ swipe.Importer, t *option.NamedType, assignId, valueId string) { - w.W("%s := %s.String() \n", assignId, valueId) -} - -func (w *GoWriter) WriteConvertTime(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { - switch t.Name.Value { - case "Time": - tmpID = t.Name.Lower() + "Time" - timePkg := importer.Import("time", "time") - w.W("%[1]s, err := %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", tmpID, timePkg, valueId) - case "Duration": - tmpID = t.Name.Lower() + "Dur" - timePkg := importer.Import("time", "time") - w.W("%s, err := %s.ParseDuration(%s)\n", tmpID, timePkg, valueId) - } - return -} +//func (w *GoWriter) WriteConvertURL(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { +// switch t.Name.Value { +// case "URL": +// tmpID = t.Name.Lower() + "URL" +// urlPkg := importer.Import("url", "net/url") +// w.W("%s, err := %s.Parse(%s)\n", tmpID, urlPkg, valueId) +// } +// return +//} -func (w *GoWriter) WriteConvertUUID(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { - tmpID = t.Name.Lower() + "UUID" - uuidPkg := importer.Import(t.Pkg.Name, t.Pkg.Path) - - switch t.Pkg.Path { - case "github.com/google/uuid": - w.W("%s, err := %s.Parse(%s)\n", tmpID, uuidPkg, valueId) - case "github.com/satori/uuid": - w.W("%s, err := %s.FromString(%s)\n", tmpID, uuidPkg, valueId) - } - return -} - -func (w *GoWriter) WriteConvertURL(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { - switch t.Name.Value { - case "URL": - tmpID = t.Name.Lower() + "URL" - urlPkg := importer.Import("url", "net/url") - w.W("%s, err := %s.Parse(%s)\n", tmpID, urlPkg, valueId) - } - return -} - -func (w *GoWriter) WriteConvertType( - importer swipe.Importer, assignId, valueId string, f *option.VarType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string, -) { - var ( - tmpID string - ) - - switch t := f.Type.(type) { - case *option.BasicType: - w.WriteConvertBasicType(importer, f.Name.Value, assignId, valueId, t, errRet, errSlice, declareVar, msgErrTemplate) - case *option.MapType: - stringsPkg := importer.Import("strings", "strings") - if k, ok := t.Key.(*option.BasicType); ok && k.IsString() { - if v, ok := t.Value.(*option.BasicType); ok { - tmpID = "parts" + f.Name.Lower() - w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) - w.W("%s = make(%s, len(%s))\n", assignId, swipe.TypeString(t, false, importer), tmpID) - if v.IsNumeric() { - w.W("for _, s := range %s {\n", tmpID) - w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) - w.W("if len(kv) == 2 {\n") - w.WriteConvertBasicType(importer, "tmp", assignId+"[kv[0]]", "kv[1]", v, errRet, errSlice, false, msgErrTemplate) - w.W("}\n") - w.W("}\n") - } else { - w.W("for _, s := range %s {\n", tmpID) - w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) - w.W("if len(kv) == 2 {\n") - w.W("%s[kv[0]] = kv[1]\n", assignId) - w.W("}\n") - w.W("}\n") - } - } - } - case *option.SliceType: - stringsPkg := importer.Import("strings", "strings") - switch t := t.Value.(type) { - case *option.BasicType: - if t.IsNumeric() { - tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(t.Name) - w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) - if declareVar { - w.W("var ") - } - w.W("%s = make([]%s, len(%s))\n", assignId, t.Name, tmpID) - w.W("for i, s := range %s {\n", tmpID) - w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", t, errRet, errSlice, false, msgErrTemplate) - w.W("}\n") - } else { - w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) - } - } - case *option.ArrayType: - stringsPkg := importer.Import("strings", "strings") - switch b := t.Value.(type) { - case *option.BasicType: - if b.IsNumeric() { - tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(b.Name) - w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) - if declareVar { - w.W("var ") - } - w.W("if len(%s) > len(%s) {\n", tmpID, assignId) - w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s))\n", errSlice, importer.Import("fmt", "fmt"), strconv.Quote(msgErrTemplate+": array length must be less or equal "+strconv.FormatInt(t.Len, 10))) - w.W("} else {\n") - - w.W("for i, s := range %s {\n", tmpID) - w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", b, errRet, errSlice, false, msgErrTemplate) - w.W("}\n") - w.W("}\n") - } else { - w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) - } - } - case *option.NamedType: - switch t.Pkg.Path { - case "net/url": - tmpID = w.WriteConvertURL(importer, t, valueId) - if !t.IsPointer { - tmpID = "*" + tmpID - } - case "github.com/satori/uuid", "github.com/google/uuid": - if t.Name.Value == "UUID" { - tmpID = w.WriteConvertUUID(importer, t, valueId) - if t.IsPointer { - tmpID = "&" + tmpID - } - } - case "time": - tmpID = w.WriteConvertTime(importer, t, valueId) - if t.IsPointer { - tmpID = "&" + tmpID - } - } - w.W("if err != nil {\n") - if errSlice != "" { - w.W("%[1]s = append(%[1]s, err)\n", errSlice) - } else { - w.W("return ") - if len(errRet) > 0 { - w.W("%s, ", stdstrings.Join(errRet, ",")) - } - w.W("err") - } - w.W("}\n") - if declareVar { - w.W("var ") - } - w.W("%s = %s\n", assignId, tmpID) - } - -} +//func (w *GoWriter) WriteConvertType( +// importer swipe.Importer, assignId, valueId string, f *option.VarType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string, +//) { +// var ( +// tmpID string +// ) +// +// switch t := f.Type.(type) { +// case *option.BasicType: +// w.WriteConvertBasicType(importer, f.Name.Value, assignId, valueId, t, errRet, errSlice, declareVar, msgErrTemplate) +// case *option.MapType: +// stringsPkg := importer.Import("strings", "strings") +// if k, ok := t.Key.(*option.BasicType); ok && k.IsString() { +// if v, ok := t.Value.(*option.BasicType); ok { +// tmpID = "parts" + f.Name.Lower() +// w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) +// w.W("%s = make(%s, len(%s))\n", assignId, swipe.TypeString(t, false, importer), tmpID) +// if v.IsNumeric() { +// w.W("for _, s := range %s {\n", tmpID) +// w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) +// w.W("if len(kv) == 2 {\n") +// w.WriteConvertBasicType(importer, "tmp", assignId+"[kv[0]]", "kv[1]", v, errRet, errSlice, false, msgErrTemplate) +// w.W("}\n") +// w.W("}\n") +// } else { +// w.W("for _, s := range %s {\n", tmpID) +// w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) +// w.W("if len(kv) == 2 {\n") +// w.W("%s[kv[0]] = kv[1]\n", assignId) +// w.W("}\n") +// w.W("}\n") +// } +// } +// } +// case *option.SliceType: +// stringsPkg := importer.Import("strings", "strings") +// switch t := t.Value.(type) { +// case *option.BasicType: +// if t.IsNumeric() { +// tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(t.Name) +// w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) +// if declareVar { +// w.W("var ") +// } +// w.W("%s = make([]%s, len(%s))\n", assignId, t.Name, tmpID) +// w.W("for i, s := range %s {\n", tmpID) +// w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", t, errRet, errSlice, false, msgErrTemplate) +// w.W("}\n") +// } else { +// w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) +// } +// } +// case *option.ArrayType: +// stringsPkg := importer.Import("strings", "strings") +// switch b := t.Value.(type) { +// case *option.BasicType: +// if b.IsNumeric() { +// tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(b.Name) +// w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) +// if declareVar { +// w.W("var ") +// } +// w.W("if len(%s) > len(%s) {\n", tmpID, assignId) +// w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s))\n", errSlice, importer.Import("fmt", "fmt"), strconv.Quote(msgErrTemplate+": array length must be less or equal "+strconv.FormatInt(t.Len, 10))) +// w.W("} else {\n") +// +// w.W("for i, s := range %s {\n", tmpID) +// w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", b, errRet, errSlice, false, msgErrTemplate) +// w.W("}\n") +// w.W("}\n") +// } else { +// w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) +// } +// } +// case *option.NamedType: +// switch t.Pkg.Path { +// case "net/url": +// tmpID = w.WriteConvertURL(importer, t, valueId) +// if !t.IsPointer { +// tmpID = "*" + tmpID +// } +// case "github.com/satori/uuid", "github.com/google/uuid": +// if t.Name.Value == "UUID" { +// tmpID = w.WriteConvertUUID(importer, t, valueId) +// if t.IsPointer { +// tmpID = "&" + tmpID +// } +// } +// case "time": +// tmpID = w.WriteConvertTime(importer, t, valueId) +// if t.IsPointer { +// tmpID = "&" + tmpID +// } +// } +// w.W("if err != nil {\n") +// if errSlice != "" { +// w.W("%[1]s = append(%[1]s, err)\n", errSlice) +// } else { +// w.W("return ") +// if len(errRet) > 0 { +// w.W("%s, ", stdstrings.Join(errRet, ",")) +// } +// w.W("err") +// } +// w.W("}\n") +// if declareVar { +// w.W("var ") +// } +// w.W("%s = %s\n", assignId, tmpID) +// } +// +//} From 69c2625af572ab72bbf898c286ee713d449eacc8 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:02:46 +0300 Subject: [PATCH 263/293] refactor: update cli version --- v3/swipe/swipe.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index b3f67beb..02403669 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -12,7 +12,7 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -const Version = "v3.0.0-beta2" +const Version = "v3.0.0" type ContextKey string From 8999e901e1cd1c8a69d7aae3d3aff2428e7fa278 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:09:37 +0300 Subject: [PATCH 264/293] refactor: change workdir for gh actions --- .github/workflows/goreleaser.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 988d2a72..1d3f4d37 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -1,5 +1,9 @@ name: goreleaser +defaults: + run: + working-directory: v3 + on: push: tags: From fb963e013d8e505f1aab5240762dd4ee05760774 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:13:20 +0300 Subject: [PATCH 265/293] refactor: fixed goreleaser.yml --- .github/workflows/goreleaser.yml | 4 ---- .gitignore | 3 +-- v3/.goreleaser.yaml => .goreleaser.yaml | 2 +- v3/.gitignore | 2 -- 4 files changed, 2 insertions(+), 9 deletions(-) rename v3/.goreleaser.yaml => .goreleaser.yaml (94%) delete mode 100644 v3/.gitignore diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 1d3f4d37..988d2a72 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -1,9 +1,5 @@ name: goreleaser -defaults: - run: - working-directory: v3 - on: push: tags: diff --git a/.gitignore b/.gitignore index 9f62eb23..82abc22b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ .idea .DS_Store -v2/fixtures/*/app/*_gen.go -releases +dist/ *.go-e \ No newline at end of file diff --git a/v3/.goreleaser.yaml b/.goreleaser.yaml similarity index 94% rename from v3/.goreleaser.yaml rename to .goreleaser.yaml index 5a903e69..0eeb607c 100644 --- a/v3/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -10,7 +10,7 @@ builds: - linux - windows - darwin - main: cmd/swipe/main.go + main: v3/cmd/swipe/main.go archives: - replacements: darwin: Darwin diff --git a/v3/.gitignore b/v3/.gitignore deleted file mode 100644 index cde01232..00000000 --- a/v3/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ - -dist/ From 69e37d80f9eff7898382fdaa040eff7ed29cc0d7 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:16:50 +0300 Subject: [PATCH 266/293] refactor: fixed goreleaser.yml --- .goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 0eeb607c..74dbb971 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -2,7 +2,7 @@ # Make sure to check the documentation at https://goreleaser.com before: hooks: - - go mod download + - cd v3 && go mod download builds: - env: - CGO_ENABLED=0 From 2fdee1eb5fbeb1fe84452152524ca9a2a84d2134 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:23:07 +0300 Subject: [PATCH 267/293] refactor: fixed goreleaser.yml --- .github/workflows/goreleaser.yml | 1 + .goreleaser.yaml => v3/.goreleaser.yaml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) rename .goreleaser.yaml => v3/.goreleaser.yaml (89%) diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 988d2a72..72979c06 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -21,6 +21,7 @@ jobs: uses: goreleaser/goreleaser-action@v2 with: distribution: goreleaser + workdir: v3 version: latest args: release --rm-dist env: diff --git a/.goreleaser.yaml b/v3/.goreleaser.yaml similarity index 89% rename from .goreleaser.yaml rename to v3/.goreleaser.yaml index 74dbb971..5a903e69 100644 --- a/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -2,7 +2,7 @@ # Make sure to check the documentation at https://goreleaser.com before: hooks: - - cd v3 && go mod download + - go mod download builds: - env: - CGO_ENABLED=0 @@ -10,7 +10,7 @@ builds: - linux - windows - darwin - main: v3/cmd/swipe/main.go + main: cmd/swipe/main.go archives: - replacements: darwin: Darwin From 46f895a2b22cdc3edddada82361b16eceab7d183 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:32:00 +0300 Subject: [PATCH 268/293] refactor: added homebrew --- v3/.goreleaser.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 5a903e69..fe9eb099 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -28,3 +28,9 @@ changelog: exclude: - '^docs:' - '^test:' +brews: + - name: swipe3 + homepage: https://github.com/swipe-io/homebrew-swipe + tap: + owner: scraly + name: homebrew-swipe \ No newline at end of file From 7cdf6a45c553927dcab8d0a0f9b549f446f82952 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 12:36:11 +0300 Subject: [PATCH 269/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index fe9eb099..6da8ca8b 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -32,5 +32,5 @@ brews: - name: swipe3 homepage: https://github.com/swipe-io/homebrew-swipe tap: - owner: scraly + owner: swipe-io name: homebrew-swipe \ No newline at end of file From a8949cf68518f86c4083f4da8c60e663b078eca5 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 13:04:04 +0300 Subject: [PATCH 270/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 6da8ca8b..868de5c8 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -33,4 +33,5 @@ brews: homepage: https://github.com/swipe-io/homebrew-swipe tap: owner: swipe-io - name: homebrew-swipe \ No newline at end of file + name: homebrew-swipe + token: "{{ .Env.GITHUB_TOKEN }}" \ No newline at end of file From 3913186888e4ea36c0bcd84543a656fae964f475 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 13:14:24 +0300 Subject: [PATCH 271/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 868de5c8..6da8ca8b 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -33,5 +33,4 @@ brews: homepage: https://github.com/swipe-io/homebrew-swipe tap: owner: swipe-io - name: homebrew-swipe - token: "{{ .Env.GITHUB_TOKEN }}" \ No newline at end of file + name: homebrew-swipe \ No newline at end of file From 75024bef7bc3ebbee6bf50ab72bfebc6068e6ac4 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 13:43:58 +0300 Subject: [PATCH 272/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 6da8ca8b..868de5c8 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -33,4 +33,5 @@ brews: homepage: https://github.com/swipe-io/homebrew-swipe tap: owner: swipe-io - name: homebrew-swipe \ No newline at end of file + name: homebrew-swipe + token: "{{ .Env.GITHUB_TOKEN }}" \ No newline at end of file From 12efc85310e589bdcbe76777e139898c6c4832b4 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 13:54:41 +0300 Subject: [PATCH 273/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 868de5c8..91996f77 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -34,4 +34,6 @@ brews: tap: owner: swipe-io name: homebrew-swipe - token: "{{ .Env.GITHUB_TOKEN }}" \ No newline at end of file + commit_author: + email: vitaly@lobchuk.ru + name: l-vitaly \ No newline at end of file From d3f6baf49c782e34e97900a303bba9bddbcf86c1 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 14:08:09 +0300 Subject: [PATCH 274/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 91996f77..ded47670 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -32,7 +32,7 @@ brews: - name: swipe3 homepage: https://github.com/swipe-io/homebrew-swipe tap: - owner: swipe-io + owner: l-vitaly name: homebrew-swipe commit_author: email: vitaly@lobchuk.ru From 79bc4aef296ee3b8af3413f6815f7c8efe3e37c2 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 14:17:07 +0300 Subject: [PATCH 275/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index ded47670..ff9b6321 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -32,8 +32,9 @@ brews: - name: swipe3 homepage: https://github.com/swipe-io/homebrew-swipe tap: - owner: l-vitaly + owner: swipe-io name: homebrew-swipe commit_author: email: vitaly@lobchuk.ru - name: l-vitaly \ No newline at end of file + name: l-vitaly + skip_upload: true \ No newline at end of file From 86e2a0c67f726c61a31944a9d369855d59a7a066 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 14:22:07 +0300 Subject: [PATCH 276/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index ff9b6321..b7b0bb60 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -34,7 +34,8 @@ brews: tap: owner: swipe-io name: homebrew-swipe + branch: main + token: "{{ .GITHUB_TOKEN }}" commit_author: email: vitaly@lobchuk.ru - name: l-vitaly - skip_upload: true \ No newline at end of file + name: l-vitaly \ No newline at end of file From 8bcb733bd39c05768daab78dfb12c9029f7dd886 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 6 Jun 2022 15:33:16 +0300 Subject: [PATCH 277/293] refactor: fixed homebrew --- v3/.goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index b7b0bb60..5a2af9d4 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -35,7 +35,7 @@ brews: owner: swipe-io name: homebrew-swipe branch: main - token: "{{ .GITHUB_TOKEN }}" + token: "{{ .Env.GITHUB_TOKEN }}" commit_author: email: vitaly@lobchuk.ru name: l-vitaly \ No newline at end of file From b469d76b92018b7ba2827f9978c34861b48da70a Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 7 Jun 2022 21:05:43 +0300 Subject: [PATCH 278/293] refactor: fixed client generate, the swipe-pkg argument has been added, allowing you to change the swipe configuration package --- v3/cmd/gen.go | 16 +++++++++++++--- .../plugin/gokit/generator/jsonrpc_client.go | 6 +++--- .../plugin/gokit/generator/server_helpers.go | 14 +------------- v3/internal/plugin/gokit/plugin.go | 7 ++++--- v3/swipe/swipe.go | 2 +- 5 files changed, 22 insertions(+), 23 deletions(-) diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index 01a3d34b..bcbf5056 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -2,6 +2,7 @@ package cmd import ( "errors" + "fmt" "io/ioutil" "log" "os" @@ -36,6 +37,7 @@ var genCmd = &cobra.Command{ packages = viper.GetStringSlice("packages") } + swipePkg := viper.GetString("swipe-pkg") wd := viper.GetString("work-dir") if wd == "" { wd, _ = cmd.Flags().GetString("work-dir") @@ -68,9 +70,10 @@ var genCmd = &cobra.Command{ packages = append(packages, strings.Split(string(data), "\n")...) } cmd.Printf("Packages: %s\n", strings.Join(packages, ", ")) + cmd.Printf("Swipe Package: %s\n", swipePkg) - packages = append(packages, filepath.Join(wd, "pkg", "swipe", "...")) - + packages = append(packages, filepath.Join(wd, swipePkg, "swipe", "...")) + fmt.Println(packages) loader, errs := ast.NewLoader(wd, os.Environ(), packages) if len(errs) > 0 { for _, err := range errs { @@ -137,7 +140,14 @@ var genCmd = &cobra.Command{ } func init() { - rootCmd.AddCommand(genCmd) + genCmd.Flags().StringP("swipe-pkg", "p", "pkg", "Swipe package directory name") genCmd.Flags().StringP("work-dir", "w", "", "Workdir") genCmd.Flags().BoolP("verbose", "v", false, "Verbose output") + + _ = viper.BindPFlag("swipe-pkg", genCmd.Flags().Lookup("swipe-pkg")) + _ = viper.BindPFlag("work-dir", genCmd.Flags().Lookup("work-dir")) + _ = viper.BindPFlag("verbose", genCmd.Flags().Lookup("verbose")) + + rootCmd.AddCommand(genCmd) + } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 9c1420d7..14ac9b58 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -85,7 +85,7 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n") for _, m := range ifaceType.Methods { - g.w.W("opts.%[1]sClientOption = append(\nopts.%[1]sClientOption,\n", LcNameIfaceMethod(iface, m)) + g.w.W("opts.%[1]sOpts.clientOption = append(\nopts.%[1]sOpts.clientOption,\n", LcNameIfaceMethod(iface, m)) g.w.W("%s.ClientRequestEncoder(", jsonrpcPkg) g.w.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) @@ -142,11 +142,11 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { g.w.W("c.%sEndpoint = %s.NewClient(\n", LcNameIfaceMethod(iface, m), jsonrpcPkg) g.w.W("u,\n") g.w.W("%s,\n", strconv.Quote(methodName)) - g.w.W("append(opts.genericClientOption, opts.%sClientOption...)...,\n", LcNameIfaceMethod(iface, m)) + g.w.W("append(opts.genericOpts.clientOption, opts.%sOpts.clientOption...)...,\n", LcNameIfaceMethod(iface, m)) g.w.W(").Endpoint()\n") g.w.W( - "c.%[1]sEndpoint = middlewareChain(append(opts.genericEndpointMiddleware, opts.%[1]sEndpointMiddleware...))(c.%[1]sEndpoint)\n", + "c.%[1]sEndpoint = middlewareChain(append(opts.genericOpts.endpointMiddleware, opts.%[1]sOpts.endpointMiddleware...))(c.%[1]sEndpoint)\n", LcNameIfaceMethod(iface, m), ) } diff --git a/v3/internal/plugin/gokit/generator/server_helpers.go b/v3/internal/plugin/gokit/generator/server_helpers.go index 3dadb206..848ff0a0 100644 --- a/v3/internal/plugin/gokit/generator/server_helpers.go +++ b/v3/internal/plugin/gokit/generator/server_helpers.go @@ -57,23 +57,11 @@ func (g *ServerHelpers) Generate(ctx context.Context) []byte { g.w.W("return func(c *opts) { c.endpointMiddleware = opt }\n") g.w.W("}\n") - //if !g.JSONRPCEnable { - // g.w.W("func DecodeRequestFuncOption(opt %s.DecodeRequestFunc) Option {\n", kitHTTPPkg) - // g.w.W("return func(c *opts) { c.decReqFunc = opt }\n") - // g.w.W("}\n") - // - // g.w.W("func EncodeResponseFuncOption(opt %s.EncodeResponseFunc) Option {\n", kitHTTPPkg) - // g.w.W("return func(c *opts) { c.encRespFunc = opt }\n") - // g.w.W("}\n") - //} g.w.W("type opts struct {\n") g.w.W("serverOption []%s\n", kitHTTPServerOption) g.w.W("endpoint %s\n", endpointOption) g.w.W("endpointMiddleware []%s\n", endpointMiddlewareOption) - //if !g.JSONRPCEnable { - // g.w.W("decReqFunc %s.DecodeRequestFunc\n", kitHTTPPkg) - // g.w.W("encRespFunc %s.EncodeResponseFunc\n", kitHTTPPkg) - //} + g.w.W("}\n\n") for _, iface := range g.Interfaces { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index e536dfcd..3e21a546 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -228,12 +228,13 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { if goClientEnable { var pkg string - output := p.config.ClientOutput.Take() - if output != "" { - pkg = strcase.ToSnake(filepath.Base(output)) + if output == "" { + output = "./client" } + pkg = strcase.ToSnake(filepath.Base(output)) + result = append(result, &generator.MiddlewareChain{ Output: output, diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 02403669..6843f8fb 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -12,7 +12,7 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -const Version = "v3.0.0" +const Version = "v3.0.18" type ContextKey string From 002c7b4c2903b9588c5aafc52a2919cbd103f947 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 7 Jun 2022 22:00:17 +0300 Subject: [PATCH 279/293] refactor: Fixed environment variable loader generation --- v3/internal/plugin/config/config.go | 2 +- v3/swipe/swipe.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/internal/plugin/config/config.go b/v3/internal/plugin/config/config.go index 0bf2f846..ccffc6b7 100644 --- a/v3/internal/plugin/config/config.go +++ b/v3/internal/plugin/config/config.go @@ -84,7 +84,7 @@ func (g *Generator) Generate(ctx context.Context) []byte { g.w.W("return\n") g.w.W("}\n\n") - g.w.W("func (cfg %s) String() string {\n", typeName) + g.w.W("func (cfg *%s) String() string {\n", typeName) g.w.W("out := `\n") if len(envs) > 0 { fmtPkg := importer.Import("fmt", "fmt") diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 6843f8fb..0b2be862 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -12,7 +12,7 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -const Version = "v3.0.18" +const Version = "v3.0.19" type ContextKey string From b4798720143f8553e115b6e7c1bfb3e512963803 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 20 Jun 2022 22:05:04 +0300 Subject: [PATCH 280/293] refactor: added flags to remove "DO NOT EDIT" from the generated file, option to remove prefix for the generated file, improvements and bug fixes --- v2/go.mod | 5 +- v2/go.sum | 10 - v3/cmd/gen.go | 71 +++-- v3/cmd/init.go | 17 +- v3/frame/factory.go | 4 +- v3/frame/golang_frame.go | 17 +- .../echo/generator/{utils.go => helpers.go} | 0 v3/internal/plugin/echo/generator/routes.go | 181 ++++++++++-- v3/internal/plugin/echo/plugin.go | 21 +- .../plugin/gokit/generator/endpoint.go | 2 - v3/internal/plugin/gokit/generator/logging.go | 33 ++- .../plugin/gokit/generator/rest_server.go | 15 +- .../plugin/gokit/{utils.go => helpers.go} | 46 --- v3/internal/plugin/gokit/plugin.go | 4 +- v3/internal/plugin/plugin.go | 47 +++ v3/swipe/swipe.go | 9 +- v3/writer/golang_writer.go | 278 ------------------ 17 files changed, 329 insertions(+), 431 deletions(-) rename v3/internal/plugin/echo/generator/{utils.go => helpers.go} (100%) rename v3/internal/plugin/gokit/{utils.go => helpers.go} (91%) diff --git a/v2/go.mod b/v2/go.mod index f9cec1fb..e627f341 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -6,8 +6,7 @@ require ( github.com/achiku/varfmt v0.0.0-20160708124000-f820e1efecee github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structtag v1.2.0 - github.com/gertd/go-pluralize v0.1.7 // indirect - github.com/google/go-cmp v0.4.0 + github.com/gertd/go-pluralize v0.1.7 github.com/google/subcommands v1.2.0 github.com/gookit/color v1.2.5 github.com/kr/pretty v0.2.0 // indirect @@ -15,7 +14,7 @@ require ( github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 github.com/stretchr/testify v1.5.1 // indirect github.com/swipe-io/strcase v0.1.5 - golang.org/x/mod v0.4.2 + golang.org/x/mod v0.4.2 // indirect golang.org/x/sys v0.0.0-20210314195730-07df6a141424 // indirect golang.org/x/tools v0.1.0 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect diff --git a/v2/go.sum b/v2/go.sum index 59dccc19..14302944 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -7,15 +7,12 @@ github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4 github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/gertd/go-pluralize v0.1.7 h1:RgvJTJ5W7olOoAks97BOwOlekBFsLEyh00W48Z6ZEZY= github.com/gertd/go-pluralize v0.1.7/go.mod h1:O4eNeeIf91MHh1GJ2I47DNtaesm66NYvjYgAahcqSDQ= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/gookit/color v1.2.5 h1:s1gzb/fg3HhkSLKyWVUsZcVBUo+R1TwEYTmmxH8gGFg= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -27,28 +24,23 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= -github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/swipe-io/strcase v0.1.5 h1:p5hyNgSxF0/Ag4hNY/b5k5pAvPccjqwIc5g5EruwDQs= github.com/swipe-io/strcase v0.1.5/go.mod h1:YZyIE/vFNRw9xxkp5N4GSSaIV1snVy+4Io3sxwR0tjw= -github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -57,7 +49,6 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210314195730-07df6a141424 h1:+39ahH47SWi1PhMRAHfIrm8f69HRZ5K2koXH6dmO8TQ= golang.org/x/sys v0.0.0-20210314195730-07df6a141424/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -65,7 +56,6 @@ golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index bcbf5056..d4b49cca 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -1,11 +1,11 @@ package cmd import ( + "bytes" "errors" - "fmt" "io/ioutil" - "log" "os" + "path" "path/filepath" "strings" @@ -31,18 +31,23 @@ var genCmd = &cobra.Command{ Run: func(cmd *cobra.Command, packages []string) { var err error - cmd.Println("Please wait the command is running, it may take some time") + cmd.Println("Please wait the command is running, it may take some time\n") if len(packages) == 0 { packages = viper.GetStringSlice("packages") } + prefix := viper.GetString("prefix") swipePkg := viper.GetString("swipe-pkg") + verbose, _ := cmd.Flags().GetBool("verbose") wd := viper.GetString("work-dir") + useDoNotEdit := viper.GetBool("dn-edit") + if wd == "" { wd, _ = cmd.Flags().GetString("work-dir") } - verbose, _ := cmd.Flags().GetBool("verbose") + + swipeSysFilepath := filepath.Join(wd, ".swipe") if wd == "" { wd, err = os.Getwd() @@ -52,19 +57,23 @@ var genCmd = &cobra.Command{ } } + basePath := path.Dir(wd) + cmd.Printf("Workdir: %s\n", wd) // clear all before generated files. - _ = filepath.Walk(wd, func(path string, info os.FileInfo, err error) error { - if !strings.Contains(path, "/vendor/") { - if !info.IsDir() { - if strings.Contains(info.Name(), "swipe_gen_") { - _ = os.Remove(path) + data, err := ioutil.ReadFile(swipeSysFilepath) + if err == nil { + genOldFiles := strings.Split(string(data), "\n") + + for _, filepath := range genOldFiles { + if err := os.Remove(basePath + filepath); err != nil { + if verbose { + cmd.Printf("Remove generated file %s error: %s", filepath, err) } } } - return nil - }) + } if data, err := ioutil.ReadFile(filepath.Join(wd, "pkgs")); err == nil { packages = append(packages, strings.Split(string(data), "\n")...) @@ -72,8 +81,9 @@ var genCmd = &cobra.Command{ cmd.Printf("Packages: %s\n", strings.Join(packages, ", ")) cmd.Printf("Swipe Package: %s\n", swipePkg) + cmd.Println() + packages = append(packages, filepath.Join(wd, swipePkg, "swipe", "...")) - fmt.Println(packages) loader, errs := ast.NewLoader(wd, os.Environ(), packages) if len(errs) > 0 { for _, err := range errs { @@ -87,7 +97,7 @@ var genCmd = &cobra.Command{ os.Exit(1) } - result, errs := swipe.Generate(cfg) + result, errs := swipe.Generate(cfg, prefix, useDoNotEdit) success := true if len(errs) > 0 { @@ -98,8 +108,13 @@ var genCmd = &cobra.Command{ } diffExcludes := make([]string, 0, len(result)) + generatedFiles := bytes.NewBuffer(nil) + + if verbose { + cmd.Println("Generated files") + } - for _, g := range result { + for i, g := range result { if len(g.Errs) > 0 { for _, err := range g.Errs { cmd.PrintErrln(err) @@ -111,6 +126,13 @@ var genCmd = &cobra.Command{ continue } + outputPath := strings.Replace(g.OutputPath, basePath, "", -1) + + if i > 0 { + generatedFiles.WriteString("\n") + } + generatedFiles.WriteString(outputPath) + diffExcludes = append(diffExcludes, strings.Replace(g.OutputPath, cfg.WorkDir+"/", "", -1)) dirPath := filepath.Dir(g.OutputPath) @@ -121,10 +143,10 @@ var genCmd = &cobra.Command{ err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) if err == nil { if verbose { - log.Printf("%s: wrote %s\n", g.PkgPath, g.OutputPath) + cmd.Printf("%s: wrote %s\n", g.PkgPath, g.OutputPath) } } else { - log.Printf("%s: failed to write %s: %v\n", g.PkgPath, g.OutputPath, err) + cmd.PrintErrf("%s: failed to write %s: %v\n", g.PkgPath, g.OutputPath, err) success = false } } @@ -135,19 +157,28 @@ var genCmd = &cobra.Command{ cmd.PrintErrln(err) os.Exit(1) } - cmd.Println("Command execution completed successfully") + + if err := ioutil.WriteFile(swipeSysFilepath, generatedFiles.Bytes(), 0755); err != nil { + cmd.PrintErrf("Failed to create system file: %s", err) + os.Exit(1) + } + + cmd.Println("\n\nCommand execution completed successfully.") }, } func init() { - genCmd.Flags().StringP("swipe-pkg", "p", "pkg", "Swipe package directory name") - genCmd.Flags().StringP("work-dir", "w", "", "Workdir") + genCmd.Flags().StringP("swipe-pkg", "p", "pkg", "Swipe package name") + genCmd.Flags().StringP("work-dir", "w", "", "Work directory") genCmd.Flags().BoolP("verbose", "v", false, "Verbose output") + genCmd.Flags().StringP("prefix", "x", "swipe_gen_", "Prefix for generated file names") + genCmd.Flags().BoolP("dn-edit", "d", true, "Generate a 'DO NOT EDIT' warning") _ = viper.BindPFlag("swipe-pkg", genCmd.Flags().Lookup("swipe-pkg")) _ = viper.BindPFlag("work-dir", genCmd.Flags().Lookup("work-dir")) _ = viper.BindPFlag("verbose", genCmd.Flags().Lookup("verbose")) + _ = viper.BindPFlag("prefix", genCmd.Flags().Lookup("prefix")) + _ = viper.BindPFlag("dn-edit", genCmd.Flags().Lookup("dn-edit")) rootCmd.AddCommand(genCmd) - } diff --git a/v3/cmd/init.go b/v3/cmd/init.go index be5449ef..7b523ba1 100644 --- a/v3/cmd/init.go +++ b/v3/cmd/init.go @@ -29,10 +29,19 @@ var initCmd = &cobra.Command{ os.Exit(1) } } + + pkgName := viper.GetString("pkg") + + if pkgName == "" { + pkgName = "pkg" + } + cmd.Printf("Workdir: %s\n", wd) + cmd.Printf("Package: %s\n", pkgName) + for name, data := range swipe.Options() { buf := bytes.NewBuffer(nil) - path := filepath.Join(wd, "pkg", "swipe", name) + path := filepath.Join(wd, pkgName, "swipe", name) if err := os.MkdirAll(path, 0775); err != nil { cmd.PrintErrf("Error: %s", err) os.Exit(1) @@ -62,5 +71,9 @@ var initCmd = &cobra.Command{ func init() { rootCmd.AddCommand(initCmd) - initCmd.Flags().StringP("work-dir", "w", "", "Workdir") + initCmd.Flags().StringP("pkg", "p", "pkg", "Package name") + initCmd.Flags().StringP("work-dir", "w", "", "Swipe work directory") + + _ = viper.BindPFlag("pkg", initCmd.Flags().Lookup("pkg")) + _ = viper.BindPFlag("work-dir", initCmd.Flags().Lookup("work-dir")) } diff --git a/v3/frame/factory.go b/v3/frame/factory.go index 2ec7d7c1..51e50e1d 100644 --- a/v3/frame/factory.go +++ b/v3/frame/factory.go @@ -10,13 +10,13 @@ type Framer interface { Frame(data []byte) ([]byte, error) } -func NewFrame(version string, filename string, importer *importer.Importer, pkgName string) Framer { +func NewFrame(version string, filename string, importer *importer.Importer, pkgName string, useDoNotEdit bool) Framer { ext := filepath.Ext(filename) switch ext { default: return NewBytesFrame() case ".go": - return NewGolangFrame(importer, version, pkgName) + return NewGolangFrame(importer, version, pkgName, useDoNotEdit) case ".js": return NewJSFrame(version) } diff --git a/v3/frame/golang_frame.go b/v3/frame/golang_frame.go index dbb5f61f..7608a958 100644 --- a/v3/frame/golang_frame.go +++ b/v3/frame/golang_frame.go @@ -10,15 +10,17 @@ import ( ) type GolangFrame struct { - importer *importer.Importer - pkgName string - version string + importer *importer.Importer + pkgName string + version string + useDoNotEdit bool } func (f *GolangFrame) Frame(data []byte) ([]byte, error) { var buf bytes.Buffer - //buf.WriteString("//+build !swipe\n\n") - buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") + if f.useDoNotEdit { + buf.WriteString("// Code generated by Swipe " + f.version + ". DO NOT EDIT.\n\n") + } buf.WriteString("package ") buf.WriteString(f.pkgName) buf.WriteString("\n\n") @@ -40,7 +42,6 @@ func (f *GolangFrame) Frame(data []byte) ([]byte, error) { return fmtSrc, nil } -func NewGolangFrame(importer *importer.Importer, version, pkgName string) *GolangFrame { - return &GolangFrame{importer: importer, version: version, pkgName: pkgName} - +func NewGolangFrame(importer *importer.Importer, version, pkgName string, useDoNotEdit bool) *GolangFrame { + return &GolangFrame{importer: importer, version: version, pkgName: pkgName, useDoNotEdit: useDoNotEdit} } diff --git a/v3/internal/plugin/echo/generator/utils.go b/v3/internal/plugin/echo/generator/helpers.go similarity index 100% rename from v3/internal/plugin/echo/generator/utils.go rename to v3/internal/plugin/echo/generator/helpers.go diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go index 7652ae96..6c15bab1 100644 --- a/v3/internal/plugin/echo/generator/routes.go +++ b/v3/internal/plugin/echo/generator/routes.go @@ -28,6 +28,10 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) echoPkg := importer.Import("echo", "github.com/labstack/echo") + httpPkg := importer.Import("http", "net/http") + + g.writeDefaultErrorEncoder(echoPkg, httpPkg) + g.writeEncodeResponseFunc(echoPkg, httpPkg) g.w.W("func SetupRoutes(e *%s.Echo,", echoPkg) @@ -93,6 +97,11 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { if !stdstrings.HasPrefix(urlPath, "/") { urlPath = "/" + urlPath } + + // replace brace indices for echo router + urlPath = stdstrings.ReplaceAll(urlPath, "{", ":") + urlPath = stdstrings.ReplaceAll(urlPath, "}", "") + httpMethod := "GET" if mopt.RESTMethod.Take() != "" { httpMethod = stdstrings.ToUpper(mopt.RESTMethod.Take()) @@ -101,13 +110,19 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { var paramValues []string - g.w.W("r := ctx.Request()\n") + if len(headerVars) > 0 || len(queryVars) > 0 { + g.w.W("r := ctx.Request()\n") + } if len(m.Sig.Params) > 0 { g.w.W("var req struct {\n") for _, p := range m.Sig.Params { - g.w.W("%[1]s %[2]s `json:\"%[1]s\"`\n", p.Name.Lower(), swipe.TypeString(p.Type, true, importer)) - paramValues = append(paramValues, "req."+p.Name.Lower()) + g.w.W("%s %s `json:\"%s\"`\n", p.Name.Upper(), swipe.TypeString(p.Type, true, importer), p.Name) + if p.IsVariadic { + paramValues = append(paramValues, "req."+p.Name.Upper()+"...") + } else { + paramValues = append(paramValues, "req."+p.Name.Upper()) + } } g.w.W("}\n") } @@ -124,9 +139,9 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("var data []byte\n") ioutilPkg := importer.Import("ioutil", "io/ioutil") - g.w.W("data, err := %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.W("data, err = %s.ReadAll(r.Body)\n", ioutilPkg) g.w.WriteCheckErr("err", func() { - g.w.W("return %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, m.Name) + g.w.W("return %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, m.Name.Upper()) }) if len(paramVars) == 1 { @@ -143,44 +158,97 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.w.W("return %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, m.Name) + g.w.W("return %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, m.Name.Upper()) g.w.W("}\n") } } } - + if len(pathVars) > 0 { + errorPkg := importer.Import("errors", "errors") + for _, pathVar := range pathVars { + valueVar := "ctx.Param(" + strconv.Quote(pathVar.Param.Name.Value) + ")" + + convert.NewBuilder(importer). + SetAssignVar("req." + strcase.ToCamel(pathVar.Param.Name.Value)). + SetValueVar(valueVar). + SetFieldName(pathVar.Param.Name). + SetFieldType(pathVar.Param.Type). + SetErrorReturn(fmt.Sprintf("return %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + Write(&g.w) + } + } for _, headerVar := range headerVars { convert.NewBuilder(importer). SetFieldName(headerVar.Param.Name). SetFieldType(headerVar.Param.Type). - SetAssignVar("req." + headerVar.Param.Name.Lower()). + SetAssignVar("req." + headerVar.Param.Name.Upper()). SetValueVar("r.Header.Get(" + strconv.Quote(headerVar.Value) + ")"). - SetErrorReturn(fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+headerVar.Param.Name.Lower())). + SetErrorReturn(fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+headerVar.Param.Name.Upper())). Write(&g.w) + } + + if len(mopt.RESTQueryVars.Value) > 0 { + g.w.W("q := r.URL.Query()\n") + for _, queryVar := range queryVars { + if queryVar.IsRequired { + fmtPkg := importer.Import("fmt", "fmt") + g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) + } + convert.NewBuilder(importer). + SetFieldName(queryVar.Param.Name). + SetFieldType(queryVar.Param.Type). + SetAssignVar("req." + queryVar.Param.Name.Upper()). + SetValueVar("q.Get(" + strconv.Quote(queryVar.Value) + ")"). + SetErrorReturn(fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper())). + Write(&g.w) + } + } + + if len(m.Sig.Results) > 0 { + for i, p := range m.Sig.Results { + if i > 0 { + g.w.W(", ") + } + g.w.W(p.Name.Value) + } + } - //valueID := "r.Header.Get(" + strconv.Quote(headerVar.Value) + ")" - //g.w.WriteConvertType(importer, "req."+headerVar.Param.Name.Lower(), valueID, headerVar.Param, []string{"nil"}, "", false, "") + if len(m.Sig.Results) > 0 { + g.w.W(" := ") } - //if len(mopt.RESTQueryVars.Value) > 0 { - // g.w.W("q := r.URL.Query()\n") - //} - - //for _, queryVar := range queryVars { - // valueID := "q.Get(" + strconv.Quote(queryVar.Value) + ")" - // if queryVar.IsRequired { - // fmtPkg := importer.Import("fmt", "fmt") - // g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) - // } - // tmpID := queryVar.Param.Name.Value + "Str" - // g.w.W("%s := %s\n", tmpID, valueID) - // g.w.W("if %s != \"\" {\n", tmpID) - // g.w.WriteConvertType(importer, "req."+queryVar.Param.Name.Lower(), tmpID, queryVar.Param, []string{"nil"}, "", false, "") - // g.w.W("}\n") - //} - - g.w.W("%s.%s(%s)\n", paramName, m.Name, stdstrings.Join(paramValues, ",")) - g.w.W("return nil\n})\n") + g.w.W("%s.%s(%s)\n", paramName, m.Name.Upper(), stdstrings.Join(paramValues, ",")) + + if len(m.Sig.Results) > 0 { + var results option.VarsType + + for _, result := range m.Sig.Results { + if plugin.IsError(result) { + g.w.WriteCheckErr(result.Name.Value, func() { + g.w.W("return defaultErrorEncoder(ctx, %s)\n", result.Name) + }) + continue + } + results = append(results, result) + } + if len(results) > 1 { + g.w.W("response := map[string]interface{}{") + for _, result := range results { + if plugin.IsError(result) { + continue + } + g.w.W("%s: %s,\n", strconv.Quote(result.Name.Value), result.Name) + } + g.w.W("}\n") + g.w.W("return encodeResponseHTTP(ctx, response)\n})\n") + } else if len(results) == 1 { + g.w.W("return encodeResponseHTTP(ctx, %s)\n})\n", results[0].Name) + } else { + g.w.W("return nil\n") + } + } else { + g.w.W("return nil\n") + } } } @@ -190,6 +258,59 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { } +func (g *RoutesGenerator) writeDefaultErrorEncoder(echoPkg, httpPkg string) { + g.w.W("type errorWrapper struct {\n") + g.w.W("Error string `json:\"error\"`\n") + g.w.W("Code string `json:\"code,omitempty\"`\n") + g.w.W("Data interface{} `json:\"data,omitempty\"`\n") + g.w.W("}\n") + + g.w.W("func defaultErrorEncoder(ctx %s.Context, err error) error {\n", echoPkg) + + g.w.W("var (\nerrData interface{}\nerrCode string\n)\n") + g.w.W("if e, ok := err.(interface{ Data() interface{} }); ok {\n") + g.w.W("errData = e.Data()\n") + g.w.W("}\n") + + g.w.W("if e, ok := err.(interface{ Code() string }); ok {\n") + g.w.W("errCode = e.Code()\n") + g.w.W("}\n") + + g.w.W("ctx.Response().Header().Set(\"Content-Type\", \"application/json; charset=utf-8\")\n") + g.w.W("if headerer, ok := err.(interface{ Headers() %s.Header }); ok {\n", httpPkg) + g.w.W("for k, values := range headerer.Headers() {\n") + g.w.W("for _, v := range values {\n") + g.w.W("ctx.Response().Header().Add(k, v)") + g.w.W("}\n}\n") + + g.w.W("}\n") + g.w.W("code := %s.StatusInternalServerError\n", httpPkg) + g.w.W("if sc, ok := err.(interface { StatusCode() int }); ok {\n") + g.w.W("code = sc.StatusCode()\n") + g.w.W("}\n") + + g.w.W("return ctx.JSON(code, errorWrapper{Error: err.Error(), Code: errCode, Data: errData})\n") + g.w.W("}\n\n") +} + +func (g *RoutesGenerator) writeEncodeResponseFunc(echoPkg, httpPkg string) { + g.w.W("func encodeResponseHTTP(ctx %s.Context, response interface{}) (err error) {\n", echoPkg) + g.w.W("if response != nil {\n") + g.w.W("if cookie, ok := response.(interface{ HTTPCookies() []%s.Cookie }); ok {\n", httpPkg) + g.w.W("for _, c := range cookie.HTTPCookies() {\n") + g.w.W("ctx.SetCookie(&c)\n") + g.w.W("}\n") + g.w.W("}\n") + g.w.W("if download, ok := response.(interface{\nContentType() string\nData() []byte\n}); ok {\n") + g.w.W("return ctx.Blob(200, download.ContentType(), download.Data())\n") + g.w.W("}") + g.w.W("} else {\n") + g.w.W("return ctx.Blob(201, \"text/plain; charset=utf-8\", nil)\n") + g.w.W("}\n") + g.w.W("return ctx.JSON(200, response)\n") + g.w.W("}\n\n") +} + func (g *RoutesGenerator) OutputDir() string { return "" } diff --git a/v3/internal/plugin/echo/plugin.go b/v3/internal/plugin/echo/plugin.go index 79bd9226..cd048131 100644 --- a/v3/internal/plugin/echo/plugin.go +++ b/v3/internal/plugin/echo/plugin.go @@ -2,6 +2,7 @@ package echo import ( "github.com/mitchellh/mapstructure" + "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" "github.com/swipe-io/swipe/v3/internal/plugin/echo/generator" @@ -21,7 +22,7 @@ func (p *Plugin) ID() string { return "Echo" } -func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { +func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) (errs []error) { p.config = config.Config{} if err := mapstructure.Decode(options, &p.config); err != nil { return []error{err} @@ -37,7 +38,23 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } } - return nil + for _, iface := range p.config.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + dstMethodOption, _ := p.config.MethodOptionsMap[iface.Named.Name.Value+m.Name.Value] + //dstMethodOption = fillMethodDefaultOptions(dstMethodOption, p.config.MethodDefaultOptions) + + pathVars, err := plugin.PathVars(dstMethodOption.RESTPath.Take()) + if err != nil { + errs = append(errs, err) + continue + } + dstMethodOption.RESTPathVars = pathVars + + p.config.MethodOptionsMap[iface.Named.Name.Value+m.Name.Value] = dstMethodOption + } + } + return } func (p *Plugin) Generators() ([]swipe.Generator, []error) { diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index 0fa92eca..eb2a58c3 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -45,8 +45,6 @@ func (g *Endpoint) writeReqResp(importer swipe.Importer) { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { - //mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - if len(m.Sig.Params) > 0 { g.w.W("type %s struct {\n", NameRequest(m, iface)) for _, param := range m.Sig.Params { diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 8ecba793..a93ea4d8 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -74,10 +74,15 @@ func (g *Logging) Generate(ctx context.Context) []byte { } } - var logResults []string + var ( + logResults []string + errorVars []*option.VarType + ) + for _, result := range m.Sig.Results { if plugin.IsError(result) { - logResults = append(logResults, strconv.Quote("err"), result.Name.Value) + + errorVars = append(errorVars, result) continue } logResults = append(logResults, makeLogParam(result.Name.Value, result.Type)...) @@ -85,15 +90,15 @@ func (g *Logging) Generate(ctx context.Context) []byte { g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) - if mopt.Logging.Take() && (len(logParams) > 0 || len(logResults) > 0) { + if mopt.Logging.Take() && (len(logParams) > 0 || len(logResults) > 0 || len(errorVars) > 0) { methodName := iface.Named.Name.Lower() + "." + m.Name.Value timePkg := importer.Import("time", "time") g.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - var resultErr *option.VarType + //var resultErr *option.VarType for _, result := range m.Sig.Results { if plugin.IsError(result) { - resultErr = result + //resultErr = result g.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name) g.w.W("%s = logErr.LogError()\n", result.Name) g.w.W("}\n") @@ -108,12 +113,18 @@ func (g *Logging) Generate(ctx context.Context) []byte { logResultsStr = "," + logResultsStr } - if resultErr != nil { - g.w.W("if %s != nil {\n", resultErr.Name) - g.w.W("if e, ok := %s.(errLevel); ok {\n", resultErr.Name) - g.w.W("logger = levelLogger(e, logger)\n") - g.w.W("} else {\n_ = %s.Error(logger).Log(%s)\n}\n", levelPkg, logParamsStr) - g.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) + if len(errorVars) > 0 { + for _, errorVar := range errorVars { + errLogStr := fmt.Sprintf("%s, %s", strconv.Quote(errorVar.Name.String()), errorVar.Name.String()) + if logParamsStr != "" { + errLogStr = "," + errLogStr + } + g.w.W("if %s != nil {\n", errorVar.Name) + g.w.W("if e, ok := %s.(errLevel); ok {\n", errorVar.Name) + g.w.W("logger = levelLogger(e, logger)\n") + g.w.W("} else {\n_ = %s.Error(logger).Log(%s)\n}\n", levelPkg, logParamsStr+errLogStr) + g.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) + } } else { g.w.W("_ = %s.Debug(logger).Log(%s)\n", levelPkg, logParamsStr+logResultsStr) } diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index d091ef1a..53287722 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -182,9 +182,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { encRespFuncName := LcNameWithAppPrefix(iface) + m.Name.Upper() g.w.W("%s := encodeResponseHTTP\n", encRespFuncName) - //g.w.W("if opts.%sOpts.encRespFunc != nil {\n", encRespFuncName) - //g.w.W("%[1]s = opts.%[1]sOpts.encRespFunc\n", encRespFuncName) - //g.w.W("}\n") bodyType := mopt.RESTBodyType.Take() if bodyType == "" { @@ -297,7 +294,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if len(pathVars) > 0 { errorPkg := importer.Import("errors", "errors") - for _, pathVar := range pathVars { var valueVar string if g.UseFast { @@ -313,14 +309,10 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { SetFieldType(pathVar.Param.Type). SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). Write(&g.w) - - //g.w.WriteConvertType(importer, "req."+strcase.ToCamel(pathVar.Param.Name.Value), valueID, pathVar.Param, []string{"nil"}, "", false, "") } } - if len(queryVars) > 0 { errorPkg := importer.Import("errors", "errors") - for _, queryVar := range queryVars { var valueVar string if g.UseFast { @@ -350,7 +342,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n") } } - if len(headerVars) > 0 { errorPkg := importer.Import("errors", "errors") for _, headerVar := range headerVars { @@ -369,10 +360,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { Write(&g.w) } } - if len(paramVars) > 0 { - errorPkg := importer.Import("errors", "errors") - switch stdstrings.ToUpper(mopt.RESTMethod.Take()) { case "POST", "PUT", "PATCH": switch bodyType { @@ -410,6 +398,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { case "urlencoded": if g.UseFast { } else { + errorPkg := importer.Import("errors", "errors") + g.w.W("r.ParseForm()\n") for _, paramVar := range paramVars { valueVar := "r.Form.Get(" + strconv.Quote(paramVar.Name.Value) + ")" @@ -472,6 +462,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } else { valueVar = "r.FormValue(" + strconv.Quote(paramVar.Name.Value) + ")" } + errorPkg := importer.Import("errors", "errors") convert.NewBuilder(importer). SetAssignVar("req." + "req." + "req." + paramVar.Name.Upper()). diff --git a/v3/internal/plugin/gokit/utils.go b/v3/internal/plugin/gokit/helpers.go similarity index 91% rename from v3/internal/plugin/gokit/utils.go rename to v3/internal/plugin/gokit/helpers.go index 1bbe923b..0ab4b213 100644 --- a/v3/internal/plugin/gokit/utils.go +++ b/v3/internal/plugin/gokit/helpers.go @@ -1,7 +1,6 @@ package gokit import ( - "fmt" "go/ast" "go/constant" "go/types" @@ -15,51 +14,6 @@ import ( stdpackages "golang.org/x/tools/go/packages" ) -func httpBraceIndices(s string) ([]int, error) { - var level, idx int - var idxs []int - for i := 0; i < len(s); i++ { - switch s[i] { - case '{': - if level++; level == 1 { - idx = i - } - case '}': - if level--; level == 0 { - idxs = append(idxs, idx, i+1) - } else if level < 0 { - return nil, fmt.Errorf("mux: unbalanced braces in %q", s) - } - } - } - if level != 0 { - return nil, fmt.Errorf("mux: unbalanced braces in %q", s) - } - return idxs, nil -} - -func pathVars(path string) (map[string]string, error) { - idxs, err := httpBraceIndices(path) - if err != nil { - return nil, err - } - pathVars := make(map[string]string, len(idxs)) - if len(idxs) > 0 { - var end int - for i := 0; i < len(idxs); i += 2 { - end = idxs[i+1] - parts := strings.SplitN(path[idxs[i]+1:end-1], ":", 2) - name := parts[0] - regexp := "" - if len(parts) == 2 { - regexp = parts[1] - } - pathVars[name] = regexp - } - } - return pathVars, nil -} - type typeInfo struct { obj stdtypes.Object stmtList []ast.Stmt diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 3e21a546..72e7ec43 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -8,6 +8,8 @@ import ( "path" "path/filepath" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/mitchellh/mapstructure" "github.com/swipe-io/strcase" @@ -74,7 +76,7 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } if p.config.JSONRPCEnable == nil && dstMethodOption.RESTPath.Value != nil { - pathVars, err := pathVars(dstMethodOption.RESTPath.Take()) + pathVars, err := plugin.PathVars(dstMethodOption.RESTPath.Take()) if err != nil { errs = append(errs, err) continue diff --git a/v3/internal/plugin/plugin.go b/v3/internal/plugin/plugin.go index 19b8970d..284c813e 100644 --- a/v3/internal/plugin/plugin.go +++ b/v3/internal/plugin/plugin.go @@ -1,11 +1,58 @@ package plugin import ( + "fmt" + "strings" stdstrings "strings" "github.com/swipe-io/swipe/v3/option" ) +func httpBraceIndices(s string) ([]int, error) { + var level, idx int + var idxs []int + for i := 0; i < len(s); i++ { + switch s[i] { + case '{': + if level++; level == 1 { + idx = i + } + case '}': + if level--; level == 0 { + idxs = append(idxs, idx, i+1) + } else if level < 0 { + return nil, fmt.Errorf("mux: unbalanced braces in %q", s) + } + } + } + if level != 0 { + return nil, fmt.Errorf("mux: unbalanced braces in %q", s) + } + return idxs, nil +} + +func PathVars(path string) (map[string]string, error) { + idxs, err := httpBraceIndices(path) + if err != nil { + return nil, err + } + pathVars := make(map[string]string, len(idxs)) + if len(idxs) > 0 { + var end int + for i := 0; i < len(idxs); i += 2 { + end = idxs[i+1] + parts := strings.SplitN(path[idxs[i]+1:end-1], ":", 2) + name := parts[0] + regexp := "" + if len(parts) == 2 { + regexp = parts[1] + } + pathVars[name] = regexp + } + } + return pathVars, nil +} + func IsContext(v *option.VarType) bool { if named, ok := v.Type.(*option.NamedType); ok { if _, ok := named.Type.(*option.IfaceType); ok { diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 0b2be862..af066a6f 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -12,7 +12,7 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -const Version = "v3.0.19" +const Version = "v3.0.20" type ContextKey string @@ -35,9 +35,10 @@ type GenerateResult struct { Errs []error } -func Generate(cfg *Config) (result []GenerateResult, errs []error) { +func Generate(cfg *Config, prefix string, useDoNotEdit bool) (result []GenerateResult, errs []error) { result = make([]GenerateResult, 0, 100) importerMap := map[string]*importer.Importer{} + for _, module := range cfg.Modules { if module.External { continue @@ -74,7 +75,7 @@ func Generate(cfg *Config) (result []GenerateResult, errs []error) { } outputDir = path } - filename := "swipe_gen_" + strcase.ToSnake(p.ID()) + "_" + g.Filename() + filename := prefix + strcase.ToSnake(p.ID()) + "_" + g.Filename() importerKey := build.Pkg.Path + filename @@ -92,7 +93,7 @@ func Generate(cfg *Config) (result []GenerateResult, errs []error) { pkgName = gp.Package() } - f := frame.NewFrame(Version, filename, importerService, pkgName) + f := frame.NewFrame(Version, filename, importerService, pkgName, useDoNotEdit) ctx := context.WithValue(context.TODO(), ImporterKey, importerService) diff --git a/v3/writer/golang_writer.go b/v3/writer/golang_writer.go index b15353d8..f755f45d 100644 --- a/v3/writer/golang_writer.go +++ b/v3/writer/golang_writer.go @@ -91,281 +91,3 @@ func (w *GoWriter) WriteFuncCall(id, name string, params []string) { w.W(stdstrings.Join(params, ",")) w.W(")\n") } - -//func (w *GoWriter) getConvertFuncName(t *option.BasicType) string { -// if t.IsAnyInt() { -// return "Atoi(%s)" -// } -// if t.IsAnyUint() { -// return "ParseUint(%s, 10, " + t.BitSize() + ")" -// } -// if t.IsAnyFloat() { -// return "ParseFloat(%s, " + t.BitSize() + ")" -// } -// if t.IsBool() { -// return "ParseBool(%s)" -// } -// return "" -//} - -//func (w *GoWriter) getFormatFuncName(t *option.BasicType) string { -// if t.IsAnyInt() { -// return "FormatInt(int64(%s), 10)" -// } -// if t.IsAnyUint() { -// return "FormatUint(uint64(%s), 10)" -// } -// if t.IsAnyFloat() { -// return "FormatFloat(float64(%s), 'g', -1, " + t.BitSize() + ")" -// } -// if t.IsBool() { -// return "FormatBool(%s)" -// } -// return "" -//} - -//func (w *GoWriter) writeFormatBasicType(importer swipe.Importer, assignId, valueId string, t *option.BasicType) { -// funcName := w.getFormatFuncName(t) -// if funcName != "" { -// strconvPkg := importer.Import("strconv", "strconv") -// if t.IsPointer { -// valueId = "*" + valueId -// } -// w.W("%s := %s.%s\n", assignId, strconvPkg, fmt.Sprintf(funcName, valueId)) -// } else { -// w.W("%s := %s\n", assignId, valueId) -// } -//} - -//func (w *GoWriter) WriteConvertBasicType(importer swipe.Importer, name, assignId, valueId string, t *option.BasicType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string) { -// useCheckErr := true -// -// tmpId := strcase.ToLowerCamel(name) + strcase.ToCamel(t.Name) -// -// funcName := w.getConvertFuncName(t) -// if funcName != "" { -// strconvPkg := importer.Import("strconv", "strconv") -// w.W("%s, err := %s.%s\n", tmpId, strconvPkg, fmt.Sprintf(funcName, valueId)) -// } else { -// useCheckErr = false -// tmpId = valueId -// } -// if useCheckErr { -// if msgErrTemplate == "" { -// msgErrTemplate = "convert error" -// } -// errMsg := strconv.Quote(msgErrTemplate + ": %w") -// w.W("if err != nil {\n") -// if errSlice != "" { -// w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s, err))\n", errSlice, importer.Import("fmt", "fmt"), errMsg) -// } else { -// w.W("return ") -// if len(errRet) > 0 { -// w.W("%s, ", stdstrings.Join(errRet, ",")) -// } -// w.W("%s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), tmpId) -// } -// w.W("}\n") -// } -// if declareVar { -// w.W("var ") -// } -// retId := fmt.Sprintf("%s(%s)", t.Name, tmpId) -// if t.IsPointer { -// ptrName := "ptr" + strcase.ToCamel(name) -// w.W("%s := %s\n", ptrName, tmpId) -// retId = "&" + ptrName -// } -// w.W("%s = %s", assignId, retId) -// w.W("\n") -//} - -//func (w *GoWriter) WriteFormatType(importer swipe.Importer, assignId, valueId string, f *option.VarType) { -// switch t := f.Type.(type) { -// case *option.BasicType: -// w.writeFormatBasicType(importer, assignId, valueId, t) -// case *option.SliceType: -// if bt, ok := t.Value.(*option.BasicType); ok { -// w.W("var %s string\n", assignId) -// w.W("for i, s := range %s {\n", valueId) -// w.W("if i > 0 {\n %s += \",\"\n}\n", assignId) -// w.writeFormatBasicType(importer, "v", "s", bt) -// w.W("%s += v\n", assignId) -// w.W("}\n") -// } -// -// case *option.NamedType: -// switch t.Pkg.Path { -// case "github.com/satori/uuid", "github.com/google/uuid": -// if t.Name.Value == "UUID" { -// w.WriteFormatUUID(importer, t, assignId, valueId) -// } -// case "time": -// w.WriteFormatTime(importer, t, assignId, valueId) -// } -// } -//} - -//func (w *GoWriter) WriteFormatTime(importer swipe.Importer, t *option.NamedType, assignId, valueId string) { -// switch t.Name.Value { -// case "Duration": -// w.W("%s := %s.String()\n", assignId, valueId) -// case "Time": -// timePkg := importer.Import("time", "time") -// w.W("%[1]s := %[3]s.Format(%[2]s.RFC3339)\n", assignId, timePkg, valueId) -// } -//} -// -//func (w *GoWriter) WriteFormatUUID(_ swipe.Importer, t *option.NamedType, assignId, valueId string) { -// w.W("%s := %s.String() \n", assignId, valueId) -//} - -//func (w *GoWriter) WriteConvertTime(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { -// switch t.Name.Value { -// case "Time": -// tmpID = t.Name.Lower() + "Time" -// timePkg := importer.Import("time", "time") -// w.W("%[1]s, err := %[2]s.Parse(%[2]s.RFC3339, %[3]s)\n", tmpID, timePkg, valueId) -// case "Duration": -// tmpID = t.Name.Lower() + "Dur" -// timePkg := importer.Import("time", "time") -// w.W("%s, err := %s.ParseDuration(%s)\n", tmpID, timePkg, valueId) -// } -// return -//} - -//func (w *GoWriter) WriteConvertUUID(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { -// tmpID = t.Name.Lower() + "UUID" -// uuidPkg := importer.Import(t.Pkg.Name, t.Pkg.Path) -// -// switch t.Pkg.Path { -// case "github.com/google/uuid": -// w.W("%s, err := %s.Parse(%s)\n", tmpID, uuidPkg, valueId) -// case "github.com/satori/uuid": -// w.W("%s, err := %s.FromString(%s)\n", tmpID, uuidPkg, valueId) -// } -// return -//} - -//func (w *GoWriter) WriteConvertURL(importer swipe.Importer, t *option.NamedType, valueId string) (tmpID string) { -// switch t.Name.Value { -// case "URL": -// tmpID = t.Name.Lower() + "URL" -// urlPkg := importer.Import("url", "net/url") -// w.W("%s, err := %s.Parse(%s)\n", tmpID, urlPkg, valueId) -// } -// return -//} - -//func (w *GoWriter) WriteConvertType( -// importer swipe.Importer, assignId, valueId string, f *option.VarType, errRet []string, errSlice string, declareVar bool, msgErrTemplate string, -//) { -// var ( -// tmpID string -// ) -// -// switch t := f.Type.(type) { -// case *option.BasicType: -// w.WriteConvertBasicType(importer, f.Name.Value, assignId, valueId, t, errRet, errSlice, declareVar, msgErrTemplate) -// case *option.MapType: -// stringsPkg := importer.Import("strings", "strings") -// if k, ok := t.Key.(*option.BasicType); ok && k.IsString() { -// if v, ok := t.Value.(*option.BasicType); ok { -// tmpID = "parts" + f.Name.Lower() -// w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) -// w.W("%s = make(%s, len(%s))\n", assignId, swipe.TypeString(t, false, importer), tmpID) -// if v.IsNumeric() { -// w.W("for _, s := range %s {\n", tmpID) -// w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) -// w.W("if len(kv) == 2 {\n") -// w.WriteConvertBasicType(importer, "tmp", assignId+"[kv[0]]", "kv[1]", v, errRet, errSlice, false, msgErrTemplate) -// w.W("}\n") -// w.W("}\n") -// } else { -// w.W("for _, s := range %s {\n", tmpID) -// w.W("kv := %s.Split(s, \"=\")\n", stringsPkg) -// w.W("if len(kv) == 2 {\n") -// w.W("%s[kv[0]] = kv[1]\n", assignId) -// w.W("}\n") -// w.W("}\n") -// } -// } -// } -// case *option.SliceType: -// stringsPkg := importer.Import("strings", "strings") -// switch t := t.Value.(type) { -// case *option.BasicType: -// if t.IsNumeric() { -// tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(t.Name) -// w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) -// if declareVar { -// w.W("var ") -// } -// w.W("%s = make([]%s, len(%s))\n", assignId, t.Name, tmpID) -// w.W("for i, s := range %s {\n", tmpID) -// w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", t, errRet, errSlice, false, msgErrTemplate) -// w.W("}\n") -// } else { -// w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) -// } -// } -// case *option.ArrayType: -// stringsPkg := importer.Import("strings", "strings") -// switch b := t.Value.(type) { -// case *option.BasicType: -// if b.IsNumeric() { -// tmpID = "parts" + f.Name.Lower() + strcase.ToCamel(b.Name) -// w.W("%s := %s.Split(%s, \",\")\n", tmpID, stringsPkg, valueId) -// if declareVar { -// w.W("var ") -// } -// w.W("if len(%s) > len(%s) {\n", tmpID, assignId) -// w.W("%[1]s = append(%[1]s, %[2]s.Errorf(%[3]s))\n", errSlice, importer.Import("fmt", "fmt"), strconv.Quote(msgErrTemplate+": array length must be less or equal "+strconv.FormatInt(t.Len, 10))) -// w.W("} else {\n") -// -// w.W("for i, s := range %s {\n", tmpID) -// w.WriteConvertBasicType(importer, "tmp", assignId+"[i]", "s", b, errRet, errSlice, false, msgErrTemplate) -// w.W("}\n") -// w.W("}\n") -// } else { -// w.W("%s = %s.Split(%s, \",\")\n", assignId, stringsPkg, valueId) -// } -// } -// case *option.NamedType: -// switch t.Pkg.Path { -// case "net/url": -// tmpID = w.WriteConvertURL(importer, t, valueId) -// if !t.IsPointer { -// tmpID = "*" + tmpID -// } -// case "github.com/satori/uuid", "github.com/google/uuid": -// if t.Name.Value == "UUID" { -// tmpID = w.WriteConvertUUID(importer, t, valueId) -// if t.IsPointer { -// tmpID = "&" + tmpID -// } -// } -// case "time": -// tmpID = w.WriteConvertTime(importer, t, valueId) -// if t.IsPointer { -// tmpID = "&" + tmpID -// } -// } -// w.W("if err != nil {\n") -// if errSlice != "" { -// w.W("%[1]s = append(%[1]s, err)\n", errSlice) -// } else { -// w.W("return ") -// if len(errRet) > 0 { -// w.W("%s, ", stdstrings.Join(errRet, ",")) -// } -// w.W("err") -// } -// w.W("}\n") -// if declareVar { -// w.W("var ") -// } -// w.W("%s = %s\n", assignId, tmpID) -// } -// -//} From 565d7881728ef1eb7d43e3c1c74471290f85e72f Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 20 Jun 2022 22:10:03 +0300 Subject: [PATCH 281/293] refactor: disabled brew --- v3/.goreleaser.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/v3/.goreleaser.yaml b/v3/.goreleaser.yaml index 5a2af9d4..99031755 100644 --- a/v3/.goreleaser.yaml +++ b/v3/.goreleaser.yaml @@ -28,14 +28,14 @@ changelog: exclude: - '^docs:' - '^test:' -brews: - - name: swipe3 - homepage: https://github.com/swipe-io/homebrew-swipe - tap: - owner: swipe-io - name: homebrew-swipe - branch: main - token: "{{ .Env.GITHUB_TOKEN }}" - commit_author: - email: vitaly@lobchuk.ru - name: l-vitaly \ No newline at end of file +#brews: +# - name: swipe3 +# homepage: https://github.com/swipe-io/homebrew-swipe +# tap: +# owner: swipe-io +# name: homebrew-swipe +# branch: main +# token: "{{ .Env.GITHUB_TOKEN }}" +# commit_author: +# email: vitaly@lobchuk.ru +# name: l-vitaly \ No newline at end of file From 753c55b65486e23205b5ba160ee6a431f36291f2 Mon Sep 17 00:00:00 2001 From: vitaly Date: Mon, 20 Jun 2022 22:42:09 +0300 Subject: [PATCH 282/293] refactor: fixe build version --- v3/cmd/gen.go | 4 ++-- v3/cmd/root.go | 20 +++++++++++--------- v3/cmd/swipe/main.go | 14 ++++++++++++-- v3/main.go | 4 ++-- v3/swipe/swipe.go | 6 ++---- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index d4b49cca..575b1360 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -19,7 +19,7 @@ import ( // genCmd represents the gen command var genCmd = &cobra.Command{ - Use: "gen", + Use: "gen [dir]", Short: "Generate code", Long: ``, Args: func(cmd *cobra.Command, packages []string) error { @@ -97,7 +97,7 @@ var genCmd = &cobra.Command{ os.Exit(1) } - result, errs := swipe.Generate(cfg, prefix, useDoNotEdit) + result, errs := swipe.Generate(cfg, prefix, useDoNotEdit, cmd.Version) success := true if len(errs) > 0 { diff --git a/v3/cmd/root.go b/v3/cmd/root.go index 4800a714..c2fe8fbe 100644 --- a/v3/cmd/root.go +++ b/v3/cmd/root.go @@ -21,22 +21,25 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" - - "github.com/swipe-io/swipe/v3/swipe" ) var cfgFile string // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ - Use: "v3", - Short: "Swipe a generation tool " + swipe.Version, - Long: ``, + Short: "Swipe a code generation tool", + Run: func(cmd *cobra.Command, args []string) { + if !viper.GetBool("version") { + cmd.Println(cmd.Version) + os.Exit(0) + } + }, } // Execute adds all child commands to the root command and sets flags appropriately. // This is called by main.main(). It only needs to happen once to the rootCmd. -func Execute() { +func Execute(version string) { + rootCmd.Version = version cobra.CheckErr(rootCmd.Execute()) } @@ -49,9 +52,8 @@ func init() { rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/swipe3.yaml)") - // Cobra also supports local flags, which will only run - // when this action is called directly. - rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + rootCmd.Flags().BoolP("version", "v", true, "Show version") + _ = viper.BindPFlag("version", genCmd.Flags().Lookup("version")) } // initConfig reads in config file and ENV variables if set. diff --git a/v3/cmd/swipe/main.go b/v3/cmd/swipe/main.go index 2ff89b71..2c0b42d4 100644 --- a/v3/cmd/swipe/main.go +++ b/v3/cmd/swipe/main.go @@ -1,7 +1,17 @@ package main -import "github.com/swipe-io/swipe/v3" +import ( + "fmt" + + v3 "github.com/swipe-io/swipe/v3" +) + +var ( + version = "dev" + date = "" + commit = "" +) func main() { - v3.Main() + v3.Main(fmt.Sprintf("%s %s %s", version, commit, date)) } diff --git a/v3/main.go b/v3/main.go index 1ba4667f..5aadd1f0 100644 --- a/v3/main.go +++ b/v3/main.go @@ -7,6 +7,6 @@ import ( _ "github.com/swipe-io/swipe/v3/internal/plugin/gokit" ) -func Main() { - cmd.Execute() +func Main(version string) { + cmd.Execute(version) } diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index af066a6f..45d9be09 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -12,8 +12,6 @@ import ( "github.com/swipe-io/swipe/v3/option" ) -const Version = "v3.0.20" - type ContextKey string const ( @@ -35,7 +33,7 @@ type GenerateResult struct { Errs []error } -func Generate(cfg *Config, prefix string, useDoNotEdit bool) (result []GenerateResult, errs []error) { +func Generate(cfg *Config, prefix string, useDoNotEdit bool, version string) (result []GenerateResult, errs []error) { result = make([]GenerateResult, 0, 100) importerMap := map[string]*importer.Importer{} @@ -93,7 +91,7 @@ func Generate(cfg *Config, prefix string, useDoNotEdit bool) (result []GenerateR pkgName = gp.Package() } - f := frame.NewFrame(Version, filename, importerService, pkgName, useDoNotEdit) + f := frame.NewFrame(version, filename, importerService, pkgName, useDoNotEdit) ctx := context.WithValue(context.TODO(), ImporterKey, importerService) From e696eeba5e7743206957a58fae8ded76f114a392 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 8 Jul 2022 11:33:22 +0300 Subject: [PATCH 283/293] refactor: changed the method name from OutputDir to OutputPath --- v3/internal/plugin/config/config.go | 2 +- v3/internal/plugin/config/markdown_doc.go | 2 +- v3/internal/plugin/echo/generator/routes.go | 2 +- v3/internal/plugin/gokit/generator/client_helpers.go | 2 +- v3/internal/plugin/gokit/generator/client_struct.go | 2 +- v3/internal/plugin/gokit/generator/curl.go | 2 +- v3/internal/plugin/gokit/generator/endpoint.go | 2 +- v3/internal/plugin/gokit/generator/gateway.go | 2 +- v3/internal/plugin/gokit/generator/instrumenting.go | 2 +- v3/internal/plugin/gokit/generator/interface.go | 2 +- v3/internal/plugin/gokit/generator/jsonrpc_client.go | 2 +- v3/internal/plugin/gokit/generator/jsonrpc_doc.go | 2 +- v3/internal/plugin/gokit/generator/jsonrpc_js_client.go | 2 +- v3/internal/plugin/gokit/generator/jsonrpc_server.go | 2 +- v3/internal/plugin/gokit/generator/logging.go | 2 +- v3/internal/plugin/gokit/generator/middleware_chain.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 2 +- v3/internal/plugin/gokit/generator/rest_client.go | 2 +- v3/internal/plugin/gokit/generator/rest_server.go | 2 +- v3/internal/plugin/gokit/generator/server_helpers.go | 2 +- v3/swipe/generator.go | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/v3/internal/plugin/config/config.go b/v3/internal/plugin/config/config.go index ccffc6b7..9615afad 100644 --- a/v3/internal/plugin/config/config.go +++ b/v3/internal/plugin/config/config.go @@ -108,7 +108,7 @@ func (g *Generator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *Generator) OutputDir() string { +func (g *Generator) OutputPath() string { return "" } diff --git a/v3/internal/plugin/config/markdown_doc.go b/v3/internal/plugin/config/markdown_doc.go index 031b3302..8238fa7f 100644 --- a/v3/internal/plugin/config/markdown_doc.go +++ b/v3/internal/plugin/config/markdown_doc.go @@ -71,7 +71,7 @@ func (g *MarkdownDocGenerator) getTypeSrt(t interface{}) string { } } -func (g *MarkdownDocGenerator) OutputDir() string { +func (g *MarkdownDocGenerator) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go index 6c15bab1..1e6b8c23 100644 --- a/v3/internal/plugin/echo/generator/routes.go +++ b/v3/internal/plugin/echo/generator/routes.go @@ -311,7 +311,7 @@ func (g *RoutesGenerator) writeEncodeResponseFunc(echoPkg, httpPkg string) { g.w.W("}\n\n") } -func (g *RoutesGenerator) OutputDir() string { +func (g *RoutesGenerator) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/client_helpers.go b/v3/internal/plugin/gokit/generator/client_helpers.go index 38e3c2ea..7b45648f 100644 --- a/v3/internal/plugin/gokit/generator/client_helpers.go +++ b/v3/internal/plugin/gokit/generator/client_helpers.go @@ -201,7 +201,7 @@ func (g *ClientHelpers) Package() string { return g.Pkg } -func (g *ClientHelpers) OutputDir() string { +func (g *ClientHelpers) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/client_struct.go b/v3/internal/plugin/gokit/generator/client_struct.go index 0db23b9a..f67607e8 100644 --- a/v3/internal/plugin/gokit/generator/client_struct.go +++ b/v3/internal/plugin/gokit/generator/client_struct.go @@ -152,7 +152,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *ClientStruct) OutputDir() string { +func (g *ClientStruct) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/curl.go b/v3/internal/plugin/gokit/generator/curl.go index 8745f1e4..718a6ef5 100644 --- a/v3/internal/plugin/gokit/generator/curl.go +++ b/v3/internal/plugin/gokit/generator/curl.go @@ -95,7 +95,7 @@ func (g *CURL) writeCURLREST(iface *config.Interface) { } } -func (g *CURL) OutputDir() string { +func (g *CURL) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index eb2a58c3..6e357761 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -33,7 +33,7 @@ func (g *Endpoint) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *Endpoint) OutputDir() string { +func (g *Endpoint) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/gateway.go b/v3/internal/plugin/gokit/generator/gateway.go index 140b54ba..e4a44625 100644 --- a/v3/internal/plugin/gokit/generator/gateway.go +++ b/v3/internal/plugin/gokit/generator/gateway.go @@ -79,7 +79,7 @@ func (g *GatewayGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *GatewayGenerator) OutputDir() string { +func (g *GatewayGenerator) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index db64f444..d1d355b3 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -171,7 +171,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *Instrumenting) OutputDir() string { +func (g *Instrumenting) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go index 5c73d0e1..8b184a13 100644 --- a/v3/internal/plugin/gokit/generator/interface.go +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -46,7 +46,7 @@ func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *InterfaceGenerator) OutputDir() string { +func (g *InterfaceGenerator) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index 14ac9b58..fa616bdb 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -157,7 +157,7 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *JSONRPCClientGenerator) OutputDir() string { +func (g *JSONRPCClientGenerator) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index 156132b9..dc2dfe3f 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -180,7 +180,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *JSONRPCDocGenerator) OutputDir() string { +func (g *JSONRPCDocGenerator) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go index 9fec05b9..96c36655 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_js_client.go @@ -204,7 +204,7 @@ func (g *JSONRPCJSClientGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *JSONRPCJSClientGenerator) OutputDir() string { +func (g *JSONRPCJSClientGenerator) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index bfa8d539..ab549d20 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -267,7 +267,7 @@ func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *JSONRPCServerGenerator) OutputDir() string { +func (g *JSONRPCServerGenerator) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index a93ea4d8..3f8c9d69 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -164,7 +164,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *Logging) OutputDir() string { +func (g *Logging) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/middleware_chain.go b/v3/internal/plugin/gokit/generator/middleware_chain.go index 2efbc3d0..2894f4e4 100644 --- a/v3/internal/plugin/gokit/generator/middleware_chain.go +++ b/v3/internal/plugin/gokit/generator/middleware_chain.go @@ -39,7 +39,7 @@ func (g *MiddlewareChain) Package() string { return g.Pkg } -func (g *MiddlewareChain) OutputDir() string { +func (g *MiddlewareChain) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index cd044bc3..6eae5176 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -186,7 +186,7 @@ func (g *Openapi) Generate(ctx context.Context) []byte { return data } -func (g *Openapi) OutputDir() string { +func (g *Openapi) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 3dc22a92..b92c9a87 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -471,7 +471,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP } } -func (g *RESTClientGenerator) OutputDir() string { +func (g *RESTClientGenerator) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 53287722..8b33f948 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -516,7 +516,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *RESTServerGenerator) OutputDir() string { +func (g *RESTServerGenerator) OutputPath() string { return "" } diff --git a/v3/internal/plugin/gokit/generator/server_helpers.go b/v3/internal/plugin/gokit/generator/server_helpers.go index 848ff0a0..62ac92d3 100644 --- a/v3/internal/plugin/gokit/generator/server_helpers.go +++ b/v3/internal/plugin/gokit/generator/server_helpers.go @@ -106,7 +106,7 @@ func (g *ServerHelpers) Package() string { return g.Pkg } -func (g *ServerHelpers) OutputDir() string { +func (g *ServerHelpers) OutputPath() string { return g.Output } diff --git a/v3/swipe/generator.go b/v3/swipe/generator.go index 57573d5c..971d95e9 100644 --- a/v3/swipe/generator.go +++ b/v3/swipe/generator.go @@ -4,7 +4,7 @@ import "context" type Generator interface { Generate(ctx context.Context) []byte - OutputDir() string + OutputPath() string Filename() string } From c868b290ca0bfd1aae3e549c52e5e90739814fd0 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 8 Jul 2022 11:34:20 +0300 Subject: [PATCH 284/293] refactor: changed the name of the generated file from config_config.go to config_loader.go --- v3/internal/plugin/config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/internal/plugin/config/config.go b/v3/internal/plugin/config/config.go index 9615afad..a896e6f4 100644 --- a/v3/internal/plugin/config/config.go +++ b/v3/internal/plugin/config/config.go @@ -113,7 +113,7 @@ func (g *Generator) OutputPath() string { } func (g *Generator) Filename() string { - return "config.go" + return "loader.go" } func (g *Generator) writeEnv(importer swipe.Importer, f *option.VarType, opts fldOpts) { From cbddf728b116166bf109843fee607faff47b6fa5 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 8 Jul 2022 11:37:48 +0300 Subject: [PATCH 285/293] refactor: in convert.Builder changed the error return parameter from string to function --- v3/internal/convert/convert_builder.go | 8 ++--- v3/internal/plugin/config/config.go | 6 ++-- v3/internal/plugin/echo/generator/routes.go | 34 ++++++++++++------- .../plugin/gokit/generator/rest_server.go | 26 ++++++++------ 4 files changed, 45 insertions(+), 29 deletions(-) diff --git a/v3/internal/convert/convert_builder.go b/v3/internal/convert/convert_builder.go index ab07ea92..e069fd2f 100644 --- a/v3/internal/convert/convert_builder.go +++ b/v3/internal/convert/convert_builder.go @@ -18,7 +18,7 @@ type Builder struct { assignOp string assignVar string valueVar string - errorReturn string + errorReturn func() string w writer.GoWriter } @@ -41,7 +41,7 @@ func (b *Builder) SetFieldName(fieldName option.String) *Builder { return b } -func (b *Builder) SetErrorReturn(errorReturn string) *Builder { +func (b *Builder) SetErrorReturn(errorReturn func() string) *Builder { b.errorReturn = errorReturn return b } @@ -123,7 +123,7 @@ func (b *Builder) writeBasicType(t *option.BasicType) { } b.w.W("%s.%s\n", strconvPkg, fmt.Sprintf(funcName, b.valueVar)) - b.w.W("if err != nil {\n %s\n}\n", b.errorReturn) + b.w.W("if err != nil {\n %s\n}\n", b.errorReturn()) if tmpVar != "" { if t.Name != "int64" { @@ -266,7 +266,7 @@ func (b *Builder) writeNameType(t *option.NamedType) { b.w.W("%s, err %s %s.ParseDuration(%s)\n", b.assignVar, b.assignOp, timePkg, b.valueVar) } } - b.w.W("if err != nil {\n %s\n}\n", b.errorReturn) + b.w.W("if err != nil {\n %s\n}\n", b.errorReturn()) } func NewBuilder(importer swipe.Importer) *Builder { diff --git a/v3/internal/plugin/config/config.go b/v3/internal/plugin/config/config.go index a896e6f4..7b69e2e6 100644 --- a/v3/internal/plugin/config/config.go +++ b/v3/internal/plugin/config/config.go @@ -119,7 +119,7 @@ func (g *Generator) Filename() string { func (g *Generator) writeEnv(importer swipe.Importer, f *option.VarType, opts fldOpts) { tmpVar := strcase.ToLowerCamel(opts.fieldPath) + "Tmp" pkgOS := importer.Import("os", "os") - pkgError := importer.Import("errors", "errors") + g.w.W("%s, ok := %s.LookupEnv(%s)\n", tmpVar, pkgOS, strconv.Quote(opts.name)) g.w.W("if ok {\n") @@ -129,7 +129,9 @@ func (g *Generator) writeEnv(importer swipe.Importer, f *option.VarType, opts fl SetValueVar(tmpVar). SetFieldName(f.Name). SetFieldType(f.Type). - SetErrorReturn(fmt.Sprintf("errs = append(errs, %s.New(%s))", pkgError, strconv.Quote("convert "+opts.name+" error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("errs = append(errs, %s.New(%s))", importer.Import("errors", "errors"), strconv.Quote("convert "+opts.name+" error")) + }). Write(&g.w) g.writeCheckZero(importer, f, opts) diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go index 1e6b8c23..be545106 100644 --- a/v3/internal/plugin/echo/generator/routes.go +++ b/v3/internal/plugin/echo/generator/routes.go @@ -38,10 +38,13 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { for i, iface := range g.Interfaces { ifacePkg := importer.Import(iface.Named.Pkg.Name, iface.Named.Pkg.Path) paramName := iface.Named.Name.Lower() - g.w.W("%s %s.%s", paramName, ifacePkg, iface.Named.Name) + if i > 0 { g.w.W(",") } + + g.w.W("%s %s.%s", paramName, ifacePkg, iface.Named.Name) + } g.w.W(") {\n") @@ -164,7 +167,6 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { } } if len(pathVars) > 0 { - errorPkg := importer.Import("errors", "errors") for _, pathVar := range pathVars { valueVar := "ctx.Param(" + strconv.Quote(pathVar.Param.Name.Value) + ")" @@ -173,7 +175,9 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { SetValueVar(valueVar). SetFieldName(pathVar.Param.Name). SetFieldType(pathVar.Param.Type). - SetErrorReturn(fmt.Sprintf("return %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("return %s.New(%s)", importer.Import("errors", "errors"), strconv.Quote("convert error")) + }). Write(&g.w) } } @@ -183,7 +187,9 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { SetFieldType(headerVar.Param.Type). SetAssignVar("req." + headerVar.Param.Name.Upper()). SetValueVar("r.Header.Get(" + strconv.Quote(headerVar.Value) + ")"). - SetErrorReturn(fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+headerVar.Param.Name.Upper())). + SetErrorReturn(func() string { + return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+headerVar.Param.Name.Upper()) + }). Write(&g.w) } @@ -199,7 +205,9 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { SetFieldType(queryVar.Param.Type). SetAssignVar("req." + queryVar.Param.Name.Upper()). SetValueVar("q.Get(" + strconv.Quote(queryVar.Value) + ")"). - SetErrorReturn(fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper())). + SetErrorReturn(func() string { + return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper()) + }). Write(&g.w) } } @@ -211,10 +219,11 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { } g.w.W(p.Name.Value) } - } - - if len(m.Sig.Results) > 0 { - g.w.W(" := ") + if len(m.Sig.Results) == 1 { + g.w.W(" = ") + } else { + g.w.W(" := ") + } } g.w.W("%s.%s(%s)\n", paramName, m.Name.Upper(), stdstrings.Join(paramValues, ",")) @@ -240,22 +249,23 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("%s: %s,\n", strconv.Quote(result.Name.Value), result.Name) } g.w.W("}\n") - g.w.W("return encodeResponseHTTP(ctx, response)\n})\n") + g.w.W("return encodeResponseHTTP(ctx, response)\n") } else if len(results) == 1 { - g.w.W("return encodeResponseHTTP(ctx, %s)\n})\n", results[0].Name) + g.w.W("return encodeResponseHTTP(ctx, %s)\n", results[0].Name) } else { g.w.W("return nil\n") } } else { g.w.W("return nil\n") } + + g.w.W("})\n") } } g.w.W("\n}\n") return g.w.Bytes() - } func (g *RoutesGenerator) writeDefaultErrorEncoder(echoPkg, httpPkg string) { diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 8b33f948..14db3e45 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -293,7 +293,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } if len(pathVars) > 0 { - errorPkg := importer.Import("errors", "errors") for _, pathVar := range pathVars { var valueVar string if g.UseFast { @@ -307,7 +306,9 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { SetValueVar(valueVar). SetFieldName(pathVar.Param.Name). SetFieldType(pathVar.Param.Type). - SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("return nil, %s.New(%s)", importer.Import("errors", "errors"), strconv.Quote("convert error")) + }). Write(&g.w) } } @@ -337,13 +338,14 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { SetValueVar(tmpID). SetFieldName(queryVar.Param.Name). SetFieldType(queryVar.Param.Type). - SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error")) + }). Write(&g.w) g.w.W("}\n") } } if len(headerVars) > 0 { - errorPkg := importer.Import("errors", "errors") for _, headerVar := range headerVars { var valueVar string if g.UseFast { @@ -356,7 +358,9 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { SetValueVar(valueVar). SetFieldName(headerVar.Param.Name). SetFieldType(headerVar.Param.Type). - SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("return nil, %s.New(%s)", importer.Import("errors", "errors"), strconv.Quote("convert error")) + }). Write(&g.w) } } @@ -398,8 +402,6 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { case "urlencoded": if g.UseFast { } else { - errorPkg := importer.Import("errors", "errors") - g.w.W("r.ParseForm()\n") for _, paramVar := range paramVars { valueVar := "r.Form.Get(" + strconv.Quote(paramVar.Name.Value) + ")" @@ -409,7 +411,9 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { SetValueVar(valueVar). SetFieldName(paramVar.Name). SetFieldType(paramVar.Type). - SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("return nil, %s.New(%s)", importer.Import("errors", "errors"), strconv.Quote("convert error")) + }). Write(&g.w) } } @@ -462,14 +466,14 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { } else { valueVar = "r.FormValue(" + strconv.Quote(paramVar.Name.Value) + ")" } - errorPkg := importer.Import("errors", "errors") - convert.NewBuilder(importer). SetAssignVar("req." + "req." + "req." + paramVar.Name.Upper()). SetValueVar(valueVar). SetFieldName(paramVar.Name). SetFieldType(paramVar.Type). - SetErrorReturn(fmt.Sprintf("return nil, %s.New(%s)", errorPkg, strconv.Quote("convert error"))). + SetErrorReturn(func() string { + return fmt.Sprintf("return nil, %s.New(%s)", importer.Import("errors", "errors"), strconv.Quote("convert error")) + }). Write(&g.w) } } From b5f66017d36a054086d2e707b1966855caad98fc Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 8 Jul 2022 11:38:45 +0300 Subject: [PATCH 286/293] refactor: changed the way plugins are loaded --- v3/cmd/gen.go | 19 ++++-- v3/frame/factory.go | 6 +- v3/frame/golang_frame.go | 12 ++-- v3/go.mod | 21 +++++- v3/internal/plugin/config/plugin.go | 4 +- v3/internal/plugin/echo/plugin.go | 4 +- .../gokit/generator/{utils.go => helpers.go} | 2 +- .../{utils_test.go => helpers_test.go} | 0 v3/internal/plugin/gokit/plugin.go | 4 +- v3/swipe/config.go | 23 ++++--- v3/swipe/plugin.go | 11 +-- v3/swipe/swipe.go | 68 +++++++++++-------- 12 files changed, 111 insertions(+), 63 deletions(-) rename v3/internal/plugin/gokit/generator/{utils.go => helpers.go} (99%) rename v3/internal/plugin/gokit/generator/{utils_test.go => helpers_test.go} (100%) diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index 575b1360..dba6c317 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/swipe-io/swipe/v3/frame" "github.com/swipe-io/swipe/v3/internal/ast" "github.com/swipe-io/swipe/v3/internal/gitattributes" "github.com/swipe-io/swipe/v3/swipe" @@ -97,9 +98,8 @@ var genCmd = &cobra.Command{ os.Exit(1) } - result, errs := swipe.Generate(cfg, prefix, useDoNotEdit, cmd.Version) + result, errs := swipe.Generate(cfg, prefix) success := true - if len(errs) > 0 { for _, err := range errs { cmd.PrintErrln(err) @@ -114,7 +114,8 @@ var genCmd = &cobra.Command{ cmd.Println("Generated files") } - for i, g := range result { + var i int + for _, g := range result { if len(g.Errs) > 0 { for _, err := range g.Errs { cmd.PrintErrln(err) @@ -122,10 +123,19 @@ var genCmd = &cobra.Command{ success = false continue } + if len(g.Content) == 0 { continue } + filename := filepath.Base(g.OutputPath) + f := frame.NewFrame(cmd.Version, filename, g.Imports, g.PkgName, useDoNotEdit) + data, err := f.Frame(g.Content) + if err != nil { + cmd.PrintErrf("%s: failed to write %s: %v\n", g.PkgPath, g.OutputPath, err) + os.Exit(1) + } + outputPath := strings.Replace(g.OutputPath, basePath, "", -1) if i > 0 { @@ -140,7 +150,7 @@ var genCmd = &cobra.Command{ cmd.PrintErrf("%s: failed to create dir %s: %v\n", g.PkgPath, dirPath, err) os.Exit(1) } - err := ioutil.WriteFile(g.OutputPath, g.Content, 0755) + err = ioutil.WriteFile(g.OutputPath, data, 0755) if err == nil { if verbose { cmd.Printf("%s: wrote %s\n", g.PkgPath, g.OutputPath) @@ -149,6 +159,7 @@ var genCmd = &cobra.Command{ cmd.PrintErrf("%s: failed to write %s: %v\n", g.PkgPath, g.OutputPath, err) success = false } + i++ } if !success { os.Exit(1) diff --git a/v3/frame/factory.go b/v3/frame/factory.go index 51e50e1d..7702b89c 100644 --- a/v3/frame/factory.go +++ b/v3/frame/factory.go @@ -2,21 +2,19 @@ package frame import ( "path/filepath" - - "github.com/swipe-io/swipe/v3/internal/importer" ) type Framer interface { Frame(data []byte) ([]byte, error) } -func NewFrame(version string, filename string, importer *importer.Importer, pkgName string, useDoNotEdit bool) Framer { +func NewFrame(version string, filename string, imports []string, pkgName string, useDoNotEdit bool) Framer { ext := filepath.Ext(filename) switch ext { default: return NewBytesFrame() case ".go": - return NewGolangFrame(importer, version, pkgName, useDoNotEdit) + return NewGolangFrame(imports, version, pkgName, useDoNotEdit) case ".js": return NewJSFrame(version) } diff --git a/v3/frame/golang_frame.go b/v3/frame/golang_frame.go index 7608a958..9764ade4 100644 --- a/v3/frame/golang_frame.go +++ b/v3/frame/golang_frame.go @@ -5,12 +5,10 @@ import ( "fmt" "github.com/swipe-io/swipe/v3/format" - - "github.com/swipe-io/swipe/v3/internal/importer" ) type GolangFrame struct { - importer *importer.Importer + imports []string pkgName string version string useDoNotEdit bool @@ -25,9 +23,9 @@ func (f *GolangFrame) Frame(data []byte) ([]byte, error) { buf.WriteString(f.pkgName) buf.WriteString("\n\n") - if f.importer.HasImports() { + if len(f.imports) > 0 { buf.WriteString("import (\n") - for _, imp := range f.importer.SortedImports() { + for _, imp := range f.imports { _, _ = fmt.Fprint(&buf, imp) } buf.WriteString(")\n\n") @@ -42,6 +40,6 @@ func (f *GolangFrame) Frame(data []byte) ([]byte, error) { return fmtSrc, nil } -func NewGolangFrame(importer *importer.Importer, version, pkgName string, useDoNotEdit bool) *GolangFrame { - return &GolangFrame{importer: importer, version: version, pkgName: pkgName, useDoNotEdit: useDoNotEdit} +func NewGolangFrame(imports []string, version, pkgName string, useDoNotEdit bool) *GolangFrame { + return &GolangFrame{imports: imports, version: version, pkgName: pkgName, useDoNotEdit: useDoNotEdit} } diff --git a/v3/go.mod b/v3/go.mod index 84285017..568bc89f 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -1,6 +1,6 @@ module github.com/swipe-io/swipe/v3 -go 1.16 +go 1.18 require ( github.com/555f/curlbuilder v1.0.0 @@ -14,3 +14,22 @@ require ( github.com/swipe-io/strcase v0.1.5 golang.org/x/tools v0.1.5 ) + +require ( + github.com/fsnotify/fsnotify v1.4.9 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/pelletier/go-toml v1.9.3 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.3.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.2.0 // indirect + golang.org/x/mod v0.4.2 // indirect + golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect + golang.org/x/text v0.3.5 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + gopkg.in/ini.v1 v1.62.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect +) diff --git a/v3/internal/plugin/config/plugin.go b/v3/internal/plugin/config/plugin.go index 994d2c60..a25063b8 100644 --- a/v3/internal/plugin/config/plugin.go +++ b/v3/internal/plugin/config/plugin.go @@ -9,7 +9,9 @@ import ( const defaultFuncName = "LoadConfig" func init() { - swipe.RegisterPlugin(&Plugin{}) + swipe.RegisterPlugin(new(Plugin).ID(), func() swipe.Plugin { + return &Plugin{} + }) } type Environment struct { diff --git a/v3/internal/plugin/echo/plugin.go b/v3/internal/plugin/echo/plugin.go index cd048131..6a9692d3 100644 --- a/v3/internal/plugin/echo/plugin.go +++ b/v3/internal/plugin/echo/plugin.go @@ -11,7 +11,9 @@ import ( ) func init() { - swipe.RegisterPlugin(&Plugin{}) + swipe.RegisterPlugin(new(Plugin).ID(), func() swipe.Plugin { + return &Plugin{} + }) } type Plugin struct { diff --git a/v3/internal/plugin/gokit/generator/utils.go b/v3/internal/plugin/gokit/generator/helpers.go similarity index 99% rename from v3/internal/plugin/gokit/generator/utils.go rename to v3/internal/plugin/gokit/generator/helpers.go index 67903492..a8c50096 100644 --- a/v3/internal/plugin/gokit/generator/utils.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -181,7 +181,7 @@ func ServicePropName(iface *config.Interface) string { } func NameInterface(iface *config.Interface) string { - return UcNameWithAppPrefix(iface) + "Interface" + return LcNameWithAppPrefix(iface) + "Interface" } func NameLoggingMiddleware(iface *config.Interface) string { diff --git a/v3/internal/plugin/gokit/generator/utils_test.go b/v3/internal/plugin/gokit/generator/helpers_test.go similarity index 100% rename from v3/internal/plugin/gokit/generator/utils_test.go rename to v3/internal/plugin/gokit/generator/helpers_test.go diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 72e7ec43..623486d3 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -20,7 +20,9 @@ import ( ) func init() { - swipe.RegisterPlugin(&Plugin{}) + swipe.RegisterPlugin(new(Plugin).ID(), func() swipe.Plugin { + return &Plugin{} + }) } type Plugin struct { diff --git a/v3/swipe/config.go b/v3/swipe/config.go index 8981758a..db59ded9 100644 --- a/v3/swipe/config.go +++ b/v3/swipe/config.go @@ -67,19 +67,24 @@ func (c *Config) WalkBuilds(fn func(module *option.Module, build *option.Inject) } func (c *Config) Load() (err error) { - optionPkgs := map[string]string{} - for _, plugin := range registeredPlugins { - optionPkgs[strings.ToLower(plugin.ID())] = plugin.ID() - } - c.Modules, err = option.Decode(optionPkgs, c.Module, c.Packages, c.CommentFuncs, c.CommentFields) + optionPackages := map[string]string{} + registeredPlugins.Range(func(key, value any) bool { + pluginID := key.(string) + optionPackages[strings.ToLower(pluginID)] = pluginID + return true + }) + c.Modules, err = option.Decode(optionPackages, c.Module, c.Packages, c.CommentFuncs, c.CommentFields) return } func Options() (data map[string][]byte) { data = map[string][]byte{} - for _, plugin := range registeredPlugins { - name := strings.ToLower(plugin.ID()) - data[name] = append(data[name], plugin.Options()...) - } + registeredPlugins.Range(func(key, value any) bool { + pluginID := key.(string) + p := value.(Plugin) + name := strings.ToLower(pluginID) + data[name] = append(data[name], p.Options()...) + return true + }) return } diff --git a/v3/swipe/plugin.go b/v3/swipe/plugin.go index 23f74fd1..81bef7a7 100644 --- a/v3/swipe/plugin.go +++ b/v3/swipe/plugin.go @@ -2,6 +2,7 @@ package swipe import ( "log" + "sync" "github.com/swipe-io/swipe/v3/option" ) @@ -13,11 +14,11 @@ type Plugin interface { Options() []byte } -var registeredPlugins = map[string]Plugin{} +var registeredPlugins = sync.Map{} -func RegisterPlugin(p Plugin) { - if _, found := registeredPlugins[p.ID()]; found { - log.Fatalf("plugin %q already registered", p.ID()) +func RegisterPlugin(id string, cb func() Plugin) { + _, loaded := registeredPlugins.LoadOrStore(id, cb) + if loaded { + log.Fatalf("plugin %q already registered", id) } - registeredPlugins[p.ID()] = p } diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 45d9be09..49a063d0 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -5,8 +5,6 @@ import ( "fmt" "path/filepath" - "github.com/swipe-io/swipe/v3/frame" - "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/importer" "github.com/swipe-io/swipe/v3/option" @@ -27,15 +25,17 @@ type AstFinder interface { } type GenerateResult struct { + PkgName string PkgPath string OutputPath string + Imports []string Content []byte Errs []error } -func Generate(cfg *Config, prefix string, useDoNotEdit bool, version string) (result []GenerateResult, errs []error) { - result = make([]GenerateResult, 0, 100) - importerMap := map[string]*importer.Importer{} +func Generate(cfg *Config, prefix string) (result map[string]*GenerateResult, errs []error) { + result = make(map[string]*GenerateResult, 512) + importerCache := map[string]*importer.Importer{} for _, module := range cfg.Modules { if module.External { @@ -43,11 +43,15 @@ func Generate(cfg *Config, prefix string, useDoNotEdit bool, version string) (re } for _, build := range module.Injects { for id, options := range build.Option { - p, ok := registeredPlugins[id] + iface, ok := registeredPlugins.Load(id) if !ok { errs = append(errs, &warnError{Err: fmt.Errorf("plugin %q not found", id)}) continue } + + cb := iface.(func() Plugin) + p := cb() + cfgErrs := p.Configure(cfg, module, options.(map[string]interface{})) if len(cfgErrs) > 0 { errs = append(errs, cfgErrs...) @@ -58,53 +62,59 @@ func Generate(cfg *Config, prefix string, useDoNotEdit bool, version string) (re errs = append(errs, genErrs...) continue } - generatorResult := make([]GenerateResult, len(generators)) - for i, g := range generators { - generatorResult[i].PkgPath = build.Pkg.Path - outputDir := g.OutputDir() - if outputDir == "" { - outputDir = build.BasePath + for _, g := range generators { + filename := prefix + strcase.ToSnake(p.ID()) + "_" + g.Filename() + + var outputPath string + if g.OutputPath() == "" { + outputPath = filepath.Join(build.BasePath, filename) } else { - path, err := filepath.Abs(filepath.Join(cfg.WorkDir, outputDir)) + path, err := filepath.Abs(filepath.Join(cfg.WorkDir, outputPath)) if err != nil { - generatorResult[i].Errs = append(generatorResult[i].Errs, err) + errs = append(errs, err) continue } - outputDir = path + outputPath = filepath.Join(path, filename) } - filename := prefix + strcase.ToSnake(p.ID()) + "_" + g.Filename() - importerKey := build.Pkg.Path + filename + generateResult, ok := result[outputPath] + if !ok { + generateResult = &GenerateResult{ + PkgPath: build.Pkg.Path, + OutputPath: outputPath, + } + result[outputPath] = generateResult + } // importer cache for package. - importerService, ok := importerMap[importerKey] + importerService, ok := importerCache[outputPath] if !ok { importerService = importer.NewImporter(build.Pkg) - importerMap[filename] = importerService + importerCache[outputPath] = importerService } - generatorResult[i].OutputPath = filepath.Join(outputDir, filename) - pkgName := build.Pkg.Name if gp, ok := g.(GeneratorPackage); ok && gp.Package() != "" { pkgName = gp.Package() } - f := frame.NewFrame(version, filename, importerService, pkgName, useDoNotEdit) + generateResult.PkgName = pkgName ctx := context.WithValue(context.TODO(), ImporterKey, importerService) - data, err := f.Frame(g.Generate(ctx)) - if err != nil { - generatorResult[i].Errs = append(generatorResult[i].Errs, err) - continue - } - generatorResult[i].Content = data + generateResult.Content = append(generateResult.Content, g.Generate(ctx)...) } - result = append(result, generatorResult...) } } } + + for _, generateResult := range result { + importerService := importerCache[generateResult.OutputPath] + if importerService.HasImports() { + generateResult.Imports = importerService.SortedImports() + } + } + return } From 19ce086ff60fe4dec4723c59ab86497fac409e10 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 8 Jul 2022 11:54:43 +0300 Subject: [PATCH 287/293] refactor: fixed generation --- v3/swipe/swipe.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index 49a063d0..b0584fed 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -66,8 +66,8 @@ func Generate(cfg *Config, prefix string) (result map[string]*GenerateResult, er for _, g := range generators { filename := prefix + strcase.ToSnake(p.ID()) + "_" + g.Filename() - var outputPath string - if g.OutputPath() == "" { + outputPath := g.OutputPath() + if outputPath == "" { outputPath = filepath.Join(build.BasePath, filename) } else { path, err := filepath.Abs(filepath.Join(cfg.WorkDir, outputPath)) From f607e87ad0ad00e789c021d8fe8ba639f4614741 Mon Sep 17 00:00:00 2001 From: vitaly Date: Fri, 8 Jul 2022 11:54:59 +0300 Subject: [PATCH 288/293] refactor: changed golang version to 1.18 --- .github/workflows/goreleaser.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 72979c06..dc7b416b 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.16 + go-version: 1.18 - name: Run GoReleaser uses: goreleaser/goreleaser-action@v2 with: From 6b101346264aefca07fb719908a012714d9b8d85 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 2 Aug 2022 10:18:05 +0300 Subject: [PATCH 289/293] refactor: code improvements and bugs fixed --- v3/internal/finder/finder.go | 263 + v3/internal/finder/helpers.go | 67 + v3/internal/openapi/gen.go | 669 ++ v3/internal/openapi/helpers.go | 191 + v3/internal/openapi/openapi.go | 126 + v3/internal/openapi/openapi_ffjson.go | 7164 +++++++++++++++++ v3/internal/plugin/echo/config/config.go | 43 +- v3/internal/plugin/echo/config/config_gen.go | 2 +- v3/internal/plugin/echo/generator/openapi.go | 72 + v3/internal/plugin/echo/plugin.go | 31 + v3/internal/plugin/gokit/config/config.go | 10 +- .../plugin/gokit/generator/client_helpers.go | 34 +- .../plugin/gokit/generator/client_struct.go | 4 +- .../plugin/gokit/generator/endpoint.go | 8 +- v3/internal/plugin/gokit/generator/helpers.go | 48 +- .../plugin/gokit/generator/jsonrpc_client.go | 6 +- .../plugin/gokit/generator/jsonrpc_doc.go | 4 +- v3/internal/plugin/gokit/generator/openapi.go | 19 +- .../plugin/gokit/generator/rest_client.go | 25 +- v3/internal/plugin/gokit/helpers.go | 5 + .../plugin/gokit/openapi/openapi_ffjson.go | 6 +- v3/internal/plugin/gokit/plugin.go | 28 +- v3/internal/plugin/plugin.go | 48 + v3/swipe/config.go | 3 +- 24 files changed, 8770 insertions(+), 106 deletions(-) create mode 100644 v3/internal/finder/finder.go create mode 100644 v3/internal/finder/helpers.go create mode 100644 v3/internal/openapi/gen.go create mode 100644 v3/internal/openapi/helpers.go create mode 100644 v3/internal/openapi/openapi.go create mode 100644 v3/internal/openapi/openapi_ffjson.go create mode 100644 v3/internal/plugin/echo/generator/openapi.go diff --git a/v3/internal/finder/finder.go b/v3/internal/finder/finder.go new file mode 100644 index 00000000..476d1223 --- /dev/null +++ b/v3/internal/finder/finder.go @@ -0,0 +1,263 @@ +package finder + +import ( + "go/ast" + "go/types" + stdtypes "go/types" + "strings" + + "github.com/swipe-io/swipe/v3/option" + + "github.com/swipe-io/swipe/v3/internal/packages" + + stdpackages "golang.org/x/tools/go/packages" +) + +type Interface struct { +} + +type Error struct { + PkgName string + PkgPath string + Name string + Code int64 + ErrCode string +} + +type typeInfo struct { + obj stdtypes.Object + stmtList []ast.Stmt + pkg *stdpackages.Package + recv *types.Var +} + +type Finder struct { + packages *packages.Packages + modulePath string + funcDeclTypes map[string]*typeInfo + funcDeclIfaceTypes map[string][]*typeInfo +} + +func (f *Finder) FindErrors() (result map[string]Error) { + result = make(map[string]Error, 1024) + _ = f.packages.TraverseObjects(func(pkg *stdpackages.Package, id *ast.Ident, obj stdtypes.Object) (err error) { + if !strings.Contains(pkg.PkgPath, f.modulePath) { + return + } + if t, ok := obj.Type().(*types.Named); ok { + + if t.Obj().Pkg() != nil && strings.Contains(t.Obj().Pkg().Path(), "swipe") { + return + } + + methodFunc := findMethodByNamed(t, "ErrorCode", "StatusCode") + if methodFunc == nil { + return + } + values := extractReturnValuesByFunc(pkg, methodFunc, f.funcDeclTypes) + if len(values) != 1 { + return + } + code, ok := values[0].(int64) + if !ok { + return + } + + var errCode string + if methodFunc := findMethodByNamed(t, "Code"); methodFunc != nil { + values := extractReturnValuesByFunc(pkg, methodFunc, f.funcDeclTypes) + if len(values) > 0 { + errCode, _ = values[0].(string) + } + } + result[t.Obj().Pkg().Path()+"/"+t.Obj().Name()] = Error{ + PkgName: t.Obj().Pkg().Name(), + PkgPath: t.Obj().Pkg().Path(), + Name: t.Obj().Name(), + Code: code, + ErrCode: errCode, + } + } + return + }) + return +} + +func (f *Finder) FindIfaceErrors(interfaces []*option.NamedType) (result map[string]map[string][]Error) { + result = map[string]map[string][]Error{} + visited := map[string]struct{}{} + errors := f.FindErrors() + + for _, named := range interfaces { + i := named.Type.(*option.IfaceType) + for _, m := range i.Methods { + id := named.Pkg.Path + "/" + named.Name.Value + "." + m.Name.Value + if fns, ok := f.funcDeclIfaceTypes[id]; ok { + for _, info := range fns { + visited[id] = struct{}{} + if _, ok := result[named.Name.Value]; !ok { + result[named.Name.Value] = map[string][]Error{} + } + result[named.Name.Value][info.obj.Name()] = f.findIfaceErrorsRecursive(errors, visited, info.stmtList) + } + } + } + } + return +} + +func (f *Finder) findIfaceErrorsRecursive(errors map[string]Error, visited map[string]struct{}, stmts []ast.Stmt) (results []Error) { + for _, stmt := range stmts { + switch t := stmt.(type) { + case *ast.ReturnStmt: + for _, result := range t.Results { + call, ok := result.(*ast.CallExpr) + if !ok { + if unary, ok := result.(*ast.UnaryExpr); ok { + if cpl, ok := unary.X.(*ast.CompositeLit); ok { + if sel, ok := cpl.Type.(*ast.SelectorExpr); ok { + if obj := f.packages.ObjectOf(sel.Sel); obj != nil { + if e, ok := errors[obj.Pkg().Path()+"/"+obj.Name()]; ok { + results = append(results, e) + } + break + } + } + } + } + continue + } + selFun := extractSelector(call.Fun) + if selFun != nil { + sel := extractSelector(selFun.X) + if sel == nil { + sel = selFun + } + if obj := f.packages.ObjectOf(sel.Sel); obj != nil { + if named, ok := obj.Type().(*types.Named); ok { + if _, ok := named.Obj().Type().Underlying().(*types.Interface); ok { + id := named.Obj().Pkg().Path() + "/" + named.Obj().Name() + "." + selFun.Sel.Name + if _, ok := visited[id]; ok { + break + } + visited[id] = struct{}{} + if infos, ok := f.funcDeclIfaceTypes[id]; ok { + for _, info := range infos { + results = append(results, f.findIfaceErrorsRecursive(errors, visited, info.stmtList)...) + } + break + } + } + } + } + } + } + case *ast.IfStmt: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.Body.List)...) + case *ast.SwitchStmt: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.Body.List)...) + case *ast.BlockStmt: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.List)...) + case *ast.CommClause: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.Body)...) + case *ast.SelectStmt: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.Body.List)...) + case *ast.ForStmt: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.Body.List)...) + case *ast.RangeStmt: + results = append(results, f.findIfaceErrorsRecursive(errors, visited, t.Body.List)...) + } + } + return +} + +func (f *Finder) fillFuncDeclTypes() { + _ = f.packages.TraverseDecls(func(pkg *stdpackages.Package, file *ast.File, decl ast.Decl) (err error) { + if strings.Contains(pkg.PkgPath, "/pkg/swipe/") { + return + } + switch t := decl.(type) { + case *ast.FuncDecl: + obj := pkg.TypesInfo.ObjectOf(t.Name) + if obj != nil { + sig := pkg.TypesInfo.TypeOf(t.Name).(*types.Signature) + id := t.Name.Name + recv := sig.Recv() + if recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() + } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id + } + f.funcDeclTypes[pkg.PkgPath+id] = &typeInfo{ + obj: obj, + pkg: pkg, + recv: recv, + stmtList: t.Body.List, + } + } + } + return + }) +} + +func (f *Finder) fillFuncIfaceDeclTypes() { + _ = f.packages.TraverseDecls(func(pkg *stdpackages.Package, file *ast.File, decl ast.Decl) (err error) { + if strings.Contains(pkg.PkgPath, "/pkg/swipe/") { + return + } + switch t := decl.(type) { + case *ast.GenDecl: + for _, spec := range t.Specs { + if tp, ok := spec.(*ast.TypeSpec); ok { + obj := pkg.TypesInfo.ObjectOf(tp.Name) + named, ok := obj.Type().(*types.Named) + if !ok { + continue + } + iface, ok := named.Obj().Type().Underlying().(*types.Interface) + if !ok { + continue + } + for _, info := range f.funcDeclTypes { + if info.recv == nil { + continue + } + ptr, ok := info.recv.Type().(*stdtypes.Pointer) + if !ok { + continue + } + for i := 0; i < iface.NumEmbeddeds(); i++ { + if embeddedNamed, ok := iface.EmbeddedType(i).(*types.Named); ok { + if embeddedIface, ok := embeddedNamed.Obj().Type().Underlying().(*types.Interface); ok { + imp := stdtypes.Implements(ptr.Underlying(), embeddedIface) + if imp { + id := pkg.PkgPath + "/" + named.Obj().Name() + "." + info.obj.Name() + f.funcDeclIfaceTypes[id] = append(f.funcDeclIfaceTypes[id], info) + } + } + } + } + imp := stdtypes.Implements(ptr.Underlying(), iface) + if imp { + id := pkg.PkgPath + "/" + named.Obj().Name() + "." + info.obj.Name() + f.funcDeclIfaceTypes[id] = append(f.funcDeclIfaceTypes[id], info) + } + } + } + } + } + return + }) +} + +func NewFinder(packages *packages.Packages, modulePath string) *Finder { + f := &Finder{packages: packages, modulePath: modulePath, funcDeclTypes: map[string]*typeInfo{}, funcDeclIfaceTypes: map[string][]*typeInfo{}} + f.fillFuncDeclTypes() + f.fillFuncIfaceDeclTypes() + return f +} diff --git a/v3/internal/finder/helpers.go b/v3/internal/finder/helpers.go new file mode 100644 index 00000000..c5a98610 --- /dev/null +++ b/v3/internal/finder/helpers.go @@ -0,0 +1,67 @@ +package finder + +import ( + "go/ast" + "go/constant" + "go/types" + stdtypes "go/types" + + stdpackages "golang.org/x/tools/go/packages" +) + +func findMethodByNamed(t *stdtypes.Named, name ...string) *stdtypes.Func { + for i := 0; i < t.NumMethods(); i++ { + m := t.Method(i) + for _, s := range name { + if m.Name() == s { + return m + } + } + } + return nil +} + +func extractReturnValuesByFunc(pkg *stdpackages.Package, f *stdtypes.Func, declTypes map[string]*typeInfo) []interface{} { + sig := f.Type().(*types.Signature) + id := f.Name() + if recv := sig.Recv(); recv != nil { + recvType := recv.Type() + if ptr, ok := recvType.(*types.Pointer); ok { + recvType = ptr.Elem() + } + recvNamed := recvType.(*types.Named) + id = "/" + recvNamed.Obj().Name() + "." + id + } else { + id = "." + id + } + if info, ok := declTypes[pkg.PkgPath+id]; ok { + return extractValues(pkg, info.stmtList) + } + return nil +} + +func extractValues(pkg *stdpackages.Package, stmtList []ast.Stmt) (values []interface{}) { + for _, stmt := range stmtList { + if ret, ok := stmt.(*ast.ReturnStmt); ok { + for _, result := range ret.Results { + if v, ok := pkg.TypesInfo.Types[result]; ok { + tv := constant.Val(v.Value) + if tv != nil { + values = append(values, tv) + } else { + values = append(values, v.Type) + } + } + } + } + } + return +} + +func extractSelector(e ast.Expr) *ast.SelectorExpr { + switch t := e.(type) { + case *ast.SelectorExpr: + return t + } + return nil +} diff --git a/v3/internal/openapi/gen.go b/v3/internal/openapi/gen.go new file mode 100644 index 00000000..5bf86140 --- /dev/null +++ b/v3/internal/openapi/gen.go @@ -0,0 +1,669 @@ +package openapi + +import ( + "encoding/json" + "net/http" + "path" + "strconv" + stdstrings "strings" + + "github.com/swipe-io/strcase" + + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/option" +) + +type InterfaceMethod struct { + Name option.String + RESTMethod string + RESTPath string + RESTQueryVars []string + RESTPathVars map[string]string + Tags []string + Func *option.FuncType + Description string + RESTWrapResponse string + RESTQueryValues []string + RESTHeaderVars []string +} + +type Interface struct { + Name option.String + Namespace string + Methods []InterfaceMethod +} + +type Error struct { + PkgName string + PkgPath string + Name string + Code int64 + ErrCode string +} + +type Openapi struct { + info Info + servers []Server + interfaces []Interface + errors map[string]map[string][]Error + useJSONRPC bool + defTypes map[string]*option.NamedType +} + +func (g *Openapi) Build() OpenAPI { + g.defTypes = make(map[string]*option.NamedType, 1024) + o := OpenAPI{ + OpenAPI: "3.0.0", + Paths: map[string]*Path{}, + Components: Components{ + Schemas: Schemas{}, + }, + } + + o.Info = g.info + o.Servers = g.servers + + if g.useJSONRPC { + o.Components.Schemas = getOpenapiJSONRPCErrorSchemas() + } + + for _, iface := range g.interfaces { + for _, m := range iface.Methods { + var ( + pathStr string + op *Operation + httpMethodName = m.RESTMethod + ) + + if g.useJSONRPC { + op = g.makeJSONRPCPath(m, iface.Namespace) + pathStr = "/" + m.Name.Lower() + if iface.Namespace != "" { + pathStr = "/" + iface.Namespace + "." + m.Name.Lower() + } + httpMethodName = "POST" + } else { + op = g.makeRestPath(m) + + if m.RESTPath != "" { + pathStr = m.RESTPath + } else { + pathStr = strcase.ToKebab(m.Name.Value) + } + for _, p := range m.Func.Sig.Params { + if plugin.IsContext(p) { + continue + } + if regexp, ok := m.RESTPathVars[p.Name.Value]; ok { + pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) + } + } + if iface.Namespace != "" { + pathStr = path.Join(iface.Namespace, pathStr) + } + } + + if methodErrors, ok := g.errors[iface.Name.Value]; ok { + for _, errors := range methodErrors { + for _, e := range errors { + codeStr := strconv.FormatInt(e.Code, 10) + errResponse := &Response{ + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/" + e.Name, + }, + }, + }, + } + if g.useJSONRPC { + codeStr = "x-" + codeStr + o.Components.Schemas[e.Name] = makeOpenapiSchemaJRPCError(e.Code) + errResponse.Description = e.Name + } else { + errResponse.Description = http.StatusText(int(e.Code)) + o.Components.Schemas[e.Name] = makeOpenapiSchemaRESTError(e.ErrCode) + } + + op.Responses[codeStr] = errResponse + } + } + } + + if iface.Namespace != "" { + op.Tags = append(op.Tags, iface.Namespace) + } + op.Tags = append(op.Tags, m.Tags...) + op.Description = m.Description + + if _, ok := o.Paths[pathStr]; !ok { + o.Paths[pathStr] = &Path{} + } + + switch httpMethodName { + default: + o.Paths[pathStr].Get = op + case "POST": + o.Paths[pathStr].Post = op + case "PUT": + o.Paths[pathStr].Put = op + case "PATCH": + o.Paths[pathStr].Patch = op + case "DELETE": + o.Paths[pathStr].Delete = op + } + } + } + + for _, namedType := range g.defTypes { + o.Components.Schemas[namedType.Name.Value] = g.schemaByType(namedType.Type) + } + return o +} + +func (g *Openapi) makeRef(named *option.NamedType) string { + return "#/components/schemas/" + named.Name.Upper() +} + +func (g *Openapi) fillTypeDefRecursive(t interface{}) { + switch t := t.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(t.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(t.Value) + case *option.MapType: + g.fillTypeDefRecursive(t.Value) + case *option.NamedType: + switch t.Pkg.Path { + case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid": + return + } + if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { + g.defTypes[t.Pkg.Path+t.Name.Value] = t + + switch tt := t.Type.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(tt.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(tt.Value) + case *option.MapType: + g.fillTypeDefRecursive(tt.Value) + case *option.StructType: + for _, field := range tt.Fields { + g.fillTypeDefRecursive(field.Var.Type) + } + } + } + + } +} + +func (g *Openapi) fillTypeDef(t interface{}) { + g.fillTypeDefRecursive(t) +} + +func (g *Openapi) schemaByTypeRecursive(schema *Schema, t interface{}) { + switch t := t.(type) { + case *option.NamedType: + switch t.Pkg.Path { + default: + schema.Ref = g.makeRef(t) + return + case "encoding/json": + schema.Type = "object" + schema.Properties = Properties{} + return + case "time": + switch t.Name.Value { + case "Duration": + schema.Type = "string" + schema.Example = "1h3m30s" + case "Time": + schema.Type = "string" + schema.Format = "date-time" + schema.Example = "1985-04-02T01:30:00.00Z" + } + return + case "github.com/pborman/uuid", "github.com/google/uuid": + schema.Type = "string" + schema.Format = "uuid" + schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" + return + } + case *option.StructType: + for _, field := range t.Fields { + name := field.Var.Name.Value + if tag, err := field.Tags.Get("json"); err == nil { + name = tag.Name + } + if name == "-" { + continue + } + filedSchema := &Schema{ + Properties: Properties{}, + } + filedSchema.Description = field.Var.Comment + schema.Properties[name] = filedSchema + g.schemaByTypeRecursive(filedSchema, field.Var.Type) + } + case *option.MapType: + mapSchema := &Schema{ + Properties: Properties{}, + } + schema.Properties = Properties{"key": mapSchema} + g.schemaByTypeRecursive(mapSchema, t.Value) + return + case *option.ArrayType: + schema.Type = "array" + schema.Items = &Schema{ + Properties: Properties{}, + } + g.schemaByTypeRecursive(schema.Items, t.Value) + return + case *option.SliceType: + if b, ok := t.Value.(*option.BasicType); ok && b.IsByte() { + schema.Type = "string" + schema.Format = "byte" + schema.Example = "U3dhZ2dlciByb2Nrcw==" + } else { + schema.Type = "array" + schema.Items = &Schema{ + Properties: Properties{}, + } + g.schemaByTypeRecursive(schema.Items, t.Value) + } + return + case *option.IfaceType: + schema.Type = "object" + schema.Description = "Can be any value - string, number, boolean, array or object." + schema.Properties = Properties{} + schema.Example = json.RawMessage("null") + schema.AnyOf = []Schema{ + {Type: "string", Example: "abc"}, + {Type: "integer", Example: 1}, + {Type: "number", Format: "float", Example: 1.11}, + {Type: "boolean", Example: true}, + {Type: "array"}, + {Type: "object"}, + } + return + case *option.BasicType: + if t.IsString() { + schema.Type = "string" + schema.Example = "abc" + return + } + if t.IsBool() { + schema.Type = "boolean" + schema.Example = "true" + } + if t.IsNumeric() { + if t.IsInt32() || t.IsUint32() { + schema.Type = "integer" + schema.Format = "int32" + schema.Example = 1 + return + } + if t.IsInt64() || t.IsUint64() { + schema.Type = "integer" + schema.Format = "int64" + schema.Example = 1 + return + } + if t.IsFloat32() || t.IsFloat64() { + schema.Type = "number" + schema.Format = "float" + schema.Example = 1.11 + return + } + schema.Type = "integer" + schema.Example = 1 + return + } + } +} + +func (g *Openapi) schemaByType(t interface{}) (schema *Schema) { + schema = &Schema{ + Properties: Properties{}, + } + g.schemaByTypeRecursive(schema, t) + return +} + +func (g *Openapi) makeJSONRPCPath(m InterfaceMethod, prefix string) *Operation { + responseSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + requestSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + + if plugin.LenWithoutErrors(m.Func.Sig.Params) > 0 { + for _, p := range m.Func.Sig.Params { + if plugin.IsContext(p) { + continue + } + g.fillTypeDef(p.Type) + + schema := g.schemaByType(p.Type) + schema.Description = p.Comment + requestSchema.Properties[p.Name.Lower()] = schema + } + } else { + requestSchema.Type = "object" + requestSchema.Nullable = true + requestSchema.Example = json.RawMessage("null") + } + + lenResults := plugin.LenWithoutErrors(m.Func.Sig.Results) + + if lenResults > 1 { + for _, r := range m.Func.Sig.Results { + if plugin.IsError(r) { + continue + } + if plugin.IsFileDownloadType(r.Type) { + continue + } + g.fillTypeDef(r.Type) + schema := g.schemaByType(r.Type) + responseSchema.Properties[r.Name.Lower()] = schema + } + } else if lenResults == 1 { + if !plugin.IsFileDownloadType(m.Func.Sig.Results[0].Type) { + g.fillTypeDef(m.Func.Sig.Results[0].Type) + responseSchema = g.schemaByType(m.Func.Sig.Results[0].Type) + } + } else { + responseSchema.Example = json.RawMessage("null") + } + + if m.RESTWrapResponse != "" { + properties := Properties{} + properties[m.RESTWrapResponse] = responseSchema + responseSchema = &Schema{ + Properties: properties, + } + } + + response := &Schema{ + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", + }, + "result": responseSchema, + }, + } + + restMethod := m.Name.Lower() + if prefix != "" { + restMethod = prefix + "." + restMethod + } + + request := &Schema{ + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", + }, + "method": &Schema{ + Type: "string", + Enum: []string{restMethod}, + }, + "params": requestSchema, + }, + } + + return &Operation{ + RequestBody: &RequestBody{ + Required: true, + Content: map[string]Media{ + "application/json": { + Schema: request, + }, + }, + }, + Responses: map[string]*Response{ + "200": { + Description: "OK", + Content: Content{ + "application/json": { + Schema: response, + }, + }, + }, + "x-32700": { + Description: "Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/ParseError", + }, + }, + }, + }, + "x-32600": { + Description: "Invalid Request. The JSON sent is not a valid Request object.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/InvalidRequestError", + }, + }, + }, + }, + "x-32601": { + Description: "Method not found. The method does not exist / is not available.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/MethodNotFoundError", + }, + }, + }, + }, + "x-32602": { + Description: "Invalid params. Invalid method parameters.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/InvalidParamsError", + }, + }, + }, + }, + "x-32603": { + Description: "Internal error. Internal JSON-RPC error.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/InternalError", + }, + }, + }, + }, + }, + } +} + +func (g *Openapi) makeRestPath(m InterfaceMethod) *Operation { + responseSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + + requestSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + + queryVars := make([]plugin.VarType, 0, len(m.RESTQueryVars)) + queryValues := make([]plugin.VarType, 0, len(m.RESTQueryValues)) + headerVars := make([]plugin.VarType, 0, len(m.RESTHeaderVars)) + pathVars := make([]plugin.VarType, 0, len(m.RESTPathVars)) + paramVars := make([]*option.VarType, 0, len(m.Func.Sig.Params)) + + for _, p := range m.Func.Sig.Params { + if plugin.IsContext(p) { + continue + } + if v, ok := plugin.FindParam(p, m.RESTQueryVars); ok { + queryVars = append(queryVars, v) + continue + } + if v, ok := plugin.FindParam(p, m.RESTQueryValues); ok { + queryValues = append(queryValues, v) + continue + } + if v, ok := plugin.FindParam(p, m.RESTHeaderVars); ok { + headerVars = append(headerVars, v) + continue + } + if regexp, ok := m.RESTPathVars[p.Name.Value]; ok { + pathVars = append(pathVars, plugin.VarType{ + Param: p, + Value: regexp, + }) + continue + } + paramVars = append(paramVars, p) + } + + for _, p := range paramVars { + g.fillTypeDef(p.Type) + schema := g.schemaByType(p.Type) + schema.Description = p.Comment + requestSchema.Properties[p.Name.Lower()] = schema + } + + lenResults := plugin.LenWithoutErrors(m.Func.Sig.Results) + if lenResults > 1 { + for _, r := range m.Func.Sig.Results { + if plugin.IsError(r) { + continue + } + if plugin.IsFileDownloadType(r.Type) { + responseSchema.Type = "string" + responseSchema.Format = "binary" + continue + } + g.fillTypeDef(r.Type) + responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) + } + } else if lenResults == 1 { + if !plugin.IsFileDownloadType(m.Func.Sig.Results[0].Type) { + g.fillTypeDef(m.Func.Sig.Results[0].Type) + responseSchema = g.schemaByType(m.Func.Sig.Results[0].Type) + } else { + responseSchema.Type = "string" + responseSchema.Format = "binary" + } + } + if m.RESTWrapResponse != "" { + properties := Properties{} + properties[m.RESTWrapResponse] = responseSchema + responseSchema = &Schema{ + Properties: properties, + } + } + responses := map[string]*Response{} + if lenResults == 0 { + responses["201"] = &Response{ + Description: "Created", + Content: Content{ + "text/plain": {}, + }, + } + } else { + + if responseSchema.Type == "string" && responseSchema.Format == "binary" { + responses["200"] = &Response{ + Description: "OK", + Content: Content{ + "application/file": { + Schema: responseSchema, + }, + }, + } + } else { + responses["200"] = &Response{ + Description: "OK", + Content: Content{ + "application/json": { + Schema: responseSchema, + }, + }, + } + } + + } + + o := &Operation{ + Summary: m.Name.Value, + Responses: responses, + } + + for _, pathVar := range pathVars { + o.Parameters = append(o.Parameters, Parameter{ + In: "path", + Name: pathVar.Param.Name.Lower(), + Description: pathVar.Param.Comment, + Required: pathVar.IsRequired, + Schema: g.schemaByType(pathVar.Param.Type), + }) + } + + for _, headerVar := range headerVars { + o.Parameters = append(o.Parameters, Parameter{ + In: "header", + Name: headerVar.Value, + Description: headerVar.Param.Comment, + Required: headerVar.IsRequired, + Schema: g.schemaByType(headerVar.Param.Type), + }) + } + + for _, queryVar := range queryVars { + o.Parameters = append(o.Parameters, Parameter{ + In: "query", + Name: queryVar.Param.Name.Lower(), + Description: queryVar.Param.Comment, + Required: queryVar.IsRequired, + Schema: &Schema{ + Type: "string", + Properties: Properties{}, + }, + }) + } + + switch m.RESTMethod { + case "POST", "PUT", "PATCH": + o.RequestBody = &RequestBody{ + Required: true, + Content: map[string]Media{ + "application/json": { + Schema: requestSchema, + }, + }, + } + } + return o +} + +func NewOpenapi(info Info, servers []Server, interfaces []Interface, errors map[string]map[string][]Error, useJSONRPC bool) *Openapi { + return &Openapi{info: info, servers: servers, interfaces: interfaces, errors: errors, useJSONRPC: useJSONRPC} +} diff --git a/v3/internal/openapi/helpers.go b/v3/internal/openapi/helpers.go new file mode 100644 index 00000000..3d08cc6b --- /dev/null +++ b/v3/internal/openapi/helpers.go @@ -0,0 +1,191 @@ +package openapi + +func getOpenapiJSONRPCErrorSchemas() Schemas { + return Schemas{ + "ParseError": { + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &Schema{ + Type: "object", + Properties: Properties{ + "code": &Schema{ + Type: "integer", + Example: -32700, + }, + "message": &Schema{ + Type: "string", + Example: "Parse error", + }, + }, + }, + }, + }, + "InvalidRequestError": { + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &Schema{ + Type: "object", + Properties: Properties{ + "code": &Schema{ + Type: "integer", + Example: -32600, + }, + "message": &Schema{ + Type: "string", + Example: "Invalid Request", + }, + }, + }, + }, + }, + "MethodNotFoundError": { + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &Schema{ + Type: "object", + Properties: Properties{ + "code": &Schema{ + Type: "integer", + Example: -32601, + }, + "message": &Schema{ + Type: "string", + Example: "Method not found", + }, + }, + }, + }, + }, + "InvalidParamsError": { + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &Schema{ + Type: "object", + Properties: Properties{ + "code": &Schema{ + Type: "integer", + Example: -32602, + }, + "message": &Schema{ + Type: "string", + Example: "Invalid params", + }, + }, + }, + }, + }, + "InternalError": { + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &Schema{ + Type: "object", + Properties: Properties{ + "code": &Schema{ + Type: "integer", + Example: -32603, + }, + "message": &Schema{ + Type: "string", + Example: "Internal error", + }, + }, + }, + }, + }, + } +} + +func makeOpenapiSchemaJRPCError(code int64) *Schema { + return &Schema{ + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "1f1ecd1b-d729-40cd-b6f4-4011f69811fe", + }, + "error": &Schema{ + Type: "object", + Properties: Properties{ + "code": &Schema{ + Type: "integer", + Example: code, + }, + "message": &Schema{ + Type: "string", + }, + }, + }, + }, + } +} + +func makeOpenapiSchemaRESTError(errCode string) *Schema { + return &Schema{ + Type: "object", + Properties: Properties{ + "data": &Schema{ + Type: "object", + Properties: Properties{ + "key": &Schema{AnyOf: []Schema{ + {Type: "string"}, + {Type: "number"}, + {Type: "integer"}, + {Type: "array"}, + {Type: "object"}, + }}, + }, + }, + "code": &Schema{ + Type: "string", + Example: errCode, + }, + "error": &Schema{ + Type: "string", + }, + }, + } +} diff --git a/v3/internal/openapi/openapi.go b/v3/internal/openapi/openapi.go new file mode 100644 index 00000000..4a804a82 --- /dev/null +++ b/v3/internal/openapi/openapi.go @@ -0,0 +1,126 @@ +package openapi + +type Contact struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` + Email string `yaml:"email,omitempty" json:"email,omitempty"` +} + +type License struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` +} + +type Info struct { + Title string `yaml:"title,omitempty" json:"title,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + TermsOfService string `yaml:"termsOfService,omitempty" json:"termsOfService,omitempty"` + Contact *Contact `yaml:"contact,omitempty" json:"contact,omitempty"` + License *License `yaml:"license,omitempty" json:"license,omitempty"` + Version string `yaml:"version,omitempty" json:"version,omitempty"` +} + +type ExternalDocs struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` +} + +type Tag struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + ExternalDocs ExternalDocs `yaml:"externalDocs,omitempty" json:"externalDocs,omitempty"` +} + +type Properties map[string]*Schema + +type Schema struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + Type string `yaml:"type,omitempty" json:"type,omitempty"` + Nullable bool `yaml:"nullable,omitempty" json:"nullable,omitempty"` + Format string `yaml:"format,omitempty" json:"format,omitempty"` + Properties Properties `yaml:"properties,omitempty" json:"properties,omitempty"` + Items *Schema `yaml:"items,omitempty" json:"items,omitempty"` + AnyOf []Schema `yaml:"anyOf,omitempty" json:"anyOf,omitempty"` + Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` + Example interface{} `yaml:"example,omitempty" json:"example,omitempty"` +} + +type Parameter struct { + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + In string `yaml:"in,omitempty" json:"in,omitempty"` + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Required bool `yaml:"required,omitempty" json:"required,omitempty"` + Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +} + +type Media struct { + Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +} + +type Content map[string]Media + +type Response struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Content Content `yaml:"content,omitempty" json:"content,omitempty"` +} + +type Responses map[string]*Response + +type RequestBody struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Content Content `yaml:"content,omitempty" json:"content,omitempty"` + Required bool `yaml:"required,omitempty" json:"required,omitempty"` +} + +type Operation struct { + Tags []string `yaml:"tags,omitempty" json:"tags,omitempty"` + Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + OperationID string `yaml:"operationId,omitempty" json:"operationId,omitempty"` + Consumes []string `yaml:"consumes,omitempty" json:"consumes,omitempty"` + Produces []string `yaml:"produces,omitempty" json:"produces,omitempty"` + Parameters []Parameter `yaml:"parameters,omitempty" json:"parameters,omitempty"` + RequestBody *RequestBody `yaml:"requestBody,omitempty" json:"requestBody,omitempty"` + Responses Responses `yaml:"responses,omitempty" json:"responses,omitempty"` +} + +type Path struct { + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Get *Operation `yaml:"get,omitempty" json:"get,omitempty"` + Post *Operation `yaml:"post,omitempty" json:"post,omitempty"` + Patch *Operation `yaml:"patch,omitempty" json:"patch,omitempty"` + Put *Operation `yaml:"put,omitempty" json:"put,omitempty"` + Delete *Operation `yaml:"delete,omitempty" json:"delete,omitempty"` +} + +type Variable struct { + Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` + Default string `yaml:"default,omitempty" json:"default,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` +} + +type Server struct { + URL string `yaml:"url,omitempty" json:"url,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Variables map[string]Variable `yaml:"variables,omitempty" json:"variables,omitempty"` +} + +type Schemas map[string]*Schema + +type Components struct { + Schemas Schemas `yaml:"schemas,omitempty" json:"schemas,omitempty"` +} + +type OpenAPI struct { + OpenAPI string `yaml:"openapi" json:"openapi"` + Info Info `yaml:"info,omitempty" json:"info,omitempty"` + Servers []Server `yaml:"servers,omitempty" json:"servers,omitempty"` + Tags []Tag `yaml:"tags,omitempty" json:"tags,omitempty"` + Schemes []string `yaml:"schemes,omitempty" json:"schemes,omitempty"` + Paths map[string]*Path `yaml:"paths,omitempty" json:"paths,omitempty"` + Components Components `yaml:"components,omitempty" json:"components,omitempty"` +} diff --git a/v3/internal/openapi/openapi_ffjson.go b/v3/internal/openapi/openapi_ffjson.go new file mode 100644 index 00000000..508e2fb9 --- /dev/null +++ b/v3/internal/openapi/openapi_ffjson.go @@ -0,0 +1,7164 @@ +// Code generated by ffjson . DO NOT EDIT. +// source: pkg/openapi/gen.go + +package openapi + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + + fflib "github.com/pquerna/ffjson/fflib/v1" +) + +// MarshalJSON marshal bytes to json - template +func (j *Components) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Components) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Schemas) != 0 { + buf.WriteString(`"schemas":`) + /* Falling back. type=openapi.Schemas kind=map */ + err = buf.Encode(j.Schemas) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtComponentsbase = iota + ffjtComponentsnosuchkey + + ffjtComponentsSchemas +) + +var ffjKeyComponentsSchemas = []byte("schemas") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Components) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Components) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtComponentsbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtComponentsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 's': + + if bytes.Equal(ffjKeyComponentsSchemas, kn) { + currentKey = ffjtComponentsSchemas + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyComponentsSchemas, kn) { + currentKey = ffjtComponentsSchemas + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtComponentsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtComponentsSchemas: + goto handle_Schemas + + case ffjtComponentsnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Schemas: + + /* handler: j.Schemas type=openapi.Schemas kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Schemas", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Schemas = nil + } else { + + j.Schemas = make(map[string]*Schema, 0) + + wantVal := true + + for { + + var k string + + var tmpJSchemas *Schema + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJSchemas type=*openapi.Schema kind=ptr quoted=false*/ + + { + if tok == fflib.FFTok_null { + + tmpJSchemas = nil + + } else { + + if tmpJSchemas == nil { + tmpJSchemas = new(Schema) + } + + err = tmpJSchemas.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Schemas[k] = tmpJSchemas + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Contact) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Contact) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + if len(j.Email) != 0 { + buf.WriteString(`"email":`) + fflib.WriteJsonString(buf, string(j.Email)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtContactbase = iota + ffjtContactnosuchkey + + ffjtContactName + + ffjtContactURL + + ffjtContactEmail +) + +var ffjKeyContactName = []byte("name") + +var ffjKeyContactURL = []byte("url") + +var ffjKeyContactEmail = []byte("email") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Contact) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Contact) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtContactbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtContactnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'e': + + if bytes.Equal(ffjKeyContactEmail, kn) { + currentKey = ffjtContactEmail + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'n': + + if bytes.Equal(ffjKeyContactName, kn) { + currentKey = ffjtContactName + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyContactURL, kn) { + currentKey = ffjtContactURL + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyContactEmail, kn) { + currentKey = ffjtContactEmail + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyContactURL, kn) { + currentKey = ffjtContactURL + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyContactName, kn) { + currentKey = ffjtContactName + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtContactnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtContactName: + goto handle_Name + + case ffjtContactURL: + goto handle_URL + + case ffjtContactEmail: + goto handle_Email + + case ffjtContactnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Email: + + /* handler: j.Email type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Email = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *ExternalDocs) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *ExternalDocs) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtExternalDocsbase = iota + ffjtExternalDocsnosuchkey + + ffjtExternalDocsDescription + + ffjtExternalDocsURL +) + +var ffjKeyExternalDocsDescription = []byte("description") + +var ffjKeyExternalDocsURL = []byte("url") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *ExternalDocs) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *ExternalDocs) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtExternalDocsbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtExternalDocsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyExternalDocsDescription, kn) { + currentKey = ffjtExternalDocsDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyExternalDocsURL, kn) { + currentKey = ffjtExternalDocsURL + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyExternalDocsURL, kn) { + currentKey = ffjtExternalDocsURL + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyExternalDocsDescription, kn) { + currentKey = ffjtExternalDocsDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtExternalDocsnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtExternalDocsDescription: + goto handle_Description + + case ffjtExternalDocsURL: + goto handle_URL + + case ffjtExternalDocsnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Info) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Info) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Title) != 0 { + buf.WriteString(`"title":`) + fflib.WriteJsonString(buf, string(j.Title)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.TermsOfService) != 0 { + buf.WriteString(`"termsOfService":`) + fflib.WriteJsonString(buf, string(j.TermsOfService)) + buf.WriteByte(',') + } + if j.Contact != nil { + if true { + buf.WriteString(`"contact":`) + + { + + err = j.Contact.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.License != nil { + if true { + buf.WriteString(`"license":`) + + { + + err = j.License.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if len(j.Version) != 0 { + buf.WriteString(`"version":`) + fflib.WriteJsonString(buf, string(j.Version)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtInfobase = iota + ffjtInfonosuchkey + + ffjtInfoTitle + + ffjtInfoDescription + + ffjtInfoTermsOfService + + ffjtInfoContact + + ffjtInfoLicense + + ffjtInfoVersion +) + +var ffjKeyInfoTitle = []byte("title") + +var ffjKeyInfoDescription = []byte("description") + +var ffjKeyInfoTermsOfService = []byte("termsOfService") + +var ffjKeyInfoContact = []byte("contact") + +var ffjKeyInfoLicense = []byte("license") + +var ffjKeyInfoVersion = []byte("version") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Info) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Info) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtInfobase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtInfonosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyInfoContact, kn) { + currentKey = ffjtInfoContact + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyInfoDescription, kn) { + currentKey = ffjtInfoDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'l': + + if bytes.Equal(ffjKeyInfoLicense, kn) { + currentKey = ffjtInfoLicense + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeyInfoTitle, kn) { + currentKey = ffjtInfoTitle + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyInfoTermsOfService, kn) { + currentKey = ffjtInfoTermsOfService + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'v': + + if bytes.Equal(ffjKeyInfoVersion, kn) { + currentKey = ffjtInfoVersion + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyInfoVersion, kn) { + currentKey = ffjtInfoVersion + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyInfoLicense, kn) { + currentKey = ffjtInfoLicense + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyInfoContact, kn) { + currentKey = ffjtInfoContact + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyInfoTermsOfService, kn) { + currentKey = ffjtInfoTermsOfService + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyInfoDescription, kn) { + currentKey = ffjtInfoDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyInfoTitle, kn) { + currentKey = ffjtInfoTitle + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtInfonosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtInfoTitle: + goto handle_Title + + case ffjtInfoDescription: + goto handle_Description + + case ffjtInfoTermsOfService: + goto handle_TermsOfService + + case ffjtInfoContact: + goto handle_Contact + + case ffjtInfoLicense: + goto handle_License + + case ffjtInfoVersion: + goto handle_Version + + case ffjtInfonosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Title: + + /* handler: j.Title type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Title = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_TermsOfService: + + /* handler: j.TermsOfService type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.TermsOfService = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Contact: + + /* handler: j.Contact type=openapi.Contact kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Contact = nil + + } else { + + if j.Contact == nil { + j.Contact = new(Contact) + } + + err = j.Contact.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_License: + + /* handler: j.License type=openapi.License kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.License = nil + + } else { + + if j.License == nil { + j.License = new(License) + } + + err = j.License.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Version: + + /* handler: j.Version type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Version = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *License) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *License) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtLicensebase = iota + ffjtLicensenosuchkey + + ffjtLicenseName + + ffjtLicenseURL +) + +var ffjKeyLicenseName = []byte("name") + +var ffjKeyLicenseURL = []byte("url") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *License) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *License) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtLicensebase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtLicensenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'n': + + if bytes.Equal(ffjKeyLicenseName, kn) { + currentKey = ffjtLicenseName + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyLicenseURL, kn) { + currentKey = ffjtLicenseURL + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyLicenseURL, kn) { + currentKey = ffjtLicenseURL + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyLicenseName, kn) { + currentKey = ffjtLicenseName + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtLicensenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtLicenseName: + goto handle_Name + + case ffjtLicenseURL: + goto handle_URL + + case ffjtLicensenosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Media) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Media) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if j.Schema != nil { + if true { + buf.WriteString(`"schema":`) + + { + + err = j.Schema.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtMediabase = iota + ffjtMedianosuchkey + + ffjtMediaSchema +) + +var ffjKeyMediaSchema = []byte("schema") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Media) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Media) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtMediabase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtMedianosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 's': + + if bytes.Equal(ffjKeyMediaSchema, kn) { + currentKey = ffjtMediaSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyMediaSchema, kn) { + currentKey = ffjtMediaSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtMedianosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtMediaSchema: + goto handle_Schema + + case ffjtMedianosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Schema: + + /* handler: j.Schema type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Schema = nil + + } else { + + if j.Schema == nil { + j.Schema = new(Schema) + } + + err = j.Schema.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *OpenAPI) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *OpenAPI) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ "openapi":`) + fflib.WriteJsonString(buf, string(j.OpenAPI)) + buf.WriteByte(',') + if true { + buf.WriteString(`"info":`) + + { + + err = j.Info.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + if len(j.Servers) != 0 { + buf.WriteString(`"servers":`) + if j.Servers != nil { + buf.WriteString(`[`) + for i, v := range j.Servers { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Tags) != 0 { + buf.WriteString(`"tags":`) + if j.Tags != nil { + buf.WriteString(`[`) + for i, v := range j.Tags { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Schemes) != 0 { + buf.WriteString(`"schemes":`) + if j.Schemes != nil { + buf.WriteString(`[`) + for i, v := range j.Schemes { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Paths) != 0 { + buf.WriteString(`"paths":`) + /* Falling back. type=map[string]*openapi.Path kind=map */ + err = buf.Encode(j.Paths) + if err != nil { + return err + } + buf.WriteByte(',') + } + if true { + buf.WriteString(`"components":`) + + { + + err = j.Components.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtOpenAPIbase = iota + ffjtOpenAPInosuchkey + + ffjtOpenAPIOpenAPI + + ffjtOpenAPIInfo + + ffjtOpenAPIServers + + ffjtOpenAPITags + + ffjtOpenAPISchemes + + ffjtOpenAPIPaths + + ffjtOpenAPIComponents +) + +var ffjKeyOpenAPIOpenAPI = []byte("openapi") + +var ffjKeyOpenAPIInfo = []byte("info") + +var ffjKeyOpenAPIServers = []byte("servers") + +var ffjKeyOpenAPITags = []byte("tags") + +var ffjKeyOpenAPISchemes = []byte("schemes") + +var ffjKeyOpenAPIPaths = []byte("paths") + +var ffjKeyOpenAPIComponents = []byte("components") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *OpenAPI) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *OpenAPI) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtOpenAPIbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtOpenAPInosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyOpenAPIComponents, kn) { + currentKey = ffjtOpenAPIComponents + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'i': + + if bytes.Equal(ffjKeyOpenAPIInfo, kn) { + currentKey = ffjtOpenAPIInfo + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'o': + + if bytes.Equal(ffjKeyOpenAPIOpenAPI, kn) { + currentKey = ffjtOpenAPIOpenAPI + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeyOpenAPIPaths, kn) { + currentKey = ffjtOpenAPIPaths + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyOpenAPIServers, kn) { + currentKey = ffjtOpenAPIServers + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyOpenAPISchemes, kn) { + currentKey = ffjtOpenAPISchemes + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeyOpenAPITags, kn) { + currentKey = ffjtOpenAPITags + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyOpenAPIComponents, kn) { + currentKey = ffjtOpenAPIComponents + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPIPaths, kn) { + currentKey = ffjtOpenAPIPaths + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPISchemes, kn) { + currentKey = ffjtOpenAPISchemes + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPITags, kn) { + currentKey = ffjtOpenAPITags + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOpenAPIServers, kn) { + currentKey = ffjtOpenAPIServers + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyOpenAPIInfo, kn) { + currentKey = ffjtOpenAPIInfo + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyOpenAPIOpenAPI, kn) { + currentKey = ffjtOpenAPIOpenAPI + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtOpenAPInosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtOpenAPIOpenAPI: + goto handle_OpenAPI + + case ffjtOpenAPIInfo: + goto handle_Info + + case ffjtOpenAPIServers: + goto handle_Servers + + case ffjtOpenAPITags: + goto handle_Tags + + case ffjtOpenAPISchemes: + goto handle_Schemes + + case ffjtOpenAPIPaths: + goto handle_Paths + + case ffjtOpenAPIComponents: + goto handle_Components + + case ffjtOpenAPInosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_OpenAPI: + + /* handler: j.OpenAPI type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.OpenAPI = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Info: + + /* handler: j.info type=openapi.info kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = j.Info.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Servers: + + /* handler: j.servers type=[]openapi.Server kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Servers = nil + } else { + + j.Servers = []Server{} + + wantVal := true + + for { + + var tmpJServers Server + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJServers type=openapi.Server kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJServers.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Servers = append(j.Servers, tmpJServers) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Tags: + + /* handler: j.Tags type=[]openapi.Tag kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Tags = nil + } else { + + j.Tags = []Tag{} + + wantVal := true + + for { + + var tmpJTags Tag + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJTags type=openapi.Tag kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJTags.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Tags = append(j.Tags, tmpJTags) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Schemes: + + /* handler: j.Schemes type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Schemes = nil + } else { + + j.Schemes = []string{} + + wantVal := true + + for { + + var tmpJSchemes string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJSchemes type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJSchemes = string(string(outBuf)) + + } + } + + j.Schemes = append(j.Schemes, tmpJSchemes) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Paths: + + /* handler: j.Paths type=map[string]*openapi.Path kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Paths = nil + } else { + + j.Paths = make(map[string]*Path, 0) + + wantVal := true + + for { + + var k string + + var tmpJPaths *Path + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJPaths type=*openapi.Path kind=ptr quoted=false*/ + + { + if tok == fflib.FFTok_null { + + tmpJPaths = nil + + } else { + + if tmpJPaths == nil { + tmpJPaths = new(Path) + } + + err = tmpJPaths.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Paths[k] = tmpJPaths + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Components: + + /* handler: j.Components type=openapi.Components kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = j.Components.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Operation) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Operation) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Tags) != 0 { + buf.WriteString(`"tags":`) + if j.Tags != nil { + buf.WriteString(`[`) + for i, v := range j.Tags { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Summary) != 0 { + buf.WriteString(`"summary":`) + fflib.WriteJsonString(buf, string(j.Summary)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.OperationID) != 0 { + buf.WriteString(`"operationId":`) + fflib.WriteJsonString(buf, string(j.OperationID)) + buf.WriteByte(',') + } + if len(j.Consumes) != 0 { + buf.WriteString(`"consumes":`) + if j.Consumes != nil { + buf.WriteString(`[`) + for i, v := range j.Consumes { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Produces) != 0 { + buf.WriteString(`"produces":`) + if j.Produces != nil { + buf.WriteString(`[`) + for i, v := range j.Produces { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Parameters) != 0 { + buf.WriteString(`"parameters":`) + if j.Parameters != nil { + buf.WriteString(`[`) + for i, v := range j.Parameters { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if j.RequestBody != nil { + if true { + buf.WriteString(`"requestBody":`) + + { + + err = j.RequestBody.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if len(j.Responses) != 0 { + buf.WriteString(`"responses":`) + /* Falling back. type=openapi.Responses kind=map */ + err = buf.Encode(j.Responses) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtOperationbase = iota + ffjtOperationnosuchkey + + ffjtOperationTags + + ffjtOperationSummary + + ffjtOperationDescription + + ffjtOperationOperationID + + ffjtOperationConsumes + + ffjtOperationProduces + + ffjtOperationParameters + + ffjtOperationRequestBody + + ffjtOperationResponses +) + +var ffjKeyOperationTags = []byte("tags") + +var ffjKeyOperationSummary = []byte("summary") + +var ffjKeyOperationDescription = []byte("description") + +var ffjKeyOperationOperationID = []byte("operationId") + +var ffjKeyOperationConsumes = []byte("consumes") + +var ffjKeyOperationProduces = []byte("produces") + +var ffjKeyOperationParameters = []byte("parameters") + +var ffjKeyOperationRequestBody = []byte("requestBody") + +var ffjKeyOperationResponses = []byte("responses") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Operation) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Operation) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtOperationbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtOperationnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyOperationConsumes, kn) { + currentKey = ffjtOperationConsumes + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyOperationDescription, kn) { + currentKey = ffjtOperationDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'o': + + if bytes.Equal(ffjKeyOperationOperationID, kn) { + currentKey = ffjtOperationOperationID + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeyOperationProduces, kn) { + currentKey = ffjtOperationProduces + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyOperationParameters, kn) { + currentKey = ffjtOperationParameters + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'r': + + if bytes.Equal(ffjKeyOperationRequestBody, kn) { + currentKey = ffjtOperationRequestBody + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyOperationResponses, kn) { + currentKey = ffjtOperationResponses + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyOperationSummary, kn) { + currentKey = ffjtOperationSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeyOperationTags, kn) { + currentKey = ffjtOperationTags + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyOperationResponses, kn) { + currentKey = ffjtOperationResponses + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationRequestBody, kn) { + currentKey = ffjtOperationRequestBody + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationParameters, kn) { + currentKey = ffjtOperationParameters + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationProduces, kn) { + currentKey = ffjtOperationProduces + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationConsumes, kn) { + currentKey = ffjtOperationConsumes + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyOperationOperationID, kn) { + currentKey = ffjtOperationOperationID + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationDescription, kn) { + currentKey = ffjtOperationDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationSummary, kn) { + currentKey = ffjtOperationSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyOperationTags, kn) { + currentKey = ffjtOperationTags + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtOperationnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtOperationTags: + goto handle_Tags + + case ffjtOperationSummary: + goto handle_Summary + + case ffjtOperationDescription: + goto handle_Description + + case ffjtOperationOperationID: + goto handle_OperationID + + case ffjtOperationConsumes: + goto handle_Consumes + + case ffjtOperationProduces: + goto handle_Produces + + case ffjtOperationParameters: + goto handle_Parameters + + case ffjtOperationRequestBody: + goto handle_RequestBody + + case ffjtOperationResponses: + goto handle_Responses + + case ffjtOperationnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Tags: + + /* handler: j.Tags type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Tags = nil + } else { + + j.Tags = []string{} + + wantVal := true + + for { + + var tmpJTags string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJTags type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJTags = string(string(outBuf)) + + } + } + + j.Tags = append(j.Tags, tmpJTags) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Summary: + + /* handler: j.Summary type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Summary = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_OperationID: + + /* handler: j.OperationID type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.OperationID = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Consumes: + + /* handler: j.Consumes type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Consumes = nil + } else { + + j.Consumes = []string{} + + wantVal := true + + for { + + var tmpJConsumes string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJConsumes type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJConsumes = string(string(outBuf)) + + } + } + + j.Consumes = append(j.Consumes, tmpJConsumes) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Produces: + + /* handler: j.Produces type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Produces = nil + } else { + + j.Produces = []string{} + + wantVal := true + + for { + + var tmpJProduces string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJProduces type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJProduces = string(string(outBuf)) + + } + } + + j.Produces = append(j.Produces, tmpJProduces) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Parameters: + + /* handler: j.Parameters type=[]openapi.Parameter kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Parameters = nil + } else { + + j.Parameters = []Parameter{} + + wantVal := true + + for { + + var tmpJParameters Parameter + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJParameters type=openapi.Parameter kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJParameters.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Parameters = append(j.Parameters, tmpJParameters) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_RequestBody: + + /* handler: j.RequestBody type=openapi.RequestBody kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.RequestBody = nil + + } else { + + if j.RequestBody == nil { + j.RequestBody = new(RequestBody) + } + + err = j.RequestBody.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Responses: + + /* handler: j.Responses type=openapi.Responses kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Responses", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Responses = nil + } else { + + j.Responses = make(map[string]*Response, 0) + + wantVal := true + + for { + + var k string + + var tmpJResponses *Response + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJResponses type=openapi.Response kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJResponses.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Responses[k] = tmpJResponses + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Parameter) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Parameter) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Ref) != 0 { + buf.WriteString(`"$ref":`) + fflib.WriteJsonString(buf, string(j.Ref)) + buf.WriteByte(',') + } + if len(j.In) != 0 { + buf.WriteString(`"in":`) + fflib.WriteJsonString(buf, string(j.In)) + buf.WriteByte(',') + } + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if j.Required != false { + if j.Required { + buf.WriteString(`"required":true`) + } else { + buf.WriteString(`"required":false`) + } + buf.WriteByte(',') + } + if j.Schema != nil { + if true { + buf.WriteString(`"schema":`) + + { + + err = j.Schema.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtParameterbase = iota + ffjtParameternosuchkey + + ffjtParameterRef + + ffjtParameterIn + + ffjtParameterName + + ffjtParameterDescription + + ffjtParameterRequired + + ffjtParameterSchema +) + +var ffjKeyParameterRef = []byte("$ref") + +var ffjKeyParameterIn = []byte("in") + +var ffjKeyParameterName = []byte("name") + +var ffjKeyParameterDescription = []byte("description") + +var ffjKeyParameterRequired = []byte("required") + +var ffjKeyParameterSchema = []byte("schema") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Parameter) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Parameter) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtParameterbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtParameternosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case '$': + + if bytes.Equal(ffjKeyParameterRef, kn) { + currentKey = ffjtParameterRef + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyParameterDescription, kn) { + currentKey = ffjtParameterDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'i': + + if bytes.Equal(ffjKeyParameterIn, kn) { + currentKey = ffjtParameterIn + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'n': + + if bytes.Equal(ffjKeyParameterName, kn) { + currentKey = ffjtParameterName + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'r': + + if bytes.Equal(ffjKeyParameterRequired, kn) { + currentKey = ffjtParameterRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyParameterSchema, kn) { + currentKey = ffjtParameterSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyParameterSchema, kn) { + currentKey = ffjtParameterSchema + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyParameterRequired, kn) { + currentKey = ffjtParameterRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyParameterDescription, kn) { + currentKey = ffjtParameterDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyParameterName, kn) { + currentKey = ffjtParameterName + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyParameterIn, kn) { + currentKey = ffjtParameterIn + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.AsciiEqualFold(ffjKeyParameterRef, kn) { + currentKey = ffjtParameterRef + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtParameternosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtParameterRef: + goto handle_Ref + + case ffjtParameterIn: + goto handle_In + + case ffjtParameterName: + goto handle_Name + + case ffjtParameterDescription: + goto handle_Description + + case ffjtParameterRequired: + goto handle_Required + + case ffjtParameterSchema: + goto handle_Schema + + case ffjtParameternosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Ref: + + /* handler: j.Ref type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Ref = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_In: + + /* handler: j.In type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.In = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Required: + + /* handler: j.Required type=bool kind=bool quoted=false*/ + + { + if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) + } + } + + { + if tok == fflib.FFTok_null { + + } else { + tmpb := fs.Output.Bytes() + + if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { + + j.Required = true + + } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { + + j.Required = false + + } else { + err = errors.New("unexpected bytes for true/false value") + return fs.WrapErr(err) + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Schema: + + /* handler: j.Schema type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Schema = nil + + } else { + + if j.Schema == nil { + j.Schema = new(Schema) + } + + err = j.Schema.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Path) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Path) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Ref) != 0 { + buf.WriteString(`"$ref":`) + fflib.WriteJsonString(buf, string(j.Ref)) + buf.WriteByte(',') + } + if len(j.Summary) != 0 { + buf.WriteString(`"summary":`) + fflib.WriteJsonString(buf, string(j.Summary)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if j.Get != nil { + if true { + buf.WriteString(`"get":`) + + { + + err = j.Get.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Post != nil { + if true { + buf.WriteString(`"post":`) + + { + + err = j.Post.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Patch != nil { + if true { + buf.WriteString(`"patch":`) + + { + + err = j.Patch.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Put != nil { + if true { + buf.WriteString(`"put":`) + + { + + err = j.Put.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if j.Delete != nil { + if true { + buf.WriteString(`"delete":`) + + { + + err = j.Delete.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtPathbase = iota + ffjtPathnosuchkey + + ffjtPathRef + + ffjtPathSummary + + ffjtPathDescription + + ffjtPathGet + + ffjtPathPost + + ffjtPathPatch + + ffjtPathPut + + ffjtPathDelete +) + +var ffjKeyPathRef = []byte("$ref") + +var ffjKeyPathSummary = []byte("summary") + +var ffjKeyPathDescription = []byte("description") + +var ffjKeyPathGet = []byte("get") + +var ffjKeyPathPost = []byte("post") + +var ffjKeyPathPatch = []byte("patch") + +var ffjKeyPathPut = []byte("put") + +var ffjKeyPathDelete = []byte("delete") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Path) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Path) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtPathbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtPathnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case '$': + + if bytes.Equal(ffjKeyPathRef, kn) { + currentKey = ffjtPathRef + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyPathDescription, kn) { + currentKey = ffjtPathDescription + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyPathDelete, kn) { + currentKey = ffjtPathDelete + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'g': + + if bytes.Equal(ffjKeyPathGet, kn) { + currentKey = ffjtPathGet + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeyPathPost, kn) { + currentKey = ffjtPathPost + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyPathPatch, kn) { + currentKey = ffjtPathPatch + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyPathPut, kn) { + currentKey = ffjtPathPut + state = fflib.FFParse_want_colon + goto mainparse + } + + case 's': + + if bytes.Equal(ffjKeyPathSummary, kn) { + currentKey = ffjtPathSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathDelete, kn) { + currentKey = ffjtPathDelete + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathPut, kn) { + currentKey = ffjtPathPut + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathPatch, kn) { + currentKey = ffjtPathPatch + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyPathPost, kn) { + currentKey = ffjtPathPost + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyPathGet, kn) { + currentKey = ffjtPathGet + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyPathDescription, kn) { + currentKey = ffjtPathDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyPathSummary, kn) { + currentKey = ffjtPathSummary + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.AsciiEqualFold(ffjKeyPathRef, kn) { + currentKey = ffjtPathRef + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtPathnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtPathRef: + goto handle_Ref + + case ffjtPathSummary: + goto handle_Summary + + case ffjtPathDescription: + goto handle_Description + + case ffjtPathGet: + goto handle_Get + + case ffjtPathPost: + goto handle_Post + + case ffjtPathPatch: + goto handle_Patch + + case ffjtPathPut: + goto handle_Put + + case ffjtPathDelete: + goto handle_Delete + + case ffjtPathnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Ref: + + /* handler: j.Ref type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Ref = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Summary: + + /* handler: j.Summary type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Summary = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Get: + + /* handler: j.Get type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Get = nil + + } else { + + if j.Get == nil { + j.Get = new(Operation) + } + + err = j.Get.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Post: + + /* handler: j.Post type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Post = nil + + } else { + + if j.Post == nil { + j.Post = new(Operation) + } + + err = j.Post.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Patch: + + /* handler: j.Patch type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Patch = nil + + } else { + + if j.Patch == nil { + j.Patch = new(Operation) + } + + err = j.Patch.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Put: + + /* handler: j.Put type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Put = nil + + } else { + + if j.Put == nil { + j.Put = new(Operation) + } + + err = j.Put.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Delete: + + /* handler: j.Delete type=openapi.Operation kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Delete = nil + + } else { + + if j.Delete == nil { + j.Delete = new(Operation) + } + + err = j.Delete.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *RequestBody) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *RequestBody) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Content) != 0 { + buf.WriteString(`"content":`) + /* Falling back. type=openapi.Content kind=map */ + err = buf.Encode(j.Content) + if err != nil { + return err + } + buf.WriteByte(',') + } + if j.Required != false { + if j.Required { + buf.WriteString(`"required":true`) + } else { + buf.WriteString(`"required":false`) + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtRequestBodybase = iota + ffjtRequestBodynosuchkey + + ffjtRequestBodyDescription + + ffjtRequestBodyContent + + ffjtRequestBodyRequired +) + +var ffjKeyRequestBodyDescription = []byte("description") + +var ffjKeyRequestBodyContent = []byte("content") + +var ffjKeyRequestBodyRequired = []byte("required") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *RequestBody) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *RequestBody) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtRequestBodybase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtRequestBodynosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyRequestBodyContent, kn) { + currentKey = ffjtRequestBodyContent + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyRequestBodyDescription, kn) { + currentKey = ffjtRequestBodyDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'r': + + if bytes.Equal(ffjKeyRequestBodyRequired, kn) { + currentKey = ffjtRequestBodyRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyRequestBodyRequired, kn) { + currentKey = ffjtRequestBodyRequired + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyRequestBodyContent, kn) { + currentKey = ffjtRequestBodyContent + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyRequestBodyDescription, kn) { + currentKey = ffjtRequestBodyDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtRequestBodynosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtRequestBodyDescription: + goto handle_Description + + case ffjtRequestBodyContent: + goto handle_Content + + case ffjtRequestBodyRequired: + goto handle_Required + + case ffjtRequestBodynosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Content: + + /* handler: j.Content type=openapi.Content kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Content", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Content = nil + } else { + + j.Content = make(map[string]Media, 0) + + wantVal := true + + for { + + var k string + + var tmpJContent Media + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJContent type=openapi.Media kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJContent.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Content[k] = tmpJContent + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Required: + + /* handler: j.Required type=bool kind=bool quoted=false*/ + + { + if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) + } + } + + { + if tok == fflib.FFTok_null { + + } else { + tmpb := fs.Output.Bytes() + + if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { + + j.Required = true + + } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { + + j.Required = false + + } else { + err = errors.New("unexpected bytes for true/false value") + return fs.WrapErr(err) + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Response) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Response) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Content) != 0 { + buf.WriteString(`"content":`) + /* Falling back. type=openapi.Content kind=map */ + err = buf.Encode(j.Content) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtResponsebase = iota + ffjtResponsenosuchkey + + ffjtResponseDescription + + ffjtResponseContent +) + +var ffjKeyResponseDescription = []byte("description") + +var ffjKeyResponseContent = []byte("content") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Response) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Response) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtResponsebase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtResponsenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'c': + + if bytes.Equal(ffjKeyResponseContent, kn) { + currentKey = ffjtResponseContent + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeyResponseDescription, kn) { + currentKey = ffjtResponseDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeyResponseContent, kn) { + currentKey = ffjtResponseContent + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyResponseDescription, kn) { + currentKey = ffjtResponseDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtResponsenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtResponseDescription: + goto handle_Description + + case ffjtResponseContent: + goto handle_Content + + case ffjtResponsenosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Content: + + /* handler: j.Content type=openapi.Content kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Content", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Content = nil + } else { + + j.Content = make(map[string]Media, 0) + + wantVal := true + + for { + + var k string + + var tmpJContent Media + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJContent type=openapi.Media kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJContent.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Content[k] = tmpJContent + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Schema) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Schema) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Ref) != 0 { + buf.WriteString(`"$ref":`) + fflib.WriteJsonString(buf, string(j.Ref)) + buf.WriteByte(',') + } + if len(j.Type) != 0 { + buf.WriteString(`"type":`) + fflib.WriteJsonString(buf, string(j.Type)) + buf.WriteByte(',') + } + if len(j.Format) != 0 { + buf.WriteString(`"format":`) + fflib.WriteJsonString(buf, string(j.Format)) + buf.WriteByte(',') + } + if len(j.Properties) != 0 { + buf.WriteString(`"properties":`) + /* Falling back. type=openapi.Properties kind=map */ + err = buf.Encode(j.Properties) + if err != nil { + return err + } + buf.WriteByte(',') + } + if j.Items != nil { + if true { + buf.WriteString(`"items":`) + + { + + err = j.Items.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + } + if len(j.AnyOf) != 0 { + buf.WriteString(`"anyOf":`) + if j.AnyOf != nil { + buf.WriteString(`[`) + for i, v := range j.AnyOf { + if i != 0 { + buf.WriteString(`,`) + } + + { + + err = v.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Enum) != 0 { + buf.WriteString(`"enum":`) + if j.Enum != nil { + buf.WriteString(`[`) + for i, v := range j.Enum { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if j.Example != nil { + buf.WriteString(`"example":`) + /* Interface types must use runtime reflection. type=interface {} kind=interface */ + err = buf.Encode(j.Example) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtSchemabase = iota + ffjtSchemanosuchkey + + ffjtSchemaDescription + + ffjtSchemaRef + + ffjtSchemaType + + ffjtSchemaFormat + + ffjtSchemaProperties + + ffjtSchemaItems + + ffjtSchemaAnyOf + + ffjtSchemaEnum + + ffjtSchemaExample +) + +var ffjKeySchemaDescription = []byte("description") + +var ffjKeySchemaRef = []byte("$ref") + +var ffjKeySchemaType = []byte("type") + +var ffjKeySchemaFormat = []byte("format") + +var ffjKeySchemaProperties = []byte("properties") + +var ffjKeySchemaItems = []byte("items") + +var ffjKeySchemaAnyOf = []byte("anyOf") + +var ffjKeySchemaEnum = []byte("enum") + +var ffjKeySchemaExample = []byte("example") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Schema) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Schema) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtSchemabase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtSchemanosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case '$': + + if bytes.Equal(ffjKeySchemaRef, kn) { + currentKey = ffjtSchemaRef + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'a': + + if bytes.Equal(ffjKeySchemaAnyOf, kn) { + currentKey = ffjtSchemaAnyOf + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'd': + + if bytes.Equal(ffjKeySchemaDescription, kn) { + currentKey = ffjtSchemaDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'e': + + if bytes.Equal(ffjKeySchemaEnum, kn) { + currentKey = ffjtSchemaEnum + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeySchemaExample, kn) { + currentKey = ffjtSchemaExample + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'f': + + if bytes.Equal(ffjKeySchemaFormat, kn) { + currentKey = ffjtSchemaFormat + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'i': + + if bytes.Equal(ffjKeySchemaItems, kn) { + currentKey = ffjtSchemaItems + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'p': + + if bytes.Equal(ffjKeySchemaProperties, kn) { + currentKey = ffjtSchemaProperties + state = fflib.FFParse_want_colon + goto mainparse + } + + case 't': + + if bytes.Equal(ffjKeySchemaType, kn) { + currentKey = ffjtSchemaType + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaExample, kn) { + currentKey = ffjtSchemaExample + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaEnum, kn) { + currentKey = ffjtSchemaEnum + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaAnyOf, kn) { + currentKey = ffjtSchemaAnyOf + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeySchemaItems, kn) { + currentKey = ffjtSchemaItems + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeySchemaProperties, kn) { + currentKey = ffjtSchemaProperties + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaFormat, kn) { + currentKey = ffjtSchemaFormat + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeySchemaType, kn) { + currentKey = ffjtSchemaType + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.AsciiEqualFold(ffjKeySchemaRef, kn) { + currentKey = ffjtSchemaRef + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeySchemaDescription, kn) { + currentKey = ffjtSchemaDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtSchemanosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtSchemaDescription: + goto handle_Description + + case ffjtSchemaRef: + goto handle_Ref + + case ffjtSchemaType: + goto handle_Type + + case ffjtSchemaFormat: + goto handle_Format + + case ffjtSchemaProperties: + goto handle_Properties + + case ffjtSchemaItems: + goto handle_Items + + case ffjtSchemaAnyOf: + goto handle_AnyOf + + case ffjtSchemaEnum: + goto handle_Enum + + case ffjtSchemaExample: + goto handle_Example + + case ffjtSchemanosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Ref: + + /* handler: j.Ref type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Ref = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Type: + + /* handler: j.Type type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Type = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Format: + + /* handler: j.Format type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Format = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Properties: + + /* handler: j.Properties type=openapi.Properties kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for Properties", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Properties = nil + } else { + + j.Properties = make(map[string]*Schema, 0) + + wantVal := true + + for { + + var k string + + var tmpJProperties *Schema + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJProperties type=*openapi.Schema kind=ptr quoted=false*/ + + { + if tok == fflib.FFTok_null { + + tmpJProperties = nil + + } else { + + if tmpJProperties == nil { + tmpJProperties = new(Schema) + } + + err = tmpJProperties.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Properties[k] = tmpJProperties + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Items: + + /* handler: j.Items type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + j.Items = nil + + } else { + + if j.Items == nil { + j.Items = new(Schema) + } + + err = j.Items.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_AnyOf: + + /* handler: j.AnyOf type=[]openapi.Schema kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.AnyOf = nil + } else { + + j.AnyOf = []Schema{} + + wantVal := true + + for { + + var tmpJAnyOf Schema + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJAnyOf type=openapi.Schema kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJAnyOf.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.AnyOf = append(j.AnyOf, tmpJAnyOf) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Enum: + + /* handler: j.Enum type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Enum = nil + } else { + + j.Enum = []string{} + + wantVal := true + + for { + + var tmpJEnum string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJEnum type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJEnum = string(string(outBuf)) + + } + } + + j.Enum = append(j.Enum, tmpJEnum) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Example: + + /* handler: j.Example type=interface {} kind=interface quoted=false*/ + + { + /* Falling back. type=interface {} kind=interface */ + tbuf, err := fs.CaptureField(tok) + if err != nil { + return fs.WrapErr(err) + } + + err = json.Unmarshal(tbuf, &j.Example) + if err != nil { + return fs.WrapErr(err) + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Server) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Server) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.URL) != 0 { + buf.WriteString(`"url":`) + fflib.WriteJsonString(buf, string(j.URL)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if len(j.Variables) != 0 { + buf.WriteString(`"variables":`) + /* Falling back. type=map[string]openapi.Variable kind=map */ + err = buf.Encode(j.Variables) + if err != nil { + return err + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtServerbase = iota + ffjtServernosuchkey + + ffjtServerURL + + ffjtServerDescription + + ffjtServerVariables +) + +var ffjKeyServerURL = []byte("url") + +var ffjKeyServerDescription = []byte("description") + +var ffjKeyServerVariables = []byte("variables") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Server) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Server) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtServerbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtServernosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyServerDescription, kn) { + currentKey = ffjtServerDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'u': + + if bytes.Equal(ffjKeyServerURL, kn) { + currentKey = ffjtServerURL + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'v': + + if bytes.Equal(ffjKeyServerVariables, kn) { + currentKey = ffjtServerVariables + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyServerVariables, kn) { + currentKey = ffjtServerVariables + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyServerDescription, kn) { + currentKey = ffjtServerDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyServerURL, kn) { + currentKey = ffjtServerURL + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtServernosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtServerURL: + goto handle_URL + + case ffjtServerDescription: + goto handle_Description + + case ffjtServerVariables: + goto handle_Variables + + case ffjtServernosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_URL: + + /* handler: j.URL type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.URL = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Variables: + + /* handler: j.Variables type=map[string]openapi.Variable kind=map quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Variables = nil + } else { + + j.Variables = make(map[string]Variable, 0) + + wantVal := true + + for { + + var k string + + var tmpJVariables Variable + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_bracket { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: k type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + k = string(string(outBuf)) + + } + } + + // Expect ':' after key + tok = fs.Scan() + if tok != fflib.FFTok_colon { + return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) + } + + tok = fs.Scan() + /* handler: tmpJVariables type=openapi.Variable kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = tmpJVariables.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + j.Variables[k] = tmpJVariables + + wantVal = false + } + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Tag) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Tag) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Name) != 0 { + buf.WriteString(`"name":`) + fflib.WriteJsonString(buf, string(j.Name)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + if true { + buf.WriteString(`"externalDocs":`) + + { + + err = j.ExternalDocs.MarshalJSONBuf(buf) + if err != nil { + return err + } + + } + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtTagbase = iota + ffjtTagnosuchkey + + ffjtTagName + + ffjtTagDescription + + ffjtTagExternalDocs +) + +var ffjKeyTagName = []byte("name") + +var ffjKeyTagDescription = []byte("description") + +var ffjKeyTagExternalDocs = []byte("externalDocs") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Tag) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Tag) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtTagbase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtTagnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyTagDescription, kn) { + currentKey = ffjtTagDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'e': + + if bytes.Equal(ffjKeyTagExternalDocs, kn) { + currentKey = ffjtTagExternalDocs + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'n': + + if bytes.Equal(ffjKeyTagName, kn) { + currentKey = ffjtTagName + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyTagExternalDocs, kn) { + currentKey = ffjtTagExternalDocs + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.EqualFoldRight(ffjKeyTagDescription, kn) { + currentKey = ffjtTagDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyTagName, kn) { + currentKey = ffjtTagName + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtTagnosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtTagName: + goto handle_Name + + case ffjtTagDescription: + goto handle_Description + + case ffjtTagExternalDocs: + goto handle_ExternalDocs + + case ffjtTagnosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Name: + + /* handler: j.Name type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Name = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_ExternalDocs: + + /* handler: j.ExternalDocs type=openapi.ExternalDocs kind=struct quoted=false*/ + + { + if tok == fflib.FFTok_null { + + } else { + + err = j.ExternalDocs.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) + if err != nil { + return err + } + } + state = fflib.FFParse_after_value + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} + +// MarshalJSON marshal bytes to json - template +func (j *Variable) MarshalJSON() ([]byte, error) { + var buf fflib.Buffer + if j == nil { + buf.WriteString("null") + return buf.Bytes(), nil + } + err := j.MarshalJSONBuf(&buf) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// MarshalJSONBuf marshal buff to json - template +func (j *Variable) MarshalJSONBuf(buf fflib.EncodingBuffer) error { + if j == nil { + buf.WriteString("null") + return nil + } + var err error + var obj []byte + _ = obj + _ = err + buf.WriteString(`{ `) + if len(j.Enum) != 0 { + buf.WriteString(`"enum":`) + if j.Enum != nil { + buf.WriteString(`[`) + for i, v := range j.Enum { + if i != 0 { + buf.WriteString(`,`) + } + fflib.WriteJsonString(buf, string(v)) + } + buf.WriteString(`]`) + } else { + buf.WriteString(`null`) + } + buf.WriteByte(',') + } + if len(j.Default) != 0 { + buf.WriteString(`"default":`) + fflib.WriteJsonString(buf, string(j.Default)) + buf.WriteByte(',') + } + if len(j.Description) != 0 { + buf.WriteString(`"description":`) + fflib.WriteJsonString(buf, string(j.Description)) + buf.WriteByte(',') + } + buf.Rewind(1) + buf.WriteByte('}') + return nil +} + +const ( + ffjtVariablebase = iota + ffjtVariablenosuchkey + + ffjtVariableEnum + + ffjtVariableDefault + + ffjtVariableDescription +) + +var ffjKeyVariableEnum = []byte("enum") + +var ffjKeyVariableDefault = []byte("default") + +var ffjKeyVariableDescription = []byte("description") + +// UnmarshalJSON umarshall json - template of ffjson +func (j *Variable) UnmarshalJSON(input []byte) error { + fs := fflib.NewFFLexer(input) + return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) +} + +// UnmarshalJSONFFLexer fast json unmarshall - template ffjson +func (j *Variable) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { + var err error + currentKey := ffjtVariablebase + _ = currentKey + tok := fflib.FFTok_init + wantedTok := fflib.FFTok_init + +mainparse: + for { + tok = fs.Scan() + // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) + if tok == fflib.FFTok_error { + goto tokerror + } + + switch state { + + case fflib.FFParse_map_start: + if tok != fflib.FFTok_left_bracket { + wantedTok = fflib.FFTok_left_bracket + goto wrongtokenerror + } + state = fflib.FFParse_want_key + continue + + case fflib.FFParse_after_value: + if tok == fflib.FFTok_comma { + state = fflib.FFParse_want_key + } else if tok == fflib.FFTok_right_bracket { + goto done + } else { + wantedTok = fflib.FFTok_comma + goto wrongtokenerror + } + + case fflib.FFParse_want_key: + // json {} ended. goto exit. woo. + if tok == fflib.FFTok_right_bracket { + goto done + } + if tok != fflib.FFTok_string { + wantedTok = fflib.FFTok_string + goto wrongtokenerror + } + + kn := fs.Output.Bytes() + if len(kn) <= 0 { + // "" case. hrm. + currentKey = ffjtVariablenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } else { + switch kn[0] { + + case 'd': + + if bytes.Equal(ffjKeyVariableDefault, kn) { + currentKey = ffjtVariableDefault + state = fflib.FFParse_want_colon + goto mainparse + + } else if bytes.Equal(ffjKeyVariableDescription, kn) { + currentKey = ffjtVariableDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + case 'e': + + if bytes.Equal(ffjKeyVariableEnum, kn) { + currentKey = ffjtVariableEnum + state = fflib.FFParse_want_colon + goto mainparse + } + + } + + if fflib.EqualFoldRight(ffjKeyVariableDescription, kn) { + currentKey = ffjtVariableDescription + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyVariableDefault, kn) { + currentKey = ffjtVariableDefault + state = fflib.FFParse_want_colon + goto mainparse + } + + if fflib.SimpleLetterEqualFold(ffjKeyVariableEnum, kn) { + currentKey = ffjtVariableEnum + state = fflib.FFParse_want_colon + goto mainparse + } + + currentKey = ffjtVariablenosuchkey + state = fflib.FFParse_want_colon + goto mainparse + } + + case fflib.FFParse_want_colon: + if tok != fflib.FFTok_colon { + wantedTok = fflib.FFTok_colon + goto wrongtokenerror + } + state = fflib.FFParse_want_value + continue + case fflib.FFParse_want_value: + + if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { + switch currentKey { + + case ffjtVariableEnum: + goto handle_Enum + + case ffjtVariableDefault: + goto handle_Default + + case ffjtVariableDescription: + goto handle_Description + + case ffjtVariablenosuchkey: + err = fs.SkipField(tok) + if err != nil { + return fs.WrapErr(err) + } + state = fflib.FFParse_after_value + goto mainparse + } + } else { + goto wantedvalue + } + } + } + +handle_Enum: + + /* handler: j.Enum type=[]string kind=slice quoted=false*/ + + { + + { + if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) + } + } + + if tok == fflib.FFTok_null { + j.Enum = nil + } else { + + j.Enum = []string{} + + wantVal := true + + for { + + var tmpJEnum string + + tok = fs.Scan() + if tok == fflib.FFTok_error { + goto tokerror + } + if tok == fflib.FFTok_right_brace { + break + } + + if tok == fflib.FFTok_comma { + if wantVal == true { + // TODO(pquerna): this isn't an ideal error message, this handles + // things like [,,,] as an array value. + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) + } + continue + } else { + wantVal = true + } + + /* handler: tmpJEnum type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + tmpJEnum = string(string(outBuf)) + + } + } + + j.Enum = append(j.Enum, tmpJEnum) + + wantVal = false + } + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Default: + + /* handler: j.Default type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Default = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +handle_Description: + + /* handler: j.Description type=string kind=string quoted=false*/ + + { + + { + if tok != fflib.FFTok_string && tok != fflib.FFTok_null { + return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) + } + } + + if tok == fflib.FFTok_null { + + } else { + + outBuf := fs.Output.Bytes() + + j.Description = string(string(outBuf)) + + } + } + + state = fflib.FFParse_after_value + goto mainparse + +wantedvalue: + return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) +wrongtokenerror: + return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) +tokerror: + if fs.BigError != nil { + return fs.WrapErr(fs.BigError) + } + err = fs.Error.ToError() + if err != nil { + return fs.WrapErr(err) + } + panic("ffjson-generated: unreachable, please report bug.") +done: + + return nil +} diff --git a/v3/internal/plugin/echo/config/config.go b/v3/internal/plugin/echo/config/config.go index c5dc5d91..53047fcc 100644 --- a/v3/internal/plugin/echo/config/config.go +++ b/v3/internal/plugin/echo/config/config.go @@ -1,6 +1,9 @@ package config -import "github.com/swipe-io/swipe/v3/option" +import ( + "github.com/swipe-io/swipe/v3/internal/finder" + "github.com/swipe-io/swipe/v3/option" +) type Interface struct { Named *option.NamedType `mapstructure:"iface"` @@ -26,12 +29,48 @@ type MethodOptions struct { RESTBodyType option.StringValue `swipe:"option"` } +type OpenapiInfo struct { + Title string + Description string + Version interface{} +} + +type OpenapiContact struct { + Name string + Email string + Url string +} + +type OpenapiLicence struct { + Name string + Url string +} + +type OpenapiServer struct { + Description string + Url string +} + +type OpenapiTag struct { + Methods []option.NamedType `mapstructure:"methods"` + Tags []string `mapstructure:"tags"` +} + // Config // @swipe:"Echo" type Config struct { Interfaces []*Interface `mapstructure:"Interface"` MethodOptions []MethodOption MethodDefaultOptions MethodOptions + OpenapiEnable *struct{} + OpenapiTags []OpenapiTag + OpenapiOutput option.StringValue + OpenapiInfo OpenapiInfo + OpenapiContact OpenapiContact + OpenapiLicence OpenapiLicence + OpenapiServers []OpenapiServer `mapstructure:"OpenapiServer"` - MethodOptionsMap map[string]MethodOptions `mapstructure:"-"` + MethodOptionsMap map[string]MethodOptions `mapstructure:"-"` + OpenapiMethodTags map[string][]string `mapstructure:"-"` + IfaceErrors map[string]map[string][]finder.Error `mapstructure:"-"` } diff --git a/v3/internal/plugin/echo/config/config_gen.go b/v3/internal/plugin/echo/config/config_gen.go index 9ca44d28..f2867311 100644 --- a/v3/internal/plugin/echo/config/config_gen.go +++ b/v3/internal/plugin/echo/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/echo/generator/openapi.go b/v3/internal/plugin/echo/generator/openapi.go new file mode 100644 index 00000000..7f271f09 --- /dev/null +++ b/v3/internal/plugin/echo/generator/openapi.go @@ -0,0 +1,72 @@ +package generator + +import ( + "context" + "encoding/json" + + "github.com/swipe-io/swipe/v3/option" + + "github.com/swipe-io/swipe/v3/internal/finder" + "github.com/swipe-io/swipe/v3/internal/openapi" + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" +) + +type Openapi struct { + Contact config.OpenapiContact + Info config.OpenapiInfo + MethodTags map[string][]string + Servers []config.OpenapiServer + Licence config.OpenapiLicence + Output string + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions + IfaceErrors map[string]map[string][]finder.Error +} + +func (g *Openapi) Generate(ctx context.Context) []byte { + var interfaces []openapi.Interface + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + openapiIface := openapi.Interface{ + Name: iface.Named.Name, + Namespace: iface.Namespace, + } + for _, m := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + tags := g.MethodTags[iface.Named.Name.Value+m.Name.Value] + openapiIface.Methods = append(openapiIface.Methods, openapi.InterfaceMethod{ + Name: m.Name, + RESTMethod: mopt.RESTMethod.Take(), + RESTPath: mopt.RESTPath.Take(), + RESTQueryVars: mopt.RESTQueryVars.Value, + RESTPathVars: mopt.RESTPathVars, + Tags: tags, + Func: m, + Description: m.Comment, + RESTWrapResponse: mopt.RESTWrapResponse.Take(), + RESTQueryValues: mopt.RESTQueryValues.Value, + RESTHeaderVars: mopt.RESTHeaderVars.Value, + }) + } + interfaces = append(interfaces, openapiIface) + } + + o := openapi.NewOpenapi( + openapi.Info{}, + []openapi.Server{}, + interfaces, + map[string]map[string][]openapi.Error{}, + false, + ) + result := o.Build() + data, _ := json.MarshalIndent(result, "", " ") + return data +} + +func (g *Openapi) OutputPath() string { + return g.Output +} + +func (g *Openapi) Filename() string { + return "openapi.json" +} diff --git a/v3/internal/plugin/echo/plugin.go b/v3/internal/plugin/echo/plugin.go index 6a9692d3..321ac89b 100644 --- a/v3/internal/plugin/echo/plugin.go +++ b/v3/internal/plugin/echo/plugin.go @@ -2,6 +2,7 @@ package echo import ( "github.com/mitchellh/mapstructure" + "github.com/swipe-io/swipe/v3/internal/finder" "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" @@ -40,6 +41,16 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } } + p.config.OpenapiMethodTags = map[string][]string{} + + for _, o := range p.config.OpenapiTags { + for _, m := range o.Methods { + sig := m.Type.(*option.SignType) + recv := sig.Recv.(*option.NamedType) + p.config.OpenapiMethodTags[recv.Name.Value+m.Name.Value] = o.Tags + } + } + for _, iface := range p.config.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { @@ -56,6 +67,13 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map p.config.MethodOptionsMap[iface.Named.Name.Value+m.Name.Value] = dstMethodOption } } + + var interfaces []*option.NamedType + for _, iface := range p.config.Interfaces { + interfaces = append(interfaces, iface.Named) + } + f := finder.NewFinder(cfg.Packages, cfg.Module.Path) + p.config.IfaceErrors = f.FindIfaceErrors(interfaces) return } @@ -66,6 +84,19 @@ func (p *Plugin) Generators() ([]swipe.Generator, []error) { MethodOptions: p.config.MethodOptionsMap, }, } + if p.config.OpenapiEnable != nil { + generators = append(generators, &generator.Openapi{ + Contact: p.config.OpenapiContact, + Info: p.config.OpenapiInfo, + MethodTags: p.config.OpenapiMethodTags, + Licence: p.config.OpenapiLicence, + Servers: p.config.OpenapiServers, + Output: p.config.OpenapiOutput.Take(), + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + IfaceErrors: p.config.IfaceErrors, + }) + } return generators, nil } diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index 514aa81e..e45ce4dd 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -25,11 +25,6 @@ type Interface struct { Gateway *struct{} `swipe:"option"` } -type OpenapiTag struct { - Methods []option.NamedType `mapstructure:"methods"` - Tags []string `mapstructure:"tags"` -} - type LoggingParams struct { Includes []string Excludes []string @@ -100,6 +95,11 @@ type OpenapiServer struct { Url string } +type OpenapiTag struct { + Methods []option.NamedType `mapstructure:"methods"` + Tags []string `mapstructure:"tags"` +} + type Langs []string type ClientsEnable struct { diff --git a/v3/internal/plugin/gokit/generator/client_helpers.go b/v3/internal/plugin/gokit/generator/client_helpers.go index 7b45648f..10ea6fb3 100644 --- a/v3/internal/plugin/gokit/generator/client_helpers.go +++ b/v3/internal/plugin/gokit/generator/client_helpers.go @@ -3,6 +3,7 @@ package generator import ( "context" "fmt" + "strconv" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" @@ -56,7 +57,7 @@ func (g *ClientHelpers) Generate(ctx context.Context) []byte { g.w.W("return func(c *opts) { c.endpointMiddleware = opt }\n") g.w.W("}\n") - //if !g.JSONRPCEnable { + //if !g.useJSONRPC { // g.w.W("func DecodeRequestFuncOption(opt %s.CreateRequestFunc) Option {\n", kitHTTPPkg) // g.w.W("return func(c *opts) { c.createReqFunc = opt }\n") // g.w.W("}\n") @@ -69,7 +70,7 @@ func (g *ClientHelpers) Generate(ctx context.Context) []byte { g.w.W("type opts struct {\n") g.w.W("clientOption []%s\n", kitHTTPClientOption) g.w.W("endpointMiddleware []%s\n", endpointMiddlewareOption) - //if !g.JSONRPCEnable { + //if !g.useJSONRPC { // g.w.W("createReqFunc %s.CreateRequestFunc\n", kitHTTPPkg) // g.w.W("decRespFunc %s.DecodeResponseFunc\n", kitHTTPPkg) //} @@ -140,6 +141,8 @@ func (g *ClientHelpers) Generate(ctx context.Context) []byte { g.w.W("func (e *httpError) SetErrorMessage(message string) {\ne.message = message\n}\n") errorDecodeParams = append(errorDecodeParams, "message", "string", "data", "interface{}") + } else { + errorDecodeParams = append(errorDecodeParams, "errCode", "string") } for _, iface := range g.Interfaces { @@ -162,6 +165,7 @@ func (g *ClientHelpers) Generate(ctx context.Context) []byte { g.w.W("switch code {\n") g.w.W("default:\nerr = &httpError{code: code}\n") + if g.JSONRPCEnable { errorsDub := map[int64]struct{}{} for _, e := range methodErrors { @@ -169,15 +173,37 @@ func (g *ClientHelpers) Generate(ctx context.Context) []byte { continue } errorsDub[e.Code] = struct{}{} - g.w.W("case %d:\n", e.Code) pkgName := importer.Import(e.PkgName, e.PkgPath) if pkgName != "" { pkgName += "." } - g.w.W("err = &%s%s{}\n", pkgName, e.Name) } + } else { + errorsMap := map[int64][]config.Error{} + for _, e := range methodErrors { + errorsMap[e.Code] = append(errorsMap[e.Code], e) + } + + for statusCode, errs := range errorsMap { + g.w.W("case %d:\n", statusCode) + g.w.W("switch errCode {\n") + + errorsDub := map[string]struct{}{} + for _, e := range errs { + pkgName := importer.Import(e.PkgName, e.PkgPath) + if pkgName != "" { + pkgName += "." + } + if _, ok := errorsDub[e.ErrCode]; !ok { + errorsDub[e.ErrCode] = struct{}{} + g.w.W("case %s:", strconv.Quote(e.ErrCode)) + g.w.W("err = &%s%s{}\n", pkgName, e.Name) + } + } + g.w.W("}\n") + } } g.w.W("}\n") if g.JSONRPCEnable { diff --git a/v3/internal/plugin/gokit/generator/client_struct.go b/v3/internal/plugin/gokit/generator/client_struct.go index f67607e8..566afc72 100644 --- a/v3/internal/plugin/gokit/generator/client_struct.go +++ b/v3/internal/plugin/gokit/generator/client_struct.go @@ -101,7 +101,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { assignResult = "" } - if LenWithoutErrors(m.Sig.Results) == 0 { + if plugin.LenWithoutErrors(m.Sig.Results) == 0 { responseVarName = "_" } @@ -130,7 +130,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { g.w.W("return\n") }) - lenResults := LenWithoutErrors(m.Sig.Results) + lenResults := plugin.LenWithoutErrors(m.Sig.Results) if lenResults > 0 { for _, result := range m.Sig.Results { if plugin.IsError(result) { diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index 6e357761..d262851a 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -56,8 +56,8 @@ func (g *Endpoint) writeReqResp(importer swipe.Importer) { g.w.W("}\n") } - if DownloadFile(m.Sig.Results) == nil { - if m.Sig.IsNamed && LenWithoutErrors(m.Sig.Results) > 1 { + if plugin.DownloadFile(m.Sig.Results) == nil { + if m.Sig.IsNamed && plugin.LenWithoutErrors(m.Sig.Results) > 1 { g.w.W("type %s struct {\n", NameResponse(m, iface)) for _, param := range m.Sig.Results { if plugin.IsError(param) { @@ -112,7 +112,7 @@ func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { } callParams = append(callParams, "req."+param.Name.Upper()) } - if LenWithoutContexts(m.Sig.Params) > 0 { + if plugin.LenWithoutContexts(m.Sig.Params) > 0 { g.w.W("req := request.(%s)\n", NameRequest(m, iface)) } @@ -142,7 +142,7 @@ func (g *Endpoint) writeEndpointMake(importer swipe.Importer) { } g.w.W("return ") - resultLen := LenWithoutErrors(m.Sig.Results) + resultLen := plugin.LenWithoutErrors(m.Sig.Results) if resultLen > 1 { g.w.W("%s", NameResponse(m, iface)) var resultKeyVal []string diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index a8c50096..06dfd475 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -220,35 +220,6 @@ func IfaceMiddlewareTypeName(iface *config.Interface) string { return UcNameWithAppPrefix(iface) + "Middleware" } -func DownloadFile(vars option.VarsType) *option.VarType { - for _, v := range vars { - if isFileDownloadType(v.Type) { - return v - } - } - return nil -} - -func Contexts(vars option.VarsType) (result []*option.VarType) { - for _, v := range vars { - if plugin.IsContext(v) { - result = append(result, v) - } - } - return -} - -func LenWithoutErrors(vars option.VarsType) int { - if plugin.Error(vars) != nil { - return len(vars) - 1 - } - return len(vars) -} - -func LenWithoutContexts(vars option.VarsType) int { - return len(vars) - len(Contexts(vars)) -} - func makeLogParams(include, exclude map[string]struct{}, data ...*option.VarType) (result []string) { return makeLogParamsRecursive(include, exclude, "", data...) } @@ -281,7 +252,7 @@ func makeLogParam(name string, t interface{}) []string { default: return []string{quoteName, name} case *option.NamedType: - if isFileDownloadType(t) { + if plugin.IsFileDownloadType(t) { return []string{quoteName, "len(" + name + ".Data())"} } if hasMethodString(t) { @@ -633,23 +604,6 @@ func isFileUploadType(i interface{}, importer swipe.Importer) bool { return false } -func isFileDownloadType(i interface{}) bool { - if n, ok := i.(*option.NamedType); ok { - var done int - for _, method := range n.Methods { - sigStr := swipe.TypeStringWithoutImport(method, true) - switch sigStr { - case "ContentType() (string)", "Name() (string)", "Data() ([]byte)": - done++ - } - } - if done == 3 { - return true - } - } - return false -} - func wrapDataServer(parts []string) string { l := list.New() if len(parts) > 0 { diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_client.go b/v3/internal/plugin/gokit/generator/jsonrpc_client.go index fa616bdb..9d2a04e9 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_client.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_client.go @@ -4,6 +4,8 @@ import ( "context" "strconv" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -90,8 +92,8 @@ func (g *JSONRPCClientGenerator) Generate(ctx context.Context) []byte { g.w.W("func(_ %s.Context, obj interface{}) (%s.RawMessage, error) {\n", contextPkg, jsonPkg) requestName := NameRequest(m, iface) - paramsLen := LenWithoutContexts(m.Sig.Params) - resultsLen := LenWithoutErrors(m.Sig.Results) + paramsLen := plugin.LenWithoutContexts(m.Sig.Params) + resultsLen := plugin.LenWithoutErrors(m.Sig.Results) if paramsLen > 0 { g.w.W("req, ok := obj.(%s)\n", requestName) diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go index dc2dfe3f..19603920 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_doc.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_doc.go @@ -74,7 +74,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { } g.w.W(") ⇒") - resultRen := LenWithoutErrors(m.Sig.Results) + resultRen := plugin.LenWithoutErrors(m.Sig.Results) if resultRen == 0 { g.w.W("void") @@ -131,7 +131,7 @@ func (g *JSONRPCDocGenerator) Generate(ctx context.Context) []byte { g.w.W("\n\n") } - if LenWithoutContexts(m.Sig.Params) > 0 { + if plugin.LenWithoutContexts(m.Sig.Params) > 0 { g.w.W("| Param | Type | Description |\n|------|------|------|\n") for _, p := range m.Sig.Params { g.w.W("|%s|%s|%s|\n", p.Name.Value, jsDocType(p.Type), p.Comment) diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index 6eae5176..fccf8401 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -9,19 +9,16 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v3/internal/plugin" - "github.com/pquerna/ffjson/ffjson" "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/openapi" "github.com/swipe-io/swipe/v3/option" - "github.com/swipe-io/swipe/v3/writer" ) type Openapi struct { - w writer.TextWriter JSONRPCEnable bool Contact config.OpenapiContact Info config.OpenapiInfo @@ -374,7 +371,7 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config Properties: map[string]*openapi.Schema{}, } - if LenWithoutErrors(m.Sig.Params) > 0 { + if plugin.LenWithoutErrors(m.Sig.Params) > 0 { for _, p := range m.Sig.Params { if plugin.IsContext(p) { continue @@ -391,14 +388,14 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config requestSchema.Example = json.RawMessage("null") } - lenResults := LenWithoutErrors(m.Sig.Results) + lenResults := plugin.LenWithoutErrors(m.Sig.Results) if lenResults > 1 { for _, r := range m.Sig.Results { if plugin.IsError(r) { continue } - if isFileDownloadType(r.Type) { + if plugin.IsFileDownloadType(r.Type) { continue } g.fillTypeDef(r.Type) @@ -406,7 +403,7 @@ func (g *Openapi) makeJSONRPCPath(m *option.FuncType, prefix string, mopt config responseSchema.Properties[r.Name.Lower()] = schema } } else if lenResults == 1 { - if !isFileDownloadType(m.Sig.Results[0].Type) { + if !plugin.IsFileDownloadType(m.Sig.Results[0].Type) { g.fillTypeDef(m.Sig.Results[0].Type) responseSchema = g.schemaByType(m.Sig.Results[0].Type) } @@ -583,13 +580,13 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o requestSchema.Properties[p.Name.Lower()] = schema } - lenResults := LenWithoutErrors(m.Sig.Results) + lenResults := plugin.LenWithoutErrors(m.Sig.Results) if lenResults > 1 { for _, r := range m.Sig.Results { if plugin.IsError(r) { continue } - if isFileDownloadType(r.Type) { + if plugin.IsFileDownloadType(r.Type) { responseSchema.Type = "string" responseSchema.Format = "binary" continue @@ -598,7 +595,7 @@ func (g *Openapi) makeRestPath(m *option.FuncType, mopt config.MethodOptions) *o responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) } } else if lenResults == 1 { - if !isFileDownloadType(m.Sig.Results[0].Type) { + if !plugin.IsFileDownloadType(m.Sig.Results[0].Type) { g.fillTypeDef(m.Sig.Results[0].Type) responseSchema = g.schemaByType(m.Sig.Results[0].Type) } else { diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index b92c9a87..6b17dbda 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -6,11 +6,10 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/format" - - "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -48,6 +47,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { urlPkg := importer.Import("url", "net/url") netPkg := importer.Import("net", "net") stringsPkg := importer.Import("strings", "strings") + jsonPkg := importer.Import("json", "encoding/json") if g.UseFast { kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") @@ -60,7 +60,13 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { httpPkg = importer.Import("http", "net/http") } - g.writeCreateReqFuncs(importer, httpPkg, contextPkg, fmtPkg, urlPkg) + g.w.W("type errorWrapper struct {\n") + g.w.W("Error string `json:\"error\"`\n") + g.w.W("Code string `json:\"code,omitempty\"`\n") + g.w.W("Data interface{} `json:\"data,omitempty\"`\n") + g.w.W("}\n") + + g.writeCreateReqFuncs(importer, httpPkg, contextPkg, fmtPkg, urlPkg, jsonPkg) for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) @@ -125,7 +131,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpPkg, contextPkg, fmtPkg, urlPkg string) { +func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpPkg, contextPkg, fmtPkg, urlPkg, jsonPkg string) { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { @@ -138,13 +144,16 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP } g.w.W("if %s > 299 {\n", statusCode) + g.w.W("var errorData errorWrapper\n") + g.w.W("if err := %s.NewDecoder(r.Body).Decode(&errorData); err != nil {\nreturn nil, err\n}\n", jsonPkg) + g.w.W("return nil, ") - g.w.W("%sErrorDecode(%s)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) + g.w.W("%sErrorDecode(%s, errorData.Code)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) g.w.W("\n}\n") - resultsLen := LenWithoutErrors(m.Sig.Results) + resultsLen := plugin.LenWithoutErrors(m.Sig.Results) if resultsLen > 0 { var responseType string if m.Sig.IsNamed && resultsLen > 1 { @@ -273,7 +282,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP } } - paramsLen := LenWithoutContexts(m.Sig.Params) + paramsLen := plugin.LenWithoutContexts(m.Sig.Params) if paramsLen > 0 { g.w.W("req, ok := request.(%s)\n", nameRequest) g.w.W("if !ok {\n") diff --git a/v3/internal/plugin/gokit/helpers.go b/v3/internal/plugin/gokit/helpers.go index 0ab4b213..48a1431d 100644 --- a/v3/internal/plugin/gokit/helpers.go +++ b/v3/internal/plugin/gokit/helpers.go @@ -77,6 +77,11 @@ func findErrors(modulePath string, declTypes map[string]*typeInfo, pkgs *package return } if t, ok := obj.Type().(*types.Named); ok { + + if t.Obj().Pkg() != nil && strings.Contains(t.Obj().Pkg().Path(), "swipe") { + return + } + f := findMethodByNamed(t, "ErrorCode", "StatusCode") if f == nil { return diff --git a/v3/internal/plugin/gokit/openapi/openapi_ffjson.go b/v3/internal/plugin/gokit/openapi/openapi_ffjson.go index 108ee55c..508e2fb9 100644 --- a/v3/internal/plugin/gokit/openapi/openapi_ffjson.go +++ b/v3/internal/plugin/gokit/openapi/openapi_ffjson.go @@ -1,5 +1,5 @@ // Code generated by ffjson . DO NOT EDIT. -// source: pkg/openapi/openapi.go +// source: pkg/openapi/gen.go package openapi @@ -2186,7 +2186,7 @@ handle_OpenAPI: handle_Info: - /* handler: j.Info type=openapi.Info kind=struct quoted=false*/ + /* handler: j.info type=openapi.info kind=struct quoted=false*/ { if tok == fflib.FFTok_null { @@ -2206,7 +2206,7 @@ handle_Info: handle_Servers: - /* handler: j.Servers type=[]openapi.Server kind=slice quoted=false*/ + /* handler: j.servers type=[]openapi.Server kind=slice quoted=false*/ { diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index 623486d3..d4b390f3 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -129,7 +129,7 @@ func (p *Plugin) Options() []byte { return nil } -func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { +func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { goClientEnable := p.config.ClientsEnable.Langs.Contains("go") jsClientEnable := p.config.ClientsEnable.Langs.Contains("js") jsonRPCEnable := p.config.JSONRPCEnable != nil @@ -138,7 +138,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { jsonRPCDocEnable := p.config.JSONRPCDocEnable != nil if p.config.CURLEnable != nil { - result = append(result, &generator.CURL{ + generators = append(generators, &generator.CURL{ Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, JSONRPCEnable: jsonRPCEnable, @@ -148,20 +148,20 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { }) } if p.config.LoggingEnable { - result = append(result, &generator.Logging{ + generators = append(generators, &generator.Logging{ Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, }) } if p.config.InstrumentingEnable { - result = append(result, &generator.Instrumenting{ + generators = append(generators, &generator.Instrumenting{ Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, Labels: p.config.InstrumentingLabels, }) } if httpServerEnable { - result = append(result, + generators = append(generators, &generator.MiddlewareChain{}, &generator.ServerHelpers{ Interfaces: p.config.Interfaces, @@ -179,7 +179,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { }, ) if p.config.OpenapiEnable != nil { - result = append(result, &generator.Openapi{ + generators = append(generators, &generator.Openapi{ JSONRPCEnable: jsonRPCEnable, Contact: p.config.OpenapiContact, Info: p.config.OpenapiInfo, @@ -193,25 +193,25 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { }) } if p.config.HasExternal { - result = append(result, &generator.GatewayGenerator{ + generators = append(generators, &generator.GatewayGenerator{ Interfaces: p.config.Interfaces, }) } if jsonRPCEnable { - result = append(result, &generator.JSONRPCServerGenerator{ + generators = append(generators, &generator.JSONRPCServerGenerator{ UseFast: useFast, Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, JSONRPCPath: p.config.JSONRPCPath.Take(), }) if jsClientEnable { - result = append(result, &generator.JSONRPCJSClientGenerator{ + generators = append(generators, &generator.JSONRPCJSClientGenerator{ Interfaces: p.config.Interfaces, IfaceErrors: p.config.IfaceErrors, }) } if jsonRPCDocEnable { - result = append(result, &generator.JSONRPCDocGenerator{ + generators = append(generators, &generator.JSONRPCDocGenerator{ AppName: p.config.AppName, JSPkgImportPath: p.config.JSPkgImportPath, Interfaces: p.config.Interfaces, @@ -221,7 +221,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { } } else { - result = append(result, &generator.RESTServerGenerator{ + generators = append(generators, &generator.RESTServerGenerator{ UseFast: useFast, JSONRPCEnable: jsonRPCEnable, MethodOptions: p.config.MethodOptionsMap, @@ -239,7 +239,7 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { pkg = strcase.ToSnake(filepath.Base(output)) - result = append(result, + generators = append(generators, &generator.MiddlewareChain{ Output: output, Pkg: pkg, @@ -272,14 +272,14 @@ func (p *Plugin) Generators() (result []swipe.Generator, errs []error) { Output: output, }) if jsonRPCEnable { - result = append(result, &generator.JSONRPCClientGenerator{ + generators = append(generators, &generator.JSONRPCClientGenerator{ Interfaces: p.config.Interfaces, UseFast: useFast, Pkg: pkg, Output: output, }) } else { - result = append(result, &generator.RESTClientGenerator{ + generators = append(generators, &generator.RESTClientGenerator{ Interfaces: p.config.Interfaces, UseFast: useFast, MethodOptions: p.config.MethodOptionsMap, diff --git a/v3/internal/plugin/plugin.go b/v3/internal/plugin/plugin.go index 284c813e..ad91614e 100644 --- a/v3/internal/plugin/plugin.go +++ b/v3/internal/plugin/plugin.go @@ -5,6 +5,8 @@ import ( "strings" stdstrings "strings" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/option" ) @@ -105,3 +107,49 @@ func FindParam(p *option.VarType, vars []string) (VarType, bool) { } return VarType{}, false } + +func Contexts(vars option.VarsType) (result []*option.VarType) { + for _, v := range vars { + if IsContext(v) { + result = append(result, v) + } + } + return +} + +func LenWithoutErrors(vars option.VarsType) int { + if Error(vars) != nil { + return len(vars) - 1 + } + return len(vars) +} + +func LenWithoutContexts(vars option.VarsType) int { + return len(vars) - len(Contexts(vars)) +} + +func DownloadFile(vars option.VarsType) *option.VarType { + for _, v := range vars { + if IsFileDownloadType(v.Type) { + return v + } + } + return nil +} + +func IsFileDownloadType(i interface{}) bool { + if n, ok := i.(*option.NamedType); ok { + var done int + for _, method := range n.Methods { + sigStr := swipe.TypeStringWithoutImport(method, true) + switch sigStr { + case "ContentType() (string)", "Name() (string)", "Data() ([]byte)": + done++ + } + } + if done == 3 { + return true + } + } + return false +} diff --git a/v3/swipe/config.go b/v3/swipe/config.go index db59ded9..652107c6 100644 --- a/v3/swipe/config.go +++ b/v3/swipe/config.go @@ -81,7 +81,8 @@ func Options() (data map[string][]byte) { data = map[string][]byte{} registeredPlugins.Range(func(key, value any) bool { pluginID := key.(string) - p := value.(Plugin) + f := value.(func() Plugin) + p := f() name := strings.ToLower(pluginID) data[name] = append(data[name], p.Options()...) return true From 4ee848ca908cebd5b3355152d01a6320c8c4231a Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 20 Sep 2022 17:33:57 +0300 Subject: [PATCH 290/293] refactor: code improvements and bugs fixed --- v3/go.mod | 1 + v3/internal/ast/loader.go | 5 + v3/internal/convert/convert_builder.go | 21 +- v3/internal/importer/importer.go | 15 +- v3/internal/openapi/gen.go | 669 --------------- v3/internal/openapi/openapi.go | 766 +++++++++++++++--- v3/internal/openapi/types.go | 134 +++ v3/internal/plugin/echo/config/config.go | 3 +- v3/internal/plugin/echo/config/config_gen.go | 2 +- v3/internal/plugin/echo/generator/helpers.go | 9 + v3/internal/plugin/echo/generator/openapi.go | 24 +- v3/internal/plugin/echo/generator/routes.go | 136 +++- .../plugin/gokit/generator/instrumenting.go | 2 +- v3/internal/plugin/gokit/generator/logging.go | 2 +- v3/internal/plugin/gokit/generator/openapi.go | 10 +- .../plugin/gokit/generator/rest_client.go | 4 +- .../plugin/gokit/generator/server_helpers.go | 1 - v3/internal/plugin/gokit/plugin.go | 46 +- v3/option/types.go | 7 + v3/swipe/swipe.go | 30 +- 20 files changed, 1047 insertions(+), 840 deletions(-) delete mode 100644 v3/internal/openapi/gen.go create mode 100644 v3/internal/openapi/types.go diff --git a/v3/go.mod b/v3/go.mod index 568bc89f..b81493df 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -13,6 +13,7 @@ require ( github.com/spf13/viper v1.8.1 github.com/swipe-io/strcase v0.1.5 golang.org/x/tools v0.1.5 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b ) require ( diff --git a/v3/internal/ast/loader.go b/v3/internal/ast/loader.go index f0be1ccc..2e9b3977 100644 --- a/v3/internal/ast/loader.go +++ b/v3/internal/ast/loader.go @@ -4,6 +4,8 @@ import ( "context" "errors" "go/ast" + "go/parser" + "go/token" "go/types" stdstrings "strings" @@ -76,6 +78,9 @@ func (l *Loader) run() (errs []error) { cfg := &packages.Config{ Context: l.ctx, + ParseFile: func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) { + return parser.ParseFile(fset, filename, src, parser.AllErrors|parser.ParseComments) + }, Mode: packages.NeedDeps | packages.NeedSyntax | packages.NeedTypesInfo | diff --git a/v3/internal/convert/convert_builder.go b/v3/internal/convert/convert_builder.go index e069fd2f..5cc1fc8c 100644 --- a/v3/internal/convert/convert_builder.go +++ b/v3/internal/convert/convert_builder.go @@ -27,8 +27,9 @@ func (b *Builder) SetDeclareErr(declareErr bool) *Builder { return b } -func (b *Builder) SetAssignOp(assignOp string) { +func (b *Builder) SetAssignOp(assignOp string) *Builder { b.assignOp = assignOp + return b } func (b *Builder) SetFieldType(fieldType interface{}) *Builder { @@ -246,6 +247,24 @@ func (b *Builder) writeNameType(t *option.NamedType) { urlPkg := b.importer.Import("url", "net/url") b.w.W("%s, err %s %s.Parse(%s)\n", b.assignVar, b.assignOp, urlPkg, b.valueVar) } + case "gopkg.in/guregu/null.v4": + nullPkg := b.importer.Import(t.Pkg.Name, t.Pkg.Path) + switch t.Name.Value { + case "String": + b.w.W("%s %s %s.StringFrom(%s)\n", b.assignVar, b.assignOp, nullPkg, b.valueVar) + return + case "Int": + tmpValueName := "tmp" + b.fieldName.Upper() + NewBuilder(b.importer). + SetAssignOp(":="). + SetAssignVar(tmpValueName). + SetValueVar(b.valueVar). + SetFieldType(option.NewInt64Type()). + SetErrorReturn(b.errorReturn). + Write(&b.w) + b.w.W("%s %s %s.IntFrom(%s)\n", b.assignVar, b.assignOp, nullPkg, tmpValueName) + return + } case "github.com/satori/uuid", "github.com/google/uuid": if t.Name.Value == "UUID" { uuidPkg := b.importer.Import(t.Pkg.Name, t.Pkg.Path) diff --git a/v3/internal/importer/importer.go b/v3/internal/importer/importer.go index 9d85d1c2..dccdaf1c 100644 --- a/v3/internal/importer/importer.go +++ b/v3/internal/importer/importer.go @@ -2,11 +2,8 @@ package importer import ( "fmt" - "go/token" "sort" stdstrings "strings" - - "github.com/swipe-io/swipe/v3/option" ) type ImportInfo struct { @@ -15,12 +12,12 @@ type ImportInfo struct { } type Importer struct { - pkg *option.PackageType + pkgPath string imports map[string]ImportInfo } func (i *Importer) Import(name, path string) string { - if path == i.pkg.Path { + if path == i.pkgPath { return "" } const vendorPart = "vendor/" @@ -47,8 +44,8 @@ func (i *Importer) nameInFileScope(name string) bool { return true } } - _, obj := i.pkg.Types.Scope().LookupParent(name, token.NoPos) - return obj != nil + //_, obj := i.pkgPath.Types.Scope().LookupParent(name, token.NoPos) + return false } func (i *Importer) HasImports() bool { @@ -74,9 +71,9 @@ func (i *Importer) SortedImports() (result []string) { } -func NewImporter(pkg *option.PackageType) *Importer { +func NewImporter(pkgPath string) *Importer { return &Importer{ - pkg: pkg, + pkgPath: pkgPath, imports: map[string]ImportInfo{}, } } diff --git a/v3/internal/openapi/gen.go b/v3/internal/openapi/gen.go deleted file mode 100644 index 5bf86140..00000000 --- a/v3/internal/openapi/gen.go +++ /dev/null @@ -1,669 +0,0 @@ -package openapi - -import ( - "encoding/json" - "net/http" - "path" - "strconv" - stdstrings "strings" - - "github.com/swipe-io/strcase" - - "github.com/swipe-io/swipe/v3/internal/plugin" - "github.com/swipe-io/swipe/v3/option" -) - -type InterfaceMethod struct { - Name option.String - RESTMethod string - RESTPath string - RESTQueryVars []string - RESTPathVars map[string]string - Tags []string - Func *option.FuncType - Description string - RESTWrapResponse string - RESTQueryValues []string - RESTHeaderVars []string -} - -type Interface struct { - Name option.String - Namespace string - Methods []InterfaceMethod -} - -type Error struct { - PkgName string - PkgPath string - Name string - Code int64 - ErrCode string -} - -type Openapi struct { - info Info - servers []Server - interfaces []Interface - errors map[string]map[string][]Error - useJSONRPC bool - defTypes map[string]*option.NamedType -} - -func (g *Openapi) Build() OpenAPI { - g.defTypes = make(map[string]*option.NamedType, 1024) - o := OpenAPI{ - OpenAPI: "3.0.0", - Paths: map[string]*Path{}, - Components: Components{ - Schemas: Schemas{}, - }, - } - - o.Info = g.info - o.Servers = g.servers - - if g.useJSONRPC { - o.Components.Schemas = getOpenapiJSONRPCErrorSchemas() - } - - for _, iface := range g.interfaces { - for _, m := range iface.Methods { - var ( - pathStr string - op *Operation - httpMethodName = m.RESTMethod - ) - - if g.useJSONRPC { - op = g.makeJSONRPCPath(m, iface.Namespace) - pathStr = "/" + m.Name.Lower() - if iface.Namespace != "" { - pathStr = "/" + iface.Namespace + "." + m.Name.Lower() - } - httpMethodName = "POST" - } else { - op = g.makeRestPath(m) - - if m.RESTPath != "" { - pathStr = m.RESTPath - } else { - pathStr = strcase.ToKebab(m.Name.Value) - } - for _, p := range m.Func.Sig.Params { - if plugin.IsContext(p) { - continue - } - if regexp, ok := m.RESTPathVars[p.Name.Value]; ok { - pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) - } - } - if iface.Namespace != "" { - pathStr = path.Join(iface.Namespace, pathStr) - } - } - - if methodErrors, ok := g.errors[iface.Name.Value]; ok { - for _, errors := range methodErrors { - for _, e := range errors { - codeStr := strconv.FormatInt(e.Code, 10) - errResponse := &Response{ - Content: Content{ - "application/json": { - Schema: &Schema{ - Ref: "#/components/schemas/" + e.Name, - }, - }, - }, - } - if g.useJSONRPC { - codeStr = "x-" + codeStr - o.Components.Schemas[e.Name] = makeOpenapiSchemaJRPCError(e.Code) - errResponse.Description = e.Name - } else { - errResponse.Description = http.StatusText(int(e.Code)) - o.Components.Schemas[e.Name] = makeOpenapiSchemaRESTError(e.ErrCode) - } - - op.Responses[codeStr] = errResponse - } - } - } - - if iface.Namespace != "" { - op.Tags = append(op.Tags, iface.Namespace) - } - op.Tags = append(op.Tags, m.Tags...) - op.Description = m.Description - - if _, ok := o.Paths[pathStr]; !ok { - o.Paths[pathStr] = &Path{} - } - - switch httpMethodName { - default: - o.Paths[pathStr].Get = op - case "POST": - o.Paths[pathStr].Post = op - case "PUT": - o.Paths[pathStr].Put = op - case "PATCH": - o.Paths[pathStr].Patch = op - case "DELETE": - o.Paths[pathStr].Delete = op - } - } - } - - for _, namedType := range g.defTypes { - o.Components.Schemas[namedType.Name.Value] = g.schemaByType(namedType.Type) - } - return o -} - -func (g *Openapi) makeRef(named *option.NamedType) string { - return "#/components/schemas/" + named.Name.Upper() -} - -func (g *Openapi) fillTypeDefRecursive(t interface{}) { - switch t := t.(type) { - case *option.SliceType: - g.fillTypeDefRecursive(t.Value) - case *option.ArrayType: - g.fillTypeDefRecursive(t.Value) - case *option.MapType: - g.fillTypeDefRecursive(t.Value) - case *option.NamedType: - switch t.Pkg.Path { - case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid": - return - } - if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { - g.defTypes[t.Pkg.Path+t.Name.Value] = t - - switch tt := t.Type.(type) { - case *option.SliceType: - g.fillTypeDefRecursive(tt.Value) - case *option.ArrayType: - g.fillTypeDefRecursive(tt.Value) - case *option.MapType: - g.fillTypeDefRecursive(tt.Value) - case *option.StructType: - for _, field := range tt.Fields { - g.fillTypeDefRecursive(field.Var.Type) - } - } - } - - } -} - -func (g *Openapi) fillTypeDef(t interface{}) { - g.fillTypeDefRecursive(t) -} - -func (g *Openapi) schemaByTypeRecursive(schema *Schema, t interface{}) { - switch t := t.(type) { - case *option.NamedType: - switch t.Pkg.Path { - default: - schema.Ref = g.makeRef(t) - return - case "encoding/json": - schema.Type = "object" - schema.Properties = Properties{} - return - case "time": - switch t.Name.Value { - case "Duration": - schema.Type = "string" - schema.Example = "1h3m30s" - case "Time": - schema.Type = "string" - schema.Format = "date-time" - schema.Example = "1985-04-02T01:30:00.00Z" - } - return - case "github.com/pborman/uuid", "github.com/google/uuid": - schema.Type = "string" - schema.Format = "uuid" - schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" - return - } - case *option.StructType: - for _, field := range t.Fields { - name := field.Var.Name.Value - if tag, err := field.Tags.Get("json"); err == nil { - name = tag.Name - } - if name == "-" { - continue - } - filedSchema := &Schema{ - Properties: Properties{}, - } - filedSchema.Description = field.Var.Comment - schema.Properties[name] = filedSchema - g.schemaByTypeRecursive(filedSchema, field.Var.Type) - } - case *option.MapType: - mapSchema := &Schema{ - Properties: Properties{}, - } - schema.Properties = Properties{"key": mapSchema} - g.schemaByTypeRecursive(mapSchema, t.Value) - return - case *option.ArrayType: - schema.Type = "array" - schema.Items = &Schema{ - Properties: Properties{}, - } - g.schemaByTypeRecursive(schema.Items, t.Value) - return - case *option.SliceType: - if b, ok := t.Value.(*option.BasicType); ok && b.IsByte() { - schema.Type = "string" - schema.Format = "byte" - schema.Example = "U3dhZ2dlciByb2Nrcw==" - } else { - schema.Type = "array" - schema.Items = &Schema{ - Properties: Properties{}, - } - g.schemaByTypeRecursive(schema.Items, t.Value) - } - return - case *option.IfaceType: - schema.Type = "object" - schema.Description = "Can be any value - string, number, boolean, array or object." - schema.Properties = Properties{} - schema.Example = json.RawMessage("null") - schema.AnyOf = []Schema{ - {Type: "string", Example: "abc"}, - {Type: "integer", Example: 1}, - {Type: "number", Format: "float", Example: 1.11}, - {Type: "boolean", Example: true}, - {Type: "array"}, - {Type: "object"}, - } - return - case *option.BasicType: - if t.IsString() { - schema.Type = "string" - schema.Example = "abc" - return - } - if t.IsBool() { - schema.Type = "boolean" - schema.Example = "true" - } - if t.IsNumeric() { - if t.IsInt32() || t.IsUint32() { - schema.Type = "integer" - schema.Format = "int32" - schema.Example = 1 - return - } - if t.IsInt64() || t.IsUint64() { - schema.Type = "integer" - schema.Format = "int64" - schema.Example = 1 - return - } - if t.IsFloat32() || t.IsFloat64() { - schema.Type = "number" - schema.Format = "float" - schema.Example = 1.11 - return - } - schema.Type = "integer" - schema.Example = 1 - return - } - } -} - -func (g *Openapi) schemaByType(t interface{}) (schema *Schema) { - schema = &Schema{ - Properties: Properties{}, - } - g.schemaByTypeRecursive(schema, t) - return -} - -func (g *Openapi) makeJSONRPCPath(m InterfaceMethod, prefix string) *Operation { - responseSchema := &Schema{ - Type: "object", - Properties: map[string]*Schema{}, - } - requestSchema := &Schema{ - Type: "object", - Properties: map[string]*Schema{}, - } - - if plugin.LenWithoutErrors(m.Func.Sig.Params) > 0 { - for _, p := range m.Func.Sig.Params { - if plugin.IsContext(p) { - continue - } - g.fillTypeDef(p.Type) - - schema := g.schemaByType(p.Type) - schema.Description = p.Comment - requestSchema.Properties[p.Name.Lower()] = schema - } - } else { - requestSchema.Type = "object" - requestSchema.Nullable = true - requestSchema.Example = json.RawMessage("null") - } - - lenResults := plugin.LenWithoutErrors(m.Func.Sig.Results) - - if lenResults > 1 { - for _, r := range m.Func.Sig.Results { - if plugin.IsError(r) { - continue - } - if plugin.IsFileDownloadType(r.Type) { - continue - } - g.fillTypeDef(r.Type) - schema := g.schemaByType(r.Type) - responseSchema.Properties[r.Name.Lower()] = schema - } - } else if lenResults == 1 { - if !plugin.IsFileDownloadType(m.Func.Sig.Results[0].Type) { - g.fillTypeDef(m.Func.Sig.Results[0].Type) - responseSchema = g.schemaByType(m.Func.Sig.Results[0].Type) - } - } else { - responseSchema.Example = json.RawMessage("null") - } - - if m.RESTWrapResponse != "" { - properties := Properties{} - properties[m.RESTWrapResponse] = responseSchema - responseSchema = &Schema{ - Properties: properties, - } - } - - response := &Schema{ - Type: "object", - Properties: Properties{ - "jsonrpc": &Schema{ - Type: "string", - Example: "2.0", - }, - "id": &Schema{ - Type: "string", - Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", - }, - "result": responseSchema, - }, - } - - restMethod := m.Name.Lower() - if prefix != "" { - restMethod = prefix + "." + restMethod - } - - request := &Schema{ - Type: "object", - Properties: Properties{ - "jsonrpc": &Schema{ - Type: "string", - Example: "2.0", - }, - "id": &Schema{ - Type: "string", - Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", - }, - "method": &Schema{ - Type: "string", - Enum: []string{restMethod}, - }, - "params": requestSchema, - }, - } - - return &Operation{ - RequestBody: &RequestBody{ - Required: true, - Content: map[string]Media{ - "application/json": { - Schema: request, - }, - }, - }, - Responses: map[string]*Response{ - "200": { - Description: "OK", - Content: Content{ - "application/json": { - Schema: response, - }, - }, - }, - "x-32700": { - Description: "Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.", - Content: Content{ - "application/json": { - Schema: &Schema{ - Ref: "#/components/schemas/ParseError", - }, - }, - }, - }, - "x-32600": { - Description: "Invalid Request. The JSON sent is not a valid Request object.", - Content: Content{ - "application/json": { - Schema: &Schema{ - Ref: "#/components/schemas/InvalidRequestError", - }, - }, - }, - }, - "x-32601": { - Description: "Method not found. The method does not exist / is not available.", - Content: Content{ - "application/json": { - Schema: &Schema{ - Ref: "#/components/schemas/MethodNotFoundError", - }, - }, - }, - }, - "x-32602": { - Description: "Invalid params. Invalid method parameters.", - Content: Content{ - "application/json": { - Schema: &Schema{ - Ref: "#/components/schemas/InvalidParamsError", - }, - }, - }, - }, - "x-32603": { - Description: "Internal error. Internal JSON-RPC error.", - Content: Content{ - "application/json": { - Schema: &Schema{ - Ref: "#/components/schemas/InternalError", - }, - }, - }, - }, - }, - } -} - -func (g *Openapi) makeRestPath(m InterfaceMethod) *Operation { - responseSchema := &Schema{ - Type: "object", - Properties: map[string]*Schema{}, - } - - requestSchema := &Schema{ - Type: "object", - Properties: map[string]*Schema{}, - } - - queryVars := make([]plugin.VarType, 0, len(m.RESTQueryVars)) - queryValues := make([]plugin.VarType, 0, len(m.RESTQueryValues)) - headerVars := make([]plugin.VarType, 0, len(m.RESTHeaderVars)) - pathVars := make([]plugin.VarType, 0, len(m.RESTPathVars)) - paramVars := make([]*option.VarType, 0, len(m.Func.Sig.Params)) - - for _, p := range m.Func.Sig.Params { - if plugin.IsContext(p) { - continue - } - if v, ok := plugin.FindParam(p, m.RESTQueryVars); ok { - queryVars = append(queryVars, v) - continue - } - if v, ok := plugin.FindParam(p, m.RESTQueryValues); ok { - queryValues = append(queryValues, v) - continue - } - if v, ok := plugin.FindParam(p, m.RESTHeaderVars); ok { - headerVars = append(headerVars, v) - continue - } - if regexp, ok := m.RESTPathVars[p.Name.Value]; ok { - pathVars = append(pathVars, plugin.VarType{ - Param: p, - Value: regexp, - }) - continue - } - paramVars = append(paramVars, p) - } - - for _, p := range paramVars { - g.fillTypeDef(p.Type) - schema := g.schemaByType(p.Type) - schema.Description = p.Comment - requestSchema.Properties[p.Name.Lower()] = schema - } - - lenResults := plugin.LenWithoutErrors(m.Func.Sig.Results) - if lenResults > 1 { - for _, r := range m.Func.Sig.Results { - if plugin.IsError(r) { - continue - } - if plugin.IsFileDownloadType(r.Type) { - responseSchema.Type = "string" - responseSchema.Format = "binary" - continue - } - g.fillTypeDef(r.Type) - responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) - } - } else if lenResults == 1 { - if !plugin.IsFileDownloadType(m.Func.Sig.Results[0].Type) { - g.fillTypeDef(m.Func.Sig.Results[0].Type) - responseSchema = g.schemaByType(m.Func.Sig.Results[0].Type) - } else { - responseSchema.Type = "string" - responseSchema.Format = "binary" - } - } - if m.RESTWrapResponse != "" { - properties := Properties{} - properties[m.RESTWrapResponse] = responseSchema - responseSchema = &Schema{ - Properties: properties, - } - } - responses := map[string]*Response{} - if lenResults == 0 { - responses["201"] = &Response{ - Description: "Created", - Content: Content{ - "text/plain": {}, - }, - } - } else { - - if responseSchema.Type == "string" && responseSchema.Format == "binary" { - responses["200"] = &Response{ - Description: "OK", - Content: Content{ - "application/file": { - Schema: responseSchema, - }, - }, - } - } else { - responses["200"] = &Response{ - Description: "OK", - Content: Content{ - "application/json": { - Schema: responseSchema, - }, - }, - } - } - - } - - o := &Operation{ - Summary: m.Name.Value, - Responses: responses, - } - - for _, pathVar := range pathVars { - o.Parameters = append(o.Parameters, Parameter{ - In: "path", - Name: pathVar.Param.Name.Lower(), - Description: pathVar.Param.Comment, - Required: pathVar.IsRequired, - Schema: g.schemaByType(pathVar.Param.Type), - }) - } - - for _, headerVar := range headerVars { - o.Parameters = append(o.Parameters, Parameter{ - In: "header", - Name: headerVar.Value, - Description: headerVar.Param.Comment, - Required: headerVar.IsRequired, - Schema: g.schemaByType(headerVar.Param.Type), - }) - } - - for _, queryVar := range queryVars { - o.Parameters = append(o.Parameters, Parameter{ - In: "query", - Name: queryVar.Param.Name.Lower(), - Description: queryVar.Param.Comment, - Required: queryVar.IsRequired, - Schema: &Schema{ - Type: "string", - Properties: Properties{}, - }, - }) - } - - switch m.RESTMethod { - case "POST", "PUT", "PATCH": - o.RequestBody = &RequestBody{ - Required: true, - Content: map[string]Media{ - "application/json": { - Schema: requestSchema, - }, - }, - } - } - return o -} - -func NewOpenapi(info Info, servers []Server, interfaces []Interface, errors map[string]map[string][]Error, useJSONRPC bool) *Openapi { - return &Openapi{info: info, servers: servers, interfaces: interfaces, errors: errors, useJSONRPC: useJSONRPC} -} diff --git a/v3/internal/openapi/openapi.go b/v3/internal/openapi/openapi.go index 4a804a82..7bcd7336 100644 --- a/v3/internal/openapi/openapi.go +++ b/v3/internal/openapi/openapi.go @@ -1,126 +1,704 @@ package openapi -type Contact struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - URL string `yaml:"url,omitempty" json:"url,omitempty"` - Email string `yaml:"email,omitempty" json:"email,omitempty"` -} +import ( + "encoding/json" + "net/http" + "path" + "strconv" + stdstrings "strings" -type License struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - URL string `yaml:"url,omitempty" json:"url,omitempty"` -} + "github.com/swipe-io/strcase" -type Info struct { - Title string `yaml:"title,omitempty" json:"title,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` - TermsOfService string `yaml:"termsOfService,omitempty" json:"termsOfService,omitempty"` - Contact *Contact `yaml:"contact,omitempty" json:"contact,omitempty"` - License *License `yaml:"license,omitempty" json:"license,omitempty"` - Version string `yaml:"version,omitempty" json:"version,omitempty"` -} + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/option" +) -type ExternalDocs struct { - Description string `yaml:"description,omitempty" json:"description,omitempty"` - URL string `yaml:"url,omitempty" json:"url,omitempty"` +type InterfaceMethod struct { + Name option.String + RESTMethod string + RESTPath string + RESTQueryVars []string + RESTPathVars map[string]string + Tags []string + Func *option.FuncType + Description string + RESTWrapResponse string + RESTQueryValues []string + RESTHeaderVars []string + BearerAuth bool } -type Tag struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` - ExternalDocs ExternalDocs `yaml:"externalDocs,omitempty" json:"externalDocs,omitempty"` +type Interface struct { + Name option.String + Namespace string + Methods []InterfaceMethod } -type Properties map[string]*Schema - -type Schema struct { - Description string `yaml:"description,omitempty" json:"description,omitempty"` - Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` - Type string `yaml:"type,omitempty" json:"type,omitempty"` - Nullable bool `yaml:"nullable,omitempty" json:"nullable,omitempty"` - Format string `yaml:"format,omitempty" json:"format,omitempty"` - Properties Properties `yaml:"properties,omitempty" json:"properties,omitempty"` - Items *Schema `yaml:"items,omitempty" json:"items,omitempty"` - AnyOf []Schema `yaml:"anyOf,omitempty" json:"anyOf,omitempty"` - Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` - Example interface{} `yaml:"example,omitempty" json:"example,omitempty"` +type Error struct { + PkgName string + PkgPath string + Name string + Code int64 + ErrCode string } -type Parameter struct { - Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` - In string `yaml:"in,omitempty" json:"in,omitempty"` - Name string `yaml:"name,omitempty" json:"name,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` - Required bool `yaml:"required,omitempty" json:"required,omitempty"` - Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +type Openapi struct { + info Info + servers []Server + interfaces []Interface + errors map[string]map[string][]Error + useJSONRPC bool + defTypes map[string]*option.NamedType } -type Media struct { - Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` -} +func (g *Openapi) Build() OpenAPI { + g.defTypes = make(map[string]*option.NamedType, 1024) + o := OpenAPI{ + OpenAPI: "3.0.0", + Paths: map[string]*Path{}, + Components: Components{ + Schemas: Schemas{}, + }, + } + + o.Info = g.info + o.Servers = g.servers + + if g.useJSONRPC { + o.Components.Schemas = getOpenapiJSONRPCErrorSchemas() + } + + var hasBearerAuth bool + + for _, iface := range g.interfaces { + for _, m := range iface.Methods { + var ( + pathStr string + op *Operation + httpMethodName = m.RESTMethod + ) + if g.useJSONRPC { + op = g.makeJSONRPCPath(m, iface.Namespace) + pathStr = "/" + m.Name.Lower() + if iface.Namespace != "" { + pathStr = "/" + iface.Namespace + "." + m.Name.Lower() + } + httpMethodName = "POST" + } else { + op = g.makeRestPath(m) + + if m.RESTPath != "" { + pathStr = m.RESTPath + } else { + pathStr = strcase.ToKebab(m.Name.Value) + } + for _, p := range m.Func.Sig.Params { + if plugin.IsContext(p) { + continue + } + if regexp, ok := m.RESTPathVars[p.Name.Value]; ok { + pathStr = stdstrings.Replace(pathStr, ":"+regexp, "", -1) + } + } + if iface.Namespace != "" { + pathStr = path.Join(iface.Namespace, pathStr) + } + } + + if m.BearerAuth { + op.Security = append(op.Security, map[string][]interface{}{ + "bearerAuth": []interface{}{}, + }) + hasBearerAuth = true + } -type Content map[string]Media + if methodErrors, ok := g.errors[iface.Name.Value]; ok { + for _, errors := range methodErrors { + for _, e := range errors { + codeStr := strconv.FormatInt(e.Code, 10) + errResponse := &Response{ + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/" + e.Name, + }, + }, + }, + } + if g.useJSONRPC { + codeStr = "x-" + codeStr + o.Components.Schemas[e.Name] = makeOpenapiSchemaJRPCError(e.Code) + errResponse.Description = e.Name + } else { + errResponse.Description = http.StatusText(int(e.Code)) + o.Components.Schemas[e.Name] = makeOpenapiSchemaRESTError(e.ErrCode) + } -type Response struct { - Description string `yaml:"description,omitempty" json:"description,omitempty"` - Content Content `yaml:"content,omitempty" json:"content,omitempty"` + op.Responses[codeStr] = errResponse + } + } + } + + if iface.Namespace != "" { + op.Tags = append(op.Tags, iface.Namespace) + } + op.Tags = append(op.Tags, m.Tags...) + op.Description = m.Description + + if _, ok := o.Paths[pathStr]; !ok { + o.Paths[pathStr] = &Path{} + } + + switch httpMethodName { + default: + o.Paths[pathStr].Get = op + case "POST": + o.Paths[pathStr].Post = op + case "PUT": + o.Paths[pathStr].Put = op + case "PATCH": + o.Paths[pathStr].Patch = op + case "DELETE": + o.Paths[pathStr].Delete = op + } + } + } + + if hasBearerAuth { + o.Components.SecuritySchemes = map[string]interface{}{ + "bearerAuth": BearerAuthSecuritySchema{ + Type: "http", + Scheme: "bearer", + BearerFormat: "JWT", + }, + } + } + for _, namedType := range g.defTypes { + o.Components.Schemas[namedType.Name.Value] = g.schemaByType(namedType.Type) + } + return o } -type Responses map[string]*Response +func (g *Openapi) makeRef(named *option.NamedType) string { + return "#/components/schemas/" + named.Name.Upper() +} -type RequestBody struct { - Description string `yaml:"description,omitempty" json:"description,omitempty"` - Content Content `yaml:"content,omitempty" json:"content,omitempty"` - Required bool `yaml:"required,omitempty" json:"required,omitempty"` +func (g *Openapi) fillTypeDefRecursive(t interface{}) { + switch t := t.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(t.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(t.Value) + case *option.MapType: + g.fillTypeDefRecursive(t.Value) + case *option.NamedType: + switch t.Pkg.Path { + case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid": + return + } + if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { + g.defTypes[t.Pkg.Path+t.Name.Value] = t + + switch tt := t.Type.(type) { + case *option.SliceType: + g.fillTypeDefRecursive(tt.Value) + case *option.ArrayType: + g.fillTypeDefRecursive(tt.Value) + case *option.MapType: + g.fillTypeDefRecursive(tt.Value) + case *option.StructType: + for _, field := range tt.Fields { + g.fillTypeDefRecursive(field.Var.Type) + } + } + } + + } } -type Operation struct { - Tags []string `yaml:"tags,omitempty" json:"tags,omitempty"` - Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` - OperationID string `yaml:"operationId,omitempty" json:"operationId,omitempty"` - Consumes []string `yaml:"consumes,omitempty" json:"consumes,omitempty"` - Produces []string `yaml:"produces,omitempty" json:"produces,omitempty"` - Parameters []Parameter `yaml:"parameters,omitempty" json:"parameters,omitempty"` - RequestBody *RequestBody `yaml:"requestBody,omitempty" json:"requestBody,omitempty"` - Responses Responses `yaml:"responses,omitempty" json:"responses,omitempty"` +func (g *Openapi) fillTypeDef(t interface{}) { + g.fillTypeDefRecursive(t) } -type Path struct { - Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` - Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` - Get *Operation `yaml:"get,omitempty" json:"get,omitempty"` - Post *Operation `yaml:"post,omitempty" json:"post,omitempty"` - Patch *Operation `yaml:"patch,omitempty" json:"patch,omitempty"` - Put *Operation `yaml:"put,omitempty" json:"put,omitempty"` - Delete *Operation `yaml:"delete,omitempty" json:"delete,omitempty"` +func (g *Openapi) schemaByTypeRecursive(schema *Schema, t interface{}) { + switch t := t.(type) { + case *option.NamedType: + switch t.Pkg.Path { + default: + schema.Ref = g.makeRef(t) + return + case "encoding/json": + schema.Type = "object" + schema.Properties = Properties{} + return + case "time": + switch t.Name.Value { + case "Duration": + schema.Type = "string" + schema.Example = "1h3m30s" + case "Time": + schema.Type = "string" + schema.Format = "date-time" + schema.Example = "1985-04-02T01:30:00.00Z" + } + return + case "github.com/pborman/uuid", "github.com/google/uuid": + schema.Type = "string" + schema.Format = "uuid" + schema.Example = "d5c02d83-6fbc-4dd7-8416-9f85ed80de46" + return + } + case *option.StructType: + for _, field := range t.Fields { + name := field.Var.Name.Value + if tag, err := field.Tags.Get("json"); err == nil { + name = tag.Name + } + if name == "-" { + continue + } + filedSchema := &Schema{ + Properties: Properties{}, + } + filedSchema.Description = field.Var.Comment + schema.Properties[name] = filedSchema + g.schemaByTypeRecursive(filedSchema, field.Var.Type) + } + case *option.MapType: + mapSchema := &Schema{ + Properties: Properties{}, + } + schema.Properties = Properties{"key": mapSchema} + g.schemaByTypeRecursive(mapSchema, t.Value) + return + case *option.ArrayType: + schema.Type = "array" + schema.Items = &Schema{ + Properties: Properties{}, + } + g.schemaByTypeRecursive(schema.Items, t.Value) + return + case *option.SliceType: + if b, ok := t.Value.(*option.BasicType); ok && b.IsByte() { + schema.Type = "string" + schema.Format = "byte" + schema.Example = "U3dhZ2dlciByb2Nrcw==" + } else { + schema.Type = "array" + schema.Items = &Schema{ + Properties: Properties{}, + } + g.schemaByTypeRecursive(schema.Items, t.Value) + } + return + case *option.IfaceType: + schema.Type = "object" + schema.Description = "Can be any value - string, number, boolean, array or object." + schema.Properties = Properties{} + schema.Example = json.RawMessage("null") + schema.AnyOf = []Schema{ + {Type: "string", Example: "abc"}, + {Type: "integer", Example: 1}, + {Type: "number", Format: "float", Example: 1.11}, + {Type: "boolean", Example: true}, + {Type: "array"}, + {Type: "object"}, + } + return + case *option.BasicType: + if t.IsString() { + schema.Type = "string" + schema.Example = "abc" + return + } + if t.IsBool() { + schema.Type = "boolean" + schema.Example = "true" + } + if t.IsNumeric() { + if t.IsInt32() || t.IsUint32() { + schema.Type = "integer" + schema.Format = "int32" + schema.Example = 1 + return + } + if t.IsInt64() || t.IsUint64() { + schema.Type = "integer" + schema.Format = "int64" + schema.Example = 1 + return + } + if t.IsFloat32() || t.IsFloat64() { + schema.Type = "number" + schema.Format = "float" + schema.Example = 1.11 + return + } + schema.Type = "integer" + schema.Example = 1 + return + } + } } -type Variable struct { - Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` - Default string `yaml:"default,omitempty" json:"default,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` +func (g *Openapi) schemaByType(t interface{}) (schema *Schema) { + schema = &Schema{ + Properties: Properties{}, + } + g.schemaByTypeRecursive(schema, t) + return } -type Server struct { - URL string `yaml:"url,omitempty" json:"url,omitempty"` - Description string `yaml:"description,omitempty" json:"description,omitempty"` - Variables map[string]Variable `yaml:"variables,omitempty" json:"variables,omitempty"` +func (g *Openapi) makeJSONRPCPath(m InterfaceMethod, prefix string) *Operation { + responseSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + requestSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + + if plugin.LenWithoutErrors(m.Func.Sig.Params) > 0 { + for _, p := range m.Func.Sig.Params { + if plugin.IsContext(p) { + continue + } + g.fillTypeDef(p.Type) + + schema := g.schemaByType(p.Type) + schema.Description = p.Comment + requestSchema.Properties[p.Name.Lower()] = schema + } + } else { + requestSchema.Type = "object" + requestSchema.Nullable = true + requestSchema.Example = json.RawMessage("null") + } + + lenResults := plugin.LenWithoutErrors(m.Func.Sig.Results) + + if lenResults > 1 { + for _, r := range m.Func.Sig.Results { + if plugin.IsError(r) { + continue + } + if plugin.IsFileDownloadType(r.Type) { + continue + } + g.fillTypeDef(r.Type) + schema := g.schemaByType(r.Type) + responseSchema.Properties[r.Name.Lower()] = schema + } + } else if lenResults == 1 { + if !plugin.IsFileDownloadType(m.Func.Sig.Results[0].Type) { + g.fillTypeDef(m.Func.Sig.Results[0].Type) + responseSchema = g.schemaByType(m.Func.Sig.Results[0].Type) + } + } else { + responseSchema.Example = json.RawMessage("null") + } + + if m.RESTWrapResponse != "" { + properties := Properties{} + properties[m.RESTWrapResponse] = responseSchema + responseSchema = &Schema{ + Properties: properties, + } + } + + response := &Schema{ + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", + }, + "result": responseSchema, + }, + } + + restMethod := m.Name.Lower() + if prefix != "" { + restMethod = prefix + "." + restMethod + } + + request := &Schema{ + Type: "object", + Properties: Properties{ + "jsonrpc": &Schema{ + Type: "string", + Example: "2.0", + }, + "id": &Schema{ + Type: "string", + Example: "c9b14c57-7503-447a-9fb9-be6f8920f31f", + }, + "method": &Schema{ + Type: "string", + Enum: []string{restMethod}, + }, + "params": requestSchema, + }, + } + + return &Operation{ + RequestBody: &RequestBody{ + Required: true, + Content: map[string]Media{ + "application/json": { + Schema: request, + }, + }, + }, + Responses: map[string]*Response{ + "200": { + Description: "OK", + Content: Content{ + "application/json": { + Schema: response, + }, + }, + }, + "x-32700": { + Description: "Parse error. Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/ParseError", + }, + }, + }, + }, + "x-32600": { + Description: "Invalid Request. The JSON sent is not a valid Request object.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/InvalidRequestError", + }, + }, + }, + }, + "x-32601": { + Description: "Method not found. The method does not exist / is not available.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/MethodNotFoundError", + }, + }, + }, + }, + "x-32602": { + Description: "Invalid params. Invalid method parameters.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/InvalidParamsError", + }, + }, + }, + }, + "x-32603": { + Description: "Internal error. Internal JSON-RPC error.", + Content: Content{ + "application/json": { + Schema: &Schema{ + Ref: "#/components/schemas/InternalError", + }, + }, + }, + }, + }, + } } -type Schemas map[string]*Schema +func (g *Openapi) makeRestPath(m InterfaceMethod) *Operation { + responseSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + + requestSchema := &Schema{ + Type: "object", + Properties: map[string]*Schema{}, + } + + queryVars := make([]plugin.VarType, 0, len(m.RESTQueryVars)) + queryValues := make([]plugin.VarType, 0, len(m.RESTQueryValues)) + headerVars := make([]plugin.VarType, 0, len(m.RESTHeaderVars)) + pathVars := make([]plugin.VarType, 0, len(m.RESTPathVars)) + paramVars := make([]*option.VarType, 0, len(m.Func.Sig.Params)) + + for _, p := range m.Func.Sig.Params { + if plugin.IsContext(p) { + continue + } + if v, ok := plugin.FindParam(p, m.RESTQueryVars); ok { + queryVars = append(queryVars, v) + continue + } + if v, ok := plugin.FindParam(p, m.RESTQueryValues); ok { + queryValues = append(queryValues, v) + continue + } + if v, ok := plugin.FindParam(p, m.RESTHeaderVars); ok { + headerVars = append(headerVars, v) + continue + } + if regexp, ok := m.RESTPathVars[p.Name.Value]; ok { + pathVars = append(pathVars, plugin.VarType{ + Param: p, + Value: regexp, + }) + continue + } + paramVars = append(paramVars, p) + } + + for _, p := range paramVars { + g.fillTypeDef(p.Type) + schema := g.schemaByType(p.Type) + schema.Description = p.Comment + requestSchema.Properties[p.Name.Lower()] = schema + } + + lenResults := plugin.LenWithoutErrors(m.Func.Sig.Results) + if lenResults > 1 { + for _, r := range m.Func.Sig.Results { + if plugin.IsError(r) { + continue + } + if plugin.IsFileDownloadType(r.Type) { + responseSchema.Type = "string" + responseSchema.Format = "binary" + continue + } + g.fillTypeDef(r.Type) + responseSchema.Properties[r.Name.Lower()] = g.schemaByType(r.Type) + } + } else if lenResults == 1 { + if !plugin.IsFileDownloadType(m.Func.Sig.Results[0].Type) { + g.fillTypeDef(m.Func.Sig.Results[0].Type) + responseSchema = g.schemaByType(m.Func.Sig.Results[0].Type) + } else { + responseSchema.Type = "string" + responseSchema.Format = "binary" + } + } + if m.RESTWrapResponse != "" { + properties := Properties{} + properties[m.RESTWrapResponse] = responseSchema + responseSchema = &Schema{ + Properties: properties, + } + } + responses := map[string]*Response{} + if lenResults == 0 { + responses["201"] = &Response{ + Description: "Created", + Content: Content{ + "text/plain": {}, + }, + } + } else { + + if responseSchema.Type == "string" && responseSchema.Format == "binary" { + responses["200"] = &Response{ + Description: "OK", + Content: Content{ + "application/file": { + Schema: responseSchema, + }, + }, + } + } else { + responses["200"] = &Response{ + Description: "OK", + Content: Content{ + "application/json": { + Schema: responseSchema, + }, + }, + } + } + + } + + o := &Operation{ + Summary: m.Name.Value, + Responses: responses, + } + + for _, pathVar := range pathVars { + o.Parameters = append(o.Parameters, Parameter{ + In: "path", + Name: pathVar.Param.Name.Lower(), + Description: pathVar.Param.Comment, + Required: pathVar.IsRequired, + Schema: g.schemaByType(pathVar.Param.Type), + }) + } + + for _, headerVar := range headerVars { + o.Parameters = append(o.Parameters, Parameter{ + In: "header", + Name: headerVar.Value, + Description: headerVar.Param.Comment, + Required: headerVar.IsRequired, + Schema: g.schemaByType(headerVar.Param.Type), + }) + } + + for _, queryVar := range queryVars { + if named, ok := queryVar.Param.Type.(*option.NamedType); ok { + if st, ok := named.Type.(*option.StructType); ok { + for _, field := range st.Fields { + o.Parameters = append(o.Parameters, Parameter{ + In: "query", + Name: field.Var.Name.Lower(), + Description: field.Var.Comment, + Required: queryVar.IsRequired, + Schema: &Schema{ + Type: "string", + Properties: Properties{}, + }, + }) + } + } + } else { + o.Parameters = append(o.Parameters, Parameter{ + In: "query", + Name: queryVar.Param.Name.Lower(), + Description: queryVar.Param.Comment, + Required: queryVar.IsRequired, + Schema: &Schema{ + Type: "string", + Properties: Properties{}, + }, + }) + } + } -type Components struct { - Schemas Schemas `yaml:"schemas,omitempty" json:"schemas,omitempty"` + switch m.RESTMethod { + case "POST", "PUT", "PATCH": + o.RequestBody = &RequestBody{ + Required: true, + Content: map[string]Media{ + "application/json": { + Schema: requestSchema, + }, + }, + } + } + return o } -type OpenAPI struct { - OpenAPI string `yaml:"openapi" json:"openapi"` - Info Info `yaml:"info,omitempty" json:"info,omitempty"` - Servers []Server `yaml:"servers,omitempty" json:"servers,omitempty"` - Tags []Tag `yaml:"tags,omitempty" json:"tags,omitempty"` - Schemes []string `yaml:"schemes,omitempty" json:"schemes,omitempty"` - Paths map[string]*Path `yaml:"paths,omitempty" json:"paths,omitempty"` - Components Components `yaml:"components,omitempty" json:"components,omitempty"` +func NewOpenapi(info Info, servers []Server, interfaces []Interface, errors map[string]map[string][]Error, useJSONRPC bool) *Openapi { + return &Openapi{info: info, servers: servers, interfaces: interfaces, errors: errors, useJSONRPC: useJSONRPC} } diff --git a/v3/internal/openapi/types.go b/v3/internal/openapi/types.go new file mode 100644 index 00000000..ad7e75db --- /dev/null +++ b/v3/internal/openapi/types.go @@ -0,0 +1,134 @@ +package openapi + +type Contact struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` + Email string `yaml:"email,omitempty" json:"email,omitempty"` +} + +type License struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` +} + +type Info struct { + Title string `yaml:"title,omitempty" json:"title,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + TermsOfService string `yaml:"termsOfService,omitempty" json:"termsOfService,omitempty"` + Contact *Contact `yaml:"contact,omitempty" json:"contact,omitempty"` + License *License `yaml:"license,omitempty" json:"license,omitempty"` + Version string `yaml:"version,omitempty" json:"version,omitempty"` +} + +type ExternalDocs struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + URL string `yaml:"url,omitempty" json:"url,omitempty"` +} + +type Tag struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + ExternalDocs ExternalDocs `yaml:"externalDocs,omitempty" json:"externalDocs,omitempty"` +} + +type Properties map[string]*Schema + +type Schema struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + Type string `yaml:"type,omitempty" json:"type,omitempty"` + Nullable bool `yaml:"nullable,omitempty" json:"nullable,omitempty"` + Format string `yaml:"format,omitempty" json:"format,omitempty"` + Properties Properties `yaml:"properties,omitempty" json:"properties,omitempty"` + Items *Schema `yaml:"items,omitempty" json:"items,omitempty"` + AnyOf []Schema `yaml:"anyOf,omitempty" json:"anyOf,omitempty"` + Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` + Example interface{} `yaml:"example,omitempty" json:"example,omitempty"` +} + +type Parameter struct { + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + In string `yaml:"in,omitempty" json:"in,omitempty"` + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Required bool `yaml:"required,omitempty" json:"required,omitempty"` + Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +} + +type Media struct { + Schema *Schema `yaml:"schema,omitempty" json:"schema,omitempty"` +} + +type Content map[string]Media + +type Response struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Content Content `yaml:"content,omitempty" json:"content,omitempty"` +} + +type Responses map[string]*Response + +type RequestBody struct { + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Content Content `yaml:"content,omitempty" json:"content,omitempty"` + Required bool `yaml:"required,omitempty" json:"required,omitempty"` +} + +type Operation struct { + Tags []string `yaml:"tags,omitempty" json:"tags,omitempty"` + Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + OperationID string `yaml:"operationId,omitempty" json:"operationId,omitempty"` + Consumes []string `yaml:"consumes,omitempty" json:"consumes,omitempty"` + Produces []string `yaml:"produces,omitempty" json:"produces,omitempty"` + Parameters []Parameter `yaml:"parameters,omitempty" json:"parameters,omitempty"` + RequestBody *RequestBody `yaml:"requestBody,omitempty" json:"requestBody,omitempty"` + Responses Responses `yaml:"responses,omitempty" json:"responses,omitempty"` + Security []map[string][]interface{} `yaml:"security" json:"security"` +} + +type Path struct { + Ref string `yaml:"$ref,omitempty" json:"$ref,omitempty"` + Summary string `yaml:"summary,omitempty" json:"summary,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Get *Operation `yaml:"get,omitempty" json:"get,omitempty"` + Post *Operation `yaml:"post,omitempty" json:"post,omitempty"` + Patch *Operation `yaml:"patch,omitempty" json:"patch,omitempty"` + Put *Operation `yaml:"put,omitempty" json:"put,omitempty"` + Delete *Operation `yaml:"delete,omitempty" json:"delete,omitempty"` +} + +type Variable struct { + Enum []string `yaml:"enum,omitempty" json:"enum,omitempty"` + Default string `yaml:"default,omitempty" json:"default,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` +} + +type Server struct { + URL string `yaml:"url,omitempty" json:"url,omitempty"` + Description string `yaml:"description,omitempty" json:"description,omitempty"` + Variables map[string]Variable `yaml:"variables,omitempty" json:"variables,omitempty"` +} + +type BearerAuthSecuritySchema struct { + Type string `yaml:"type" json:"type"` + Scheme string `yaml:"scheme" json:"scheme"` + BearerFormat string `yaml:"bearerFormat" json:"bearerFormat"` +} + +type Schemas map[string]*Schema + +type Components struct { + SecuritySchemes map[string]interface{} `yaml:"securitySchemes" json:"securitySchemes"` + Schemas Schemas `yaml:"schemas,omitempty" json:"schemas,omitempty"` +} + +type OpenAPI struct { + OpenAPI string `yaml:"openapi" json:"openapi"` + Info Info `yaml:"info,omitempty" json:"info,omitempty"` + Servers []Server `yaml:"servers,omitempty" json:"servers,omitempty"` + Tags []Tag `yaml:"tags,omitempty" json:"tags,omitempty"` + Schemes []string `yaml:"schemes,omitempty" json:"schemes,omitempty"` + Paths map[string]*Path `yaml:"paths,omitempty" json:"paths,omitempty"` + Components Components `yaml:"components,omitempty" json:"components,omitempty"` +} diff --git a/v3/internal/plugin/echo/config/config.go b/v3/internal/plugin/echo/config/config.go index 53047fcc..a6df494a 100644 --- a/v3/internal/plugin/echo/config/config.go +++ b/v3/internal/plugin/echo/config/config.go @@ -27,12 +27,13 @@ type MethodOptions struct { RESTQueryValues option.SliceStringValue `swipe:"option"` RESTPathVars map[string]string `swipe:"option"` RESTBodyType option.StringValue `swipe:"option"` + BearerAuth *struct{} `swipe:"option"` } type OpenapiInfo struct { Title string Description string - Version interface{} + Version string } type OpenapiContact struct { diff --git a/v3/internal/plugin/echo/config/config_gen.go b/v3/internal/plugin/echo/config/config_gen.go index f2867311..7195ea87 100644 --- a/v3/internal/plugin/echo/config/config_gen.go +++ b/v3/internal/plugin/echo/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// BearerAuth ...\nfunc BearerAuth() MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/echo/generator/helpers.go b/v3/internal/plugin/echo/generator/helpers.go index b62f568f..ee285940 100644 --- a/v3/internal/plugin/echo/generator/helpers.go +++ b/v3/internal/plugin/echo/generator/helpers.go @@ -3,6 +3,7 @@ package generator import ( "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" ) func NameInterface(iface *config.Interface) string { @@ -25,3 +26,11 @@ func UcNameWithAppPrefix(iface *config.Interface, useServicePrefix ...bool) stri } return iface.Named.Name.Upper() } + +func LcNameWithAppPrefix(iface *config.Interface, notInternal ...bool) string { + return strcase.ToLowerCamel(UcNameWithAppPrefix(iface, notInternal...)) +} + +func LcNameIfaceMethod(iface *config.Interface, fn *option.FuncType) string { + return LcNameWithAppPrefix(iface) + fn.Name.Upper() +} diff --git a/v3/internal/plugin/echo/generator/openapi.go b/v3/internal/plugin/echo/generator/openapi.go index 7f271f09..2a166e7e 100644 --- a/v3/internal/plugin/echo/generator/openapi.go +++ b/v3/internal/plugin/echo/generator/openapi.go @@ -2,7 +2,8 @@ package generator import ( "context" - "encoding/json" + + "gopkg.in/yaml.v3" "github.com/swipe-io/swipe/v3/option" @@ -34,6 +35,7 @@ func (g *Openapi) Generate(ctx context.Context) []byte { for _, m := range ifaceType.Methods { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] tags := g.MethodTags[iface.Named.Name.Value+m.Name.Value] + openapiIface.Methods = append(openapiIface.Methods, openapi.InterfaceMethod{ Name: m.Name, RESTMethod: mopt.RESTMethod.Take(), @@ -46,20 +48,32 @@ func (g *Openapi) Generate(ctx context.Context) []byte { RESTWrapResponse: mopt.RESTWrapResponse.Take(), RESTQueryValues: mopt.RESTQueryValues.Value, RESTHeaderVars: mopt.RESTHeaderVars.Value, + BearerAuth: mopt.BearerAuth != nil, }) } interfaces = append(interfaces, openapiIface) } + var openapiServers []openapi.Server + for _, server := range g.Servers { + openapiServers = append(openapiServers, openapi.Server{ + URL: server.Url, + Description: server.Description, + }) + } o := openapi.NewOpenapi( - openapi.Info{}, - []openapi.Server{}, + openapi.Info{ + Title: g.Info.Title, + Description: g.Info.Description, + Version: g.Info.Version, + }, + openapiServers, interfaces, map[string]map[string][]openapi.Error{}, false, ) result := o.Build() - data, _ := json.MarshalIndent(result, "", " ") + data, _ := yaml.Marshal(result) return data } @@ -68,5 +82,5 @@ func (g *Openapi) OutputPath() string { } func (g *Openapi) Filename() string { - return "openapi.json" + return "openapi.yaml" } diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go index be545106..523ded98 100644 --- a/v3/internal/plugin/echo/generator/routes.go +++ b/v3/internal/plugin/echo/generator/routes.go @@ -7,13 +7,12 @@ import ( "strconv" stdstrings "strings" - "github.com/swipe-io/swipe/v3/internal/convert" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/convert" "github.com/swipe-io/swipe/v3/internal/plugin" - "github.com/swipe-io/swipe/v3/option" - - "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" "github.com/swipe-io/swipe/v3/writer" ) @@ -27,27 +26,68 @@ type RoutesGenerator struct { func (g *RoutesGenerator) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - echoPkg := importer.Import("echo", "github.com/labstack/echo") + echoPkg := importer.Import("echo", "github.com/labstack/echo/v4") httpPkg := importer.Import("http", "net/http") + contextPkg := importer.Import("context", "context") + timePkg := importer.Import("time", "time") + g.writeContextWrapper(echoPkg, contextPkg, timePkg) g.writeDefaultErrorEncoder(echoPkg, httpPkg) g.writeEncodeResponseFunc(echoPkg, httpPkg) + g.w.W("type Option func(*opts)\n") + g.w.W("type ServerOption func(*serverOpts)\n\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + g.w.W("type %s struct { opts }\n\n", LcNameIfaceMethod(iface, m)+"Opts") + } + } + + g.w.W("type serverOpts struct {\ngenericOpts opts\n") + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + g.w.W("generic%s opts\n", UcNameWithAppPrefix(iface)+"Opts") + + for _, m := range ifaceType.Methods { + serverOpt := LcNameWithAppPrefix(iface) + m.Name.Value + "Opts" + g.w.W("%[1]s %[1]s\n", serverOpt) + } + } + g.w.W("}\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + g.w.W("func %sOptions(opt ...Option) ServerOption {\nreturn func(c *serverOpts) {\nfor _, o := range opt {\no(&c.generic%s)\n}\n}\n}\n\n", UcNameWithAppPrefix(iface), UcNameWithAppPrefix(iface)+"Opts") + + for _, m := range ifaceType.Methods { + serverOptName := LcNameWithAppPrefix(iface) + m.Name.Value + "Opts" + serverOptFuncName := UcNameWithAppPrefix(iface) + m.Name.Value + g.w.W("func %sOptions(opt ...Option) ServerOption {\nreturn func(c *serverOpts) {\nfor _, o := range opt {\no(&c.%s.opts)\n}\n}\n}\n\n", serverOptFuncName, serverOptName) + } + } + + g.w.W("type opts struct {\nmiddlewares []%s.MiddlewareFunc\n}\n", echoPkg) + + g.w.W("func Middlewares(middlewares []%s.MiddlewareFunc) Option {\nreturn func(c *opts) {\n c.middlewares = middlewares\n}\n}\n\n", echoPkg) + g.w.W("func SetupRoutes(e *%s.Echo,", echoPkg) for i, iface := range g.Interfaces { ifacePkg := importer.Import(iface.Named.Pkg.Name, iface.Named.Pkg.Path) paramName := iface.Named.Name.Lower() - if i > 0 { g.w.W(",") } - g.w.W("%s %s.%s", paramName, ifacePkg, iface.Named.Name) - } - g.w.W(") {\n") + g.w.W(",options ...ServerOption) {\n") + + g.w.W("opts := &serverOpts{}\nfor _, o := range options {\no(opts)\n}\n") for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) @@ -109,17 +149,20 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { if mopt.RESTMethod.Take() != "" { httpMethod = stdstrings.ToUpper(mopt.RESTMethod.Take()) } + g.w.W("e.%s(%s, func(ctx %s.Context) (err error) {\n", httpMethod, strconv.Quote(urlPath), echoPkg) - var paramValues []string - - if len(headerVars) > 0 || len(queryVars) > 0 { - g.w.W("r := ctx.Request()\n") - } + var ( + paramValues []string + paramContext *option.VarType + ) if len(m.Sig.Params) > 0 { g.w.W("var req struct {\n") for _, p := range m.Sig.Params { + if p.IsContext && paramContext == nil { + paramContext = p + } g.w.W("%s %s `json:\"%s\"`\n", p.Name.Upper(), swipe.TypeString(p.Type, true, importer), p.Name) if p.IsVariadic { paramValues = append(paramValues, "req."+p.Name.Upper()+"...") @@ -130,6 +173,14 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("}\n") } + if len(headerVars) > 0 || len(queryVars) > 0 || len(paramVars) > 0 { + g.w.W("r := ctx.Request()\n") + } + + if paramContext != nil { + g.w.W("req.%s = &contextWrapper{ctx: ctx, next: ctx.Request().Context()}\n", paramContext.Name.Upper()) + } + if len(paramVars) > 0 { switch stdstrings.ToUpper(mopt.RESTMethod.Take()) { case "POST", "PUT", "PATCH": @@ -195,20 +246,45 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { if len(mopt.RESTQueryVars.Value) > 0 { g.w.W("q := r.URL.Query()\n") + for _, queryVar := range queryVars { + if queryVar.IsRequired { fmtPkg := importer.Import("fmt", "fmt") g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) } - convert.NewBuilder(importer). - SetFieldName(queryVar.Param.Name). - SetFieldType(queryVar.Param.Type). - SetAssignVar("req." + queryVar.Param.Name.Upper()). - SetValueVar("q.Get(" + strconv.Quote(queryVar.Value) + ")"). - SetErrorReturn(func() string { - return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper()) - }). - Write(&g.w) + + if named, ok := queryVar.Param.Type.(*option.NamedType); ok { + if st, ok := named.Type.(*option.StructType); ok { + for _, field := range st.Fields { + if tag, err := field.Tags.Get("json"); err == nil { + + g.w.W("if q.Has(" + strconv.Quote(tag.Value()) + ") {\n") + + convert.NewBuilder(importer). + SetFieldName(field.Var.Name). + SetFieldType(field.Var.Type). + SetAssignVar("req." + queryVar.Param.Name.Upper() + "." + field.Var.Name.Upper()). + SetValueVar("q.Get(" + strconv.Quote(tag.Value()) + ")"). + SetErrorReturn(func() string { + return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper()) + }). + Write(&g.w) + g.w.W("}\n") + } + } + } + } else { + convert.NewBuilder(importer). + SetFieldName(queryVar.Param.Name). + SetFieldType(queryVar.Param.Type). + SetAssignVar("req." + queryVar.Param.Name.Upper()). + SetValueVar("q.Get(" + strconv.Quote(queryVar.Value) + ")"). + SetErrorReturn(func() string { + return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper()) + }). + Write(&g.w) + } } } @@ -259,7 +335,7 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil\n") } - g.w.W("})\n") + g.w.W("}, append(opts.generic%s.middlewares, opts.%s.middlewares...)...)\n", UcNameWithAppPrefix(iface)+"Opts", LcNameIfaceMethod(iface, m)+"Opts") } } @@ -268,6 +344,16 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } +func (g *RoutesGenerator) writeContextWrapper(echoPkg, contextPkg, timePkg string) { + g.w.W("type contextWrapper struct {\n") + g.w.W("ctx %s.Context\n", echoPkg) + g.w.W("next %s.Context\n}\n", contextPkg) + g.w.W("func (e *contextWrapper) Deadline() (deadline %s.Time, ok bool) {\nreturn e.next.Deadline()\n}\n", timePkg) + g.w.W("func (e *contextWrapper) Done() <-chan struct{} {\nreturn e.next.Done()\n}\n") + g.w.W("func (e *contextWrapper) Err() error {\nreturn e.next.Err()\n}\n") + g.w.W("func (e *contextWrapper) Value(key any) any {\nif k, ok := key.(string); ok {\nreturn e.ctx.Get(k)\n}\nreturn e.next.Value(key)\n}\n") +} + func (g *RoutesGenerator) writeDefaultErrorEncoder(echoPkg, httpPkg string) { g.w.W("type errorWrapper struct {\n") g.w.W("Error string `json:\"error\"`\n") @@ -315,7 +401,7 @@ func (g *RoutesGenerator) writeEncodeResponseFunc(echoPkg, httpPkg string) { g.w.W("return ctx.Blob(200, download.ContentType(), download.Data())\n") g.w.W("}") g.w.W("} else {\n") - g.w.W("return ctx.Blob(201, \"text/plain; charset=utf-8\", nil)\n") + g.w.W("return ctx.Blob(204, \"text/plain; charset=utf-8\", nil)\n") g.w.W("}\n") g.w.W("return ctx.JSON(200, response)\n") g.w.W("}\n\n") diff --git a/v3/internal/plugin/gokit/generator/instrumenting.go b/v3/internal/plugin/gokit/generator/instrumenting.go index d1d355b3..ee22fbd6 100644 --- a/v3/internal/plugin/gokit/generator/instrumenting.go +++ b/v3/internal/plugin/gokit/generator/instrumenting.go @@ -57,7 +57,7 @@ func (g *Instrumenting) Generate(ctx context.Context) []byte { mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Instrumenting.Take() { - methodName := iface.Named.Name.Lower() + "." + m.Name.Value + methodName := m.Name.Value g.w.WriteDefer( []string{"begin " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 3f8c9d69..1c025bbb 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -91,7 +91,7 @@ func (g *Logging) Generate(ctx context.Context) []byte { g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) if mopt.Logging.Take() && (len(logParams) > 0 || len(logResults) > 0 || len(errorVars) > 0) { - methodName := iface.Named.Name.Lower() + "." + m.Name.Value + methodName := m.Name.Value timePkg := importer.Import("time", "time") g.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { diff --git a/v3/internal/plugin/gokit/generator/openapi.go b/v3/internal/plugin/gokit/generator/openapi.go index fccf8401..f7a8e724 100644 --- a/v3/internal/plugin/gokit/generator/openapi.go +++ b/v3/internal/plugin/gokit/generator/openapi.go @@ -205,7 +205,7 @@ func (g *Openapi) fillTypeDefRecursive(t interface{}) { g.fillTypeDefRecursive(t.Value) case *option.NamedType: switch t.Pkg.Path { - case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid": + case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid", "gopkg.in/guregu/null.v4": return } if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { @@ -254,6 +254,14 @@ func (g *Openapi) schemaByTypeRecursive(schema *openapi.Schema, t interface{}) { schema.Example = "1985-04-02T01:30:00.00Z" } return + case "gopkg.in/guregu/null.v4": + switch t.Name.Value { + case "String": + schema.Type = "string" + case "Int": + schema.Type = "number" + } + return case "github.com/pborman/uuid", "github.com/google/uuid": schema.Type = "string" schema.Format = "uuid" diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 6b17dbda..0ed0ae66 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -60,7 +60,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { httpPkg = importer.Import("http", "net/http") } - g.w.W("type errorWrapper struct {\n") + g.w.W("type clientErrorWrapper struct {\n") g.w.W("Error string `json:\"error\"`\n") g.w.W("Code string `json:\"code,omitempty\"`\n") g.w.W("Data interface{} `json:\"data,omitempty\"`\n") @@ -144,7 +144,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP } g.w.W("if %s > 299 {\n", statusCode) - g.w.W("var errorData errorWrapper\n") + g.w.W("var errorData clientErrorWrapper\n") g.w.W("if err := %s.NewDecoder(r.Body).Decode(&errorData); err != nil {\nreturn nil, err\n}\n", jsonPkg) g.w.W("return nil, ") diff --git a/v3/internal/plugin/gokit/generator/server_helpers.go b/v3/internal/plugin/gokit/generator/server_helpers.go index 62ac92d3..48968a99 100644 --- a/v3/internal/plugin/gokit/generator/server_helpers.go +++ b/v3/internal/plugin/gokit/generator/server_helpers.go @@ -66,7 +66,6 @@ func (g *ServerHelpers) Generate(ctx context.Context) []byte { for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - for _, m := range ifaceType.Methods { g.w.W("type %s struct { opts }\n\n", LcNameIfaceMethod(iface, m)+"Opts") } diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index d4b390f3..f286fdf2 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -137,6 +137,14 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { useFast := p.config.HTTPFast != nil jsonRPCDocEnable := p.config.JSONRPCDocEnable != nil + var pkg string + output := p.config.ClientOutput.Take() + if output == "" { + output = "./client" + } + + pkg = strcase.ToSnake(filepath.Base(output)) + if p.config.CURLEnable != nil { generators = append(generators, &generator.CURL{ Interfaces: p.config.Interfaces, @@ -148,18 +156,29 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { }) } if p.config.LoggingEnable { - generators = append(generators, &generator.Logging{ - Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, - }) + generators = append(generators, + &generator.Logging{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + }, + ) } if p.config.InstrumentingEnable { - generators = append(generators, &generator.Instrumenting{ - Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, - Labels: p.config.InstrumentingLabels, + generators = append(generators, + &generator.Instrumenting{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + Labels: p.config.InstrumentingLabels, + }, + ) + } + + if p.config.InstrumentingEnable || p.config.LoggingEnable || httpServerEnable { + generators = append(generators, &generator.InterfaceGenerator{ + Interfaces: p.config.Interfaces, }) } + if httpServerEnable { generators = append(generators, &generator.MiddlewareChain{}, @@ -174,9 +193,6 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { MethodOptions: p.config.MethodOptionsMap, HTTPServerEnable: httpServerEnable, }, - &generator.InterfaceGenerator{ - Interfaces: p.config.Interfaces, - }, ) if p.config.OpenapiEnable != nil { generators = append(generators, &generator.Openapi{ @@ -231,14 +247,6 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { } if goClientEnable { - var pkg string - output := p.config.ClientOutput.Take() - if output == "" { - output = "./client" - } - - pkg = strcase.ToSnake(filepath.Base(output)) - generators = append(generators, &generator.MiddlewareChain{ Output: output, diff --git a/v3/option/types.go b/v3/option/types.go index 5685b381..a840aac3 100644 --- a/v3/option/types.go +++ b/v3/option/types.go @@ -117,6 +117,13 @@ func (n *NamedType) ID() string { return n.Pkg.Path + "." + n.Name.Value } +func NewInt64Type() *BasicType { + return &BasicType{ + Name: "int64", + kind: types.Int64, + } +} + type BasicType struct { Name string IsPointer bool diff --git a/v3/swipe/swipe.go b/v3/swipe/swipe.go index b0584fed..4c8784c7 100644 --- a/v3/swipe/swipe.go +++ b/v3/swipe/swipe.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "path/filepath" + "strings" "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/importer" @@ -65,33 +66,42 @@ func Generate(cfg *Config, prefix string) (result map[string]*GenerateResult, er for _, g := range generators { filename := prefix + strcase.ToSnake(p.ID()) + "_" + g.Filename() - - outputPath := g.OutputPath() + var ( + outputPath, outputFile, pkgPath string + ) + outputPath = g.OutputPath() if outputPath == "" { - outputPath = filepath.Join(build.BasePath, filename) + outputFile = filepath.Join(build.BasePath, filename) } else { path, err := filepath.Abs(filepath.Join(cfg.WorkDir, outputPath)) if err != nil { errs = append(errs, err) continue } - outputPath = filepath.Join(path, filename) + outputPath = path + outputFile = filepath.Join(path, filename) + } + + if outputPath == "" { + pkgPath = build.Pkg.Path + } else { + pkgPath = module.Path + strings.Replace(outputPath, cfg.WorkDir, "", -1) } - generateResult, ok := result[outputPath] + generateResult, ok := result[outputFile] if !ok { generateResult = &GenerateResult{ PkgPath: build.Pkg.Path, - OutputPath: outputPath, + OutputPath: outputFile, } - result[outputPath] = generateResult + result[outputFile] = generateResult } // importer cache for package. - importerService, ok := importerCache[outputPath] + importerService, ok := importerCache[outputFile] if !ok { - importerService = importer.NewImporter(build.Pkg) - importerCache[outputPath] = importerService + importerService = importer.NewImporter(pkgPath) + importerCache[outputFile] = importerService } pkgName := build.Pkg.Name From fad7049f4f1e57c044cbf3b3dee14b8ff0ebd489 Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 11 Oct 2022 21:34:22 +0300 Subject: [PATCH 291/293] refactor: code improvements and bugs fixed --- v3/cmd/gen.go | 8 +- v3/frame/golang_frame.go | 16 +- v3/internal/format/format_builder.go | 13 + v3/internal/logging/helpers.go | 70 +++ v3/internal/logging/logging.go | 181 ++++++++ v3/internal/openapi/openapi.go | 10 +- v3/internal/plugin/echo/config/config.go | 2 + v3/internal/plugin/echo/config/config_gen.go | 2 +- .../plugin/echo/generator/client_helpers.go | 115 +++++ .../plugin/echo/generator/client_rest.go | 86 ++++ .../plugin/echo/generator/client_struct.go | 433 ++++++++++++++++++ v3/internal/plugin/echo/generator/helpers.go | 90 ++++ .../plugin/echo/generator/interface.go | 53 +++ v3/internal/plugin/echo/generator/logging.go | 63 +++ v3/internal/plugin/echo/generator/routes.go | 14 +- v3/internal/plugin/echo/plugin.go | 37 ++ v3/internal/plugin/gokit/config/config.go | 6 + v3/internal/plugin/gokit/config/config_gen.go | 2 +- .../plugin/gokit/generator/endpoint.go | 1 - v3/internal/plugin/gokit/generator/helpers.go | 2 +- .../plugin/gokit/generator/interface.go | 10 +- .../plugin/gokit/generator/jsonrpc_server.go | 9 +- v3/internal/plugin/gokit/generator/logging.go | 160 ++----- .../plugin/gokit/generator/rest_client.go | 23 +- .../plugin/gokit/generator/rest_server.go | 4 +- v3/internal/plugin/gokit/plugin.go | 10 +- v3/option/types.go | 7 + 27 files changed, 1246 insertions(+), 181 deletions(-) create mode 100644 v3/internal/logging/helpers.go create mode 100644 v3/internal/logging/logging.go create mode 100644 v3/internal/plugin/echo/generator/client_helpers.go create mode 100644 v3/internal/plugin/echo/generator/client_rest.go create mode 100644 v3/internal/plugin/echo/generator/client_struct.go create mode 100644 v3/internal/plugin/echo/generator/interface.go create mode 100644 v3/internal/plugin/echo/generator/logging.go diff --git a/v3/cmd/gen.go b/v3/cmd/gen.go index dba6c317..907706b7 100644 --- a/v3/cmd/gen.go +++ b/v3/cmd/gen.go @@ -63,9 +63,9 @@ var genCmd = &cobra.Command{ cmd.Printf("Workdir: %s\n", wd) // clear all before generated files. - data, err := ioutil.ReadFile(swipeSysFilepath) + swipeSysData, err := ioutil.ReadFile(swipeSysFilepath) if err == nil { - genOldFiles := strings.Split(string(data), "\n") + genOldFiles := strings.Split(string(swipeSysData), "\n") for _, filepath := range genOldFiles { if err := os.Remove(basePath + filepath); err != nil { @@ -130,7 +130,7 @@ var genCmd = &cobra.Command{ filename := filepath.Base(g.OutputPath) f := frame.NewFrame(cmd.Version, filename, g.Imports, g.PkgName, useDoNotEdit) - data, err := f.Frame(g.Content) + frameData, err := f.Frame(g.Content) if err != nil { cmd.PrintErrf("%s: failed to write %s: %v\n", g.PkgPath, g.OutputPath, err) os.Exit(1) @@ -150,7 +150,7 @@ var genCmd = &cobra.Command{ cmd.PrintErrf("%s: failed to create dir %s: %v\n", g.PkgPath, dirPath, err) os.Exit(1) } - err = ioutil.WriteFile(g.OutputPath, data, 0755) + err = ioutil.WriteFile(g.OutputPath, frameData, 0755) if err == nil { if verbose { cmd.Printf("%s: wrote %s\n", g.PkgPath, g.OutputPath) diff --git a/v3/frame/golang_frame.go b/v3/frame/golang_frame.go index 9764ade4..bb8c6349 100644 --- a/v3/frame/golang_frame.go +++ b/v3/frame/golang_frame.go @@ -3,8 +3,7 @@ package frame import ( "bytes" "fmt" - - "github.com/swipe-io/swipe/v3/format" + "go/format" ) type GolangFrame struct { @@ -32,12 +31,17 @@ func (f *GolangFrame) Frame(data []byte) ([]byte, error) { } buf.Write(data) - goSrc := buf.Bytes() - fmtSrc, err := format.Source(goSrc) + fmtData, err := format.Source(buf.Bytes()) if err != nil { - return nil, fmt.Errorf("error: %w\n ***\n%s\n***\n\n", err, string(goSrc)) + sourceBuf := bytes.NewBuffer(nil) + for i, line := range bytes.Split(buf.Bytes(), []byte("\n")) { + sourceBuf.WriteString(fmt.Sprintf("%d ", i)) + sourceBuf.Write(line) + sourceBuf.WriteByte('\n') + } + return nil, fmt.Errorf("error: %w\n ***\n%s\n***\n\n", err, sourceBuf.String()) } - return fmtSrc, nil + return fmtData, nil } func NewGolangFrame(imports []string, version, pkgName string, useDoNotEdit bool) *GolangFrame { diff --git a/v3/internal/format/format_builder.go b/v3/internal/format/format_builder.go index 3161b32b..c721a6a5 100644 --- a/v3/internal/format/format_builder.go +++ b/v3/internal/format/format_builder.go @@ -98,6 +98,19 @@ func (b *Builder) writeNameType(t *option.NamedType) { if t.Name.Value == "UUID" { b.w.W("%s := %s.String() \n", b.assignVar, b.valueVar) } + case "gopkg.in/guregu/null.v4": + switch t.Name.Value { + case "String": + b.w.W("%s := %s.String \n", b.assignVar, b.valueVar) + return + case "Int": + NewBuilder(b.importer). + SetAssignVar(b.assignVar). + SetFieldType(option.NewInt64Type()). + SetValueVar(b.valueVar + ".Int64"). + Write(&b.w) + return + } case "time": switch t.Name.Value { case "Duration": diff --git a/v3/internal/logging/helpers.go b/v3/internal/logging/helpers.go new file mode 100644 index 00000000..4a7a77ec --- /dev/null +++ b/v3/internal/logging/helpers.go @@ -0,0 +1,70 @@ +package logging + +import ( + "strconv" + + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/option" +) + +func makeLogParams(include, exclude map[string]struct{}, data ...*option.VarType) (result []string) { + return makeLogParamsRecursive(include, exclude, "", data...) +} + +func makeLogParamsRecursive(include, exclude map[string]struct{}, parentName string, data ...*option.VarType) (result []string) { + for _, v := range data { + if plugin.IsContext(v) { + continue + } + if len(include) > 0 { + if _, ok := include[v.Name.Value]; !ok { + continue + } + } + if len(exclude) > 0 { + if _, ok := exclude[v.Name.Value]; ok { + continue + } + } + if logParam := makeLogParam(parentName+v.Name.Value, v.Type); len(logParam) > 0 { + result = append(result, logParam...) + } + } + return +} + +func makeLogParam(name string, t interface{}) []string { + quoteName := strconv.Quote(name) + switch t := t.(type) { + default: + return []string{quoteName, name} + case *option.NamedType: + if plugin.IsFileDownloadType(t) { + return []string{quoteName, "len(" + name + ".Data())"} + } + if hasMethodString(t) { + return []string{quoteName, name + ".String()"} + } + return nil + case *option.StructType: + return nil + case *option.BasicType: + return []string{quoteName, name} + case *option.SliceType, *option.ArrayType, *option.MapType: + return []string{quoteName, "len(" + name + ")"} + } +} + +func hasMethodString(v *option.NamedType) bool { + for _, method := range v.Methods { + if method.Name.Value != "String" { + continue + } + if len(method.Sig.Params) == 0 && len(method.Sig.Results) == 1 { + if t, ok := method.Sig.Results[0].Type.(*option.BasicType); ok { + return t.IsString() + } + } + } + return false +} diff --git a/v3/internal/logging/logging.go b/v3/internal/logging/logging.go new file mode 100644 index 00000000..87168775 --- /dev/null +++ b/v3/internal/logging/logging.go @@ -0,0 +1,181 @@ +package logging + +import ( + "fmt" + "strconv" + "strings" + + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type ParamContext struct { + Key interface{} + Name string +} + +type Interface struct { + TypeName string + LcName string + UcName string + Methods []Method +} + +type Method struct { + Name option.String + Sig *option.SignType + ParamsIncludes []string + ParamsExcludes []string + ParamsContexts []ParamContext +} + +type Logging struct { + w writer.GoWriter + importer swipe.Importer + interfaces []Interface +} + +func (l *Logging) SetInterfaces(interfaces []Interface) *Logging { + l.interfaces = interfaces + return l +} + +func (l *Logging) Build() []byte { + loggerPkg := l.importer.Import("log", "github.com/go-kit/log") + levelPkg := l.importer.Import("level", "github.com/go-kit/log/level") + + l.w.W("type errLevel interface {\n\tLevel() string\n}\n\n") + l.w.W("func levelLogger(e errLevel, logger %[1]s.Logger) %[1]s.Logger {\n", loggerPkg) + l.w.W("switch e.Level() {\n") + l.w.W("default:\nreturn %s.Error(logger)\n", levelPkg) + l.w.W("case \"debug\":\nreturn %s.Debug(logger)\n", levelPkg) + l.w.W("case \"info\":\nreturn %s.Info(logger)\n", levelPkg) + l.w.W("case \"warn\":\nreturn %s.Warn(logger)\n", levelPkg) + l.w.W("}\n") + l.w.W("}\n\n") + + for _, iface := range l.interfaces { + + middlewareNameType := iface.LcName + "LoggingMiddleware" + middlewareFuncName := fmt.Sprintf("Logging%sMiddleware", iface.UcName) + middlewareTypeName := iface.UcName + "Middleware" + + l.w.WriteTypeStruct( + middlewareNameType, + []string{ + "next", iface.TypeName, + "logger", loggerPkg + ".Logger", + }, + ) + for _, m := range iface.Methods { + includes := map[string]struct{}{} + excludes := map[string]struct{}{} + + for _, v := range m.ParamsIncludes { + includes[v] = struct{}{} + } + for _, v := range m.ParamsExcludes { + excludes[v] = struct{}{} + } + + logParams := makeLogParams(includes, excludes, m.Sig.Params...) + + if len(m.ParamsContexts) > 0 { + for _, lc := range m.ParamsContexts { + logParams = append(logParams, strconv.Quote(lc.Name), "ctx.Value("+swipe.TypeString(lc.Key, false, l.importer)+")") + } + } + + var ( + logResults []string + errorVars []*option.VarType + ) + + for _, result := range m.Sig.Results { + if plugin.IsError(result) { + + errorVars = append(errorVars, result) + continue + } + logResults = append(logResults, makeLogParam(result.Name.Value, result.Type)...) + } + + l.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, l.importer)) + + if len(logParams) > 0 || len(logResults) > 0 || len(errorVars) > 0 { + methodName := m.Name.Value + timePkg := l.importer.Import("time", "time") + + l.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { + for _, result := range m.Sig.Results { + if plugin.IsError(result) { + l.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name) + l.w.W("%s = logErr.LogError()\n", result.Name) + l.w.W("}\n") + } + } + l.w.W("logger := %[1]s.WithPrefix(s.logger, \"message\", \"call method - %[2]s\", \"method\",\"%[2]s\",\"took\",%[3]s.Since(now))\n", loggerPkg, methodName, timePkg) + + logParamsStr := strings.Join(logParams, ",") + logResultsStr := strings.Join(logResults, ",") + + if logParamsStr != "" { + logResultsStr = "," + logResultsStr + } + + if len(errorVars) > 0 { + for _, errorVar := range errorVars { + errLogStr := fmt.Sprintf("%s, %s", strconv.Quote(errorVar.Name.String()), errorVar.Name.String()) + if logParamsStr != "" { + errLogStr = "," + errLogStr + } + l.w.W("if %s != nil {\n", errorVar.Name) + l.w.W("if e, ok := %s.(errLevel); ok {\n", errorVar.Name) + l.w.W("logger = levelLogger(e, logger)\n") + l.w.W("} else {\n_ = %s.Error(logger).Log(%s)\n}\n", levelPkg, logParamsStr+errLogStr) + l.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) + } + } else { + l.w.W("_ = %s.Debug(logger).Log(%s)\n", levelPkg, logParamsStr+logResultsStr) + } + }) + } + + if len(m.Sig.Results) > 0 { + for i, result := range m.Sig.Results { + if i > 0 { + l.w.W(",") + } + l.w.W(result.Name.Value) + } + l.w.W(" = ") + } + + l.w.W("s.next.%s(", m.Name) + for i, param := range m.Sig.Params { + if i > 0 { + l.w.W(",") + } + var variadic string + if param.IsVariadic { + variadic = "..." + } + l.w.W(param.Name.Value + variadic) + } + l.w.W(")\n") + + l.w.W("return\n") + + l.w.W("}\n") + } + l.w.W("func %[1]s(logger %[4]s.Logger) %[5]s {\nreturn func(next %[2]s) %[2]s {\nreturn &%[3]s{\nnext: next,\nlogger: logger,\n}\n}\n}\n", middlewareFuncName, iface.TypeName, middlewareNameType, loggerPkg, middlewareTypeName) + } + + return l.w.Bytes() +} + +func NewLogging(importer swipe.Importer) *Logging { + return &Logging{importer: importer} +} diff --git a/v3/internal/openapi/openapi.go b/v3/internal/openapi/openapi.go index 7bcd7336..2fc1e239 100644 --- a/v3/internal/openapi/openapi.go +++ b/v3/internal/openapi/openapi.go @@ -193,7 +193,7 @@ func (g *Openapi) fillTypeDefRecursive(t interface{}) { g.fillTypeDefRecursive(t.Value) case *option.NamedType: switch t.Pkg.Path { - case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid": + case "time", "error", "github.com/pborman/uuid", "github.com/google/uuid", "gopkg.in/guregu/null.v4": return } if _, ok := g.defTypes[t.Pkg.Path+t.Name.Value]; !ok { @@ -242,6 +242,14 @@ func (g *Openapi) schemaByTypeRecursive(schema *Schema, t interface{}) { schema.Example = "1985-04-02T01:30:00.00Z" } return + case "gopkg.in/guregu/null.v4": + switch t.Name.Value { + case "String": + schema.Type = "string" + case "Int": + schema.Type = "number" + } + return case "github.com/pborman/uuid", "github.com/google/uuid": schema.Type = "string" schema.Format = "uuid" diff --git a/v3/internal/plugin/echo/config/config.go b/v3/internal/plugin/echo/config/config.go index a6df494a..12463dc1 100644 --- a/v3/internal/plugin/echo/config/config.go +++ b/v3/internal/plugin/echo/config/config.go @@ -61,6 +61,8 @@ type OpenapiTag struct { // @swipe:"Echo" type Config struct { Interfaces []*Interface `mapstructure:"Interface"` + ClientEnable *struct{} + ClientOutput option.StringValue MethodOptions []MethodOption MethodDefaultOptions MethodOptions OpenapiEnable *struct{} diff --git a/v3/internal/plugin/echo/config/config_gen.go b/v3/internal/plugin/echo/config/config_gen.go index 7195ea87..63dc9a18 100644 --- a/v3/internal/plugin/echo/config/config_gen.go +++ b/v3/internal/plugin/echo/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// BearerAuth ...\nfunc BearerAuth() MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Echo\nfunc Echo(opts ...EchoOption) {}\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// EchoOption ...\ntype EchoOption string\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// ClientEnable ...\nfunc ClientEnable() EchoOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) EchoOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// BearerAuth ...\nfunc BearerAuth() MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) EchoOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) EchoOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/echo/generator/client_helpers.go b/v3/internal/plugin/echo/generator/client_helpers.go new file mode 100644 index 00000000..3d4de6c4 --- /dev/null +++ b/v3/internal/plugin/echo/generator/client_helpers.go @@ -0,0 +1,115 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type ClientHelpers struct { + w writer.GoWriter + Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *ClientHelpers) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + clientOptionType := "ClientOption" + + g.w.W("type Option func (*opts)\n\n") + + g.w.W("type opts struct {\n") + + g.w.W("}\n\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + name := LcNameIfaceMethod(iface, m) + clientOptType := name + "Opts" + + g.w.W("type %s struct { opts }\n\n", clientOptType) + } + } + + g.w.W("type %s func(*clientOpts)\n", clientOptionType) + + g.w.W("func GenericClientOptions(opt ...Option) %s {\nreturn func(c *clientOpts) {\nfor _, o := range opt {\no(&c.genericOpts)\n}\n}\n}\n\n", clientOptionType) + + g.w.W("type clientOpts struct {\n") + g.w.W("genericOpts opts\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + g.w.W("%[1]s %[1]s\n", LcNameWithAppPrefix(iface)+m.Name.Value+"Opts") + } + } + + g.w.W("}\n\n") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + for _, m := range ifaceType.Methods { + clientOptName := LcNameIfaceMethod(iface, m) + "Opts" + clientOptFuncName := UcNameIfaceMethod(iface, m) + g.w.W("func %sOptions(opt ...Option) ClientOption {\nreturn func(c *clientOpts) {\nfor _, o := range opt {\no(&c.%s.opts)\n}\n}\n}\n\n", clientOptFuncName, clientOptName) + } + } + + g.w.W("type httpError struct {\n") + g.w.W("code int\n") + g.w.W("}\n") + + httpPkg := importer.Import("http", "net/http") + g.w.W("func (e *httpError) Error() string {\nreturn %s.StatusText(e.code)\n}\n", httpPkg) + + g.w.W("func (e *httpError) StatusCode() int {\nreturn e.code\n}\n") + + errorDecodeParams := []string{"code", "int", "errCode", "string"} + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + for _, m := range ifaceType.Methods { + + g.w.W("func %sErrorDecode(", LcNameIfaceMethod(iface, m)) + + for i := 0; i < len(errorDecodeParams); i += 2 { + if i > 0 { + g.w.W(",") + } + g.w.W("%s %s", errorDecodeParams[i], errorDecodeParams[i+1]) + } + + g.w.W(") (err error) {\n") + + g.w.W("switch code {\n") + g.w.W("default:\nerr = &httpError{code: code}\n") + + g.w.W("}\n") + g.w.W("return\n") + g.w.W("}\n") + } + } + + return g.w.Bytes() +} + +func (g *ClientHelpers) Package() string { + return g.Pkg +} + +func (g *ClientHelpers) OutputPath() string { + return g.Output +} + +func (g *ClientHelpers) Filename() string { + return "client_helpers.go" +} diff --git a/v3/internal/plugin/echo/generator/client_rest.go b/v3/internal/plugin/echo/generator/client_rest.go new file mode 100644 index 00000000..4b845f95 --- /dev/null +++ b/v3/internal/plugin/echo/generator/client_rest.go @@ -0,0 +1,86 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type ClientGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *ClientGenerator) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + //fmtPkg := importer.Import("fmt", "fmt") + //contextPkg := importer.Import("context", "context") + urlPkg := importer.Import("url", "net/url") + netPkg := importer.Import("net", "net") + stringsPkg := importer.Import("strings", "strings") + //jsonPkg := importer.Import("json", "encoding/json") + //httpPkg = importer.Import("http", "net/http") + + //g.w.W("type clientErrorWrapper struct {\n") + //g.w.W("Error string `json:\"error\"`\n") + //g.w.W("Code string `json:\"code,omitempty\"`\n") + //g.w.W("Data interface{} `json:\"data,omitempty\"`\n") + //g.w.W("}\n") + + for _, iface := range g.Interfaces { + //ifaceType := iface.Named.Type.(*option.IfaceType) + clientType := ClientType(iface) + + constructPostfix := UcNameWithAppPrefix(iface) + if len(g.Interfaces) == 1 { + constructPostfix = "" + } + + g.w.W("func NewClientREST%s(tgt string", constructPostfix) + g.w.W(" ,options ...ClientOption") + g.w.W(") (*%s, error) {\n", clientType) + g.w.W("opts := &clientOpts{}\n") + + g.w.W("for _, o := range options {\n") + g.w.W("o(opts)\n") + g.w.W("}\n") + + g.w.W("if %s.HasPrefix(tgt, \"[\") {\n", stringsPkg) + g.w.W("host, port, err := %s.SplitHostPort(tgt)\n", netPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err\n") + }) + g.w.W("tgt = host + \":\" + port\n") + g.w.W("}\n") + + g.w.W("u, err := %s.Parse(tgt)\n", urlPkg) + + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err") + }) + + g.w.W("if u.Scheme == \"\" {\n") + g.w.W("u.Scheme = \"https\"\n") + g.w.W("}\n") + + g.w.W("return &%s{u: u}, nil\n}\n\n", clientType) + } + return g.w.Bytes() +} + +func (g *ClientGenerator) Package() string { + return g.Pkg +} + +func (g *ClientGenerator) OutputPath() string { + return g.Output +} + +func (g *ClientGenerator) Filename() string { + return "rest_client.go" +} diff --git a/v3/internal/plugin/echo/generator/client_struct.go b/v3/internal/plugin/echo/generator/client_struct.go new file mode 100644 index 00000000..826a47a7 --- /dev/null +++ b/v3/internal/plugin/echo/generator/client_struct.go @@ -0,0 +1,433 @@ +package generator + +import ( + "context" + "path" + "strconv" + "strings" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/internal/format" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type varType struct { + p *option.VarType + value string + required bool +} + +type ClientStruct struct { + w writer.GoWriter + Interfaces []*config.Interface + MethodOptions map[string]config.MethodOptions + Output string + Pkg string +} + +func (g *ClientStruct) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + httpPkg := importer.Import("http", "net/http") + jsonPkg := importer.Import("json", "encoding/json") + fmtPkg := importer.Import("fmt", "fmt") + + if len(g.Interfaces) > 1 { + g.w.W("type AppClient struct {\n") + + for _, iface := range g.Interfaces { + g.w.W("%s *%s\n", UcNameWithAppPrefix(iface), ClientType(iface)) + } + g.w.W("}\n\n") + + g.w.W("func NewClientREST(tgt string") + + g.w.W(" ,opts ...ClientOption") + g.w.W(") (*AppClient, error) {\n") + + for _, iface := range g.Interfaces { + name := UcNameWithAppPrefix(iface) + lcName := LcNameWithAppPrefix(iface) + g.w.W("%s, err := NewClientREST%s(tgt, opts...)\n", lcName, name) + g.w.WriteCheckErr("err", func() { + g.w.W("return nil, err") + }) + } + + g.w.W("return &AppClient{\n") + for _, iface := range g.Interfaces { + g.w.W("%[1]s: %[2]s,\n", UcNameWithAppPrefix(iface), LcNameWithAppPrefix(iface)) + } + g.w.W("}, nil\n") + g.w.W("}\n\n") + } + + if len(g.Interfaces) > 0 { + urlPkg := importer.Import("url", "net/url") + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + + clientType := ClientType(iface) + g.w.W("type %s struct {\nu *%s.URL}\n\n", clientType, urlPkg) + + for _, m := range ifaceType.Methods { + mOpt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] + + httpMethod := mOpt.RESTMethod.Take() + if httpMethod == "" { + httpMethod = "GET" + } + + bodyType := mOpt.RESTBodyType.Take() + if bodyType == "" { + bodyType = "json" + } + + var pathStr string + if mOpt.RESTPath.IsValid() { + pathStr = mOpt.RESTPath.Take() + } else { + pathStr = path.Join("/", strcase.ToKebab(m.Name.Value)) + } + + if iface.Namespace != "" { + pathStr = path.Join("/", strcase.ToKebab(iface.Namespace), "/", pathStr) + } + + var ( + pathVars []*option.VarType + queryVars []*option.VarType + headerVars []*option.VarType + paramVars []*option.VarType + ) + + methodQueryVars := make(map[string]varType, len(mOpt.RESTQueryVars.Value)) + for i := 0; i < len(mOpt.RESTQueryVars.Value); i += 2 { + queryName := mOpt.RESTQueryVars.Value[i] + fieldName := mOpt.RESTQueryVars.Value[i+1] + var required bool + if stdstrings.HasPrefix(queryName, "!") { + queryName = queryName[1:] + required = true + } + methodQueryVars[fieldName] = varType{ + value: queryName, + required: required, + } + } + + methodQueryValues := make(map[string]string, len(mOpt.RESTQueryValues.Value)) + for i := 0; i < len(mOpt.RESTQueryValues.Value); i += 2 { + queryName := mOpt.RESTQueryValues.Value[i] + value := mOpt.RESTQueryValues.Value[i+1] + methodQueryValues[queryName] = value + } + + methodHeaderVars := make(map[string]string, len(mOpt.RESTHeaderVars.Value)) + for i := 0; i < len(mOpt.RESTHeaderVars.Value); i += 2 { + headerName := mOpt.RESTHeaderVars.Value[i] + fieldName := mOpt.RESTHeaderVars.Value[i+1] + methodHeaderVars[fieldName] = headerName + } + + for _, p := range m.Sig.Params { + if plugin.IsContext(p) { + continue + } + if regexp, ok := mOpt.RESTPathVars[p.Name.Value]; ok { + if regexp != "" { + regexp = ":" + regexp + } + pathStr = stdstrings.Replace(pathStr, "{"+p.Name.Value+regexp+"}", "%s", -1) + pathVars = append(pathVars, p) + } else if _, ok := methodQueryVars[p.Name.Value]; ok { + queryVars = append(queryVars, p) + } else if _, ok := methodHeaderVars[p.Name.Value]; ok { + headerVars = append(headerVars, p) + } else { + paramVars = append(paramVars, p) + } + } + + resultLen := plugin.LenWithoutErrors(m.Sig.Results) + + //var responseType string + //if m.Sig.IsNamed && resultsLen > 1 { + // responseType = NameResponse(m, iface) + //} else { + // responseType = swipe.TypeString(m.Sig.Results[0].Type, false, importer) + //} + + g.w.W("func (c *%s) %s %s {\n", clientType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) + + if resultLen > 0 { + g.w.W("var response ") + + if m.Sig.IsNamed && resultLen > 1 { + g.w.W("struct{\n") + for _, param := range m.Sig.Results { + if plugin.IsError(param) { + continue + } + g.w.W("%s %s `json:\"%s\"`\n", param.Name.Upper(), swipe.TypeString(param.Type, false, importer), param.Name) + } + g.w.W("}\n") + } else { + g.w.W("%s\n", swipe.TypeString(m.Sig.Results[0].Type, false, importer)) + } + } + + pathVarNames := make([]string, 0, len(pathVars)) + for _, p := range pathVars { + name := p.Name.Value + "Str" + pathVarNames = append(pathVarNames, name) + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar(p.Name.Value). + SetFieldType(p.Type). + Write(&g.w) + } + + if len(paramVars) > 0 { + g.w.W("var req = map[string]interface{}{\n") + for _, param := range paramVars { + if plugin.IsContext(param) { + continue + } + g.w.W("%s: %s,", strconv.Quote(param.Name.Value), param.Name.Value) + } + g.w.W("\n}\n\n") + } + + g.w.W("r, err := %s.NewRequest(%s, ", httpPkg, strconv.Quote(httpMethod)) + + g.w.W("c.u.String()+") + + if len(pathVars) > 0 { + g.w.W("%s.Sprintf(%s, %s)", fmtPkg, strconv.Quote(pathStr), stdstrings.Join(pathVarNames, ", ")) + } else { + g.w.W(strconv.Quote(pathStr)) + } + g.w.W(", nil)\n") + + g.w.WriteCheckErr("err", func() { + g.w.W("return\n") + }) + + if len(queryVars) > 0 || len(methodQueryValues) > 0 { + g.w.W("q := r.URL.Query()\n") + + for _, queryVar := range queryVars { + if named, ok := queryVar.Type.(*option.NamedType); ok { + if st, ok := named.Type.(*option.StructType); ok { + for _, field := range st.Fields { + var isPointer bool + valueVar := field.Var.Name.Value + name := field.Var.Name.Lower() + "Str" + if t, ok := field.Var.Type.(*option.BasicType); ok { + if t.IsPointer { + isPointer = true + } + } + if isPointer { + g.w.W("if %s != nil {\n", valueVar) + } + + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar(queryVar.Name.Value + "." + valueVar). + SetFieldType(field.Var.Type). + Write(&g.w) + + g.w.W("q.Add(%s, %s)\n", strconv.Quote(field.Var.Name.Lower()), name) + + if isPointer { + g.w.W("}\n") + } + } + } + } else { + var isPointer bool + valueVar := queryVar.Name.Value + name := queryVar.Name.Value + "Str" + if t, ok := queryVar.Type.(*option.BasicType); ok { + if t.IsPointer { + isPointer = true + } + } + if isPointer { + g.w.W("if %s != nil {\n", valueVar) + } + + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar(valueVar). + SetFieldType(queryVar.Type). + Write(&g.w) + + g.w.W("q.Add(%s, %s)\n", strconv.Quote(methodQueryVars[queryVar.Name.Value].value), name) + + if isPointer { + g.w.W("}\n") + } + } + } + if len(methodQueryValues) > 0 { + for k, v := range methodQueryValues { + g.w.W("q.Add(%s, %s)\n", strconv.Quote(k), strconv.Quote(v)) + } + } + g.w.W("r.URL.RawQuery = q.Encode()\n") + } + + paramsLen := plugin.LenWithoutContexts(m.Sig.Params) + if paramsLen > 0 { + switch stdstrings.ToUpper(httpMethod) { + case "POST", "PUT", "PATCH": + switch bodyType { + case "json": + g.w.W("r.Header.Set(\"Content-Type\", \"application/json\")\n") + + if wrapRequest := mOpt.RESTWrapRequest.Take(); wrapRequest != "" { + reqData, structPath := wrapDataClient(stdstrings.Split(wrapRequest, "."), "test") + g.w.W("var wrapReq %s\n", reqData) + g.w.W("wrapReq.%s = req\n", structPath) + g.w.W("data, err := %s.Marshal(wrapReq)\n", jsonPkg) + } else { + g.w.W("data, err := %s.Marshal(req)\n", jsonPkg) + } + + g.w.WriteCheckErr("err", func() { + g.w.W("err = %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\nreturn\n", fmtPkg) + }) + + ioutilPkg := importer.Import("ioutil", "io/ioutil") + bytesPkg := importer.Import("bytes", "bytes") + g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + + case "urlencoded": + ioutilPkg := importer.Import("ioutil", "io/ioutil") + urlPkg := importer.Import("url", "url") + + bytesPkg := importer.Import("bytes", "bytes") + g.w.W("r.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n") + g.w.W("params := %s.Values{}\n", urlPkg) + for _, p := range paramVars { + name := p.Name.Value + "Str" + + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar("req." + p.Name.Upper()). + SetFieldType(p.Type). + Write(&g.w) + + g.w.W("params.Set(\"data\", %s)\n", name) + } + g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) + case "multipart": + bytesPkg := importer.Import("bytes", "bytes") + multipartPkg := importer.Import("multipart", "mime/multipart") + ioutilPkg := importer.Import("ioutil", "io/ioutil") + + g.w.W("body := new(%s.Buffer)\n", bytesPkg) + g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) + + for _, p := range paramVars { + if isFileUploadType(p.Type) { + g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) + g.w.WriteCheckErr("err", func() { + g.w.W("return err\n") + }) + g.w.W("part.Write(data)\n") + continue + } + name := p.Name.Value + "Str" + + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar("req." + p.Name.Upper()). + SetFieldType(p.Type). + Write(&g.w) + + g.w.W("_ = writer.WriteField(%s, %s)\n", strconv.Quote(p.Name.Value), name) + } + g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") + + g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) + + g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") + } + } + } + + for _, p := range headerVars { + name := p.Name.Value + "Str" + format.NewBuilder(importer). + SetAssignVar(name). + SetValueVar(p.Name.Value). + SetFieldType(p.Type). + Write(&g.w) + + g.w.W("r.Header.Add(%s, %s)\n", strconv.Quote(methodHeaderVars[p.Name.Value]), name) + } + + g.w.W("resp, err := %s.DefaultClient.Do(r)\n", httpPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return\n") + }) + + g.w.W("if resp.StatusCode > 299 {\n") + g.w.W("err = %sErrorDecode(resp.StatusCode, resp.Status)\n", LcNameIfaceMethod(iface, m)) + g.w.W("return\n") + g.w.W("}\n") + + if resultLen > 0 { + g.w.W("err = %s.NewDecoder(resp.Body).Decode(&response)\n", jsonPkg) + g.w.WriteCheckErr("err", func() { + g.w.W("return\n") + }) + if m.Sig.IsNamed && resultLen > 1 { + var results []string + for _, result := range m.Sig.Results { + if plugin.IsError(result) { + continue + } + results = append(results, "response."+result.Name.Upper()) + } + g.w.W("return %s, nil\n", strings.Join(results, ",")) + } else { + g.w.W("return response, nil\n") + } + } else { + g.w.W("return\n") + } + + g.w.W("}\n\n") + } + } + } + return g.w.Bytes() +} + +func (g *ClientStruct) Package() string { + return g.Pkg +} + +func (g *ClientStruct) OutputPath() string { + return g.Output +} + +func (g *ClientStruct) Filename() string { + return "client_struct.go" +} diff --git a/v3/internal/plugin/echo/generator/helpers.go b/v3/internal/plugin/echo/generator/helpers.go index ee285940..acff21ac 100644 --- a/v3/internal/plugin/echo/generator/helpers.go +++ b/v3/internal/plugin/echo/generator/helpers.go @@ -1,7 +1,14 @@ package generator import ( + "container/list" + "fmt" + stdstrings "strings" + + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" "github.com/swipe-io/swipe/v3/option" ) @@ -34,3 +41,86 @@ func LcNameWithAppPrefix(iface *config.Interface, notInternal ...bool) string { func LcNameIfaceMethod(iface *config.Interface, fn *option.FuncType) string { return LcNameWithAppPrefix(iface) + fn.Name.Upper() } + +func UcNameIfaceMethod(iface *config.Interface, fn *option.FuncType) string { + return UcNameWithAppPrefix(iface) + fn.Name.Upper() +} + +func ClientType(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "Client" +} + +func findContextVar(vars option.VarsType) (v *option.VarType) { + for _, p := range vars { + if plugin.IsContext(p) { + v = p + break + } + } + return +} + +func findErrorVar(vars option.VarsType) (v *option.VarType) { + for _, p := range vars { + if plugin.IsError(p) { + v = p + break + } + } + return +} + +func wrapDataClientRecursive(e *list.Element, responseType string) (out string) { + value := e.Value.(string) + out += strcase.ToCamel(value) + if next := e.Next(); next != nil { + out += " struct {\n" + out += wrapDataClientRecursive(next, responseType) + out += "} `json:\"" + value + "\"`" + } else { + out += fmt.Sprintf(" %s `json:\"%s\"`\n", responseType, e.Value) + } + return +} + +func wrapDataClient(parts []string, responseType string) (result, structPath string) { + paths := make([]string, 0, len(parts)) + l := list.New() + if len(parts) > 0 { + paths = append(paths, strcase.ToCamel(parts[0])) + e := l.PushFront(parts[0]) + for i := 1; i < len(parts); i++ { + paths = append(paths, strcase.ToCamel(parts[i])) + e = l.InsertAfter(parts[i], e) + } + } + structPath = stdstrings.Join(paths, ".") + result += "struct { " + result += wrapDataClientRecursive(l.Front(), responseType) + result += "}" + return + +} + +func isFileUploadType(i interface{}) bool { + if n, ok := i.(*option.NamedType); ok { + if iface, ok := n.Type.(*option.IfaceType); ok { + var done int + for _, method := range iface.Methods { + sigStr := swipe.TypeStringWithoutImport(method, true) + switch sigStr { + case "Close() (error)", "Name() (string)", "Read([]byte) (int, error)": + done++ + } + } + if done == 3 { + return true + } + } + } + return false +} + +func IfaceMiddlewareTypeName(iface *config.Interface) string { + return UcNameWithAppPrefix(iface) + "Middleware" +} diff --git a/v3/internal/plugin/echo/generator/interface.go b/v3/internal/plugin/echo/generator/interface.go new file mode 100644 index 00000000..e90bdf0d --- /dev/null +++ b/v3/internal/plugin/echo/generator/interface.go @@ -0,0 +1,53 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type InterfaceGenerator struct { + w writer.GoWriter + Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *InterfaceGenerator) Package() string { + return g.Pkg +} + +func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + ifaceTypeName := NameInterface(iface) + middlewareChainName := UcNameWithAppPrefix(iface) + "MiddlewareChain" + middlewareTypeName := IfaceMiddlewareTypeName(iface) + + g.w.W("type %s interface {\n", ifaceTypeName) + for _, m := range ifaceType.Methods { + g.w.W(m.Name.Value) + g.w.W(swipe.TypeString(m.Sig, false, importer)) + g.w.W("\n") + } + g.w.W("}\n") + + g.w.W("type %[1]s func(%[2]s) %[2]s\n", middlewareTypeName, ifaceTypeName) + + g.w.W("func %[1]s(outer %[2]s, others ...%[2]s) %[2]s {return func(next %[3]s) %[3]s {\n\t\tfor i := len(others) - 1; i >= 0; i-- {\nnext = others[i](next)\n}\nreturn outer(next)\n}\n}\n", middlewareChainName, middlewareTypeName, ifaceTypeName) + } + return g.w.Bytes() +} + +func (g *InterfaceGenerator) OutputPath() string { + return g.Output +} + +func (g *InterfaceGenerator) Filename() string { + return "interface.go" +} diff --git a/v3/internal/plugin/echo/generator/logging.go b/v3/internal/plugin/echo/generator/logging.go new file mode 100644 index 00000000..feb114fc --- /dev/null +++ b/v3/internal/plugin/echo/generator/logging.go @@ -0,0 +1,63 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/writer" + + "github.com/swipe-io/swipe/v3/option" + + "github.com/swipe-io/swipe/v3/swipe" + + "github.com/swipe-io/swipe/v3/internal/logging" + + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" +) + +type Logging struct { + w writer.GoWriter + Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *Logging) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + var interfaces []logging.Interface + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + loggingInterface := logging.Interface{ + TypeName: NameInterface(iface), + LcName: LcNameWithAppPrefix(iface), + UcName: UcNameWithAppPrefix(iface), + } + for _, method := range ifaceType.Methods { + loggingInterface.Methods = append(loggingInterface.Methods, logging.Method{ + Name: method.Name, + Sig: method.Sig, + ParamsIncludes: nil, + ParamsExcludes: nil, + ParamsContexts: nil, + }) + } + interfaces = append(interfaces, loggingInterface) + } + + data := logging.NewLogging(importer).SetInterfaces(interfaces).Build() + _, _ = g.w.Write(data) + + return g.w.Bytes() +} + +func (g *Logging) Package() string { + return g.Pkg +} + +func (g *Logging) OutputPath() string { + return g.Output +} + +func (g *Logging) Filename() string { + return "logging.go" +} diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go index 523ded98..65fdd44a 100644 --- a/v3/internal/plugin/echo/generator/routes.go +++ b/v3/internal/plugin/echo/generator/routes.go @@ -28,10 +28,7 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { echoPkg := importer.Import("echo", "github.com/labstack/echo/v4") httpPkg := importer.Import("http", "net/http") - contextPkg := importer.Import("context", "context") - timePkg := importer.Import("time", "time") - g.writeContextWrapper(echoPkg, contextPkg, timePkg) g.writeDefaultErrorEncoder(echoPkg, httpPkg) g.writeEncodeResponseFunc(echoPkg, httpPkg) @@ -89,6 +86,8 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("opts := &serverOpts{}\nfor _, o := range options {\no(opts)\n}\n") + var contextParamFound bool + for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) paramName := iface.Named.Name.Lower() @@ -178,6 +177,7 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { } if paramContext != nil { + contextParamFound = true g.w.W("req.%s = &contextWrapper{ctx: ctx, next: ctx.Request().Context()}\n", paramContext.Name.Upper()) } @@ -335,12 +335,18 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil\n") } - g.w.W("}, append(opts.generic%s.middlewares, opts.%s.middlewares...)...)\n", UcNameWithAppPrefix(iface)+"Opts", LcNameIfaceMethod(iface, m)+"Opts") + g.w.W("}, append(append(opts.genericOpts.middlewares, opts.generic%s.middlewares...), opts.%s.middlewares...)...)\n", UcNameWithAppPrefix(iface)+"Opts", LcNameIfaceMethod(iface, m)+"Opts") } } g.w.W("\n}\n") + if contextParamFound { + contextPkg := importer.Import("context", "context") + timePkg := importer.Import("time", "time") + g.writeContextWrapper(echoPkg, contextPkg, timePkg) + } + return g.w.Bytes() } diff --git a/v3/internal/plugin/echo/plugin.go b/v3/internal/plugin/echo/plugin.go index 321ac89b..2af03458 100644 --- a/v3/internal/plugin/echo/plugin.go +++ b/v3/internal/plugin/echo/plugin.go @@ -1,7 +1,10 @@ package echo import ( + "path/filepath" + "github.com/mitchellh/mapstructure" + "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/finder" "github.com/swipe-io/swipe/v3/internal/plugin" @@ -78,11 +81,45 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } func (p *Plugin) Generators() ([]swipe.Generator, []error) { + var pkg string + generators := []swipe.Generator{ &generator.RoutesGenerator{ Interfaces: p.config.Interfaces, MethodOptions: p.config.MethodOptionsMap, }, + &generator.InterfaceGenerator{ + Interfaces: p.config.Interfaces, + }, + &generator.Logging{ + Interfaces: p.config.Interfaces, + }, + } + if p.config.ClientEnable != nil { + output := p.config.ClientOutput.Take() + if output == "" { + output = "./client" + } + pkg = strcase.ToSnake(filepath.Base(output)) + + generators = append(generators, + &generator.ClientHelpers{ + Interfaces: p.config.Interfaces, + Output: p.config.ClientOutput.Take(), + Pkg: pkg, + }, + &generator.ClientStruct{ + Interfaces: p.config.Interfaces, + MethodOptions: p.config.MethodOptionsMap, + Output: p.config.ClientOutput.Take(), + Pkg: pkg, + }, + &generator.ClientGenerator{ + Interfaces: p.config.Interfaces, + Output: p.config.ClientOutput.Take(), + Pkg: pkg, + }, + ) } if p.config.OpenapiEnable != nil { generators = append(generators, &generator.Openapi{ diff --git a/v3/internal/plugin/gokit/config/config.go b/v3/internal/plugin/gokit/config/config.go index e45ce4dd..383687b5 100644 --- a/v3/internal/plugin/gokit/config/config.go +++ b/v3/internal/plugin/gokit/config/config.go @@ -50,6 +50,10 @@ type Aggregate struct { Results option.SliceStringValue `swipe:"option"` } +type MethodErrorDecode struct { + Fn *option.NamedType +} + type MethodOptions struct { Instrumenting option.BoolValue `swipe:"option"` Logging option.BoolValue `swipe:"option"` @@ -65,6 +69,8 @@ type MethodOptions struct { RESTQueryValues option.SliceStringValue `swipe:"option"` RESTPathVars map[string]string `swipe:"option"` RESTBodyType option.StringValue `swipe:"option"` + ErrorDecode MethodErrorDecode `swipe:"option"` + //Aggregate []Aggregate `swipe:"option"` } diff --git a/v3/internal/plugin/gokit/config/config_gen.go b/v3/internal/plugin/gokit/config/config_gen.go index ed9526c4..92a84bf9 100644 --- a/v3/internal/plugin/gokit/config/config_gen.go +++ b/v3/internal/plugin/gokit/config/config_gen.go @@ -1,5 +1,5 @@ package config func (*Config) Options() []byte { - return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// InstrumentingLabels ...\n// @type:\"repeat\"\nfunc InstrumentingLabels(key interface{}, name string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") + return []byte("// Gokit\nfunc Gokit(opts ...GokitOption) {}\n\n// GokitOption ...\ntype GokitOption string\n\n// HTTPServer ...\nfunc HTTPServer() GokitOption { return \"implementation not generated, run swipe\" }\n\n// HTTPFast ...\nfunc HTTPFast() GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientsEnable ...\nfunc ClientsEnable(langs []string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// ClientOutput ...\nfunc ClientOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLEnable ...\nfunc CURLEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLOutput ...\nfunc CURLOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// CURLURL ...\nfunc CURLURL(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCEnable ...\nfunc JSONRPCEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCPath ...\nfunc JSONRPCPath(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocEnable ...\nfunc JSONRPCDocEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// JSONRPCDocOutput ...\nfunc JSONRPCDocOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// InterfaceOption ...\ntype InterfaceOption string\n\n// ClientName ...\nfunc ClientName(value string) InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Gateway ...\nfunc Gateway() InterfaceOption { return \"implementation not generated, run swipe\" }\n\n// Interface ...\n// @type:\"repeat\"\nfunc Interface(iface interface{}, ns string, opts ...InterfaceOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiEnable ...\nfunc OpenapiEnable() GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiTags ...\n// @type:\"repeat\"\nfunc OpenapiTags(methods []interface{}, tags []string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiOutput ...\nfunc OpenapiOutput(value string) GokitOption { return \"implementation not generated, run swipe\" }\n\n// OpenapiInfo ...\nfunc OpenapiInfo(title string, description string, version interface{}) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiContact ...\nfunc OpenapiContact(name string, email string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiLicence ...\nfunc OpenapiLicence(name string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// OpenapiServer ...\n// @type:\"repeat\"\nfunc OpenapiServer(description string, url string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptionsOption ...\ntype MethodOptionsOption string\n\n// Instrumenting ...\nfunc Instrumenting(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// Logging ...\nfunc Logging(value bool) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// LoggingParams ...\nfunc LoggingParams(includes []string, excludes []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// LoggingContext ...\n// @type:\"repeat\"\nfunc LoggingContext(key interface{}, name string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMethod ...\nfunc RESTMethod(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapResponse ...\nfunc RESTWrapResponse(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTWrapRequest ...\nfunc RESTWrapRequest(value string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTPath ...\nfunc RESTPath(value interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTMultipartMaxMemory ...\nfunc RESTMultipartMaxMemory(value int64) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTHeaderVars ...\nfunc RESTHeaderVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryVars ...\nfunc RESTQueryVars(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTQueryValues ...\nfunc RESTQueryValues(value []string) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// RESTBodyType ...\nfunc RESTBodyType(value string) MethodOptionsOption { return \"implementation not generated, run swipe\" }\n\n// ErrorDecode ...\nfunc ErrorDecode(fn interface{}) MethodOptionsOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodOptions ...\n// @type:\"repeat\"\nfunc MethodOptions(signature interface{}, opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// MethodDefaultOptions ...\nfunc MethodDefaultOptions(opts ...MethodOptionsOption) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n\n// InstrumentingLabels ...\n// @type:\"repeat\"\nfunc InstrumentingLabels(key interface{}, name string) GokitOption {\n\treturn \"implementation not generated, run swipe\"\n}\n") } diff --git a/v3/internal/plugin/gokit/generator/endpoint.go b/v3/internal/plugin/gokit/generator/endpoint.go index d262851a..9444e1db 100644 --- a/v3/internal/plugin/gokit/generator/endpoint.go +++ b/v3/internal/plugin/gokit/generator/endpoint.go @@ -14,7 +14,6 @@ import ( type Endpoint struct { w writer.GoWriter Interfaces []*config.Interface - MethodOptions map[string]config.MethodOptions HTTPServerEnable bool Output string Pkg string diff --git a/v3/internal/plugin/gokit/generator/helpers.go b/v3/internal/plugin/gokit/generator/helpers.go index 06dfd475..2cbf7e82 100644 --- a/v3/internal/plugin/gokit/generator/helpers.go +++ b/v3/internal/plugin/gokit/generator/helpers.go @@ -585,7 +585,7 @@ func singular(word string) string { return pluralize.NewClient().Singular(word) } -func isFileUploadType(i interface{}, importer swipe.Importer) bool { +func isFileUploadType(i interface{}) bool { if n, ok := i.(*option.NamedType); ok { if iface, ok := n.Type.(*option.IfaceType); ok { var done int diff --git a/v3/internal/plugin/gokit/generator/interface.go b/v3/internal/plugin/gokit/generator/interface.go index 8b184a13..6f15d7c0 100644 --- a/v3/internal/plugin/gokit/generator/interface.go +++ b/v3/internal/plugin/gokit/generator/interface.go @@ -16,15 +16,9 @@ type InterfaceGenerator struct { Pkg string } -func (g *InterfaceGenerator) Package() string { - return g.Pkg -} - func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - g.w.W("type downloader interface {\nContentType() string\nData() []byte\n}\n\n") - for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) ifaceTypeName := NameInterface(iface) @@ -46,6 +40,10 @@ func (g *InterfaceGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } +func (g *InterfaceGenerator) Package() string { + return g.Pkg +} + func (g *InterfaceGenerator) OutputPath() string { return g.Output } diff --git a/v3/internal/plugin/gokit/generator/jsonrpc_server.go b/v3/internal/plugin/gokit/generator/jsonrpc_server.go index ab549d20..9137290f 100644 --- a/v3/internal/plugin/gokit/generator/jsonrpc_server.go +++ b/v3/internal/plugin/gokit/generator/jsonrpc_server.go @@ -12,11 +12,10 @@ import ( ) type JSONRPCServerGenerator struct { - w writer.GoWriter - UseFast bool - Interfaces []*config.Interface - MethodOptions map[string]config.MethodOptions - JSONRPCPath string + w writer.GoWriter + UseFast bool + Interfaces []*config.Interface + JSONRPCPath string } func (g *JSONRPCServerGenerator) Generate(ctx context.Context) []byte { diff --git a/v3/internal/plugin/gokit/generator/logging.go b/v3/internal/plugin/gokit/generator/logging.go index 1c025bbb..89dd90a3 100644 --- a/v3/internal/plugin/gokit/generator/logging.go +++ b/v3/internal/plugin/gokit/generator/logging.go @@ -2,12 +2,8 @@ package generator import ( "context" - "fmt" - "strconv" - "strings" - - "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/internal/logging" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe" @@ -23,144 +19,40 @@ type Logging struct { func (g *Logging) Generate(ctx context.Context) []byte { importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - loggerPkg := importer.Import("log", "github.com/go-kit/log") - levelPkg := importer.Import("level", "github.com/go-kit/log/level") - - g.w.W("type errLevel interface {\n\tLevel() string\n}\n\n") - - g.w.W("func levelLogger(e errLevel, logger %[1]s.Logger) %[1]s.Logger {\n", loggerPkg) - g.w.W("switch e.Level() {\n") - g.w.W("default:\nreturn %s.Error(logger)\n", levelPkg) - g.w.W("case \"debug\":\nreturn %s.Debug(logger)\n", levelPkg) - g.w.W("case \"info\":\nreturn %s.Info(logger)\n", levelPkg) - g.w.W("case \"warn\":\nreturn %s.Warn(logger)\n", levelPkg) - g.w.W("}\n") - g.w.W("}\n\n") - + var interfaces []logging.Interface for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) - - ifaceTypeName := NameInterface(iface) - middlewareNameType := NameLoggingMiddleware(iface) - middlewareFuncName := fmt.Sprintf("Logging%sMiddleware", UcNameWithAppPrefix(iface)) - middlewareTypeName := IfaceMiddlewareTypeName(iface) - - g.w.WriteTypeStruct( - middlewareNameType, - []string{ - "next", ifaceTypeName, - "logger", loggerPkg + ".Logger", - }, - ) - - for _, m := range ifaceType.Methods { - mopt := g.MethodOptions[iface.Named.Name.Value+m.Name.Value] - - includes := map[string]struct{}{} - excludes := map[string]struct{}{} - - for _, v := range mopt.LoggingParams.Includes { - includes[v] = struct{}{} - } - for _, v := range mopt.LoggingParams.Excludes { - excludes[v] = struct{}{} - } - - logParams := makeLogParams(includes, excludes, m.Sig.Params...) - - if len(mopt.LoggingContext) > 0 { - for _, lc := range mopt.LoggingContext { - logParams = append(logParams, strconv.Quote(lc.Name), "ctx.Value("+swipe.TypeString(lc.Key, false, importer)+")") - } - } - - var ( - logResults []string - errorVars []*option.VarType - ) - - for _, result := range m.Sig.Results { - if plugin.IsError(result) { - - errorVars = append(errorVars, result) - continue - } - logResults = append(logResults, makeLogParam(result.Name.Value, result.Type)...) + loggingInterface := logging.Interface{ + TypeName: NameInterface(iface), + LcName: LcNameWithAppPrefix(iface), + UcName: UcNameWithAppPrefix(iface), + } + for _, method := range ifaceType.Methods { + mopt := g.MethodOptions[iface.Named.Name.Value+method.Name.Value] + loggingMethod := logging.Method{ + Name: method.Name, + Sig: method.Sig, } - - g.w.W("func (s *%s) %s %s {\n", middlewareNameType, m.Name.Value, swipe.TypeString(m.Sig, false, importer)) - - if mopt.Logging.Take() && (len(logParams) > 0 || len(logResults) > 0 || len(errorVars) > 0) { - methodName := m.Name.Value - timePkg := importer.Import("time", "time") - - g.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - //var resultErr *option.VarType - for _, result := range m.Sig.Results { - if plugin.IsError(result) { - //resultErr = result - g.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name) - g.w.W("%s = logErr.LogError()\n", result.Name) - g.w.W("}\n") - } - } - g.w.W("logger := %s.WithPrefix(s.logger, \"method\",\"%s\",\"took\",%s.Since(now))\n", loggerPkg, methodName, timePkg) - - logParamsStr := strings.Join(logParams, ",") - logResultsStr := strings.Join(logResults, ",") - - if logParamsStr != "" { - logResultsStr = "," + logResultsStr - } - - if len(errorVars) > 0 { - for _, errorVar := range errorVars { - errLogStr := fmt.Sprintf("%s, %s", strconv.Quote(errorVar.Name.String()), errorVar.Name.String()) - if logParamsStr != "" { - errLogStr = "," + errLogStr - } - g.w.W("if %s != nil {\n", errorVar.Name) - g.w.W("if e, ok := %s.(errLevel); ok {\n", errorVar.Name) - g.w.W("logger = levelLogger(e, logger)\n") - g.w.W("} else {\n_ = %s.Error(logger).Log(%s)\n}\n", levelPkg, logParamsStr+errLogStr) - g.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) - } - } else { - g.w.W("_ = %s.Debug(logger).Log(%s)\n", levelPkg, logParamsStr+logResultsStr) - } + for _, loggingContext := range mopt.LoggingContext { + loggingMethod.ParamsContexts = append(loggingMethod.ParamsContexts, logging.ParamContext{ + Key: loggingContext.Key, + Name: loggingContext.Name, }) } - - if len(m.Sig.Results) > 0 { - for i, result := range m.Sig.Results { - if i > 0 { - g.w.W(",") - } - g.w.W(result.Name.Value) - } - g.w.W(" = ") + for _, param := range mopt.LoggingParams.Includes { + loggingMethod.ParamsIncludes = append(loggingMethod.ParamsIncludes, param) } - - g.w.W("s.next.%s(", m.Name) - for i, param := range m.Sig.Params { - if i > 0 { - g.w.W(",") - } - var variadic string - if param.IsVariadic { - variadic = "..." - } - g.w.W(param.Name.Value + variadic) + for _, param := range mopt.LoggingParams.Excludes { + loggingMethod.ParamsExcludes = append(loggingMethod.ParamsExcludes, param) } - g.w.W(")\n") - - g.w.W("return\n") - - g.w.W("}\n") + loggingInterface.Methods = append(loggingInterface.Methods, loggingMethod) } - - g.w.W("func %[1]s(logger %[4]s.Logger) %[5]s {\nreturn func(next %[2]s) %[2]s {\nreturn &%[3]s{\nnext: next,\nlogger: logger,\n}\n}\n}\n", middlewareFuncName, ifaceTypeName, middlewareNameType, loggerPkg, middlewareTypeName) + interfaces = append(interfaces, loggingInterface) } + + data := logging.NewLogging(importer).SetInterfaces(interfaces).Build() + _, _ = g.w.Write(data) + return g.w.Bytes() } diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 0ed0ae66..0b9bbed1 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -140,17 +140,22 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP g.w.W("func %sRespFn(_ %s.Context, r *%s.Response) (response interface{}, err error) {\n", LcNameIfaceMethod(iface, m), contextPkg, httpPkg) statusCode := "r.StatusCode" if g.UseFast { - statusCode = "r.StatusCode()" + statusCode = "r.StatusCode(r)" } g.w.W("if %s > 299 {\n", statusCode) - g.w.W("var errorData clientErrorWrapper\n") - g.w.W("if err := %s.NewDecoder(r.Body).Decode(&errorData); err != nil {\nreturn nil, err\n}\n", jsonPkg) - - g.w.W("return nil, ") - - g.w.W("%sErrorDecode(%s, errorData.Code)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) - + if mopt.ErrorDecode.Fn != nil { + pkgName := importer.Import(mopt.ErrorDecode.Fn.Pkg.Name, mopt.ErrorDecode.Fn.Pkg.Path) + if pkgName != "" { + pkgName = pkgName + "." + } + g.w.W("return %s%s(r)\n", pkgName, mopt.ErrorDecode.Fn.Name) + } else { + g.w.W("var errorData clientErrorWrapper\n") + g.w.W("if err := %s.NewDecoder(r.Body).Decode(&errorData); err != nil {\nreturn nil, err\n}\n", jsonPkg) + g.w.W("return nil, ") + g.w.W("%sErrorDecode(%s, errorData.Code)", LcNameWithAppPrefix(iface)+m.Name.Value, statusCode) + } g.w.W("\n}\n") resultsLen := plugin.LenWithoutErrors(m.Sig.Results) @@ -430,7 +435,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) for _, p := range paramVars { - if isFileUploadType(p.Type, importer) { + if isFileUploadType(p.Type) { g.w.W("part, err := writer.CreateFormFile(%s, req.%s.Name())\n", strconv.Quote(p.Name.Value), p.Name.Upper()) g.w.WriteCheckErr("err", func() { g.w.W("return err\n") diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index 14db3e45..f9f70681 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -431,7 +431,7 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { g.w.W("return nil, err\n") }) for _, paramVar := range paramVars { - if isFileUploadType(paramVar.Type, importer) { + if isFileUploadType(paramVar.Type) { osPkg := importer.Import("os", "os") if g.UseFast { @@ -529,6 +529,8 @@ func (g *RESTServerGenerator) Filename() string { } func (g *RESTServerGenerator) writeEncodeResponseFunc(contextPkg, httpPkg, jsonPkg string) { + g.w.W("type downloader interface {\nContentType() string\nData() []byte\n}\n\n") + g.w.W("func encodeResponseHTTP(ctx %s.Context, ", contextPkg) if g.UseFast { g.w.W("w *%s.Response", httpPkg) diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index f286fdf2..f3d1e7ed 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -142,7 +142,6 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { if output == "" { output = "./client" } - pkg = strcase.ToSnake(filepath.Base(output)) if p.config.CURLEnable != nil { @@ -190,7 +189,6 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { }, &generator.Endpoint{ Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, HTTPServerEnable: httpServerEnable, }, ) @@ -215,10 +213,9 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { } if jsonRPCEnable { generators = append(generators, &generator.JSONRPCServerGenerator{ - UseFast: useFast, - Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, - JSONRPCPath: p.config.JSONRPCPath.Take(), + UseFast: useFast, + Interfaces: p.config.Interfaces, + JSONRPCPath: p.config.JSONRPCPath.Take(), }) if jsClientEnable { generators = append(generators, &generator.JSONRPCJSClientGenerator{ @@ -262,7 +259,6 @@ func (p *Plugin) Generators() (generators []swipe.Generator, errs []error) { }, &generator.Endpoint{ Interfaces: p.config.Interfaces, - MethodOptions: p.config.MethodOptionsMap, HTTPServerEnable: httpServerEnable, Pkg: pkg, Output: output, diff --git a/v3/option/types.go b/v3/option/types.go index a840aac3..df426f29 100644 --- a/v3/option/types.go +++ b/v3/option/types.go @@ -124,6 +124,13 @@ func NewInt64Type() *BasicType { } } +func NewStringType() *BasicType { + return &BasicType{ + Name: "string", + kind: types.String, + } +} + type BasicType struct { Name string IsPointer bool From d88c587ff8e2131f68f73f96568050a5ec483311 Mon Sep 17 00:00:00 2001 From: vitaly Date: Wed, 12 Oct 2022 13:44:51 +0300 Subject: [PATCH 292/293] refactor: fixed incorrect error level setting --- v3/internal/logging/logging.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/internal/logging/logging.go b/v3/internal/logging/logging.go index 87168775..96400e74 100644 --- a/v3/internal/logging/logging.go +++ b/v3/internal/logging/logging.go @@ -134,7 +134,8 @@ func (l *Logging) Build() []byte { l.w.W("if %s != nil {\n", errorVar.Name) l.w.W("if e, ok := %s.(errLevel); ok {\n", errorVar.Name) l.w.W("logger = levelLogger(e, logger)\n") - l.w.W("} else {\n_ = %s.Error(logger).Log(%s)\n}\n", levelPkg, logParamsStr+errLogStr) + l.w.W("} else {\nlogger = %s.Error(logger)\n}\n", levelPkg) + l.w.W("_ = logger.Log(%s)\n", logParamsStr+errLogStr) l.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) } } else { From 73baf0df8b785db42fe750eb09dd3a10cf44e6fd Mon Sep 17 00:00:00 2001 From: vitaly Date: Thu, 10 Nov 2022 17:45:43 +0300 Subject: [PATCH 293/293] refactor: code improvements --- v3/Makefile | 2 +- v3/internal/logging/logging.go | 40 ++-- v3/internal/metric/helpers.go | 1 + v3/internal/metric/metric.go | 207 ++++++++++++++++++ .../plugin/echo/generator/client_struct.go | 15 +- v3/internal/plugin/echo/generator/logging.go | 10 +- v3/internal/plugin/echo/generator/metric.go | 59 +++++ v3/internal/plugin/echo/generator/routes.go | 37 ++-- v3/internal/plugin/echo/plugin.go | 3 + .../plugin/gokit/generator/rest_client.go | 29 +-- .../plugin/gokit/generator/rest_server.go | 4 +- v3/internal/plugin/gokit/plugin.go | 7 +- 12 files changed, 347 insertions(+), 67 deletions(-) create mode 100644 v3/internal/metric/helpers.go create mode 100644 v3/internal/metric/metric.go create mode 100644 v3/internal/plugin/echo/generator/metric.go diff --git a/v3/Makefile b/v3/Makefile index 43d2ec67..f856607b 100644 --- a/v3/Makefile +++ b/v3/Makefile @@ -7,7 +7,7 @@ default: build build: go mod download - go build -o $(GOPATH)/bin/swipe3 cmd/swipe/main.go + go build -o /opt/homebrew/bin/swipe3 cmd/swipe/main.go chglog: git-chglog -o CHANGELOG.md diff --git a/v3/internal/logging/logging.go b/v3/internal/logging/logging.go index 96400e74..9af33d2a 100644 --- a/v3/internal/logging/logging.go +++ b/v3/internal/logging/logging.go @@ -109,37 +109,41 @@ func (l *Logging) Build() []byte { timePkg := l.importer.Import("time", "time") l.w.WriteDefer([]string{"now " + timePkg + ".Time"}, []string{timePkg + ".Now()"}, func() { - for _, result := range m.Sig.Results { - if plugin.IsError(result) { - l.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", result.Name) - l.w.W("%s = logErr.LogError()\n", result.Name) - l.w.W("}\n") - } - } - l.w.W("logger := %[1]s.WithPrefix(s.logger, \"message\", \"call method - %[2]s\", \"method\",\"%[2]s\",\"took\",%[3]s.Since(now))\n", loggerPkg, methodName, timePkg) - logParamsStr := strings.Join(logParams, ",") logResultsStr := strings.Join(logResults, ",") - if logParamsStr != "" { - logResultsStr = "," + logResultsStr + if len(logParams) > 0 { + logParamsStr = ", " + logParamsStr } + l.w.W("logger := %[1]s.WithPrefix(s.logger, \"message\", \"call method - %[2]s\", \"method\",\"%[2]s\",\"took\",%[3]s.Since(now)%s)\n", loggerPkg, methodName, timePkg, logParamsStr) + + //if logParamsStr != "" { + // logResultsStr = "," + logResultsStr + //} + if len(errorVars) > 0 { for _, errorVar := range errorVars { - errLogStr := fmt.Sprintf("%s, %s", strconv.Quote(errorVar.Name.String()), errorVar.Name.String()) - if logParamsStr != "" { - errLogStr = "," + errLogStr - } + //errLogStr := fmt.Sprintf("%s, %s", strconv.Quote(errorVar.Name.String()), errorVar.Name.String()) + //if logParamsStr != "" { + // errLogStr = "," + errLogStr + //} l.w.W("if %s != nil {\n", errorVar.Name) l.w.W("if e, ok := %s.(errLevel); ok {\n", errorVar.Name) l.w.W("logger = levelLogger(e, logger)\n") l.w.W("} else {\nlogger = %s.Error(logger)\n}\n", levelPkg) - l.w.W("_ = logger.Log(%s)\n", logParamsStr+errLogStr) - l.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logParamsStr+logResultsStr) + + //l.w.W("logger = %s.WithPrefix(logger, %s)\n", loggerPkg, logParamsStr) + + l.w.W("if logErr, ok := %s.(interface{LogError() error}); ok {\n", errorVar.Name.String()) + l.w.W("_ = logger.Log(\"%s\", logErr.LogError())\n", errorVar.Name) + l.w.W("} else {\n") + l.w.W("_ = logger.Log(\"%[1]s\", %[1]s)\n", errorVar.Name) + l.w.W("}\n") + l.w.W("} else {\n_ = %s.Debug(logger).Log(%s)\n}\n", levelPkg, logResultsStr) } } else { - l.w.W("_ = %s.Debug(logger).Log(%s)\n", levelPkg, logParamsStr+logResultsStr) + l.w.W("_ = %s.Debug(logger).Log(%s)\n", levelPkg, logResultsStr) } }) } diff --git a/v3/internal/metric/helpers.go b/v3/internal/metric/helpers.go new file mode 100644 index 00000000..0bad30a0 --- /dev/null +++ b/v3/internal/metric/helpers.go @@ -0,0 +1 @@ +package metric diff --git a/v3/internal/metric/metric.go b/v3/internal/metric/metric.go new file mode 100644 index 00000000..7c195f4b --- /dev/null +++ b/v3/internal/metric/metric.go @@ -0,0 +1,207 @@ +package metric + +import ( + "strconv" + + "github.com/swipe-io/strcase" + "github.com/swipe-io/swipe/v3/internal/plugin" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Interface struct { + TypeName string + LcName string + UcName string + ModuleID string + Methods []Method +} + +type Label struct { + Name string + Key string +} + +type Method struct { + Name option.String + Sig *option.SignType + IsEnabled bool +} + +type Metric struct { + w writer.GoWriter + importer swipe.Importer + interfaces []Interface + isGateway bool + labels []Label +} + +func (m *Metric) SetLabels(labels []Label) *Metric { + m.labels = labels + return m +} + +func (m *Metric) SetIsGateway(isGateway bool) *Metric { + m.isGateway = isGateway + return m +} + +func (m *Metric) SetInterfaces(interfaces []Interface) *Metric { + m.interfaces = interfaces + return m +} + +func (m *Metric) Build() []byte { + if len(m.interfaces) == 0 { + return nil + } + + metricsPkg := m.importer.Import("metrics", "github.com/go-kit/kit/metrics") + timePkg := m.importer.Import("time", "time") + stdPrometheusPkg := m.importer.Import("prometheus", "github.com/prometheus/client_golang/prometheus") + kitPrometheusPkg := m.importer.Import("prometheus", "github.com/go-kit/kit/metrics/prometheus") + + m.w.W("type metricOpts struct {\n") + m.w.W("requestCount %s.Counter\n", metricsPkg) + m.w.W("requestLatency %s.Histogram\n", metricsPkg) + m.w.W("}\n\n") + + m.w.W("type MetricOption func(*metricOpts)\n\n") + + m.w.W("func MetricRequestLatency(requestLatency %s.Histogram) MetricOption {\nreturn func(o *metricOpts) {\no.requestLatency = requestLatency\n}\n}\n\n", metricsPkg) + m.w.W("func MetricRequestCount(requestCount %s.Counter) MetricOption {\nreturn func(o *metricOpts) {\no.requestCount = requestCount\n}\n}\n\n", metricsPkg) + + for _, iface := range m.interfaces { + ifaceName := iface.UcName + if m.isGateway { + ifaceName = strcase.ToCamel(iface.ModuleID) + ifaceName + } + ifaceTypeName := ifaceName + "Interface" + middlewareFuncName := "Metric" + ifaceName + "Middleware" + middlewareTypeName := ifaceName + "Middleware" + middlewareNameType := ifaceName + "MetricMiddleware" + + m.w.W("type %s struct {\n", middlewareNameType) + m.w.W("next %s\n", ifaceTypeName) + m.w.W("opts *metricOpts\n") + m.w.W("}\n\n") + + for _, method := range iface.Methods { + m.w.W("func (s *%s) %s %s {\n", middlewareNameType, method.Name.Value, swipe.TypeString(method.Sig, false, m.importer)) + + if method.IsEnabled { + + methodName := method.Name.Value + m.w.WriteDefer( + []string{"begin " + timePkg + ".Time"}, + []string{timePkg + ".Now()"}, + func() { + + m.w.W("requestCount := s.opts.requestCount.With(\"method\", \"%s\")\n", methodName) + m.w.W("requestLatency := s.opts.requestLatency.With(\"method\", \"%s\")\n", methodName) + + if len(m.labels) > 0 { + m.w.W("requestCount = requestCount.With(") + for i, l := range m.labels { + if i > 0 { + m.w.W(", ") + } + m.w.W("%s, ctx.Value(%s).(string)", strconv.Quote(l.Name), swipe.TypeString(l.Key, false, m.importer)) + } + m.w.W(")\n") + m.w.W("requestLatency = requestLatency.With(") + for i, l := range m.labels { + if i > 0 { + m.w.W(", ") + } + m.w.W("%s, ctx.Value(%s).(string)", strconv.Quote(l.Name), swipe.TypeString(l.Key, false, m.importer)) + } + m.w.W(")\n") + } + e := plugin.Error(method.Sig.Results) + if e != nil { + m.w.W("if %[1]s != nil {\nrequestCount.With(\"err\", %[1]s.Error()).Add(1)\n} else {\n", e.Name) + m.w.W("") + } + m.w.W("requestCount.With(\"err\", \"\").Add(1)\n") + if e != nil { + m.w.W("}\n") + } + m.w.W("requestLatency.Observe(%s.Since(begin).Seconds())\n", timePkg) + }, + ) + } + if len(method.Sig.Results) > 0 { + for i, result := range method.Sig.Results { + if i > 0 { + m.w.W(",") + } + m.w.W(result.Name.Value) + } + m.w.W(" = ") + } + + m.w.W("s.next.%s(", method.Name) + for i, param := range method.Sig.Params { + if i > 0 { + m.w.W(",") + } + var variadic string + if param.IsVariadic { + variadic = "..." + } + m.w.W(param.Name.Value + variadic) + } + m.w.W(")\n") + + m.w.W("return\n") + + m.w.W("}\n\n") + } + + m.w.W("func %[1]s(namespace, subsystem string, opts ...MetricOption) %[3]s {\nreturn func(next %[2]s) %[2]s {\n", middlewareFuncName, ifaceTypeName, middlewareTypeName) + + m.w.W("i := &%s{next: next, opts: &metricOpts{}}\n", middlewareNameType) + + m.w.W("for _, o := range opts {\no(i.opts)\n}\n") + + m.w.W("if i.opts.requestCount == nil {\n") + m.w.W("i.opts.requestCount = %s.NewCounterFrom(%s.CounterOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + m.w.W("Namespace: namespace,\n") + m.w.W("Subsystem: subsystem,\n") + m.w.W("Name: %s,\n", strconv.Quote("request_count")) + m.w.W("Help: %s,\n", strconv.Quote("Number of requests received.")) + + m.w.W("}, []string{\"method\", \"err\"") + + for _, l := range m.labels { + m.w.W(", %s", strconv.Quote(l.Name)) + } + + m.w.W("})\n") + + m.w.W("\n}\n") + + m.w.W("if i.opts.requestLatency == nil {\n") + m.w.W("i.opts.requestLatency = %s.NewSummaryFrom(%s.SummaryOpts{\n", kitPrometheusPkg, stdPrometheusPkg) + m.w.W("Namespace: namespace,\n") + m.w.W("Subsystem: subsystem,\n") + m.w.W("Name: %s,\n", strconv.Quote("request_latency_microseconds")) + m.w.W("Help: %s,\n", strconv.Quote("Total duration of requests in microseconds.")) + m.w.W("}, []string{\"method\"") + + for _, l := range m.labels { + m.w.W(", %s", strconv.Quote(l.Name)) + } + + m.w.W("})\n") + m.w.W("\n}\n") + m.w.W("return i\n}\n}\n") + } + return m.w.Bytes() +} + +func NewMetric(importer swipe.Importer) *Metric { + return &Metric{importer: importer} +} diff --git a/v3/internal/plugin/echo/generator/client_struct.go b/v3/internal/plugin/echo/generator/client_struct.go index 826a47a7..b23d0a46 100644 --- a/v3/internal/plugin/echo/generator/client_struct.go +++ b/v3/internal/plugin/echo/generator/client_struct.go @@ -307,13 +307,12 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { g.w.WriteCheckErr("err", func() { g.w.W("err = %s.Errorf(\"couldn't marshal request %%T: %%s\", req, err)\nreturn\n", fmtPkg) }) - - ioutilPkg := importer.Import("ioutil", "io/ioutil") + pkgIO := importer.Import("io", "io") bytesPkg := importer.Import("bytes", "bytes") - g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", pkgIO, bytesPkg) case "urlencoded": - ioutilPkg := importer.Import("ioutil", "io/ioutil") + pkgIO := importer.Import("io", "io") urlPkg := importer.Import("url", "url") bytesPkg := importer.Import("bytes", "bytes") @@ -330,11 +329,11 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { g.w.W("params.Set(\"data\", %s)\n", name) } - g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) + g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", pkgIO, bytesPkg) case "multipart": bytesPkg := importer.Import("bytes", "bytes") multipartPkg := importer.Import("multipart", "mime/multipart") - ioutilPkg := importer.Import("ioutil", "io/ioutil") + pkgIO := importer.Import("io", "io") g.w.W("body := new(%s.Buffer)\n", bytesPkg) g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) @@ -345,7 +344,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { g.w.WriteCheckErr("err", func() { g.w.W("return err\n") }) - g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) + g.w.W("data, err := %s.ReadAll(req.%s)\n", pkgIO, p.Name.Upper()) g.w.WriteCheckErr("err", func() { g.w.W("return err\n") }) @@ -364,7 +363,7 @@ func (g *ClientStruct) Generate(ctx context.Context) []byte { } g.w.W("if err := writer.Close(); err != nil {\n return err\n}\n") - g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) + g.w.W("r.Body = %s.NopCloser(body)\n", pkgIO) g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") } diff --git a/v3/internal/plugin/echo/generator/logging.go b/v3/internal/plugin/echo/generator/logging.go index feb114fc..bea030ae 100644 --- a/v3/internal/plugin/echo/generator/logging.go +++ b/v3/internal/plugin/echo/generator/logging.go @@ -3,15 +3,11 @@ package generator import ( "context" - "github.com/swipe-io/swipe/v3/writer" - - "github.com/swipe-io/swipe/v3/option" - - "github.com/swipe-io/swipe/v3/swipe" - "github.com/swipe-io/swipe/v3/internal/logging" - "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" ) type Logging struct { diff --git a/v3/internal/plugin/echo/generator/metric.go b/v3/internal/plugin/echo/generator/metric.go new file mode 100644 index 00000000..08b18feb --- /dev/null +++ b/v3/internal/plugin/echo/generator/metric.go @@ -0,0 +1,59 @@ +package generator + +import ( + "context" + + "github.com/swipe-io/swipe/v3/internal/metric" + "github.com/swipe-io/swipe/v3/internal/plugin/echo/config" + "github.com/swipe-io/swipe/v3/option" + "github.com/swipe-io/swipe/v3/swipe" + "github.com/swipe-io/swipe/v3/writer" +) + +type Metric struct { + w writer.GoWriter + Interfaces []*config.Interface + Output string + Pkg string +} + +func (g *Metric) Generate(ctx context.Context) []byte { + importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) + + var interfaces []metric.Interface + for _, iface := range g.Interfaces { + ifaceType := iface.Named.Type.(*option.IfaceType) + metricInterface := metric.Interface{ + TypeName: NameInterface(iface), + LcName: LcNameWithAppPrefix(iface), + UcName: UcNameWithAppPrefix(iface), + } + for _, method := range ifaceType.Methods { + metricInterface.Methods = append(metricInterface.Methods, metric.Method{ + Name: method.Name, + Sig: method.Sig, + IsEnabled: true, + }) + } + interfaces = append(interfaces, metricInterface) + } + + data := metric.NewMetric(importer). + SetInterfaces(interfaces). + Build() + _, _ = g.w.Write(data) + + return g.w.Bytes() +} + +func (g *Metric) Package() string { + return g.Pkg +} + +func (g *Metric) OutputPath() string { + return g.Output +} + +func (g *Metric) Filename() string { + return "metric.go" +} diff --git a/v3/internal/plugin/echo/generator/routes.go b/v3/internal/plugin/echo/generator/routes.go index 65fdd44a..cc0d8d1e 100644 --- a/v3/internal/plugin/echo/generator/routes.go +++ b/v3/internal/plugin/echo/generator/routes.go @@ -192,10 +192,9 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("var data []byte\n") - ioutilPkg := importer.Import("ioutil", "io/ioutil") - g.w.W("data, err = %s.ReadAll(r.Body)\n", ioutilPkg) + g.w.W("data, err = %s.ReadAll(r.Body)\n", pkgIO) g.w.WriteCheckErr("err", func() { - g.w.W("return %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, m.Name.Upper()) + g.w.W("return %s.NewHTTPError(500, %s.Sprintf(\"couldn't read body for %s: %%s\", err))\n", echoPkg, fmtPkg, m.Name.Upper()) }) if len(paramVars) == 1 { @@ -212,7 +211,7 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { g.w.W("err = %s.Unmarshal(data, &req)\n", jsonPkg) } g.w.W("if err != nil && err != %s.EOF {\n", pkgIO) - g.w.W("return %s.Errorf(\"couldn't unmarshal body to %s: %%w\", err)\n", fmtPkg, m.Name.Upper()) + g.w.W("return %s.NewHTTPError(400, %s.Sprintf(\"couldn't unmarshal body to %s: %%s\", err))\n", echoPkg, fmtPkg, m.Name.Upper()) g.w.W("}\n") } } @@ -227,21 +226,30 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { SetFieldName(pathVar.Param.Name). SetFieldType(pathVar.Param.Type). SetErrorReturn(func() string { - return fmt.Sprintf("return %s.New(%s)", importer.Import("errors", "errors"), strconv.Quote("convert error")) + fmtPkg := importer.Import("fmt", "fmt") + return fmt.Sprintf("return %s.NewHTTPError(500, %s.Sprintf(\"convert error: %%v\", %s))", echoPkg, fmtPkg, valueVar) }). Write(&g.w) } } for _, headerVar := range headerVars { + textProtoPkg := importer.Import("textproto", "net/textproto") + g.w.W("if _, ok := r.Header[%s.CanonicalMIMEHeaderKey(%s)]; ok {\n", textProtoPkg, strconv.Quote(headerVar.Value)) convert.NewBuilder(importer). SetFieldName(headerVar.Param.Name). SetFieldType(headerVar.Param.Type). SetAssignVar("req." + headerVar.Param.Name.Upper()). SetValueVar("r.Header.Get(" + strconv.Quote(headerVar.Value) + ")"). SetErrorReturn(func() string { - return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+headerVar.Param.Name.Upper()) + fmtPkg := importer.Import("fmt", "fmt") + return fmt.Sprintf("return %s.NewHTTPError(500, %s.Sprintf(\"convert error: %%v\", %s))", echoPkg, fmtPkg, "req."+headerVar.Param.Name.Upper()) }). Write(&g.w) + if headerVar.IsRequired { + g.w.W("} else {\nreturn %s.NewHTTPError(400, \"header %s is required\")\n}\n", echoPkg, headerVar.Value) + } else { + g.w.W("}\n") + } } if len(mopt.RESTQueryVars.Value) > 0 { @@ -249,11 +257,6 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { for _, queryVar := range queryVars { - if queryVar.IsRequired { - fmtPkg := importer.Import("fmt", "fmt") - g.w.W("if _, ok := q[\"%[1]s\"]; !ok {\nreturn %[2]s.Errorf(\"%[1]s required\")\n}\n", queryVar.Value, fmtPkg) - } - if named, ok := queryVar.Param.Type.(*option.NamedType); ok { if st, ok := named.Type.(*option.StructType); ok { for _, field := range st.Fields { @@ -267,7 +270,8 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { SetAssignVar("req." + queryVar.Param.Name.Upper() + "." + field.Var.Name.Upper()). SetValueVar("q.Get(" + strconv.Quote(tag.Value()) + ")"). SetErrorReturn(func() string { - return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper()) + fmtPkg := importer.Import("fmt", "fmt") + return fmt.Sprintf("return %s.NewHTTPError(500, %s.Sprintf(\"convert error: %%v\", %s))", echoPkg, fmtPkg, "req."+queryVar.Param.Name.Upper()) }). Write(&g.w) g.w.W("}\n") @@ -275,15 +279,22 @@ func (g *RoutesGenerator) Generate(ctx context.Context) []byte { } } } else { + g.w.W("if _, ok := q[%s]; ok {\n", strconv.Quote(queryVar.Value)) convert.NewBuilder(importer). SetFieldName(queryVar.Param.Name). SetFieldType(queryVar.Param.Type). SetAssignVar("req." + queryVar.Param.Name.Upper()). SetValueVar("q.Get(" + strconv.Quote(queryVar.Value) + ")"). SetErrorReturn(func() string { - return fmt.Sprintf("return %s.Errorf(\"convert error: %%v\", %s)", importer.Import("fmt", "fmt"), "req."+queryVar.Param.Name.Upper()) + fmtPkg := importer.Import("fmt", "fmt") + return fmt.Sprintf("return %s.NewHTTPError(500, %s.Sprintf(\"convert error: %%v\", %s))", echoPkg, fmtPkg, "req."+queryVar.Param.Name.Upper()) }). Write(&g.w) + if queryVar.IsRequired { + g.w.W("} else {\nreturn %s.NewHTTPError(400, \"query var %s is required\")\n}\n", echoPkg, queryVar.Value) + } else { + g.w.W("}\n") + } } } } diff --git a/v3/internal/plugin/echo/plugin.go b/v3/internal/plugin/echo/plugin.go index 2af03458..2f57c640 100644 --- a/v3/internal/plugin/echo/plugin.go +++ b/v3/internal/plugin/echo/plugin.go @@ -94,6 +94,9 @@ func (p *Plugin) Generators() ([]swipe.Generator, []error) { &generator.Logging{ Interfaces: p.config.Interfaces, }, + &generator.Metric{ + Interfaces: p.config.Interfaces, + }, } if p.config.ClientEnable != nil { output := p.config.ClientOutput.Take() diff --git a/v3/internal/plugin/gokit/generator/rest_client.go b/v3/internal/plugin/gokit/generator/rest_client.go index 0b9bbed1..5bc1e355 100644 --- a/v3/internal/plugin/gokit/generator/rest_client.go +++ b/v3/internal/plugin/gokit/generator/rest_client.go @@ -42,12 +42,9 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { ) importer := ctx.Value(swipe.ImporterKey).(swipe.Importer) - fmtPkg := importer.Import("fmt", "fmt") - contextPkg := importer.Import("context", "context") urlPkg := importer.Import("url", "net/url") netPkg := importer.Import("net", "net") stringsPkg := importer.Import("strings", "strings") - jsonPkg := importer.Import("json", "encoding/json") if g.UseFast { kitHTTPPkg = importer.Import("fasthttp", "github.com/l-vitaly/go-kit/transport/fasthttp") @@ -66,7 +63,7 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { g.w.W("Data interface{} `json:\"data,omitempty\"`\n") g.w.W("}\n") - g.writeCreateReqFuncs(importer, httpPkg, contextPkg, fmtPkg, urlPkg, jsonPkg) + g.writeCreateReqFuncs(importer, httpPkg, urlPkg) for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) @@ -131,7 +128,10 @@ func (g *RESTClientGenerator) Generate(ctx context.Context) []byte { return g.w.Bytes() } -func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpPkg, contextPkg, fmtPkg, urlPkg, jsonPkg string) { +func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpPkg, urlPkg string) { + fmtPkg := importer.Import("fmt", "fmt") + contextPkg := importer.Import("context", "context") + for _, iface := range g.Interfaces { ifaceType := iface.Named.Type.(*option.IfaceType) for _, m := range ifaceType.Methods { @@ -151,6 +151,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP } g.w.W("return %s%s(r)\n", pkgName, mopt.ErrorDecode.Fn.Name) } else { + jsonPkg := importer.Import("json", "encoding/json") g.w.W("var errorData clientErrorWrapper\n") g.w.W("if err := %s.NewDecoder(r.Body).Decode(&errorData); err != nil {\nreturn nil, err\n}\n", jsonPkg) g.w.W("return nil, ") @@ -183,8 +184,8 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP if g.UseFast { g.w.W("b = r.Body()\n") } else { - ioutilPkg := importer.Import("ioutil", "io/ioutil") - g.w.W("b, err = %s.ReadAll(r.Body)\n", ioutilPkg) + pkgIO := importer.Import("io", "io") + g.w.W("b, err = %s.ReadAll(r.Body)\n", pkgIO) g.w.WriteCheckErr("err", func() { g.w.W("return nil, err\n") }) @@ -405,12 +406,12 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP if g.UseFast { g.w.W("r.SetBody(data)\n") } else { - ioutilPkg := importer.Import("ioutil", "io/ioutil") + pkgIO := importer.Import("io", "io") bytesPkg := importer.Import("bytes", "bytes") - g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", ioutilPkg, bytesPkg) + g.w.W("r.Body = %s.NopCloser(%s.NewBuffer(data))\n", pkgIO, bytesPkg) } case "urlencoded": - ioutilPkg := importer.Import("ioutil", "io/ioutil") + pkgIO := importer.Import("io", "io") bytesPkg := importer.Import("bytes", "bytes") g.w.W("r.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n") g.w.W("params := %s.Values{}\n", urlPkg) @@ -425,11 +426,11 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP g.w.W("params.Set(\"data\", %s)\n", name) } - g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", ioutilPkg, bytesPkg) + g.w.W("r.Body = %s.NopCloser(%s.NewBufferString(params.Encode()))\n", pkgIO, bytesPkg) case "multipart": bytesPkg := importer.Import("bytes", "bytes") multipartPkg := importer.Import("multipart", "mime/multipart") - ioutilPkg := importer.Import("ioutil", "io/ioutil") + pkgIO := importer.Import("io", "io") g.w.W("body := new(%s.Buffer)\n", bytesPkg) g.w.W("writer := %s.NewWriter(body)\n", multipartPkg) @@ -440,7 +441,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP g.w.WriteCheckErr("err", func() { g.w.W("return err\n") }) - g.w.W("data, err := %s.ReadAll(req.%s)\n", ioutilPkg, p.Name.Upper()) + g.w.W("data, err := %s.ReadAll(req.%s)\n", pkgIO, p.Name.Upper()) g.w.WriteCheckErr("err", func() { g.w.W("return err\n") }) @@ -462,7 +463,7 @@ func (g *RESTClientGenerator) writeCreateReqFuncs(importer swipe.Importer, httpP if g.UseFast { g.w.W("r.SetBody(body.Bytes())\n") } else { - g.w.W("r.Body = %s.NopCloser(body)\n", ioutilPkg) + g.w.W("r.Body = %s.NopCloser(body)\n", pkgIO) } g.w.W("r.Header.Set(\"Content-Type\", writer.FormDataContentType())\n") } diff --git a/v3/internal/plugin/gokit/generator/rest_server.go b/v3/internal/plugin/gokit/generator/rest_server.go index f9f70681..05789735 100644 --- a/v3/internal/plugin/gokit/generator/rest_server.go +++ b/v3/internal/plugin/gokit/generator/rest_server.go @@ -377,8 +377,8 @@ func (g *RESTServerGenerator) Generate(ctx context.Context) []byte { if g.UseFast { g.w.W("data = r.Body()\n") } else { - ioutilPkg := importer.Import("ioutil", "io/ioutil") - g.w.W("data, err = %s.ReadAll(r.Body)\n", ioutilPkg) + pkgIO := importer.Import("io", "io") + g.w.W("data, err = %s.ReadAll(r.Body)\n", pkgIO) g.w.WriteCheckErr("err", func() { g.w.W("return nil, %s.Errorf(\"couldn't read body for %s: %%w\", err)\n", fmtPkg, nameRequest) }) diff --git a/v3/internal/plugin/gokit/plugin.go b/v3/internal/plugin/gokit/plugin.go index f3d1e7ed..090b8b9f 100644 --- a/v3/internal/plugin/gokit/plugin.go +++ b/v3/internal/plugin/gokit/plugin.go @@ -4,13 +4,12 @@ import ( "encoding/json" "errors" "fmt" - "io/ioutil" + "os" "path" "path/filepath" - "github.com/swipe-io/swipe/v3/internal/plugin" - "github.com/mitchellh/mapstructure" + "github.com/swipe-io/swipe/v3/internal/plugin" "github.com/swipe-io/strcase" "github.com/swipe-io/swipe/v3/internal/plugin/gokit/config" @@ -100,7 +99,7 @@ func (p *Plugin) Configure(cfg *swipe.Config, module *option.Module, options map } pkgJsonFilepath := filepath.Join(cfg.WorkDir, "package.json") - data, err := ioutil.ReadFile(pkgJsonFilepath) + data, err := os.ReadFile(pkgJsonFilepath) if err == nil { var packageJSON map[string]interface{} err := json.Unmarshal(data, &packageJSON)

  • 28_$)#R(~VeE$;-xM80Htd8$9;ASD7 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 PeO~dR9 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

    5+z&>&=wyZXU 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�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�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

  • -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 zɥ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 z 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�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±KzpQ_+wB<2yY!JJQ;8Gsw0t6$J0R_A-uJ#54_c@ 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

    *~iMR6C+;5AlBe~3>U*`vl@7EmE!}PU} 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%0APivT^UawQO-eSdjroMU-y~T?6)LWb**swY0 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

  • 28_$)#R(~VeE$;-xM80Htd8$9;ASD7 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 PeO~dR9 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

    5+z&>&=wyZXU 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�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�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

  • -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 zɥ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 z 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�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±KzpQ_+wB<2yY!JJQ;8Gsw0t6$J0R_A-uJ#54_c@ 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

    *~iMR6C+;5AlBe~3>U*`vl@7EmE!}PU} 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%0APivT^UawQO-eSdjroMU-y~T?6)LWb**swY0 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