diff --git a/Makefile b/Makefile index 77c2300..a65d210 100644 --- a/Makefile +++ b/Makefile @@ -1,34 +1,81 @@ -.PHONY: generate -generate: - rm -vf demo/output/* - go run cmd/gotsrpc/gotsrpc.go demo/config.yml - tsc --outFile cmd/demo/demo.js demo/demo.ts - -.PHONY: demo -demo: generate - cd cmd/demo && go run demo.go - -.PHONY: install -install: - go install cmd/gotsrpc/gotsrpc.go - -install.debug: - go install -gcflags "all=-N -l" cmd/gotsrpc/gotsrpc.go +.DEFAULT_GOAL:=help .PHONY: test +## Run go test test: go test -v ./... +.PHONY: install +## Run go install +install: + go install cmd/gotsrpc/gotsrpc.go + +## Run go install with debug +install.debug: + go install -gcflags "all=-N -l" cmd/gotsrpc/gotsrpc.go + .PHONY: outdated +## Show outdated direct dependencies outdated: go list -u -m -json all | go-mod-outdated -update -direct +## Run goreleaser build: goreleaser build --snapshot --rm-dist +## run go build with debug build.debug: rm -f bin/gotsrpc go build -gcflags "all=-N -l" -o bin/gotsrpc cmd/gotsrpc/gotsrpc.go -debug.demo: build.debug - dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec bin/gotsrpc demo/config.yml \ No newline at end of file + +EXAMPLES=basic nullable +define examples +.PHONY: example.$(1) +example.$(1): + cd example/${1} && go run ../../cmd/gotsrpc/gotsrpc.go gotsrpc.yml + +.PHONY: example.$(1).run +example.$(1).run: example.${1} + cd example/${1}/client && tsc --build + cd example/${1} && go run main.go + +.PHONY: example.$(1).debug +example.$(1).debug: build.debug + cd example/${1} && dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ../../bin/gotsrpc gotsrpc.yml +endef +$(foreach p,$(EXAMPLES),$(eval $(call examples,$(p)))) + +## === Utils === + +## Show help text +help: + @awk '{ \ + if ($$0 ~ /^.PHONY: [a-zA-Z\-\_0-9]+$$/) { \ + helpCommand = substr($$0, index($$0, ":") + 2); \ + if (helpMessage) { \ + printf "\033[36m%-23s\033[0m %s\n", \ + helpCommand, helpMessage; \ + helpMessage = ""; \ + } \ + } else if ($$0 ~ /^[a-zA-Z\-\_0-9.]+:/) { \ + helpCommand = substr($$0, 0, index($$0, ":")); \ + if (helpMessage) { \ + printf "\033[36m%-23s\033[0m %s\n", \ + helpCommand, helpMessage"\n"; \ + helpMessage = ""; \ + } \ + } else if ($$0 ~ /^##/) { \ + if (helpMessage) { \ + helpMessage = helpMessage"\n "substr($$0, 3); \ + } else { \ + helpMessage = substr($$0, 3); \ + } \ + } else { \ + if (helpMessage) { \ + print "\n "helpMessage"\n" \ + } \ + helpMessage = ""; \ + } \ + }' \ + $(MAKEFILE_LIST) diff --git a/README.md b/README.md index 3c34e77..a845ae3 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,6 @@ Will generate client and server side go and TypeScript code. Have fun! ## Configuration Examples -[demo/config.yml](demo/config-commonjs.yml) - ```yaml targets: demo: diff --git a/demo/bar.go b/demo/bar.go deleted file mode 100644 index 4cf44aa..0000000 --- a/demo/bar.go +++ /dev/null @@ -1,86 +0,0 @@ -package demo - -import ( - "net/http" - - "github.com/foomo/gotsrpc/v2/demo/nested" -) - -type ( - CustomTypeInt int - CustomTypeString string - CustomTypeFoo string -) - -type ( - AttributeID string - AttributeMapping map[AttributeID]*AttributeDefinition - AttributeDefinition struct { - Key string - Value string - } -) - -const ( - CustomTypeIntOne CustomTypeInt = 1 - CustomTypeIntTwo CustomTypeInt = 2 - CustomTypeIntThree CustomTypeInt = 3 -) - -const ( - CustomTypeStringOne CustomTypeString = "regular" - CustomTypeStringTwo CustomTypeString = "camelCase" - CustomTypeStringThree CustomTypeString = "snake_case" - CustomTypeStringFour CustomTypeString = "slug-case" - CustomTypeStringFive CustomTypeString = "CONST_CASE" - CustomTypeStringSix CustomTypeString = "SLUG-CASE-UPPER" - CustomTypeStringSeven CustomTypeString = "dot.case" -) - -type ( - Inner struct { - One string `json:"one"` - } - OuterNested struct { - Inner Inner `json:"inner"` - Two string `json:"two"` - } - OuterInline struct { - Inner `json:",inline"` - Two string `json:"two"` - } - CustomTypeStruct struct { - CustomTypeFoo CustomTypeFoo - CustomTypeInt CustomTypeInt - CustomTypeString CustomTypeString - CustomTypeNested nested.CustomTypeNested - Check Check - } -) - -type CustomError string - -const ( - CustomErrorDemo CustomError = "demo" -) - -var ( - ErrCustomDemo = NewCustomError(CustomErrorDemo) -) - -func NewCustomError(e CustomError) *CustomError { - return &e -} - -func (e *CustomError) Error() string { - return string(*e) -} - -type Bar interface { - Hello(w http.ResponseWriter, r *http.Request, number int64) int - Repeat(one, two string) (three, four bool) - Inheritance(inner Inner, nested OuterNested, inline OuterInline) (Inner, OuterNested, OuterInline) - CustomType(customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (*CustomTypeInt, *CustomTypeString, CustomTypeStruct) - CustomError(one CustomError, two *CustomError) (three CustomError, four *CustomError) - AttributeMapping() AttributeMapping -} diff --git a/demo/bar_vo.go b/demo/bar_vo.go deleted file mode 100644 index c2cad77..0000000 --- a/demo/bar_vo.go +++ /dev/null @@ -1,7 +0,0 @@ -package demo - -type ( - Check struct { - Foo string - } -) diff --git a/demo/config.yml b/demo/config.yml deleted file mode 100644 index 4b6d1fa..0000000 --- a/demo/config.yml +++ /dev/null @@ -1,27 +0,0 @@ -module: - name: github.com/foomo/gotsrpc/v2 - path: ../ - -targets: - demo: - services: - /service/foo: Foo - /service/bar: Bar - /service/demo: Demo - package: github.com/foomo/gotsrpc/v2/demo - out: demo/output/client.ts - gorpc: - - Foo - - Bar - - Demo - tsrpc: - - Foo - - Bar - - Demo - -mappings: - github.com/foomo/gotsrpc/v2/demo: - out: demo/output/demo.ts - github.com/foomo/gotsrpc/v2/demo/nested: - out: demo/output/demo-nested.ts -... \ No newline at end of file diff --git a/demo/demo.go b/demo/demo.go deleted file mode 100644 index e09d34f..0000000 --- a/demo/demo.go +++ /dev/null @@ -1,86 +0,0 @@ -package demo - -import "github.com/foomo/gotsrpc/v2/demo/nested" - -type Err struct { - Message string `json:"message"` -} - -type LocalKey string - -type MapWithLocalStuff map[LocalKey]int - -type MapOfOtherStuff map[nested.JustAnotherStingType]int - -func (e *Err) Error() string { - return e.Message -} - -type ScalarError string - -func (se *ScalarError) Error() string { - return string(*se) -} - -type ScalarInPlace string - -type Demo struct { - Bla bool -} - -func (d *Demo) Hello(name string) (string, *Err) { - if name == "Peter" { - return "", &Err{"fuck you Peter I do not like you"} - } - return "Hello from the server: " + name, nil -} - -func (d *Demo) HelloInterface(anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) { - -} - -func (d *Demo) HelloNumberMaps(intMap map[int]string) (floatMap map[float64]string) { - floatMap = map[float64]string{} - for i, str := range intMap { - floatMap[float64(i)] = str - } - return -} - -func (d *Demo) HelloScalarError() (err *ScalarError) { - return -} - -func (d *Demo) HelloMapType() (otherStuff MapOfOtherStuff) { - return MapOfOtherStuff{ - nested.JustAnotherStingType("foo"): 1, - } -} - -func (d *Demo) HelloLocalMapType() (localStuff MapWithLocalStuff) { - return MapWithLocalStuff{ - "foo": 1, - } -} - -type RemoteScalarsStrings []nested.JustAnotherStingType - -type RemoteScalarStruct struct { - Foo RemoteScalarsStrings - Bar RemoteScalarsStrings -} - -func (d *Demo) ArrayOfRemoteScalars() (arrayOfRemoteScalars RemoteScalarsStrings) { - return []nested.JustAnotherStingType{"foo", "bar"} -} - -func (d *Demo) ArrayOfRemoteScalarsInAStruct() (strct RemoteScalarStruct) { - return RemoteScalarStruct{ - Foo: RemoteScalarsStrings{"Foo"}, - Bar: RemoteScalarsStrings{"Bar"}, - } -} - -func (d *Demo) nothingInNothinOut() { - -} diff --git a/demo/demo.ts b/demo/demo.ts deleted file mode 100644 index 9548e1c..0000000 --- a/demo/demo.ts +++ /dev/null @@ -1,39 +0,0 @@ - -/// -/// -/// - -var handleCrap = (err:GoTSRPC.Demo.Err, request:XMLHttpRequest) => { - if(err) { - console.log("fuckit logic"); - } else if(request) { - console.warn("request crap", request); - } else { - console.log("no crap", err); - } -} - -GoTSRPC.Demo.DemoClient.defaultInst.hello( - "Hansi", - (reply:string, err:GoTSRPC.Demo.Err) => { - console.log("server says hello to Hansi", reply, err); - handleCrap(err, null); - }, - (request:XMLHttpRequest) => { - console.log("wtf", request); - handleCrap(null, request); - } -); - - -GoTSRPC.Demo.DemoClient.defaultInst.hello( - "Peter", - (reply:string, err:GoTSRPC.Demo.Err) => { - console.log("server should not like Peter, sorry Peter ;)", reply, err); - handleCrap(err, null); - }, - (request:XMLHttpRequest) => { - console.log("wtf", request); - handleCrap(null, request); - } -); diff --git a/demo/demo_complex.go b/demo/demo_complex.go deleted file mode 100644 index 44ccab3..0000000 --- a/demo/demo_complex.go +++ /dev/null @@ -1,65 +0,0 @@ -package demo - -import nstd "github.com/foomo/gotsrpc/v2/demo/nested" - -//go:generate codecgen -o values.generated.go demo_complex.go - -type Address struct { - City string `json:"city,omitempty"` - Signs []string `json:"signs,omitempty"` - SecretServerCrap bool `json:"-"` - PeoplePtr []*Person - ArrayOfMaps []map[string]bool - ArrayArrayAddress [][]*Address - People []Person - MapCrap map[string]map[int]bool - NestedPtr *nstd.Nested - NestedStruct nstd.Nested -} - -type Person struct { - Name string - AddressPtr *Address `json:"address"` - AddressStruct Address - Addresses map[string]*Address - - InlinePtr *struct { - Foo bool - } - InlineStruct struct { - Bar string - } - iAmPrivate string - DNA []byte -} - -func (d *Demo) ExtractAddress(person *Person) (addr *Address, e *Err) { - if person == nil { - return nil, nil - } - if person.AddressPtr != nil { - return person.AddressPtr, nil - } - return nil, &Err{"there is no address on that person"} -} - -func (d *Demo) TestScalarInPlace() ScalarInPlace { - return ScalarInPlace("hier") -} - -func (d *Demo) MapCrap() (crap map[string][]int) { - return map[string][]int{} -} - -func (d *Demo) Nest() []*nstd.Nested { - return nil -} - -func (d *Demo) Any(any nstd.Any, anyList []nstd.Any, anyMap map[string]nstd.Any) (nstd.Any, []nstd.Any, map[string]nstd.Any) { - return nil, nil, nil -} - -func (d *Demo) GiveMeAScalar() (amount nstd.Amount, wahr nstd.True, hier ScalarInPlace) { - //func (s *Service) giveMeAScalar() (amount nstd.Amount, wahr nstd.True, hier ScalarInPlace) { - return nstd.Amount(10), nstd.ItIsTrue, ScalarInPlace("hier") -} diff --git a/demo/foo.go b/demo/foo.go deleted file mode 100644 index 4ba1665..0000000 --- a/demo/foo.go +++ /dev/null @@ -1,8 +0,0 @@ -package demo - -type Foo struct { -} - -func (f *Foo) Hello(number int64) int { - return 0 -} diff --git a/demo/gorpc_gen.go b/demo/gorpc_gen.go deleted file mode 100644 index 6bf03a2..0000000 --- a/demo/gorpc_gen.go +++ /dev/null @@ -1,485 +0,0 @@ -// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. - -package demo - -import ( - tls "crypto/tls" - gob "encoding/gob" - fmt "fmt" - reflect "reflect" - strings "strings" - time "time" - - gotsrpc "github.com/foomo/gotsrpc/v2" - github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested" - gorpc "github.com/valyala/gorpc" -) - -type ( - FooGoRPCProxy struct { - server *gorpc.Server - service *Foo - callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun - } - - FooHelloRequest struct { - Number int64 - } - FooHelloResponse struct { - RetHello_0 int - } -) - -func init() { - gob.Register(FooHelloRequest{}) - gob.Register(FooHelloResponse{}) -} - -func NewFooGoRPCProxy(addr string, service *Foo, tlsConfig *tls.Config) *FooGoRPCProxy { - proxy := &FooGoRPCProxy{ - service: service, - } - - if tlsConfig != nil { - proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig) - } else { - proxy.server = gorpc.NewTCPServer(addr, proxy.handler) - } - - return proxy -} - -func (p *FooGoRPCProxy) Start() error { - return p.server.Start() -} - -func (p *FooGoRPCProxy) Serve() error { - return p.server.Serve() -} - -func (p *FooGoRPCProxy) Stop() { - p.server.Stop() -} - -func (p *FooGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) { - p.callStatsHandler = handler -} - -func (p *FooGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) { - start := time.Now() - - reqType := reflect.TypeOf(request).String() - funcNameParts := strings.Split(reqType, ".") - funcName := funcNameParts[len(funcNameParts)-1] - - switch funcName { - case "FooHelloRequest": - req := request.(FooHelloRequest) - retHello_0 := p.service.Hello(req.Number) - response = FooHelloResponse{RetHello_0: retHello_0} - default: - fmt.Println("Unkown request type", reflect.TypeOf(request).String()) - } - - if p.callStatsHandler != nil { - p.callStatsHandler(&gotsrpc.CallStats{ - Func: funcName, - Package: "github.com/foomo/gotsrpc/v2/demo", - Service: "Foo", - Execution: time.Since(start), - }) - } - - return -} - -type ( - DemoGoRPCProxy struct { - server *gorpc.Server - service *Demo - callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun - } - - DemoAnyRequest struct { - Any github_com_foomo_gotsrpc_v2_demo_nested.Any - AnyList []github_com_foomo_gotsrpc_v2_demo_nested.Any - AnyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any - } - DemoAnyResponse struct { - RetAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any - RetAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any - RetAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any - } - - DemoArrayOfRemoteScalarsRequest struct { - } - DemoArrayOfRemoteScalarsResponse struct { - ArrayOfRemoteScalars RemoteScalarsStrings - } - - DemoArrayOfRemoteScalarsInAStructRequest struct { - } - DemoArrayOfRemoteScalarsInAStructResponse struct { - Strct RemoteScalarStruct - } - - DemoExtractAddressRequest struct { - Person *Person - } - DemoExtractAddressResponse struct { - Addr *Address - E *Err - } - - DemoGiveMeAScalarRequest struct { - } - DemoGiveMeAScalarResponse struct { - Amount github_com_foomo_gotsrpc_v2_demo_nested.Amount - Wahr github_com_foomo_gotsrpc_v2_demo_nested.True - Hier ScalarInPlace - } - - DemoHelloRequest struct { - Name string - } - DemoHelloResponse struct { - RetHello_0 string - RetHello_1 *Err - } - - DemoHelloInterfaceRequest struct { - Anything interface{} - AnythingMap map[string]interface{} - AnythingSlice []interface{} - } - DemoHelloInterfaceResponse struct { - } - - DemoHelloLocalMapTypeRequest struct { - } - DemoHelloLocalMapTypeResponse struct { - LocalStuff MapWithLocalStuff - } - - DemoHelloMapTypeRequest struct { - } - DemoHelloMapTypeResponse struct { - OtherStuff MapOfOtherStuff - } - - DemoHelloNumberMapsRequest struct { - IntMap map[int]string - } - DemoHelloNumberMapsResponse struct { - FloatMap map[float64]string - } - - DemoHelloScalarErrorRequest struct { - } - DemoHelloScalarErrorResponse struct { - Err *ScalarError - } - - DemoMapCrapRequest struct { - } - DemoMapCrapResponse struct { - Crap map[string][]int - } - - DemoNestRequest struct { - } - DemoNestResponse struct { - RetNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested - } - - DemoTestScalarInPlaceRequest struct { - } - DemoTestScalarInPlaceResponse struct { - RetTestScalarInPlace_0 ScalarInPlace - } -) - -func init() { - gob.Register(DemoAnyRequest{}) - gob.Register(DemoAnyResponse{}) - gob.Register(DemoArrayOfRemoteScalarsRequest{}) - gob.Register(DemoArrayOfRemoteScalarsResponse{}) - gob.Register(DemoArrayOfRemoteScalarsInAStructRequest{}) - gob.Register(DemoArrayOfRemoteScalarsInAStructResponse{}) - gob.Register(DemoExtractAddressRequest{}) - gob.Register(DemoExtractAddressResponse{}) - gob.Register(DemoGiveMeAScalarRequest{}) - gob.Register(DemoGiveMeAScalarResponse{}) - gob.Register(DemoHelloRequest{}) - gob.Register(DemoHelloResponse{}) - gob.Register(DemoHelloInterfaceRequest{}) - gob.Register(DemoHelloInterfaceResponse{}) - gob.Register(DemoHelloLocalMapTypeRequest{}) - gob.Register(DemoHelloLocalMapTypeResponse{}) - gob.Register(DemoHelloMapTypeRequest{}) - gob.Register(DemoHelloMapTypeResponse{}) - gob.Register(DemoHelloNumberMapsRequest{}) - gob.Register(DemoHelloNumberMapsResponse{}) - gob.Register(DemoHelloScalarErrorRequest{}) - gob.Register(DemoHelloScalarErrorResponse{}) - gob.Register(DemoMapCrapRequest{}) - gob.Register(DemoMapCrapResponse{}) - gob.Register(DemoNestRequest{}) - gob.Register(DemoNestResponse{}) - gob.Register(DemoTestScalarInPlaceRequest{}) - gob.Register(DemoTestScalarInPlaceResponse{}) -} - -func NewDemoGoRPCProxy(addr string, service *Demo, tlsConfig *tls.Config) *DemoGoRPCProxy { - proxy := &DemoGoRPCProxy{ - service: service, - } - - if tlsConfig != nil { - proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig) - } else { - proxy.server = gorpc.NewTCPServer(addr, proxy.handler) - } - - return proxy -} - -func (p *DemoGoRPCProxy) Start() error { - return p.server.Start() -} - -func (p *DemoGoRPCProxy) Serve() error { - return p.server.Serve() -} - -func (p *DemoGoRPCProxy) Stop() { - p.server.Stop() -} - -func (p *DemoGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) { - p.callStatsHandler = handler -} - -func (p *DemoGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) { - start := time.Now() - - reqType := reflect.TypeOf(request).String() - funcNameParts := strings.Split(reqType, ".") - funcName := funcNameParts[len(funcNameParts)-1] - - switch funcName { - case "DemoAnyRequest": - req := request.(DemoAnyRequest) - retAny_0, retAny_1, retAny_2 := p.service.Any(req.Any, req.AnyList, req.AnyMap) - response = DemoAnyResponse{RetAny_0: retAny_0, RetAny_1: retAny_1, RetAny_2: retAny_2} - case "DemoArrayOfRemoteScalarsRequest": - arrayOfRemoteScalars := p.service.ArrayOfRemoteScalars() - response = DemoArrayOfRemoteScalarsResponse{ArrayOfRemoteScalars: arrayOfRemoteScalars} - case "DemoArrayOfRemoteScalarsInAStructRequest": - strct := p.service.ArrayOfRemoteScalarsInAStruct() - response = DemoArrayOfRemoteScalarsInAStructResponse{Strct: strct} - case "DemoExtractAddressRequest": - req := request.(DemoExtractAddressRequest) - addr, e := p.service.ExtractAddress(req.Person) - response = DemoExtractAddressResponse{Addr: addr, E: e} - case "DemoGiveMeAScalarRequest": - amount, wahr, hier := p.service.GiveMeAScalar() - response = DemoGiveMeAScalarResponse{Amount: amount, Wahr: wahr, Hier: hier} - case "DemoHelloRequest": - req := request.(DemoHelloRequest) - retHello_0, retHello_1 := p.service.Hello(req.Name) - response = DemoHelloResponse{RetHello_0: retHello_0, RetHello_1: retHello_1} - case "DemoHelloInterfaceRequest": - req := request.(DemoHelloInterfaceRequest) - p.service.HelloInterface(req.Anything, req.AnythingMap, req.AnythingSlice) - response = DemoHelloInterfaceResponse{} - case "DemoHelloLocalMapTypeRequest": - localStuff := p.service.HelloLocalMapType() - response = DemoHelloLocalMapTypeResponse{LocalStuff: localStuff} - case "DemoHelloMapTypeRequest": - otherStuff := p.service.HelloMapType() - response = DemoHelloMapTypeResponse{OtherStuff: otherStuff} - case "DemoHelloNumberMapsRequest": - req := request.(DemoHelloNumberMapsRequest) - floatMap := p.service.HelloNumberMaps(req.IntMap) - response = DemoHelloNumberMapsResponse{FloatMap: floatMap} - case "DemoHelloScalarErrorRequest": - err := p.service.HelloScalarError() - response = DemoHelloScalarErrorResponse{Err: err} - case "DemoMapCrapRequest": - crap := p.service.MapCrap() - response = DemoMapCrapResponse{Crap: crap} - case "DemoNestRequest": - retNest_0 := p.service.Nest() - response = DemoNestResponse{RetNest_0: retNest_0} - case "DemoTestScalarInPlaceRequest": - retTestScalarInPlace_0 := p.service.TestScalarInPlace() - response = DemoTestScalarInPlaceResponse{RetTestScalarInPlace_0: retTestScalarInPlace_0} - default: - fmt.Println("Unkown request type", reflect.TypeOf(request).String()) - } - - if p.callStatsHandler != nil { - p.callStatsHandler(&gotsrpc.CallStats{ - Func: funcName, - Package: "github.com/foomo/gotsrpc/v2/demo", - Service: "Demo", - Execution: time.Since(start), - }) - } - - return -} - -type ( - BarGoRPCProxy struct { - server *gorpc.Server - service Bar - callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun - } - - BarAttributeMappingRequest struct { - } - BarAttributeMappingResponse struct { - RetAttributeMapping_0 AttributeMapping - } - - BarCustomErrorRequest struct { - One CustomError - Two *CustomError - } - BarCustomErrorResponse struct { - Three CustomError - Four *CustomError - } - - BarCustomTypeRequest struct { - CustomTypeInt CustomTypeInt - CustomTypeString CustomTypeString - CustomTypeStruct CustomTypeStruct - } - BarCustomTypeResponse struct { - RetCustomType_0 *CustomTypeInt - RetCustomType_1 *CustomTypeString - RetCustomType_2 CustomTypeStruct - } - - BarHelloRequest struct { - Number int64 - } - BarHelloResponse struct { - RetHello_0 int - } - - BarInheritanceRequest struct { - Inner Inner - Nested OuterNested - Inline OuterInline - } - BarInheritanceResponse struct { - RetInheritance_0 Inner - RetInheritance_1 OuterNested - RetInheritance_2 OuterInline - } - - BarRepeatRequest struct { - One string - Two string - } - BarRepeatResponse struct { - Three bool - Four bool - } -) - -func init() { - gob.Register(BarAttributeMappingRequest{}) - gob.Register(BarAttributeMappingResponse{}) - gob.Register(BarCustomErrorRequest{}) - gob.Register(BarCustomErrorResponse{}) - gob.Register(BarCustomTypeRequest{}) - gob.Register(BarCustomTypeResponse{}) - gob.Register(BarHelloRequest{}) - gob.Register(BarHelloResponse{}) - gob.Register(BarInheritanceRequest{}) - gob.Register(BarInheritanceResponse{}) - gob.Register(BarRepeatRequest{}) - gob.Register(BarRepeatResponse{}) -} - -func NewBarGoRPCProxy(addr string, service Bar, tlsConfig *tls.Config) *BarGoRPCProxy { - proxy := &BarGoRPCProxy{ - service: service, - } - - if tlsConfig != nil { - proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig) - } else { - proxy.server = gorpc.NewTCPServer(addr, proxy.handler) - } - - return proxy -} - -func (p *BarGoRPCProxy) Start() error { - return p.server.Start() -} - -func (p *BarGoRPCProxy) Serve() error { - return p.server.Serve() -} - -func (p *BarGoRPCProxy) Stop() { - p.server.Stop() -} - -func (p *BarGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) { - p.callStatsHandler = handler -} - -func (p *BarGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) { - start := time.Now() - - reqType := reflect.TypeOf(request).String() - funcNameParts := strings.Split(reqType, ".") - funcName := funcNameParts[len(funcNameParts)-1] - - switch funcName { - case "BarAttributeMappingRequest": - retAttributeMapping_0 := p.service.AttributeMapping() - response = BarAttributeMappingResponse{RetAttributeMapping_0: retAttributeMapping_0} - case "BarCustomErrorRequest": - req := request.(BarCustomErrorRequest) - three, four := p.service.CustomError(req.One, req.Two) - response = BarCustomErrorResponse{Three: three, Four: four} - case "BarCustomTypeRequest": - req := request.(BarCustomTypeRequest) - retCustomType_0, retCustomType_1, retCustomType_2 := p.service.CustomType(req.CustomTypeInt, req.CustomTypeString, req.CustomTypeStruct) - response = BarCustomTypeResponse{RetCustomType_0: retCustomType_0, RetCustomType_1: retCustomType_1, RetCustomType_2: retCustomType_2} - case "BarHelloRequest": - req := request.(BarHelloRequest) - retHello_0 := p.service.Hello(nil, nil, req.Number) - response = BarHelloResponse{RetHello_0: retHello_0} - case "BarInheritanceRequest": - req := request.(BarInheritanceRequest) - retInheritance_0, retInheritance_1, retInheritance_2 := p.service.Inheritance(req.Inner, req.Nested, req.Inline) - response = BarInheritanceResponse{RetInheritance_0: retInheritance_0, RetInheritance_1: retInheritance_1, RetInheritance_2: retInheritance_2} - case "BarRepeatRequest": - req := request.(BarRepeatRequest) - three, four := p.service.Repeat(req.One, req.Two) - response = BarRepeatResponse{Three: three, Four: four} - default: - fmt.Println("Unkown request type", reflect.TypeOf(request).String()) - } - - if p.callStatsHandler != nil { - p.callStatsHandler(&gotsrpc.CallStats{ - Func: funcName, - Package: "github.com/foomo/gotsrpc/v2/demo", - Service: "Bar", - Execution: time.Since(start), - }) - } - - return -} diff --git a/demo/gorpcclient_gen.go b/demo/gorpcclient_gen.go deleted file mode 100644 index 6f46ac9..0000000 --- a/demo/gorpcclient_gen.go +++ /dev/null @@ -1,306 +0,0 @@ -// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. - -package demo - -import ( - tls "crypto/tls" - - github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested" - gorpc "github.com/valyala/gorpc" -) - -type FooGoRPCClient struct { - Client *gorpc.Client -} - -func NewFooGoRPCClient(addr string, tlsConfig *tls.Config) *FooGoRPCClient { - client := &FooGoRPCClient{} - if tlsConfig == nil { - client.Client = gorpc.NewTCPClient(addr) - } else { - client.Client = gorpc.NewTLSClient(addr, tlsConfig) - } - return client -} - -func (tsc *FooGoRPCClient) Start() { - tsc.Client.Start() -} - -func (tsc *FooGoRPCClient) Stop() { - tsc.Client.Stop() -} - -func (tsc *FooGoRPCClient) Hello(number int64) (retHello_0 int, clientErr error) { - req := FooHelloRequest{Number: number} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(FooHelloResponse) - return response.RetHello_0, nil -} - -type DemoGoRPCClient struct { - Client *gorpc.Client -} - -func NewDemoGoRPCClient(addr string, tlsConfig *tls.Config) *DemoGoRPCClient { - client := &DemoGoRPCClient{} - if tlsConfig == nil { - client.Client = gorpc.NewTCPClient(addr) - } else { - client.Client = gorpc.NewTLSClient(addr, tlsConfig) - } - return client -} - -func (tsc *DemoGoRPCClient) Start() { - tsc.Client.Start() -} - -func (tsc *DemoGoRPCClient) Stop() { - tsc.Client.Stop() -} - -func (tsc *DemoGoRPCClient) Any(any github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any, clientErr error) { - req := DemoAnyRequest{Any: any, AnyList: anyList, AnyMap: anyMap} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoAnyResponse) - return response.RetAny_0, response.RetAny_1, response.RetAny_2, nil -} - -func (tsc *DemoGoRPCClient) ArrayOfRemoteScalars() (arrayOfRemoteScalars RemoteScalarsStrings, clientErr error) { - req := DemoArrayOfRemoteScalarsRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoArrayOfRemoteScalarsResponse) - return response.ArrayOfRemoteScalars, nil -} - -func (tsc *DemoGoRPCClient) ArrayOfRemoteScalarsInAStruct() (strct RemoteScalarStruct, clientErr error) { - req := DemoArrayOfRemoteScalarsInAStructRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoArrayOfRemoteScalarsInAStructResponse) - return response.Strct, nil -} - -func (tsc *DemoGoRPCClient) ExtractAddress(person *Person) (addr *Address, e *Err, clientErr error) { - req := DemoExtractAddressRequest{Person: person} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoExtractAddressResponse) - return response.Addr, response.E, nil -} - -func (tsc *DemoGoRPCClient) GiveMeAScalar() (amount github_com_foomo_gotsrpc_v2_demo_nested.Amount, wahr github_com_foomo_gotsrpc_v2_demo_nested.True, hier ScalarInPlace, clientErr error) { - req := DemoGiveMeAScalarRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoGiveMeAScalarResponse) - return response.Amount, response.Wahr, response.Hier, nil -} - -func (tsc *DemoGoRPCClient) Hello(name string) (retHello_0 string, retHello_1 *Err, clientErr error) { - req := DemoHelloRequest{Name: name} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoHelloResponse) - return response.RetHello_0, response.RetHello_1, nil -} - -func (tsc *DemoGoRPCClient) HelloInterface(anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) (clientErr error) { - req := DemoHelloInterfaceRequest{Anything: anything, AnythingMap: anythingMap, AnythingSlice: anythingSlice} - _, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - return nil -} - -func (tsc *DemoGoRPCClient) HelloLocalMapType() (localStuff MapWithLocalStuff, clientErr error) { - req := DemoHelloLocalMapTypeRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoHelloLocalMapTypeResponse) - return response.LocalStuff, nil -} - -func (tsc *DemoGoRPCClient) HelloMapType() (otherStuff MapOfOtherStuff, clientErr error) { - req := DemoHelloMapTypeRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoHelloMapTypeResponse) - return response.OtherStuff, nil -} - -func (tsc *DemoGoRPCClient) HelloNumberMaps(intMap map[int]string) (floatMap map[float64]string, clientErr error) { - req := DemoHelloNumberMapsRequest{IntMap: intMap} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoHelloNumberMapsResponse) - return response.FloatMap, nil -} - -func (tsc *DemoGoRPCClient) HelloScalarError() (err *ScalarError, clientErr error) { - req := DemoHelloScalarErrorRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoHelloScalarErrorResponse) - return response.Err, nil -} - -func (tsc *DemoGoRPCClient) MapCrap() (crap map[string][]int, clientErr error) { - req := DemoMapCrapRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoMapCrapResponse) - return response.Crap, nil -} - -func (tsc *DemoGoRPCClient) Nest() (retNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested, clientErr error) { - req := DemoNestRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoNestResponse) - return response.RetNest_0, nil -} - -func (tsc *DemoGoRPCClient) TestScalarInPlace() (retTestScalarInPlace_0 ScalarInPlace, clientErr error) { - req := DemoTestScalarInPlaceRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(DemoTestScalarInPlaceResponse) - return response.RetTestScalarInPlace_0, nil -} - -type BarGoRPCClient struct { - Client *gorpc.Client -} - -func NewBarGoRPCClient(addr string, tlsConfig *tls.Config) *BarGoRPCClient { - client := &BarGoRPCClient{} - if tlsConfig == nil { - client.Client = gorpc.NewTCPClient(addr) - } else { - client.Client = gorpc.NewTLSClient(addr, tlsConfig) - } - return client -} - -func (tsc *BarGoRPCClient) Start() { - tsc.Client.Start() -} - -func (tsc *BarGoRPCClient) Stop() { - tsc.Client.Stop() -} - -func (tsc *BarGoRPCClient) AttributeMapping() (retAttributeMapping_0 AttributeMapping, clientErr error) { - req := BarAttributeMappingRequest{} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(BarAttributeMappingResponse) - return response.RetAttributeMapping_0, nil -} - -func (tsc *BarGoRPCClient) CustomError(one CustomError, two *CustomError) (three CustomError, four *CustomError, clientErr error) { - req := BarCustomErrorRequest{One: one, Two: two} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(BarCustomErrorResponse) - return response.Three, response.Four, nil -} - -func (tsc *BarGoRPCClient) CustomType(customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (retCustomType_0 *CustomTypeInt, retCustomType_1 *CustomTypeString, retCustomType_2 CustomTypeStruct, clientErr error) { - req := BarCustomTypeRequest{CustomTypeInt: customTypeInt, CustomTypeString: customTypeString, CustomTypeStruct: CustomTypeStruct} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(BarCustomTypeResponse) - return response.RetCustomType_0, response.RetCustomType_1, response.RetCustomType_2, nil -} - -func (tsc *BarGoRPCClient) Hello(number int64) (retHello_0 int, clientErr error) { - req := BarHelloRequest{Number: number} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(BarHelloResponse) - return response.RetHello_0, nil -} - -func (tsc *BarGoRPCClient) Inheritance(inner Inner, nested OuterNested, inline OuterInline) (retInheritance_0 Inner, retInheritance_1 OuterNested, retInheritance_2 OuterInline, clientErr error) { - req := BarInheritanceRequest{Inner: inner, Nested: nested, Inline: inline} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(BarInheritanceResponse) - return response.RetInheritance_0, response.RetInheritance_1, response.RetInheritance_2, nil -} - -func (tsc *BarGoRPCClient) Repeat(one string, two string) (three bool, four bool, clientErr error) { - req := BarRepeatRequest{One: one, Two: two} - rpcCallRes, rpcCallErr := tsc.Client.Call(req) - if rpcCallErr != nil { - clientErr = rpcCallErr - return - } - response := rpcCallRes.(BarRepeatResponse) - return response.Three, response.Four, nil -} diff --git a/demo/gotsrpc_gen.go b/demo/gotsrpc_gen.go deleted file mode 100644 index 3bb4cc7..0000000 --- a/demo/gotsrpc_gen.go +++ /dev/null @@ -1,455 +0,0 @@ -// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. - -package demo - -import ( - io "io" - ioutil "io/ioutil" - http "net/http" - time "time" - - gotsrpc "github.com/foomo/gotsrpc/v2" - github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested" -) - -const ( - FooGoTSRPCProxyHello = "Hello" -) - -type FooGoTSRPCProxy struct { - EndPoint string - service *Foo -} - -func NewDefaultFooGoTSRPCProxy(service *Foo) *FooGoTSRPCProxy { - return &FooGoTSRPCProxy{ - EndPoint: "/service/foo", - service: service, - } -} - -func NewFooGoTSRPCProxy(service *Foo, endpoint string) *FooGoTSRPCProxy { - return &FooGoTSRPCProxy{ - EndPoint: endpoint, - service: service, - } -} - -// ServeHTTP exposes your service -func (p *FooGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if r.Method != http.MethodPost { - if r.Method == http.MethodOptions { - return - } - gotsrpc.ErrorMethodNotAllowed(w) - return - } - defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body - - funcName := gotsrpc.GetCalledFunc(r, p.EndPoint) - callStats := gotsrpc.GetStatsForRequest(r) - if callStats != nil { - callStats.Func = funcName - callStats.Package = "github.com/foomo/gotsrpc/v2/demo" - callStats.Service = "Foo" - } - switch funcName { - case FooGoTSRPCProxyHello: - var ( - arg_number int64 - ) - args := []interface{}{&arg_number} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - helloRet := p.service.Hello(arg_number) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{helloRet}, callStats, r, w) - return - default: - gotsrpc.ClearStats(r) - http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound) - } -} - -const ( - DemoGoTSRPCProxyAny = "Any" - DemoGoTSRPCProxyArrayOfRemoteScalars = "ArrayOfRemoteScalars" - DemoGoTSRPCProxyArrayOfRemoteScalarsInAStruct = "ArrayOfRemoteScalarsInAStruct" - DemoGoTSRPCProxyExtractAddress = "ExtractAddress" - DemoGoTSRPCProxyGiveMeAScalar = "GiveMeAScalar" - DemoGoTSRPCProxyHello = "Hello" - DemoGoTSRPCProxyHelloInterface = "HelloInterface" - DemoGoTSRPCProxyHelloLocalMapType = "HelloLocalMapType" - DemoGoTSRPCProxyHelloMapType = "HelloMapType" - DemoGoTSRPCProxyHelloNumberMaps = "HelloNumberMaps" - DemoGoTSRPCProxyHelloScalarError = "HelloScalarError" - DemoGoTSRPCProxyMapCrap = "MapCrap" - DemoGoTSRPCProxyNest = "Nest" - DemoGoTSRPCProxyTestScalarInPlace = "TestScalarInPlace" -) - -type DemoGoTSRPCProxy struct { - EndPoint string - service *Demo -} - -func NewDefaultDemoGoTSRPCProxy(service *Demo) *DemoGoTSRPCProxy { - return &DemoGoTSRPCProxy{ - EndPoint: "/service/demo", - service: service, - } -} - -func NewDemoGoTSRPCProxy(service *Demo, endpoint string) *DemoGoTSRPCProxy { - return &DemoGoTSRPCProxy{ - EndPoint: endpoint, - service: service, - } -} - -// ServeHTTP exposes your service -func (p *DemoGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if r.Method != http.MethodPost { - if r.Method == http.MethodOptions { - return - } - gotsrpc.ErrorMethodNotAllowed(w) - return - } - defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body - - funcName := gotsrpc.GetCalledFunc(r, p.EndPoint) - callStats := gotsrpc.GetStatsForRequest(r) - if callStats != nil { - callStats.Func = funcName - callStats.Package = "github.com/foomo/gotsrpc/v2/demo" - callStats.Service = "Demo" - } - switch funcName { - case DemoGoTSRPCProxyAny: - var ( - arg_any github_com_foomo_gotsrpc_v2_demo_nested.Any - arg_anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any - arg_anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any - ) - args := []interface{}{&arg_any, &arg_anyList, &arg_anyMap} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - anyRet, anyRet_1, anyRet_2 := p.service.Any(arg_any, arg_anyList, arg_anyMap) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{anyRet, anyRet_1, anyRet_2}, callStats, r, w) - return - case DemoGoTSRPCProxyArrayOfRemoteScalars: - executionStart := time.Now() - arrayOfRemoteScalarsArrayOfRemoteScalars := p.service.ArrayOfRemoteScalars() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{arrayOfRemoteScalarsArrayOfRemoteScalars}, callStats, r, w) - return - case DemoGoTSRPCProxyArrayOfRemoteScalarsInAStruct: - executionStart := time.Now() - arrayOfRemoteScalarsInAStructStrct := p.service.ArrayOfRemoteScalarsInAStruct() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{arrayOfRemoteScalarsInAStructStrct}, callStats, r, w) - return - case DemoGoTSRPCProxyExtractAddress: - var ( - arg_person *Person - ) - args := []interface{}{&arg_person} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - extractAddressAddr, extractAddressE := p.service.ExtractAddress(arg_person) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{extractAddressAddr, extractAddressE}, callStats, r, w) - return - case DemoGoTSRPCProxyGiveMeAScalar: - executionStart := time.Now() - giveMeAScalarAmount, giveMeAScalarWahr, giveMeAScalarHier := p.service.GiveMeAScalar() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{giveMeAScalarAmount, giveMeAScalarWahr, giveMeAScalarHier}, callStats, r, w) - return - case DemoGoTSRPCProxyHello: - var ( - arg_name string - ) - args := []interface{}{&arg_name} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - helloRet, helloRet_1 := p.service.Hello(arg_name) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{helloRet, helloRet_1}, callStats, r, w) - return - case DemoGoTSRPCProxyHelloInterface: - var ( - arg_anything interface{} - arg_anythingMap map[string]interface{} - arg_anythingSlice []interface{} - ) - args := []interface{}{&arg_anything, &arg_anythingMap, &arg_anythingSlice} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - p.service.HelloInterface(arg_anything, arg_anythingMap, arg_anythingSlice) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{}, callStats, r, w) - return - case DemoGoTSRPCProxyHelloLocalMapType: - executionStart := time.Now() - helloLocalMapTypeLocalStuff := p.service.HelloLocalMapType() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{helloLocalMapTypeLocalStuff}, callStats, r, w) - return - case DemoGoTSRPCProxyHelloMapType: - executionStart := time.Now() - helloMapTypeOtherStuff := p.service.HelloMapType() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{helloMapTypeOtherStuff}, callStats, r, w) - return - case DemoGoTSRPCProxyHelloNumberMaps: - var ( - arg_intMap map[int]string - ) - args := []interface{}{&arg_intMap} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - helloNumberMapsFloatMap := p.service.HelloNumberMaps(arg_intMap) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{helloNumberMapsFloatMap}, callStats, r, w) - return - case DemoGoTSRPCProxyHelloScalarError: - executionStart := time.Now() - helloScalarErrorErr := p.service.HelloScalarError() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{helloScalarErrorErr}, callStats, r, w) - return - case DemoGoTSRPCProxyMapCrap: - executionStart := time.Now() - mapCrapCrap := p.service.MapCrap() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{mapCrapCrap}, callStats, r, w) - return - case DemoGoTSRPCProxyNest: - executionStart := time.Now() - nestRet := p.service.Nest() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{nestRet}, callStats, r, w) - return - case DemoGoTSRPCProxyTestScalarInPlace: - executionStart := time.Now() - testScalarInPlaceRet := p.service.TestScalarInPlace() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{testScalarInPlaceRet}, callStats, r, w) - return - default: - gotsrpc.ClearStats(r) - http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound) - } -} - -const ( - BarGoTSRPCProxyAttributeMapping = "AttributeMapping" - BarGoTSRPCProxyCustomError = "CustomError" - BarGoTSRPCProxyCustomType = "CustomType" - BarGoTSRPCProxyHello = "Hello" - BarGoTSRPCProxyInheritance = "Inheritance" - BarGoTSRPCProxyRepeat = "Repeat" -) - -type BarGoTSRPCProxy struct { - EndPoint string - service Bar -} - -func NewDefaultBarGoTSRPCProxy(service Bar) *BarGoTSRPCProxy { - return &BarGoTSRPCProxy{ - EndPoint: "/service/bar", - service: service, - } -} - -func NewBarGoTSRPCProxy(service Bar, endpoint string) *BarGoTSRPCProxy { - return &BarGoTSRPCProxy{ - EndPoint: endpoint, - service: service, - } -} - -// ServeHTTP exposes your service -func (p *BarGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if r.Method != http.MethodPost { - if r.Method == http.MethodOptions { - return - } - gotsrpc.ErrorMethodNotAllowed(w) - return - } - defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body - - funcName := gotsrpc.GetCalledFunc(r, p.EndPoint) - callStats := gotsrpc.GetStatsForRequest(r) - if callStats != nil { - callStats.Func = funcName - callStats.Package = "github.com/foomo/gotsrpc/v2/demo" - callStats.Service = "Bar" - } - switch funcName { - case BarGoTSRPCProxyAttributeMapping: - executionStart := time.Now() - attributeMappingRet := p.service.AttributeMapping() - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{attributeMappingRet}, callStats, r, w) - return - case BarGoTSRPCProxyCustomError: - var ( - arg_one CustomError - arg_two *CustomError - ) - args := []interface{}{&arg_one, &arg_two} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - customErrorThree, customErrorFour := p.service.CustomError(arg_one, arg_two) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{customErrorThree, customErrorFour}, callStats, r, w) - return - case BarGoTSRPCProxyCustomType: - var ( - arg_customTypeInt CustomTypeInt - arg_customTypeString CustomTypeString - arg_CustomTypeStruct CustomTypeStruct - ) - args := []interface{}{&arg_customTypeInt, &arg_customTypeString, &arg_CustomTypeStruct} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - customTypeRet, customTypeRet_1, customTypeRet_2 := p.service.CustomType(arg_customTypeInt, arg_customTypeString, arg_CustomTypeStruct) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{customTypeRet, customTypeRet_1, customTypeRet_2}, callStats, r, w) - return - case BarGoTSRPCProxyHello: - var ( - arg_number int64 - ) - args := []interface{}{&arg_number} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - rw := gotsrpc.ResponseWriter{ResponseWriter: w} - helloRet := p.service.Hello(&rw, r, arg_number) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - if rw.Status() == http.StatusOK { - gotsrpc.Reply([]interface{}{helloRet}, callStats, r, w) - } - return - case BarGoTSRPCProxyInheritance: - var ( - arg_inner Inner - arg_nested OuterNested - arg_inline OuterInline - ) - args := []interface{}{&arg_inner, &arg_nested, &arg_inline} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - inheritanceRet, inheritanceRet_1, inheritanceRet_2 := p.service.Inheritance(arg_inner, arg_nested, arg_inline) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{inheritanceRet, inheritanceRet_1, inheritanceRet_2}, callStats, r, w) - return - case BarGoTSRPCProxyRepeat: - var ( - arg_one string - arg_two string - ) - args := []interface{}{&arg_one, &arg_two} - err := gotsrpc.LoadArgs(&args, callStats, r) - if err != nil { - gotsrpc.ErrorCouldNotLoadArgs(w) - return - } - executionStart := time.Now() - repeatThree, repeatFour := p.service.Repeat(arg_one, arg_two) - if callStats != nil { - callStats.Execution = time.Now().Sub(executionStart) - } - gotsrpc.Reply([]interface{}{repeatThree, repeatFour}, callStats, r, w) - return - default: - gotsrpc.ClearStats(r) - http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound) - } -} diff --git a/demo/gotsrpcclient_gen.go b/demo/gotsrpcclient_gen.go deleted file mode 100644 index 2a8fad3..0000000 --- a/demo/gotsrpcclient_gen.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. - -package demo - -import ( - go_context "context" - go_net_http "net/http" - - gotsrpc "github.com/foomo/gotsrpc/v2" - github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested" - pkg_errors "github.com/pkg/errors" -) - -type FooGoTSRPCClient interface { - Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error) -} - -type HTTPFooGoTSRPCClient struct { - URL string - EndPoint string - Client gotsrpc.Client -} - -func NewDefaultFooGoTSRPCClient(url string) *HTTPFooGoTSRPCClient { - return NewFooGoTSRPCClient(url, "/service/foo") -} - -func NewFooGoTSRPCClient(url string, endpoint string) *HTTPFooGoTSRPCClient { - return NewFooGoTSRPCClientWithClient(url, endpoint, nil) -} - -func NewFooGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPFooGoTSRPCClient { - return &HTTPFooGoTSRPCClient{ - URL: url, - EndPoint: endpoint, - Client: gotsrpc.NewClientWithHttpClient(client), - } -} -func (tsc *HTTPFooGoTSRPCClient) Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error) { - args := []interface{}{number} - reply := []interface{}{&retHello_0} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Hello", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.FooGoTSRPCProxy Hello") - } - return -} - -type DemoGoTSRPCClient interface { - Any(ctx go_context.Context, any github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any, clientErr error) - ArrayOfRemoteScalars(ctx go_context.Context) (arrayOfRemoteScalars RemoteScalarsStrings, clientErr error) - ArrayOfRemoteScalarsInAStruct(ctx go_context.Context) (strct RemoteScalarStruct, clientErr error) - ExtractAddress(ctx go_context.Context, person *Person) (addr *Address, e *Err, clientErr error) - GiveMeAScalar(ctx go_context.Context) (amount github_com_foomo_gotsrpc_v2_demo_nested.Amount, wahr github_com_foomo_gotsrpc_v2_demo_nested.True, hier ScalarInPlace, clientErr error) - Hello(ctx go_context.Context, name string) (retHello_0 string, retHello_1 *Err, clientErr error) - HelloInterface(ctx go_context.Context, anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) (clientErr error) - HelloLocalMapType(ctx go_context.Context) (localStuff MapWithLocalStuff, clientErr error) - HelloMapType(ctx go_context.Context) (otherStuff MapOfOtherStuff, clientErr error) - HelloNumberMaps(ctx go_context.Context, intMap map[int]string) (floatMap map[float64]string, clientErr error) - HelloScalarError(ctx go_context.Context) (err *ScalarError, clientErr error) - MapCrap(ctx go_context.Context) (crap map[string][]int, clientErr error) - Nest(ctx go_context.Context) (retNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested, clientErr error) - TestScalarInPlace(ctx go_context.Context) (retTestScalarInPlace_0 ScalarInPlace, clientErr error) -} - -type HTTPDemoGoTSRPCClient struct { - URL string - EndPoint string - Client gotsrpc.Client -} - -func NewDefaultDemoGoTSRPCClient(url string) *HTTPDemoGoTSRPCClient { - return NewDemoGoTSRPCClient(url, "/service/demo") -} - -func NewDemoGoTSRPCClient(url string, endpoint string) *HTTPDemoGoTSRPCClient { - return NewDemoGoTSRPCClientWithClient(url, endpoint, nil) -} - -func NewDemoGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPDemoGoTSRPCClient { - return &HTTPDemoGoTSRPCClient{ - URL: url, - EndPoint: endpoint, - Client: gotsrpc.NewClientWithHttpClient(client), - } -} -func (tsc *HTTPDemoGoTSRPCClient) Any(ctx go_context.Context, any github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any, clientErr error) { - args := []interface{}{any, anyList, anyMap} - reply := []interface{}{&retAny_0, &retAny_1, &retAny_2} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Any", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy Any") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) ArrayOfRemoteScalars(ctx go_context.Context) (arrayOfRemoteScalars RemoteScalarsStrings, clientErr error) { - args := []interface{}{} - reply := []interface{}{&arrayOfRemoteScalars} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "ArrayOfRemoteScalars", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy ArrayOfRemoteScalars") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) ArrayOfRemoteScalarsInAStruct(ctx go_context.Context) (strct RemoteScalarStruct, clientErr error) { - args := []interface{}{} - reply := []interface{}{&strct} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "ArrayOfRemoteScalarsInAStruct", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy ArrayOfRemoteScalarsInAStruct") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) ExtractAddress(ctx go_context.Context, person *Person) (addr *Address, e *Err, clientErr error) { - args := []interface{}{person} - reply := []interface{}{&addr, &e} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "ExtractAddress", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy ExtractAddress") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) GiveMeAScalar(ctx go_context.Context) (amount github_com_foomo_gotsrpc_v2_demo_nested.Amount, wahr github_com_foomo_gotsrpc_v2_demo_nested.True, hier ScalarInPlace, clientErr error) { - args := []interface{}{} - reply := []interface{}{&amount, &wahr, &hier} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "GiveMeAScalar", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy GiveMeAScalar") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) Hello(ctx go_context.Context, name string) (retHello_0 string, retHello_1 *Err, clientErr error) { - args := []interface{}{name} - reply := []interface{}{&retHello_0, &retHello_1} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Hello", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy Hello") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) HelloInterface(ctx go_context.Context, anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) (clientErr error) { - args := []interface{}{anything, anythingMap, anythingSlice} - reply := []interface{}{} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloInterface", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloInterface") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) HelloLocalMapType(ctx go_context.Context) (localStuff MapWithLocalStuff, clientErr error) { - args := []interface{}{} - reply := []interface{}{&localStuff} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloLocalMapType", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloLocalMapType") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) HelloMapType(ctx go_context.Context) (otherStuff MapOfOtherStuff, clientErr error) { - args := []interface{}{} - reply := []interface{}{&otherStuff} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloMapType", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloMapType") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) HelloNumberMaps(ctx go_context.Context, intMap map[int]string) (floatMap map[float64]string, clientErr error) { - args := []interface{}{intMap} - reply := []interface{}{&floatMap} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloNumberMaps", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloNumberMaps") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) HelloScalarError(ctx go_context.Context) (err *ScalarError, clientErr error) { - args := []interface{}{} - reply := []interface{}{&err} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloScalarError", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloScalarError") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) MapCrap(ctx go_context.Context) (crap map[string][]int, clientErr error) { - args := []interface{}{} - reply := []interface{}{&crap} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "MapCrap", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy MapCrap") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) Nest(ctx go_context.Context) (retNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested, clientErr error) { - args := []interface{}{} - reply := []interface{}{&retNest_0} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Nest", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy Nest") - } - return -} - -func (tsc *HTTPDemoGoTSRPCClient) TestScalarInPlace(ctx go_context.Context) (retTestScalarInPlace_0 ScalarInPlace, clientErr error) { - args := []interface{}{} - reply := []interface{}{&retTestScalarInPlace_0} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "TestScalarInPlace", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy TestScalarInPlace") - } - return -} - -type BarGoTSRPCClient interface { - AttributeMapping(ctx go_context.Context) (retAttributeMapping_0 AttributeMapping, clientErr error) - CustomError(ctx go_context.Context, one CustomError, two *CustomError) (three CustomError, four *CustomError, clientErr error) - CustomType(ctx go_context.Context, customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (retCustomType_0 *CustomTypeInt, retCustomType_1 *CustomTypeString, retCustomType_2 CustomTypeStruct, clientErr error) - Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error) - Inheritance(ctx go_context.Context, inner Inner, nested OuterNested, inline OuterInline) (retInheritance_0 Inner, retInheritance_1 OuterNested, retInheritance_2 OuterInline, clientErr error) - Repeat(ctx go_context.Context, one string, two string) (three bool, four bool, clientErr error) -} - -type HTTPBarGoTSRPCClient struct { - URL string - EndPoint string - Client gotsrpc.Client -} - -func NewDefaultBarGoTSRPCClient(url string) *HTTPBarGoTSRPCClient { - return NewBarGoTSRPCClient(url, "/service/bar") -} - -func NewBarGoTSRPCClient(url string, endpoint string) *HTTPBarGoTSRPCClient { - return NewBarGoTSRPCClientWithClient(url, endpoint, nil) -} - -func NewBarGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPBarGoTSRPCClient { - return &HTTPBarGoTSRPCClient{ - URL: url, - EndPoint: endpoint, - Client: gotsrpc.NewClientWithHttpClient(client), - } -} -func (tsc *HTTPBarGoTSRPCClient) AttributeMapping(ctx go_context.Context) (retAttributeMapping_0 AttributeMapping, clientErr error) { - args := []interface{}{} - reply := []interface{}{&retAttributeMapping_0} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "AttributeMapping", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy AttributeMapping") - } - return -} - -func (tsc *HTTPBarGoTSRPCClient) CustomError(ctx go_context.Context, one CustomError, two *CustomError) (three CustomError, four *CustomError, clientErr error) { - args := []interface{}{one, two} - reply := []interface{}{&three, &four} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "CustomError", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy CustomError") - } - return -} - -func (tsc *HTTPBarGoTSRPCClient) CustomType(ctx go_context.Context, customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (retCustomType_0 *CustomTypeInt, retCustomType_1 *CustomTypeString, retCustomType_2 CustomTypeStruct, clientErr error) { - args := []interface{}{customTypeInt, customTypeString, CustomTypeStruct} - reply := []interface{}{&retCustomType_0, &retCustomType_1, &retCustomType_2} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "CustomType", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy CustomType") - } - return -} - -func (tsc *HTTPBarGoTSRPCClient) Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error) { - args := []interface{}{number} - reply := []interface{}{&retHello_0} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Hello", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy Hello") - } - return -} - -func (tsc *HTTPBarGoTSRPCClient) Inheritance(ctx go_context.Context, inner Inner, nested OuterNested, inline OuterInline) (retInheritance_0 Inner, retInheritance_1 OuterNested, retInheritance_2 OuterInline, clientErr error) { - args := []interface{}{inner, nested, inline} - reply := []interface{}{&retInheritance_0, &retInheritance_1, &retInheritance_2} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Inheritance", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy Inheritance") - } - return -} - -func (tsc *HTTPBarGoTSRPCClient) Repeat(ctx go_context.Context, one string, two string) (three bool, four bool, clientErr error) { - args := []interface{}{one, two} - reply := []interface{}{&three, &four} - clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Repeat", args, reply) - if clientErr != nil { - clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy Repeat") - } - return -} diff --git a/demo/gotsrpcclient_test.go b/demo/gotsrpcclient_test.go deleted file mode 100644 index b9ec114..0000000 --- a/demo/gotsrpcclient_test.go +++ /dev/null @@ -1,148 +0,0 @@ -package demo - -import ( - "context" - "fmt" - "math/rand" - "net/http/httptest" - "net/url" - "strconv" - "testing" - "time" - - "github.com/stretchr/testify/assert" - - "github.com/foomo/gotsrpc/v2/demo/nested" -) - -func init() { - rand.Seed(time.Now().UnixNano()) -} - -var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") - -func RandStringRunes(n int) string { - b := make([]rune, n) - for i := range b { - b[i] = letterRunes[rand.Intn(len(letterRunes))] - } - return string(b) -} - -var ( - client DemoGoTSRPCClient - server *httptest.Server -) - -func setup() { - server = httptest.NewServer(NewDefaultDemoGoTSRPCProxy(&Demo{})) - serverUrl, _ := url.Parse(server.URL) - client = NewDefaultDemoGoTSRPCClient(serverUrl.String()) -} - -func teardown() { - server.Close() -} - -func TestDefault(t *testing.T) { - setup() - defer teardown() - ctx := context.Background() - - resp, errServer, errClient := client.Hello(ctx, "stefan") - assert.NoError(t, errClient) - assert.Nil(t, errServer) - fmt.Println(resp) -} - -func TestHelloNumberMaps(t *testing.T) { - setup() - defer teardown() - ctx := context.Background() - - intMap := map[int]string{1: "one", 2: "two", 3: "three"} - floatMap, errClient := client.HelloNumberMaps(ctx, intMap) - assert.NoError(t, errClient) - for f, fstr := range floatMap { - i := int(f) - assert.Equal(t, fstr, intMap[i]) - } -} - -func benchmarkRequests(b *testing.B, count int) { - setup() - defer teardown() - ctx := context.Background() - - person := GeneratePerson(count) - b.ResetTimer() - for n := 0; n < b.N; n++ { - client.ExtractAddress(ctx, person) - } -} - -func BenchmarkRequest1(b *testing.B) { benchmarkRequests(b, 1) } -func BenchmarkRequest10(b *testing.B) { benchmarkRequests(b, 10) } -func BenchmarkRequest100(b *testing.B) { benchmarkRequests(b, 100) } -func BenchmarkRequest1000(b *testing.B) { benchmarkRequests(b, 1000) } -func BenchmarkRequest10000(b *testing.B) { benchmarkRequests(b, 10000) } -func BenchmarkRequest100000(b *testing.B) { benchmarkRequests(b, 100000) } - -func GeneratePerson(count int) *Person { - person := &Person{} - person.AddressPtr = GenerateAddress() - person.Addresses = map[string]*Address{} - for i := 0; i < count; i++ { - person.Addresses[strconv.Itoa(i)] = GenerateAddress() - } - return person -} - -func GenerateAddress() *Address { - gen := func() string { - return RandStringRunes(32) - } - genarr := func(count int) (ret []string) { - ret = make([]string, count) - for i := 0; i < count; i++ { - ret[i] = gen() - } - return - } - return &Address{ - City: gen(), - Signs: genarr(100), - SecretServerCrap: false, - PeoplePtr: nil, - ArrayOfMaps: nil, - ArrayArrayAddress: nil, - People: nil, - MapCrap: nil, - NestedPtr: &nested.Nested{ - Name: gen(), - SuperNestedString: struct { - Ha int64 - }{ - Ha: 011, - }, - SuperNestedPtr: &struct { - Bla string - }{ - Bla: gen(), - }, - }, - NestedStruct: nested.Nested{ - Name: gen(), - SuperNestedString: struct { - Ha int64 - }{ - Ha: 0, - }, - SuperNestedPtr: &struct { - Bla string - }{ - Bla: gen(), - }, - }, - } -} diff --git a/demo/nested/nested.go b/demo/nested/nested.go deleted file mode 100644 index c0bb819..0000000 --- a/demo/nested/nested.go +++ /dev/null @@ -1,30 +0,0 @@ -package nested - -type CustomTypeNested string - -const ( - CustomTypeNestedOne CustomTypeNested = "one" - CustomTypeNestedTwo CustomTypeNested = "two" - CustomTypeNestedThree CustomTypeNested = "three" -) - -type Nested struct { - Name string - Any Any - AnyMap map[string]Any - AnyList []Any - SuperNestedString struct { - Ha int64 - } - SuperNestedPtr *struct { - Bla string - } -} - -type Any interface{} -type Amount int -type True bool - -const ItIsTrue True = true - -type JustAnotherStingType string diff --git a/demo/output/client.ts b/demo/output/client.ts deleted file mode 100644 index a85c09c..0000000 --- a/demo/output/client.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* eslint:disable */ -// hello commonjs - we need some imports - sorted in alphabetical order, by go package -import * as github_com_foomo_gotsrpc_v2_demo from './demo'; // demo/output/client.ts to demo/output/demo.ts -import * as github_com_foomo_gotsrpc_v2_demo_nested from './demo-nested'; // demo/output/client.ts to demo/output/demo-nested.ts - -export class FooClient { - public static defaultEndpoint = "/service/foo"; - constructor( - public transport:(method: string, data?: any[]) => Promise - ) {} - async hello(number:number):Promise { - return (await this.transport<{0:number}>("Hello", [number]))[0] - } -} -export class DemoClient { - public static defaultEndpoint = "/service/demo"; - constructor( - public transport:(method: string, data?: any[]) => Promise - ) {} - async any(any:github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList:Array|null, anyMap:Record|null):Promise<{ret:github_com_foomo_gotsrpc_v2_demo_nested.Any; ret_1:Array|null; ret_2:Record|null}> { - let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo_nested.Any; 1:Array|null; 2:Record|null}>("Any", [any, anyList, anyMap]) - let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]}; - return responseObject; - } - async arrayOfRemoteScalars():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.RemoteScalarsStrings|null}>("ArrayOfRemoteScalars", []))[0] - } - async arrayOfRemoteScalarsInAStruct():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.RemoteScalarStruct}>("ArrayOfRemoteScalarsInAStruct", []))[0] - } - async extractAddress(person:github_com_foomo_gotsrpc_v2_demo.Person|null):Promise { - let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.Address|null; 1:github_com_foomo_gotsrpc_v2_demo.Err|null}>("ExtractAddress", [person]) - let err = response[1]; - if(err) { throw err } - return response[0] - } - async giveMeAScalar():Promise<{amount:github_com_foomo_gotsrpc_v2_demo_nested.Amount; wahr:github_com_foomo_gotsrpc_v2_demo_nested.True; hier:github_com_foomo_gotsrpc_v2_demo.ScalarInPlace}> { - let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo_nested.Amount; 1:github_com_foomo_gotsrpc_v2_demo_nested.True; 2:github_com_foomo_gotsrpc_v2_demo.ScalarInPlace}>("GiveMeAScalar", []) - let responseObject = {amount : response[0], wahr : response[1], hier : response[2]}; - return responseObject; - } - async hello(name:string):Promise { - let response = await this.transport<{0:string; 1:github_com_foomo_gotsrpc_v2_demo.Err|null}>("Hello", [name]) - let err = response[1]; - if(err) { throw err } - return response[0] - } - async helloInterface(anything:any, anythingMap:Record|null, anythingSlice:Array|null):Promise { - await this.transport("HelloInterface", [anything, anythingMap, anythingSlice]) - } - async helloLocalMapType():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.MapWithLocalStuff|null}>("HelloLocalMapType", []))[0] - } - async helloMapType():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.MapOfOtherStuff|null}>("HelloMapType", []))[0] - } - async helloNumberMaps(intMap:Record|null):Promise|null> { - return (await this.transport<{0:Record|null}>("HelloNumberMaps", [intMap]))[0] - } - async helloScalarError():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.ScalarError|null}>("HelloScalarError", []))[0] - } - async mapCrap():Promise|null>|null> { - return (await this.transport<{0:Record|null>|null}>("MapCrap", []))[0] - } - async nest():Promise|null> { - return (await this.transport<{0:Array|null}>("Nest", []))[0] - } - async testScalarInPlace():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.ScalarInPlace}>("TestScalarInPlace", []))[0] - } -} -export class BarClient { - public static defaultEndpoint = "/service/bar"; - constructor( - public transport:(method: string, data?: any[]) => Promise - ) {} - async attributeMapping():Promise { - return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.AttributeMapping|null}>("AttributeMapping", []))[0] - } - async customError(one:github_com_foomo_gotsrpc_v2_demo.CustomError, two:github_com_foomo_gotsrpc_v2_demo.CustomError|null):Promise<{three:github_com_foomo_gotsrpc_v2_demo.CustomError; four:github_com_foomo_gotsrpc_v2_demo.CustomError|null}> { - let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.CustomError; 1:github_com_foomo_gotsrpc_v2_demo.CustomError|null}>("CustomError", [one, two]) - let responseObject = {three : response[0], four : response[1]}; - return responseObject; - } - async customType(customTypeInt:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt, customTypeString:github_com_foomo_gotsrpc_v2_demo.CustomTypeString, CustomTypeStruct:github_com_foomo_gotsrpc_v2_demo.CustomTypeStruct):Promise<{ret:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt|null; ret_1:github_com_foomo_gotsrpc_v2_demo.CustomTypeString|null; ret_2:github_com_foomo_gotsrpc_v2_demo.CustomTypeStruct}> { - let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt|null; 1:github_com_foomo_gotsrpc_v2_demo.CustomTypeString|null; 2:github_com_foomo_gotsrpc_v2_demo.CustomTypeStruct}>("CustomType", [customTypeInt, customTypeString, CustomTypeStruct]) - let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]}; - return responseObject; - } - async hello(number:number):Promise { - return (await this.transport<{0:number}>("Hello", [number]))[0] - } - async inheritance(inner:github_com_foomo_gotsrpc_v2_demo.Inner, nested:github_com_foomo_gotsrpc_v2_demo.OuterNested, inline:github_com_foomo_gotsrpc_v2_demo.OuterInline):Promise<{ret:github_com_foomo_gotsrpc_v2_demo.Inner; ret_1:github_com_foomo_gotsrpc_v2_demo.OuterNested; ret_2:github_com_foomo_gotsrpc_v2_demo.OuterInline}> { - let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.Inner; 1:github_com_foomo_gotsrpc_v2_demo.OuterNested; 2:github_com_foomo_gotsrpc_v2_demo.OuterInline}>("Inheritance", [inner, nested, inline]) - let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]}; - return responseObject; - } - async repeat(one:string, two:string):Promise<{three:boolean; four:boolean}> { - let response = await this.transport<{0:boolean; 1:boolean}>("Repeat", [one, two]) - let responseObject = {three : response[0], four : response[1]}; - return responseObject; - } -} \ No newline at end of file diff --git a/demo/output/demo-nested.ts b/demo/output/demo-nested.ts deleted file mode 100644 index 02cfd2b..0000000 --- a/demo/output/demo-nested.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint:disable */ -// hello commonjs - we need some imports - sorted in alphabetical order, by go package -import * as github_com_foomo_gotsrpc_v2_demo from './demo'; // demo/output/demo-nested.ts to demo/output/demo.ts -import * as github_com_foomo_gotsrpc_v2_demo_nested from './demo-nested'; // demo/output/demo-nested.ts to demo/output/demo-nested.ts -// github.com/foomo/gotsrpc/v2/demo/nested.Amount -export type Amount = number -// github.com/foomo/gotsrpc/v2/demo/nested.Any -export type Any = any -// github.com/foomo/gotsrpc/v2/demo/nested.CustomTypeNested -export enum CustomTypeNested { - One = "one", - Three = "three", - Two = "two", -} -// github.com/foomo/gotsrpc/v2/demo/nested.JustAnotherStingType -export type JustAnotherStingType = string -// github.com/foomo/gotsrpc/v2/demo/nested.Nested -export interface Nested { - Name:string; - Any:github_com_foomo_gotsrpc_v2_demo_nested.Any; - AnyMap:Record|null; - AnyList:Array|null; - SuperNestedString:{ - Ha:number; - }; - SuperNestedPtr:{ - Bla:string; - }|null; -} -// github.com/foomo/gotsrpc/v2/demo/nested.True -export type True = boolean -// end of common js \ No newline at end of file diff --git a/demo/output/demo.ts b/demo/output/demo.ts deleted file mode 100644 index 48ec3be..0000000 --- a/demo/output/demo.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* eslint:disable */ -// hello commonjs - we need some imports - sorted in alphabetical order, by go package -import * as github_com_foomo_gotsrpc_v2_demo from './demo'; // demo/output/demo.ts to demo/output/demo.ts -import * as github_com_foomo_gotsrpc_v2_demo_nested from './demo-nested'; // demo/output/demo.ts to demo/output/demo-nested.ts -// github.com/foomo/gotsrpc/v2/demo.Address -export interface Address { - city?:string; - signs?:Array|null; - PeoplePtr:Array|null; - ArrayOfMaps:Array|null>|null; - ArrayArrayAddress:Array|null>|null; - People:Array|null; - MapCrap:Record|null>|null; - NestedPtr:github_com_foomo_gotsrpc_v2_demo_nested.Nested|null; - NestedStruct:github_com_foomo_gotsrpc_v2_demo_nested.Nested; -} -// github.com/foomo/gotsrpc/v2/demo.AttributeDefinition -export interface AttributeDefinition { - Key:string; - Value:string; -} -// github.com/foomo/gotsrpc/v2/demo.AttributeID -export type AttributeID = string -// github.com/foomo/gotsrpc/v2/demo.AttributeMapping -export type AttributeMapping = Record -// github.com/foomo/gotsrpc/v2/demo.Check -export interface Check { - Foo:string; -} -// github.com/foomo/gotsrpc/v2/demo.CustomError -export enum CustomError { - Demo = "demo", -} -// github.com/foomo/gotsrpc/v2/demo.CustomTypeFoo -export type CustomTypeFoo = string -// github.com/foomo/gotsrpc/v2/demo.CustomTypeInt -export enum CustomTypeInt { - One = 1, - Three = 3, - Two = 2, -} -// github.com/foomo/gotsrpc/v2/demo.CustomTypeString -export enum CustomTypeString { - Five = "CONST_CASE", - Four = "slug-case", - One = "regular", - Seven = "dot.case", - Six = "SLUG-CASE-UPPER", - Three = "snake_case", - Two = "camelCase", -} -// github.com/foomo/gotsrpc/v2/demo.CustomTypeStruct -export interface CustomTypeStruct { - CustomTypeFoo:github_com_foomo_gotsrpc_v2_demo.CustomTypeFoo; - CustomTypeInt:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt; - CustomTypeString:github_com_foomo_gotsrpc_v2_demo.CustomTypeString; - CustomTypeNested:github_com_foomo_gotsrpc_v2_demo_nested.CustomTypeNested; - Check:github_com_foomo_gotsrpc_v2_demo.Check; -} -// github.com/foomo/gotsrpc/v2/demo.Err -export interface Err { - message:string; -} -// github.com/foomo/gotsrpc/v2/demo.Inner -export interface Inner { - one:string; -} -// github.com/foomo/gotsrpc/v2/demo.LocalKey -export type LocalKey = string -// github.com/foomo/gotsrpc/v2/demo.MapOfOtherStuff -export type MapOfOtherStuff = Record -// github.com/foomo/gotsrpc/v2/demo.MapWithLocalStuff -export type MapWithLocalStuff = Record -// github.com/foomo/gotsrpc/v2/demo.OuterInline -export interface OuterInline { - one:string; - two:string; -} -// github.com/foomo/gotsrpc/v2/demo.OuterNested -export interface OuterNested { - inner:github_com_foomo_gotsrpc_v2_demo.Inner; - two:string; -} -// github.com/foomo/gotsrpc/v2/demo.Person -export interface Person { - Name:string; - address:github_com_foomo_gotsrpc_v2_demo.Address|null; - AddressStruct:github_com_foomo_gotsrpc_v2_demo.Address; - Addresses:Record|null; - InlinePtr:{ - Foo:boolean; - }|null; - InlineStruct:{ - Bar:string; - }; - DNA:string|null; -} -// github.com/foomo/gotsrpc/v2/demo.RemoteScalarStruct -export interface RemoteScalarStruct { - Foo:github_com_foomo_gotsrpc_v2_demo.RemoteScalarsStrings|null; - Bar:github_com_foomo_gotsrpc_v2_demo.RemoteScalarsStrings|null; -} -// github.com/foomo/gotsrpc/v2/demo.RemoteScalarsStrings -export type RemoteScalarsStrings = Array -// github.com/foomo/gotsrpc/v2/demo.ScalarError -export type ScalarError = string -// github.com/foomo/gotsrpc/v2/demo.ScalarInPlace -export type ScalarInPlace = string -// end of common js \ No newline at end of file diff --git a/demo/tests/bar.go b/demo/tests/bar.go deleted file mode 100644 index df534b1..0000000 --- a/demo/tests/bar.go +++ /dev/null @@ -1,35 +0,0 @@ -package tests - -import ( - "net/http" - - "github.com/foomo/gotsrpc/v2/demo" -) - -type Bar struct{} - -func (b Bar) Hello(w http.ResponseWriter, r *http.Request, number int64) int { - return int(number) -} - -func (b Bar) Repeat(one, two string) (three, four bool) { - return true, true -} - -func (b Bar) Inheritance(inner demo.Inner, nested demo.OuterNested, inline demo.OuterInline) (demo.Inner, demo.OuterNested, demo.OuterInline) { - return inner, nested, inline -} - -func (b Bar) CustomType(customTypeInt demo.CustomTypeInt, customTypeString demo.CustomTypeString, customTypeStruct demo.CustomTypeStruct) (*demo.CustomTypeInt, *demo.CustomTypeString, demo.CustomTypeStruct) { - a := demo.CustomTypeIntOne - c := demo.CustomTypeStringOne - return &a, &c, customTypeStruct -} - -func (b Bar) CustomError(one demo.CustomError, two *demo.CustomError) (three demo.CustomError, four *demo.CustomError) { - return one, two -} - -func (b Bar) AttributeMapping() (ret demo.AttributeMapping) { - return ret -} diff --git a/demo/tests/bar_test.go b/demo/tests/bar_test.go deleted file mode 100644 index 7a02c92..0000000 --- a/demo/tests/bar_test.go +++ /dev/null @@ -1,46 +0,0 @@ -package tests - -import ( - "context" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/assert" - - "github.com/foomo/gotsrpc/v2/demo" -) - -func TestHello(t *testing.T) { - proxy := demo.NewDefaultBarGoTSRPCProxy(&Bar{}) - server := httptest.NewServer(proxy) - defer server.Close() - ctx := context.Background() - - client := demo.NewDefaultBarGoTSRPCClient(server.URL) - - if res, clientErr := client.Hello(ctx, 10); assert.NoError(t, clientErr) { - assert.Equal(t, 10, res) - } -} - -func TestCustomError(t *testing.T) { - proxy := demo.NewDefaultBarGoTSRPCProxy(&Bar{}) - server := httptest.NewServer(proxy) - defer server.Close() - ctx := context.Background() - - client := demo.NewDefaultBarGoTSRPCClient(server.URL) - - if three, four, clientErr := client.CustomError(ctx, "", nil); assert.NoError(t, clientErr) { - assert.Equal(t, demo.CustomError(""), three) - assert.Nil(t, four) - } - - one := demo.CustomErrorDemo - two := demo.ErrCustomDemo - if three, four, clientErr := client.CustomError(ctx, one, two); assert.NoError(t, clientErr) { - assert.NotNil(t, three) - assert.NotNil(t, four) - assert.ErrorIs(t, demo.ErrCustomDemo, two) - } -} diff --git a/example/basic/client/index.html b/example/basic/client/index.html new file mode 100644 index 0000000..aa0d62c --- /dev/null +++ b/example/basic/client/index.html @@ -0,0 +1,19 @@ + + + + + + + Basic + + + +

A service test

+ +
open the console!
+
+ + \ No newline at end of file diff --git a/example/basic/client/src/app.ts b/example/basic/client/src/app.ts new file mode 100644 index 0000000..95f0634 --- /dev/null +++ b/example/basic/client/src/app.ts @@ -0,0 +1,11 @@ +import {ServiceClient} from "./service-client.js"; +import transport from "./transport.js"; + + +export const init = () => { + const client = new ServiceClient(transport("/service")); + + client.string("hello world").then((res) => { + console.log(res); + }); +}; diff --git a/example/basic/client/src/service-client.ts b/example/basic/client/src/service-client.ts new file mode 100644 index 0000000..3f0b318 --- /dev/null +++ b/example/basic/client/src/service-client.ts @@ -0,0 +1,187 @@ +/* eslint:disable */ +// hello commonjs - we need some imports - sorted in alphabetical order, by go package +import * as github_com_foomo_gotsrpc_v2_example_basic_service from './service-vo'; // ./client/src/service-client.ts to ./client/src/service-vo.ts + +export class ServiceClient { + public static defaultEndpoint = "/service"; + constructor( + public transport:(method: string, data?: any[]) => Promise + ) {} + async bool(v:boolean):Promise { + return (await this.transport<{0:boolean}>("Bool", [v]))[0] + } + async boolSlice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("BoolSlice", [v]))[0] + } + async float32(v:number):Promise { + return (await this.transport<{0:number}>("Float32", [v]))[0] + } + async float32Map(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Float32Map", [v]))[0] + } + async float32Slice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("Float32Slice", [v]))[0] + } + async float32Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float32Type):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float32Type}>("Float32Type", [v]))[0] + } + async float32TypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Float32TypeMap", [v]))[0] + } + async float32TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float32TypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float32TypeMapTyped|null}>("Float32TypeMapTyped", [v]))[0] + } + async float64(v:number):Promise { + return (await this.transport<{0:number}>("Float64", [v]))[0] + } + async float64Map(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Float64Map", [v]))[0] + } + async float64Slice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("Float64Slice", [v]))[0] + } + async float64Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float64Type):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float64Type}>("Float64Type", [v]))[0] + } + async float64TypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Float64TypeMap", [v]))[0] + } + async float64TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float64TypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float64TypeMapTyped|null}>("Float64TypeMapTyped", [v]))[0] + } + async int(v:number):Promise { + return (await this.transport<{0:number}>("Int", [v]))[0] + } + async int32(v:number):Promise { + return (await this.transport<{0:number}>("Int32", [v]))[0] + } + async int32Map(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Int32Map", [v]))[0] + } + async int32Slice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("Int32Slice", [v]))[0] + } + async int32Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int32Type):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int32Type}>("Int32Type", [v]))[0] + } + async int32TypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Int32TypeMap", [v]))[0] + } + async int32TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int32TypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int32TypeMapTyped|null}>("Int32TypeMapTyped", [v]))[0] + } + async int64(v:number):Promise { + return (await this.transport<{0:number}>("Int64", [v]))[0] + } + async int64Map(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Int64Map", [v]))[0] + } + async int64Slice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("Int64Slice", [v]))[0] + } + async int64Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int64Type):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int64Type}>("Int64Type", [v]))[0] + } + async int64TypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("Int64TypeMap", [v]))[0] + } + async int64TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int64TypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int64TypeMapTyped|null}>("Int64TypeMapTyped", [v]))[0] + } + async intMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("IntMap", [v]))[0] + } + async intSlice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("IntSlice", [v]))[0] + } + async intType(v:github_com_foomo_gotsrpc_v2_example_basic_service.IntType):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.IntType}>("IntType", [v]))[0] + } + async intTypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("IntTypeMap", [v]))[0] + } + async intTypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.IntTypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.IntTypeMapTyped|null}>("IntTypeMapTyped", [v]))[0] + } + async interface(v:any):Promise { + return (await this.transport<{0:any}>("Interface", [v]))[0] + } + async interfaceSlice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("InterfaceSlice", [v]))[0] + } + async string(v:string):Promise { + return (await this.transport<{0:string}>("String", [v]))[0] + } + async stringMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("StringMap", [v]))[0] + } + async stringSlice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("StringSlice", [v]))[0] + } + async stringType(v:github_com_foomo_gotsrpc_v2_example_basic_service.StringType):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.StringType}>("StringType", [v]))[0] + } + async stringTypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("StringTypeMap", [v]))[0] + } + async stringTypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.StringTypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.StringTypeMapTyped|null}>("StringTypeMapTyped", [v]))[0] + } + async struct(v:github_com_foomo_gotsrpc_v2_example_basic_service.Struct):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Struct}>("Struct", [v]))[0] + } + async uInt(v:number):Promise { + return (await this.transport<{0:number}>("UInt", [v]))[0] + } + async uInt32(v:number):Promise { + return (await this.transport<{0:number}>("UInt32", [v]))[0] + } + async uInt32Map(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("UInt32Map", [v]))[0] + } + async uInt32Slice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("UInt32Slice", [v]))[0] + } + async uInt32Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32Type):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32Type}>("UInt32Type", [v]))[0] + } + async uInt32TypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("UInt32TypeMap", [v]))[0] + } + async uInt32TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32TypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32TypeMapTyped|null}>("UInt32TypeMapTyped", [v]))[0] + } + async uInt64(v:number):Promise { + return (await this.transport<{0:number}>("UInt64", [v]))[0] + } + async uInt64Map(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("UInt64Map", [v]))[0] + } + async uInt64Slice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("UInt64Slice", [v]))[0] + } + async uInt64Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64Type):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64Type}>("UInt64Type", [v]))[0] + } + async uInt64TypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("UInt64TypeMap", [v]))[0] + } + async uInt64TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64TypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64TypeMapTyped|null}>("UInt64TypeMapTyped", [v]))[0] + } + async uIntMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("UIntMap", [v]))[0] + } + async uIntSlice(v:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("UIntSlice", [v]))[0] + } + async uIntType(v:github_com_foomo_gotsrpc_v2_example_basic_service.UIntType):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UIntType}>("UIntType", [v]))[0] + } + async uIntTypeMap(v:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("UIntTypeMap", [v]))[0] + } + async uIntTypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.UIntTypeMapTyped|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UIntTypeMapTyped|null}>("UIntTypeMapTyped", [v]))[0] + } +} \ No newline at end of file diff --git a/example/basic/client/src/service-vo.ts b/example/basic/client/src/service-vo.ts new file mode 100644 index 0000000..0cbe634 --- /dev/null +++ b/example/basic/client/src/service-vo.ts @@ -0,0 +1,179 @@ +/* eslint:disable */ +// hello commonjs - we need some imports - sorted in alphabetical order, by go package +import * as github_com_foomo_gotsrpc_v2_example_basic_service from './service-vo'; // ./client/src/service-vo.ts to ./client/src/service-vo.ts +// github.com/foomo/gotsrpc/v2/example/basic/service.Float32Type +export enum Float32Type { + Float32AType = 1, + Float32BType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Float32TypeMapKey +export enum Float32TypeMapKey { + Float32ATypeMapKey = 1, + Float32BTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Float32TypeMapTyped +export type Float32TypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.Float32TypeMapValue +export enum Float32TypeMapValue { + Float32ATypeMapValue = 1, + Float32BTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Float64Type +export enum Float64Type { + Float64AType = 1, + Float64BType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Float64TypeMapKey +export enum Float64TypeMapKey { + Float64ATypeMapKey = 1, + Float64BTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Float64TypeMapTyped +export type Float64TypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.Float64TypeMapValue +export enum Float64TypeMapValue { + Float64ATypeMapValue = 1, + Float64BTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Int32Type +export enum Int32Type { + Int32AType = 1, + Int32BType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Int32TypeMapKey +export enum Int32TypeMapKey { + Int32ATypeMapKey = 1, + Int32BTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Int32TypeMapTyped +export type Int32TypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.Int32TypeMapValue +export enum Int32TypeMapValue { + Int32ATypeMapValue = 1, + Int32BTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Int64Type +export enum Int64Type { + Int64AType = 1, + Int64BType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Int64TypeMapKey +export enum Int64TypeMapKey { + Int64ATypeMapKey = 1, + Int64BTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Int64TypeMapTyped +export type Int64TypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.Int64TypeMapValue +export enum Int64TypeMapValue { + Int64ATypeMapValue = 1, + Int64BTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.IntType +export enum IntType { + IntAType = 1, + IntBType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.IntTypeMapKey +export enum IntTypeMapKey { + IntATypeMapKey = 1, + IntBTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.IntTypeMapTyped +export type IntTypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.IntTypeMapValue +export enum IntTypeMapValue { + IntATypeMapValue = 1, + IntBTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.StringType +export enum StringType { + StringAType = "A", + StringBType = "B", +} +// github.com/foomo/gotsrpc/v2/example/basic/service.StringTypeMapKey +export enum StringTypeMapKey { + StringATypeMapKey = "A", + StringBTypeMapKey = "B", +} +// github.com/foomo/gotsrpc/v2/example/basic/service.StringTypeMapTyped +export type StringTypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.StringTypeMapValue +export enum StringTypeMapValue { + StringATypeMapValue = "A", + StringBTypeMapValue = "B", +} +// github.com/foomo/gotsrpc/v2/example/basic/service.Struct +export interface Struct { + Int:number; + Int32:number; + Int64:number; + UInt:number; + UInt32:number; + UInt64:number; + Float32:number; + Float64:number; + String:string; + Interface:any; + IntTypeMapTyped:Record|null; + Int32TypeMapTyped:Record|null; + Int64TypeMapTyped:Record|null; + UIntTypeMapTyped:Record|null; + UInt32TypeMapTyped:Record|null; + UInt64TypeMapTyped:Record|null; + Float32TypeMapTyped:Record|null; + Float64TypeMapTyped:Record|null; + StringTypeMapTyped:Record|null; +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32Type +export enum UInt32Type { + UInt32AType = 1, + UInt32BType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32TypeMapKey +export enum UInt32TypeMapKey { + UInt32ATypeMapKey = 1, + UInt32BTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32TypeMapTyped +export type UInt32TypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32TypeMapValue +export enum UInt32TypeMapValue { + UInt32ATypeMapValue = 1, + UInt32BTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64Type +export enum UInt64Type { + UInt64AType = 1, + UInt64BType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64TypeMapKey +export enum UInt64TypeMapKey { + UInt64ATypeMapKey = 1, + UInt64BTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64TypeMapTyped +export type UInt64TypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64TypeMapValue +export enum UInt64TypeMapValue { + UInt64ATypeMapValue = 1, + UInt64BTypeMapValue = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UIntType +export enum UIntType { + UIntAType = 1, + UIntBType = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UIntTypeMapKey +export enum UIntTypeMapKey { + UIntATypeMapKey = 1, + UIntBTypeMapKey = 2, +} +// github.com/foomo/gotsrpc/v2/example/basic/service.UIntTypeMapTyped +export type UIntTypeMapTyped = Record +// github.com/foomo/gotsrpc/v2/example/basic/service.UIntTypeMapValue +export enum UIntTypeMapValue { + UIntATypeMapValue = 1, + UIntBTypeMapValue = 2, +} +// end of common js \ No newline at end of file diff --git a/example/basic/client/src/transport.ts b/example/basic/client/src/transport.ts new file mode 100644 index 0000000..79683ce --- /dev/null +++ b/example/basic/client/src/transport.ts @@ -0,0 +1,18 @@ +const transport = endpoint => async (method: string, args: any = []) => { + return new Promise(async (resolve, reject) => { + fetch( + `${endpoint}/${encodeURIComponent(method)}`, + { + method: 'POST', + body: JSON.stringify(args), + } + ) + .then((response) => { + return response.json() as Promise; + }) + .then((val) => resolve(val)) + .catch((err) => reject(err)) + }) +}; + +export default transport diff --git a/example/basic/client/tsconfig.json b/example/basic/client/tsconfig.json new file mode 100644 index 0000000..82acc28 --- /dev/null +++ b/example/basic/client/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + } +} \ No newline at end of file diff --git a/example/basic/go.mod b/example/basic/go.mod new file mode 100644 index 0000000..0248631 --- /dev/null +++ b/example/basic/go.mod @@ -0,0 +1,13 @@ +module github.com/foomo/gotsrpc/v2/example/basic + +go 1.16 + +require ( + github.com/davecgh/go-spew v1.1.1 + github.com/foomo/gotsrpc/v2 v2.0.10 + github.com/pkg/errors v0.9.1 + github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774 + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +) + +replace github.com/foomo/gotsrpc/v2 => ../../ diff --git a/example/basic/go.sum b/example/basic/go.sum new file mode 100644 index 0000000..ac4944b --- /dev/null +++ b/example/basic/go.sum @@ -0,0 +1,487 @@ +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/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/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/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/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/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +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/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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +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/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +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/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.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.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/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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +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/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/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +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/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +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/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +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 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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/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.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +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/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.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E= +github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= +github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= +github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= +github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774 h1:SUHFQHAaySqF0YHCmmm0EIFooFZpDPpi5KTom7YJ07c= +github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774/go.mod h1:8uNqM1i7pr0jO7gdvbNCgsSa8Ki2vMh7JCQxO9BlF90= +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.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +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= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-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/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.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +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-20181114220301-adae6a3d119a/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-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-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-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +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-20210514164344-f6687ab2804c/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-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-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-20181116152217-5ac8a444bdc5/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-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-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-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-20200106162015-b016eb3dc98e/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-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-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +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-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-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-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.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +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/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/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-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/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/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/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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +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/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/example/basic/gotsrpc.yml b/example/basic/gotsrpc.yml new file mode 100644 index 0000000..e64a9e5 --- /dev/null +++ b/example/basic/gotsrpc.yml @@ -0,0 +1,18 @@ +module: + name: github.com/foomo/gotsrpc/v2/example/basic + path: ./ + +targets: + basic: + services: + /service: Service + package: github.com/foomo/gotsrpc/v2/example/basic/service + out: ./client/src/service-client.ts + gorpc: + - Service + tsrpc: + - Service + +mappings: + github.com/foomo/gotsrpc/v2/example/basic/service: + out: ./client/src/service-vo.ts diff --git a/example/basic/main.go b/example/basic/main.go new file mode 100644 index 0000000..6569fe6 --- /dev/null +++ b/example/basic/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "net/http" + "os/exec" + "strings" + "time" + + "github.com/foomo/gotsrpc/v2/example/basic/service" +) + +func main() { + fs := http.FileServer(http.Dir("./client")) + ws := service.NewDefaultServiceGoTSRPCProxy(&service.Handler{}) + + mux := http.NewServeMux() + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + switch { + case strings.HasPrefix(r.URL.Path, "/service/"): + ws.ServeHTTP(w, r) + default: + fs.ServeHTTP(w, r) + } + }) + + go func() { + time.Sleep(time.Second) + _ = exec.Command("open", "http://127.0.0.1:3000").Run() + }() + + _ = http.ListenAndServe("localhost:3000", mux) +} diff --git a/example/basic/service/gorpc_gen.go b/example/basic/service/gorpc_gen.go new file mode 100644 index 0000000..a398030 --- /dev/null +++ b/example/basic/service/gorpc_gen.go @@ -0,0 +1,847 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + tls "crypto/tls" + gob "encoding/gob" + fmt "fmt" + reflect "reflect" + strings "strings" + time "time" + + gotsrpc "github.com/foomo/gotsrpc/v2" + gorpc "github.com/valyala/gorpc" +) + +type ( + ServiceGoRPCProxy struct { + server *gorpc.Server + service Service + callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun + } + + ServiceBoolRequest struct { + V bool + } + ServiceBoolResponse struct { + RetBool_0 bool + } + + ServiceBoolSliceRequest struct { + V []bool + } + ServiceBoolSliceResponse struct { + RetBoolSlice_0 []bool + } + + ServiceFloat32Request struct { + V float32 + } + ServiceFloat32Response struct { + RetFloat32_0 float32 + } + + ServiceFloat32MapRequest struct { + V map[float32]interface{} + } + ServiceFloat32MapResponse struct { + RetFloat32Map_0 map[float32]interface{} + } + + ServiceFloat32SliceRequest struct { + V []float32 + } + ServiceFloat32SliceResponse struct { + RetFloat32Slice_0 []float32 + } + + ServiceFloat32TypeRequest struct { + V Float32Type + } + ServiceFloat32TypeResponse struct { + RetFloat32Type_0 Float32Type + } + + ServiceFloat32TypeMapRequest struct { + V map[Float32TypeMapKey]Float32TypeMapValue + } + ServiceFloat32TypeMapResponse struct { + RetFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue + } + + ServiceFloat32TypeMapTypedRequest struct { + V Float32TypeMapTyped + } + ServiceFloat32TypeMapTypedResponse struct { + RetFloat32TypeMapTyped_0 Float32TypeMapTyped + } + + ServiceFloat64Request struct { + V float64 + } + ServiceFloat64Response struct { + RetFloat64_0 float64 + } + + ServiceFloat64MapRequest struct { + V map[float64]interface{} + } + ServiceFloat64MapResponse struct { + RetFloat64Map_0 map[float64]interface{} + } + + ServiceFloat64SliceRequest struct { + V []float64 + } + ServiceFloat64SliceResponse struct { + RetFloat64Slice_0 []float64 + } + + ServiceFloat64TypeRequest struct { + V Float64Type + } + ServiceFloat64TypeResponse struct { + RetFloat64Type_0 Float64Type + } + + ServiceFloat64TypeMapRequest struct { + V map[Float64TypeMapKey]Float64TypeMapValue + } + ServiceFloat64TypeMapResponse struct { + RetFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue + } + + ServiceFloat64TypeMapTypedRequest struct { + V Float64TypeMapTyped + } + ServiceFloat64TypeMapTypedResponse struct { + RetFloat64TypeMapTyped_0 Float64TypeMapTyped + } + + ServiceIntRequest struct { + V int + } + ServiceIntResponse struct { + RetInt_0 int + } + + ServiceInt32Request struct { + V int32 + } + ServiceInt32Response struct { + RetInt32_0 int32 + } + + ServiceInt32MapRequest struct { + V map[int32]interface{} + } + ServiceInt32MapResponse struct { + RetInt32Map_0 map[int32]interface{} + } + + ServiceInt32SliceRequest struct { + V []int32 + } + ServiceInt32SliceResponse struct { + RetInt32Slice_0 []int32 + } + + ServiceInt32TypeRequest struct { + V Int32Type + } + ServiceInt32TypeResponse struct { + RetInt32Type_0 Int32Type + } + + ServiceInt32TypeMapRequest struct { + V map[Int32TypeMapKey]Int32TypeMapValue + } + ServiceInt32TypeMapResponse struct { + RetInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue + } + + ServiceInt32TypeMapTypedRequest struct { + V Int32TypeMapTyped + } + ServiceInt32TypeMapTypedResponse struct { + RetInt32TypeMapTyped_0 Int32TypeMapTyped + } + + ServiceInt64Request struct { + V int64 + } + ServiceInt64Response struct { + RetInt64_0 int64 + } + + ServiceInt64MapRequest struct { + V map[int64]interface{} + } + ServiceInt64MapResponse struct { + RetInt64Map_0 map[int64]interface{} + } + + ServiceInt64SliceRequest struct { + V []int64 + } + ServiceInt64SliceResponse struct { + RetInt64Slice_0 []int64 + } + + ServiceInt64TypeRequest struct { + V Int64Type + } + ServiceInt64TypeResponse struct { + RetInt64Type_0 Int64Type + } + + ServiceInt64TypeMapRequest struct { + V map[Int64TypeMapKey]Int64TypeMapValue + } + ServiceInt64TypeMapResponse struct { + RetInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue + } + + ServiceInt64TypeMapTypedRequest struct { + V Int64TypeMapTyped + } + ServiceInt64TypeMapTypedResponse struct { + RetInt64TypeMapTyped_0 Int64TypeMapTyped + } + + ServiceIntMapRequest struct { + V map[int]interface{} + } + ServiceIntMapResponse struct { + RetIntMap_0 map[int]interface{} + } + + ServiceIntSliceRequest struct { + V []int + } + ServiceIntSliceResponse struct { + RetIntSlice_0 []int + } + + ServiceIntTypeRequest struct { + V IntType + } + ServiceIntTypeResponse struct { + RetIntType_0 IntType + } + + ServiceIntTypeMapRequest struct { + V map[IntTypeMapKey]IntTypeMapValue + } + ServiceIntTypeMapResponse struct { + RetIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue + } + + ServiceIntTypeMapTypedRequest struct { + V IntTypeMapTyped + } + ServiceIntTypeMapTypedResponse struct { + RetIntTypeMapTyped_0 IntTypeMapTyped + } + + ServiceInterfaceRequest struct { + V interface{} + } + ServiceInterfaceResponse struct { + RetInterface_0 interface{} + } + + ServiceInterfaceSliceRequest struct { + V []interface{} + } + ServiceInterfaceSliceResponse struct { + RetInterfaceSlice_0 []interface{} + } + + ServiceStringRequest struct { + V string + } + ServiceStringResponse struct { + RetString_0 string + } + + ServiceStringMapRequest struct { + V map[string]interface{} + } + ServiceStringMapResponse struct { + RetStringMap_0 map[string]interface{} + } + + ServiceStringSliceRequest struct { + V []string + } + ServiceStringSliceResponse struct { + RetStringSlice_0 []string + } + + ServiceStringTypeRequest struct { + V StringType + } + ServiceStringTypeResponse struct { + RetStringType_0 StringType + } + + ServiceStringTypeMapRequest struct { + V map[StringTypeMapKey]StringTypeMapValue + } + ServiceStringTypeMapResponse struct { + RetStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue + } + + ServiceStringTypeMapTypedRequest struct { + V StringTypeMapTyped + } + ServiceStringTypeMapTypedResponse struct { + RetStringTypeMapTyped_0 StringTypeMapTyped + } + + ServiceStructRequest struct { + V Struct + } + ServiceStructResponse struct { + RetStruct_0 Struct + } + + ServiceUIntRequest struct { + V uint + } + ServiceUIntResponse struct { + RetUInt_0 uint + } + + ServiceUInt32Request struct { + V uint32 + } + ServiceUInt32Response struct { + RetUInt32_0 uint32 + } + + ServiceUInt32MapRequest struct { + V map[uint32]interface{} + } + ServiceUInt32MapResponse struct { + RetUInt32Map_0 map[uint32]interface{} + } + + ServiceUInt32SliceRequest struct { + V []uint32 + } + ServiceUInt32SliceResponse struct { + RetUInt32Slice_0 []uint32 + } + + ServiceUInt32TypeRequest struct { + V UInt32Type + } + ServiceUInt32TypeResponse struct { + RetUInt32Type_0 UInt32Type + } + + ServiceUInt32TypeMapRequest struct { + V map[UInt32TypeMapKey]UInt32TypeMapValue + } + ServiceUInt32TypeMapResponse struct { + RetUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue + } + + ServiceUInt32TypeMapTypedRequest struct { + V UInt32TypeMapTyped + } + ServiceUInt32TypeMapTypedResponse struct { + RetUInt32TypeMapTyped_0 UInt32TypeMapTyped + } + + ServiceUInt64Request struct { + V uint64 + } + ServiceUInt64Response struct { + RetUInt64_0 uint64 + } + + ServiceUInt64MapRequest struct { + V map[uint64]interface{} + } + ServiceUInt64MapResponse struct { + RetUInt64Map_0 map[uint64]interface{} + } + + ServiceUInt64SliceRequest struct { + V []uint64 + } + ServiceUInt64SliceResponse struct { + RetUInt64Slice_0 []uint64 + } + + ServiceUInt64TypeRequest struct { + V UInt64Type + } + ServiceUInt64TypeResponse struct { + RetUInt64Type_0 UInt64Type + } + + ServiceUInt64TypeMapRequest struct { + V map[UInt64TypeMapKey]UInt64TypeMapValue + } + ServiceUInt64TypeMapResponse struct { + RetUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue + } + + ServiceUInt64TypeMapTypedRequest struct { + V UInt64TypeMapTyped + } + ServiceUInt64TypeMapTypedResponse struct { + RetUInt64TypeMapTyped_0 UInt64TypeMapTyped + } + + ServiceUIntMapRequest struct { + V map[uint]interface{} + } + ServiceUIntMapResponse struct { + RetUIntMap_0 map[uint]interface{} + } + + ServiceUIntSliceRequest struct { + V []uint + } + ServiceUIntSliceResponse struct { + RetUIntSlice_0 []uint + } + + ServiceUIntTypeRequest struct { + V UIntType + } + ServiceUIntTypeResponse struct { + RetUIntType_0 UIntType + } + + ServiceUIntTypeMapRequest struct { + V map[UIntTypeMapKey]UIntTypeMapValue + } + ServiceUIntTypeMapResponse struct { + RetUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue + } + + ServiceUIntTypeMapTypedRequest struct { + V UIntTypeMapTyped + } + ServiceUIntTypeMapTypedResponse struct { + RetUIntTypeMapTyped_0 UIntTypeMapTyped + } +) + +func init() { + gob.Register(ServiceBoolRequest{}) + gob.Register(ServiceBoolResponse{}) + gob.Register(ServiceBoolSliceRequest{}) + gob.Register(ServiceBoolSliceResponse{}) + gob.Register(ServiceFloat32Request{}) + gob.Register(ServiceFloat32Response{}) + gob.Register(ServiceFloat32MapRequest{}) + gob.Register(ServiceFloat32MapResponse{}) + gob.Register(ServiceFloat32SliceRequest{}) + gob.Register(ServiceFloat32SliceResponse{}) + gob.Register(ServiceFloat32TypeRequest{}) + gob.Register(ServiceFloat32TypeResponse{}) + gob.Register(ServiceFloat32TypeMapRequest{}) + gob.Register(ServiceFloat32TypeMapResponse{}) + gob.Register(ServiceFloat32TypeMapTypedRequest{}) + gob.Register(ServiceFloat32TypeMapTypedResponse{}) + gob.Register(ServiceFloat64Request{}) + gob.Register(ServiceFloat64Response{}) + gob.Register(ServiceFloat64MapRequest{}) + gob.Register(ServiceFloat64MapResponse{}) + gob.Register(ServiceFloat64SliceRequest{}) + gob.Register(ServiceFloat64SliceResponse{}) + gob.Register(ServiceFloat64TypeRequest{}) + gob.Register(ServiceFloat64TypeResponse{}) + gob.Register(ServiceFloat64TypeMapRequest{}) + gob.Register(ServiceFloat64TypeMapResponse{}) + gob.Register(ServiceFloat64TypeMapTypedRequest{}) + gob.Register(ServiceFloat64TypeMapTypedResponse{}) + gob.Register(ServiceIntRequest{}) + gob.Register(ServiceIntResponse{}) + gob.Register(ServiceInt32Request{}) + gob.Register(ServiceInt32Response{}) + gob.Register(ServiceInt32MapRequest{}) + gob.Register(ServiceInt32MapResponse{}) + gob.Register(ServiceInt32SliceRequest{}) + gob.Register(ServiceInt32SliceResponse{}) + gob.Register(ServiceInt32TypeRequest{}) + gob.Register(ServiceInt32TypeResponse{}) + gob.Register(ServiceInt32TypeMapRequest{}) + gob.Register(ServiceInt32TypeMapResponse{}) + gob.Register(ServiceInt32TypeMapTypedRequest{}) + gob.Register(ServiceInt32TypeMapTypedResponse{}) + gob.Register(ServiceInt64Request{}) + gob.Register(ServiceInt64Response{}) + gob.Register(ServiceInt64MapRequest{}) + gob.Register(ServiceInt64MapResponse{}) + gob.Register(ServiceInt64SliceRequest{}) + gob.Register(ServiceInt64SliceResponse{}) + gob.Register(ServiceInt64TypeRequest{}) + gob.Register(ServiceInt64TypeResponse{}) + gob.Register(ServiceInt64TypeMapRequest{}) + gob.Register(ServiceInt64TypeMapResponse{}) + gob.Register(ServiceInt64TypeMapTypedRequest{}) + gob.Register(ServiceInt64TypeMapTypedResponse{}) + gob.Register(ServiceIntMapRequest{}) + gob.Register(ServiceIntMapResponse{}) + gob.Register(ServiceIntSliceRequest{}) + gob.Register(ServiceIntSliceResponse{}) + gob.Register(ServiceIntTypeRequest{}) + gob.Register(ServiceIntTypeResponse{}) + gob.Register(ServiceIntTypeMapRequest{}) + gob.Register(ServiceIntTypeMapResponse{}) + gob.Register(ServiceIntTypeMapTypedRequest{}) + gob.Register(ServiceIntTypeMapTypedResponse{}) + gob.Register(ServiceInterfaceRequest{}) + gob.Register(ServiceInterfaceResponse{}) + gob.Register(ServiceInterfaceSliceRequest{}) + gob.Register(ServiceInterfaceSliceResponse{}) + gob.Register(ServiceStringRequest{}) + gob.Register(ServiceStringResponse{}) + gob.Register(ServiceStringMapRequest{}) + gob.Register(ServiceStringMapResponse{}) + gob.Register(ServiceStringSliceRequest{}) + gob.Register(ServiceStringSliceResponse{}) + gob.Register(ServiceStringTypeRequest{}) + gob.Register(ServiceStringTypeResponse{}) + gob.Register(ServiceStringTypeMapRequest{}) + gob.Register(ServiceStringTypeMapResponse{}) + gob.Register(ServiceStringTypeMapTypedRequest{}) + gob.Register(ServiceStringTypeMapTypedResponse{}) + gob.Register(ServiceStructRequest{}) + gob.Register(ServiceStructResponse{}) + gob.Register(ServiceUIntRequest{}) + gob.Register(ServiceUIntResponse{}) + gob.Register(ServiceUInt32Request{}) + gob.Register(ServiceUInt32Response{}) + gob.Register(ServiceUInt32MapRequest{}) + gob.Register(ServiceUInt32MapResponse{}) + gob.Register(ServiceUInt32SliceRequest{}) + gob.Register(ServiceUInt32SliceResponse{}) + gob.Register(ServiceUInt32TypeRequest{}) + gob.Register(ServiceUInt32TypeResponse{}) + gob.Register(ServiceUInt32TypeMapRequest{}) + gob.Register(ServiceUInt32TypeMapResponse{}) + gob.Register(ServiceUInt32TypeMapTypedRequest{}) + gob.Register(ServiceUInt32TypeMapTypedResponse{}) + gob.Register(ServiceUInt64Request{}) + gob.Register(ServiceUInt64Response{}) + gob.Register(ServiceUInt64MapRequest{}) + gob.Register(ServiceUInt64MapResponse{}) + gob.Register(ServiceUInt64SliceRequest{}) + gob.Register(ServiceUInt64SliceResponse{}) + gob.Register(ServiceUInt64TypeRequest{}) + gob.Register(ServiceUInt64TypeResponse{}) + gob.Register(ServiceUInt64TypeMapRequest{}) + gob.Register(ServiceUInt64TypeMapResponse{}) + gob.Register(ServiceUInt64TypeMapTypedRequest{}) + gob.Register(ServiceUInt64TypeMapTypedResponse{}) + gob.Register(ServiceUIntMapRequest{}) + gob.Register(ServiceUIntMapResponse{}) + gob.Register(ServiceUIntSliceRequest{}) + gob.Register(ServiceUIntSliceResponse{}) + gob.Register(ServiceUIntTypeRequest{}) + gob.Register(ServiceUIntTypeResponse{}) + gob.Register(ServiceUIntTypeMapRequest{}) + gob.Register(ServiceUIntTypeMapResponse{}) + gob.Register(ServiceUIntTypeMapTypedRequest{}) + gob.Register(ServiceUIntTypeMapTypedResponse{}) +} + +func NewServiceGoRPCProxy(addr string, service Service, tlsConfig *tls.Config) *ServiceGoRPCProxy { + proxy := &ServiceGoRPCProxy{ + service: service, + } + + if tlsConfig != nil { + proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig) + } else { + proxy.server = gorpc.NewTCPServer(addr, proxy.handler) + } + + return proxy +} + +func (p *ServiceGoRPCProxy) Start() error { + return p.server.Start() +} + +func (p *ServiceGoRPCProxy) Serve() error { + return p.server.Serve() +} + +func (p *ServiceGoRPCProxy) Stop() { + p.server.Stop() +} + +func (p *ServiceGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) { + p.callStatsHandler = handler +} + +func (p *ServiceGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) { + start := time.Now() + + reqType := reflect.TypeOf(request).String() + funcNameParts := strings.Split(reqType, ".") + funcName := funcNameParts[len(funcNameParts)-1] + + switch funcName { + case "ServiceBoolRequest": + req := request.(ServiceBoolRequest) + retBool_0 := p.service.Bool(req.V) + response = ServiceBoolResponse{RetBool_0: retBool_0} + case "ServiceBoolSliceRequest": + req := request.(ServiceBoolSliceRequest) + retBoolSlice_0 := p.service.BoolSlice(req.V) + response = ServiceBoolSliceResponse{RetBoolSlice_0: retBoolSlice_0} + case "ServiceFloat32Request": + req := request.(ServiceFloat32Request) + retFloat32_0 := p.service.Float32(req.V) + response = ServiceFloat32Response{RetFloat32_0: retFloat32_0} + case "ServiceFloat32MapRequest": + req := request.(ServiceFloat32MapRequest) + retFloat32Map_0 := p.service.Float32Map(req.V) + response = ServiceFloat32MapResponse{RetFloat32Map_0: retFloat32Map_0} + case "ServiceFloat32SliceRequest": + req := request.(ServiceFloat32SliceRequest) + retFloat32Slice_0 := p.service.Float32Slice(req.V) + response = ServiceFloat32SliceResponse{RetFloat32Slice_0: retFloat32Slice_0} + case "ServiceFloat32TypeRequest": + req := request.(ServiceFloat32TypeRequest) + retFloat32Type_0 := p.service.Float32Type(req.V) + response = ServiceFloat32TypeResponse{RetFloat32Type_0: retFloat32Type_0} + case "ServiceFloat32TypeMapRequest": + req := request.(ServiceFloat32TypeMapRequest) + retFloat32TypeMap_0 := p.service.Float32TypeMap(req.V) + response = ServiceFloat32TypeMapResponse{RetFloat32TypeMap_0: retFloat32TypeMap_0} + case "ServiceFloat32TypeMapTypedRequest": + req := request.(ServiceFloat32TypeMapTypedRequest) + retFloat32TypeMapTyped_0 := p.service.Float32TypeMapTyped(req.V) + response = ServiceFloat32TypeMapTypedResponse{RetFloat32TypeMapTyped_0: retFloat32TypeMapTyped_0} + case "ServiceFloat64Request": + req := request.(ServiceFloat64Request) + retFloat64_0 := p.service.Float64(req.V) + response = ServiceFloat64Response{RetFloat64_0: retFloat64_0} + case "ServiceFloat64MapRequest": + req := request.(ServiceFloat64MapRequest) + retFloat64Map_0 := p.service.Float64Map(req.V) + response = ServiceFloat64MapResponse{RetFloat64Map_0: retFloat64Map_0} + case "ServiceFloat64SliceRequest": + req := request.(ServiceFloat64SliceRequest) + retFloat64Slice_0 := p.service.Float64Slice(req.V) + response = ServiceFloat64SliceResponse{RetFloat64Slice_0: retFloat64Slice_0} + case "ServiceFloat64TypeRequest": + req := request.(ServiceFloat64TypeRequest) + retFloat64Type_0 := p.service.Float64Type(req.V) + response = ServiceFloat64TypeResponse{RetFloat64Type_0: retFloat64Type_0} + case "ServiceFloat64TypeMapRequest": + req := request.(ServiceFloat64TypeMapRequest) + retFloat64TypeMap_0 := p.service.Float64TypeMap(req.V) + response = ServiceFloat64TypeMapResponse{RetFloat64TypeMap_0: retFloat64TypeMap_0} + case "ServiceFloat64TypeMapTypedRequest": + req := request.(ServiceFloat64TypeMapTypedRequest) + retFloat64TypeMapTyped_0 := p.service.Float64TypeMapTyped(req.V) + response = ServiceFloat64TypeMapTypedResponse{RetFloat64TypeMapTyped_0: retFloat64TypeMapTyped_0} + case "ServiceIntRequest": + req := request.(ServiceIntRequest) + retInt_0 := p.service.Int(req.V) + response = ServiceIntResponse{RetInt_0: retInt_0} + case "ServiceInt32Request": + req := request.(ServiceInt32Request) + retInt32_0 := p.service.Int32(req.V) + response = ServiceInt32Response{RetInt32_0: retInt32_0} + case "ServiceInt32MapRequest": + req := request.(ServiceInt32MapRequest) + retInt32Map_0 := p.service.Int32Map(req.V) + response = ServiceInt32MapResponse{RetInt32Map_0: retInt32Map_0} + case "ServiceInt32SliceRequest": + req := request.(ServiceInt32SliceRequest) + retInt32Slice_0 := p.service.Int32Slice(req.V) + response = ServiceInt32SliceResponse{RetInt32Slice_0: retInt32Slice_0} + case "ServiceInt32TypeRequest": + req := request.(ServiceInt32TypeRequest) + retInt32Type_0 := p.service.Int32Type(req.V) + response = ServiceInt32TypeResponse{RetInt32Type_0: retInt32Type_0} + case "ServiceInt32TypeMapRequest": + req := request.(ServiceInt32TypeMapRequest) + retInt32TypeMap_0 := p.service.Int32TypeMap(req.V) + response = ServiceInt32TypeMapResponse{RetInt32TypeMap_0: retInt32TypeMap_0} + case "ServiceInt32TypeMapTypedRequest": + req := request.(ServiceInt32TypeMapTypedRequest) + retInt32TypeMapTyped_0 := p.service.Int32TypeMapTyped(req.V) + response = ServiceInt32TypeMapTypedResponse{RetInt32TypeMapTyped_0: retInt32TypeMapTyped_0} + case "ServiceInt64Request": + req := request.(ServiceInt64Request) + retInt64_0 := p.service.Int64(req.V) + response = ServiceInt64Response{RetInt64_0: retInt64_0} + case "ServiceInt64MapRequest": + req := request.(ServiceInt64MapRequest) + retInt64Map_0 := p.service.Int64Map(req.V) + response = ServiceInt64MapResponse{RetInt64Map_0: retInt64Map_0} + case "ServiceInt64SliceRequest": + req := request.(ServiceInt64SliceRequest) + retInt64Slice_0 := p.service.Int64Slice(req.V) + response = ServiceInt64SliceResponse{RetInt64Slice_0: retInt64Slice_0} + case "ServiceInt64TypeRequest": + req := request.(ServiceInt64TypeRequest) + retInt64Type_0 := p.service.Int64Type(req.V) + response = ServiceInt64TypeResponse{RetInt64Type_0: retInt64Type_0} + case "ServiceInt64TypeMapRequest": + req := request.(ServiceInt64TypeMapRequest) + retInt64TypeMap_0 := p.service.Int64TypeMap(req.V) + response = ServiceInt64TypeMapResponse{RetInt64TypeMap_0: retInt64TypeMap_0} + case "ServiceInt64TypeMapTypedRequest": + req := request.(ServiceInt64TypeMapTypedRequest) + retInt64TypeMapTyped_0 := p.service.Int64TypeMapTyped(req.V) + response = ServiceInt64TypeMapTypedResponse{RetInt64TypeMapTyped_0: retInt64TypeMapTyped_0} + case "ServiceIntMapRequest": + req := request.(ServiceIntMapRequest) + retIntMap_0 := p.service.IntMap(req.V) + response = ServiceIntMapResponse{RetIntMap_0: retIntMap_0} + case "ServiceIntSliceRequest": + req := request.(ServiceIntSliceRequest) + retIntSlice_0 := p.service.IntSlice(req.V) + response = ServiceIntSliceResponse{RetIntSlice_0: retIntSlice_0} + case "ServiceIntTypeRequest": + req := request.(ServiceIntTypeRequest) + retIntType_0 := p.service.IntType(req.V) + response = ServiceIntTypeResponse{RetIntType_0: retIntType_0} + case "ServiceIntTypeMapRequest": + req := request.(ServiceIntTypeMapRequest) + retIntTypeMap_0 := p.service.IntTypeMap(req.V) + response = ServiceIntTypeMapResponse{RetIntTypeMap_0: retIntTypeMap_0} + case "ServiceIntTypeMapTypedRequest": + req := request.(ServiceIntTypeMapTypedRequest) + retIntTypeMapTyped_0 := p.service.IntTypeMapTyped(req.V) + response = ServiceIntTypeMapTypedResponse{RetIntTypeMapTyped_0: retIntTypeMapTyped_0} + case "ServiceInterfaceRequest": + req := request.(ServiceInterfaceRequest) + retInterface_0 := p.service.Interface(req.V) + response = ServiceInterfaceResponse{RetInterface_0: retInterface_0} + case "ServiceInterfaceSliceRequest": + req := request.(ServiceInterfaceSliceRequest) + retInterfaceSlice_0 := p.service.InterfaceSlice(req.V) + response = ServiceInterfaceSliceResponse{RetInterfaceSlice_0: retInterfaceSlice_0} + case "ServiceStringRequest": + req := request.(ServiceStringRequest) + retString_0 := p.service.String(req.V) + response = ServiceStringResponse{RetString_0: retString_0} + case "ServiceStringMapRequest": + req := request.(ServiceStringMapRequest) + retStringMap_0 := p.service.StringMap(req.V) + response = ServiceStringMapResponse{RetStringMap_0: retStringMap_0} + case "ServiceStringSliceRequest": + req := request.(ServiceStringSliceRequest) + retStringSlice_0 := p.service.StringSlice(req.V) + response = ServiceStringSliceResponse{RetStringSlice_0: retStringSlice_0} + case "ServiceStringTypeRequest": + req := request.(ServiceStringTypeRequest) + retStringType_0 := p.service.StringType(req.V) + response = ServiceStringTypeResponse{RetStringType_0: retStringType_0} + case "ServiceStringTypeMapRequest": + req := request.(ServiceStringTypeMapRequest) + retStringTypeMap_0 := p.service.StringTypeMap(req.V) + response = ServiceStringTypeMapResponse{RetStringTypeMap_0: retStringTypeMap_0} + case "ServiceStringTypeMapTypedRequest": + req := request.(ServiceStringTypeMapTypedRequest) + retStringTypeMapTyped_0 := p.service.StringTypeMapTyped(req.V) + response = ServiceStringTypeMapTypedResponse{RetStringTypeMapTyped_0: retStringTypeMapTyped_0} + case "ServiceStructRequest": + req := request.(ServiceStructRequest) + retStruct_0 := p.service.Struct(req.V) + response = ServiceStructResponse{RetStruct_0: retStruct_0} + case "ServiceUIntRequest": + req := request.(ServiceUIntRequest) + retUInt_0 := p.service.UInt(req.V) + response = ServiceUIntResponse{RetUInt_0: retUInt_0} + case "ServiceUInt32Request": + req := request.(ServiceUInt32Request) + retUInt32_0 := p.service.UInt32(req.V) + response = ServiceUInt32Response{RetUInt32_0: retUInt32_0} + case "ServiceUInt32MapRequest": + req := request.(ServiceUInt32MapRequest) + retUInt32Map_0 := p.service.UInt32Map(req.V) + response = ServiceUInt32MapResponse{RetUInt32Map_0: retUInt32Map_0} + case "ServiceUInt32SliceRequest": + req := request.(ServiceUInt32SliceRequest) + retUInt32Slice_0 := p.service.UInt32Slice(req.V) + response = ServiceUInt32SliceResponse{RetUInt32Slice_0: retUInt32Slice_0} + case "ServiceUInt32TypeRequest": + req := request.(ServiceUInt32TypeRequest) + retUInt32Type_0 := p.service.UInt32Type(req.V) + response = ServiceUInt32TypeResponse{RetUInt32Type_0: retUInt32Type_0} + case "ServiceUInt32TypeMapRequest": + req := request.(ServiceUInt32TypeMapRequest) + retUInt32TypeMap_0 := p.service.UInt32TypeMap(req.V) + response = ServiceUInt32TypeMapResponse{RetUInt32TypeMap_0: retUInt32TypeMap_0} + case "ServiceUInt32TypeMapTypedRequest": + req := request.(ServiceUInt32TypeMapTypedRequest) + retUInt32TypeMapTyped_0 := p.service.UInt32TypeMapTyped(req.V) + response = ServiceUInt32TypeMapTypedResponse{RetUInt32TypeMapTyped_0: retUInt32TypeMapTyped_0} + case "ServiceUInt64Request": + req := request.(ServiceUInt64Request) + retUInt64_0 := p.service.UInt64(req.V) + response = ServiceUInt64Response{RetUInt64_0: retUInt64_0} + case "ServiceUInt64MapRequest": + req := request.(ServiceUInt64MapRequest) + retUInt64Map_0 := p.service.UInt64Map(req.V) + response = ServiceUInt64MapResponse{RetUInt64Map_0: retUInt64Map_0} + case "ServiceUInt64SliceRequest": + req := request.(ServiceUInt64SliceRequest) + retUInt64Slice_0 := p.service.UInt64Slice(req.V) + response = ServiceUInt64SliceResponse{RetUInt64Slice_0: retUInt64Slice_0} + case "ServiceUInt64TypeRequest": + req := request.(ServiceUInt64TypeRequest) + retUInt64Type_0 := p.service.UInt64Type(req.V) + response = ServiceUInt64TypeResponse{RetUInt64Type_0: retUInt64Type_0} + case "ServiceUInt64TypeMapRequest": + req := request.(ServiceUInt64TypeMapRequest) + retUInt64TypeMap_0 := p.service.UInt64TypeMap(req.V) + response = ServiceUInt64TypeMapResponse{RetUInt64TypeMap_0: retUInt64TypeMap_0} + case "ServiceUInt64TypeMapTypedRequest": + req := request.(ServiceUInt64TypeMapTypedRequest) + retUInt64TypeMapTyped_0 := p.service.UInt64TypeMapTyped(req.V) + response = ServiceUInt64TypeMapTypedResponse{RetUInt64TypeMapTyped_0: retUInt64TypeMapTyped_0} + case "ServiceUIntMapRequest": + req := request.(ServiceUIntMapRequest) + retUIntMap_0 := p.service.UIntMap(req.V) + response = ServiceUIntMapResponse{RetUIntMap_0: retUIntMap_0} + case "ServiceUIntSliceRequest": + req := request.(ServiceUIntSliceRequest) + retUIntSlice_0 := p.service.UIntSlice(req.V) + response = ServiceUIntSliceResponse{RetUIntSlice_0: retUIntSlice_0} + case "ServiceUIntTypeRequest": + req := request.(ServiceUIntTypeRequest) + retUIntType_0 := p.service.UIntType(req.V) + response = ServiceUIntTypeResponse{RetUIntType_0: retUIntType_0} + case "ServiceUIntTypeMapRequest": + req := request.(ServiceUIntTypeMapRequest) + retUIntTypeMap_0 := p.service.UIntTypeMap(req.V) + response = ServiceUIntTypeMapResponse{RetUIntTypeMap_0: retUIntTypeMap_0} + case "ServiceUIntTypeMapTypedRequest": + req := request.(ServiceUIntTypeMapTypedRequest) + retUIntTypeMapTyped_0 := p.service.UIntTypeMapTyped(req.V) + response = ServiceUIntTypeMapTypedResponse{RetUIntTypeMapTyped_0: retUIntTypeMapTyped_0} + default: + fmt.Println("Unkown request type", reflect.TypeOf(request).String()) + } + + if p.callStatsHandler != nil { + p.callStatsHandler(&gotsrpc.CallStats{ + Func: funcName, + Package: "github.com/foomo/gotsrpc/v2/example/basic/service", + Service: "Service", + Execution: time.Since(start), + }) + } + + return +} diff --git a/example/basic/service/gorpcclient_gen.go b/example/basic/service/gorpcclient_gen.go new file mode 100644 index 0000000..5189d6f --- /dev/null +++ b/example/basic/service/gorpcclient_gen.go @@ -0,0 +1,680 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + tls "crypto/tls" + + gorpc "github.com/valyala/gorpc" +) + +type ServiceGoRPCClient struct { + Client *gorpc.Client +} + +func NewServiceGoRPCClient(addr string, tlsConfig *tls.Config) *ServiceGoRPCClient { + client := &ServiceGoRPCClient{} + if tlsConfig == nil { + client.Client = gorpc.NewTCPClient(addr) + } else { + client.Client = gorpc.NewTLSClient(addr, tlsConfig) + } + return client +} + +func (tsc *ServiceGoRPCClient) Start() { + tsc.Client.Start() +} + +func (tsc *ServiceGoRPCClient) Stop() { + tsc.Client.Stop() +} + +func (tsc *ServiceGoRPCClient) Bool(v bool) (retBool_0 bool, clientErr error) { + req := ServiceBoolRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceBoolResponse) + return response.RetBool_0, nil +} + +func (tsc *ServiceGoRPCClient) BoolSlice(v []bool) (retBoolSlice_0 []bool, clientErr error) { + req := ServiceBoolSliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceBoolSliceResponse) + return response.RetBoolSlice_0, nil +} + +func (tsc *ServiceGoRPCClient) Float32(v float32) (retFloat32_0 float32, clientErr error) { + req := ServiceFloat32Request{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat32Response) + return response.RetFloat32_0, nil +} + +func (tsc *ServiceGoRPCClient) Float32Map(v map[float32]interface{}) (retFloat32Map_0 map[float32]interface{}, clientErr error) { + req := ServiceFloat32MapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat32MapResponse) + return response.RetFloat32Map_0, nil +} + +func (tsc *ServiceGoRPCClient) Float32Slice(v []float32) (retFloat32Slice_0 []float32, clientErr error) { + req := ServiceFloat32SliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat32SliceResponse) + return response.RetFloat32Slice_0, nil +} + +func (tsc *ServiceGoRPCClient) Float32Type(v Float32Type) (retFloat32Type_0 Float32Type, clientErr error) { + req := ServiceFloat32TypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat32TypeResponse) + return response.RetFloat32Type_0, nil +} + +func (tsc *ServiceGoRPCClient) Float32TypeMap(v map[Float32TypeMapKey]Float32TypeMapValue) (retFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue, clientErr error) { + req := ServiceFloat32TypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat32TypeMapResponse) + return response.RetFloat32TypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) Float32TypeMapTyped(v Float32TypeMapTyped) (retFloat32TypeMapTyped_0 Float32TypeMapTyped, clientErr error) { + req := ServiceFloat32TypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat32TypeMapTypedResponse) + return response.RetFloat32TypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) Float64(v float64) (retFloat64_0 float64, clientErr error) { + req := ServiceFloat64Request{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat64Response) + return response.RetFloat64_0, nil +} + +func (tsc *ServiceGoRPCClient) Float64Map(v map[float64]interface{}) (retFloat64Map_0 map[float64]interface{}, clientErr error) { + req := ServiceFloat64MapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat64MapResponse) + return response.RetFloat64Map_0, nil +} + +func (tsc *ServiceGoRPCClient) Float64Slice(v []float64) (retFloat64Slice_0 []float64, clientErr error) { + req := ServiceFloat64SliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat64SliceResponse) + return response.RetFloat64Slice_0, nil +} + +func (tsc *ServiceGoRPCClient) Float64Type(v Float64Type) (retFloat64Type_0 Float64Type, clientErr error) { + req := ServiceFloat64TypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat64TypeResponse) + return response.RetFloat64Type_0, nil +} + +func (tsc *ServiceGoRPCClient) Float64TypeMap(v map[Float64TypeMapKey]Float64TypeMapValue) (retFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue, clientErr error) { + req := ServiceFloat64TypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat64TypeMapResponse) + return response.RetFloat64TypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) Float64TypeMapTyped(v Float64TypeMapTyped) (retFloat64TypeMapTyped_0 Float64TypeMapTyped, clientErr error) { + req := ServiceFloat64TypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceFloat64TypeMapTypedResponse) + return response.RetFloat64TypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) Int(v int) (retInt_0 int, clientErr error) { + req := ServiceIntRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceIntResponse) + return response.RetInt_0, nil +} + +func (tsc *ServiceGoRPCClient) Int32(v int32) (retInt32_0 int32, clientErr error) { + req := ServiceInt32Request{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt32Response) + return response.RetInt32_0, nil +} + +func (tsc *ServiceGoRPCClient) Int32Map(v map[int32]interface{}) (retInt32Map_0 map[int32]interface{}, clientErr error) { + req := ServiceInt32MapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt32MapResponse) + return response.RetInt32Map_0, nil +} + +func (tsc *ServiceGoRPCClient) Int32Slice(v []int32) (retInt32Slice_0 []int32, clientErr error) { + req := ServiceInt32SliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt32SliceResponse) + return response.RetInt32Slice_0, nil +} + +func (tsc *ServiceGoRPCClient) Int32Type(v Int32Type) (retInt32Type_0 Int32Type, clientErr error) { + req := ServiceInt32TypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt32TypeResponse) + return response.RetInt32Type_0, nil +} + +func (tsc *ServiceGoRPCClient) Int32TypeMap(v map[Int32TypeMapKey]Int32TypeMapValue) (retInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue, clientErr error) { + req := ServiceInt32TypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt32TypeMapResponse) + return response.RetInt32TypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) Int32TypeMapTyped(v Int32TypeMapTyped) (retInt32TypeMapTyped_0 Int32TypeMapTyped, clientErr error) { + req := ServiceInt32TypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt32TypeMapTypedResponse) + return response.RetInt32TypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) Int64(v int64) (retInt64_0 int64, clientErr error) { + req := ServiceInt64Request{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt64Response) + return response.RetInt64_0, nil +} + +func (tsc *ServiceGoRPCClient) Int64Map(v map[int64]interface{}) (retInt64Map_0 map[int64]interface{}, clientErr error) { + req := ServiceInt64MapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt64MapResponse) + return response.RetInt64Map_0, nil +} + +func (tsc *ServiceGoRPCClient) Int64Slice(v []int64) (retInt64Slice_0 []int64, clientErr error) { + req := ServiceInt64SliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt64SliceResponse) + return response.RetInt64Slice_0, nil +} + +func (tsc *ServiceGoRPCClient) Int64Type(v Int64Type) (retInt64Type_0 Int64Type, clientErr error) { + req := ServiceInt64TypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt64TypeResponse) + return response.RetInt64Type_0, nil +} + +func (tsc *ServiceGoRPCClient) Int64TypeMap(v map[Int64TypeMapKey]Int64TypeMapValue) (retInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue, clientErr error) { + req := ServiceInt64TypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt64TypeMapResponse) + return response.RetInt64TypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) Int64TypeMapTyped(v Int64TypeMapTyped) (retInt64TypeMapTyped_0 Int64TypeMapTyped, clientErr error) { + req := ServiceInt64TypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInt64TypeMapTypedResponse) + return response.RetInt64TypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) IntMap(v map[int]interface{}) (retIntMap_0 map[int]interface{}, clientErr error) { + req := ServiceIntMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceIntMapResponse) + return response.RetIntMap_0, nil +} + +func (tsc *ServiceGoRPCClient) IntSlice(v []int) (retIntSlice_0 []int, clientErr error) { + req := ServiceIntSliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceIntSliceResponse) + return response.RetIntSlice_0, nil +} + +func (tsc *ServiceGoRPCClient) IntType(v IntType) (retIntType_0 IntType, clientErr error) { + req := ServiceIntTypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceIntTypeResponse) + return response.RetIntType_0, nil +} + +func (tsc *ServiceGoRPCClient) IntTypeMap(v map[IntTypeMapKey]IntTypeMapValue) (retIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue, clientErr error) { + req := ServiceIntTypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceIntTypeMapResponse) + return response.RetIntTypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) IntTypeMapTyped(v IntTypeMapTyped) (retIntTypeMapTyped_0 IntTypeMapTyped, clientErr error) { + req := ServiceIntTypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceIntTypeMapTypedResponse) + return response.RetIntTypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) Interface(v interface{}) (retInterface_0 interface{}, clientErr error) { + req := ServiceInterfaceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInterfaceResponse) + return response.RetInterface_0, nil +} + +func (tsc *ServiceGoRPCClient) InterfaceSlice(v []interface{}) (retInterfaceSlice_0 []interface{}, clientErr error) { + req := ServiceInterfaceSliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceInterfaceSliceResponse) + return response.RetInterfaceSlice_0, nil +} + +func (tsc *ServiceGoRPCClient) String(v string) (retString_0 string, clientErr error) { + req := ServiceStringRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStringResponse) + return response.RetString_0, nil +} + +func (tsc *ServiceGoRPCClient) StringMap(v map[string]interface{}) (retStringMap_0 map[string]interface{}, clientErr error) { + req := ServiceStringMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStringMapResponse) + return response.RetStringMap_0, nil +} + +func (tsc *ServiceGoRPCClient) StringSlice(v []string) (retStringSlice_0 []string, clientErr error) { + req := ServiceStringSliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStringSliceResponse) + return response.RetStringSlice_0, nil +} + +func (tsc *ServiceGoRPCClient) StringType(v StringType) (retStringType_0 StringType, clientErr error) { + req := ServiceStringTypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStringTypeResponse) + return response.RetStringType_0, nil +} + +func (tsc *ServiceGoRPCClient) StringTypeMap(v map[StringTypeMapKey]StringTypeMapValue) (retStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue, clientErr error) { + req := ServiceStringTypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStringTypeMapResponse) + return response.RetStringTypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) StringTypeMapTyped(v StringTypeMapTyped) (retStringTypeMapTyped_0 StringTypeMapTyped, clientErr error) { + req := ServiceStringTypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStringTypeMapTypedResponse) + return response.RetStringTypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) Struct(v Struct) (retStruct_0 Struct, clientErr error) { + req := ServiceStructRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceStructResponse) + return response.RetStruct_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt(v uint) (retUInt_0 uint, clientErr error) { + req := ServiceUIntRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUIntResponse) + return response.RetUInt_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt32(v uint32) (retUInt32_0 uint32, clientErr error) { + req := ServiceUInt32Request{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt32Response) + return response.RetUInt32_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt32Map(v map[uint32]interface{}) (retUInt32Map_0 map[uint32]interface{}, clientErr error) { + req := ServiceUInt32MapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt32MapResponse) + return response.RetUInt32Map_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt32Slice(v []uint32) (retUInt32Slice_0 []uint32, clientErr error) { + req := ServiceUInt32SliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt32SliceResponse) + return response.RetUInt32Slice_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt32Type(v UInt32Type) (retUInt32Type_0 UInt32Type, clientErr error) { + req := ServiceUInt32TypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt32TypeResponse) + return response.RetUInt32Type_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt32TypeMap(v map[UInt32TypeMapKey]UInt32TypeMapValue) (retUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue, clientErr error) { + req := ServiceUInt32TypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt32TypeMapResponse) + return response.RetUInt32TypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt32TypeMapTyped(v UInt32TypeMapTyped) (retUInt32TypeMapTyped_0 UInt32TypeMapTyped, clientErr error) { + req := ServiceUInt32TypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt32TypeMapTypedResponse) + return response.RetUInt32TypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt64(v uint64) (retUInt64_0 uint64, clientErr error) { + req := ServiceUInt64Request{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt64Response) + return response.RetUInt64_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt64Map(v map[uint64]interface{}) (retUInt64Map_0 map[uint64]interface{}, clientErr error) { + req := ServiceUInt64MapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt64MapResponse) + return response.RetUInt64Map_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt64Slice(v []uint64) (retUInt64Slice_0 []uint64, clientErr error) { + req := ServiceUInt64SliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt64SliceResponse) + return response.RetUInt64Slice_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt64Type(v UInt64Type) (retUInt64Type_0 UInt64Type, clientErr error) { + req := ServiceUInt64TypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt64TypeResponse) + return response.RetUInt64Type_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt64TypeMap(v map[UInt64TypeMapKey]UInt64TypeMapValue) (retUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue, clientErr error) { + req := ServiceUInt64TypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt64TypeMapResponse) + return response.RetUInt64TypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) UInt64TypeMapTyped(v UInt64TypeMapTyped) (retUInt64TypeMapTyped_0 UInt64TypeMapTyped, clientErr error) { + req := ServiceUInt64TypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUInt64TypeMapTypedResponse) + return response.RetUInt64TypeMapTyped_0, nil +} + +func (tsc *ServiceGoRPCClient) UIntMap(v map[uint]interface{}) (retUIntMap_0 map[uint]interface{}, clientErr error) { + req := ServiceUIntMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUIntMapResponse) + return response.RetUIntMap_0, nil +} + +func (tsc *ServiceGoRPCClient) UIntSlice(v []uint) (retUIntSlice_0 []uint, clientErr error) { + req := ServiceUIntSliceRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUIntSliceResponse) + return response.RetUIntSlice_0, nil +} + +func (tsc *ServiceGoRPCClient) UIntType(v UIntType) (retUIntType_0 UIntType, clientErr error) { + req := ServiceUIntTypeRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUIntTypeResponse) + return response.RetUIntType_0, nil +} + +func (tsc *ServiceGoRPCClient) UIntTypeMap(v map[UIntTypeMapKey]UIntTypeMapValue) (retUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue, clientErr error) { + req := ServiceUIntTypeMapRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUIntTypeMapResponse) + return response.RetUIntTypeMap_0, nil +} + +func (tsc *ServiceGoRPCClient) UIntTypeMapTyped(v UIntTypeMapTyped) (retUIntTypeMapTyped_0 UIntTypeMapTyped, clientErr error) { + req := ServiceUIntTypeMapTypedRequest{V: v} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceUIntTypeMapTypedResponse) + return response.RetUIntTypeMapTyped_0, nil +} diff --git a/example/basic/service/gotsrpc_gen.go b/example/basic/service/gotsrpc_gen.go new file mode 100644 index 0000000..bcc54a4 --- /dev/null +++ b/example/basic/service/gotsrpc_gen.go @@ -0,0 +1,1121 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + io "io" + ioutil "io/ioutil" + http "net/http" + time "time" + + gotsrpc "github.com/foomo/gotsrpc/v2" +) + +const ( + ServiceGoTSRPCProxyBool = "Bool" + ServiceGoTSRPCProxyBoolSlice = "BoolSlice" + ServiceGoTSRPCProxyFloat32 = "Float32" + ServiceGoTSRPCProxyFloat32Map = "Float32Map" + ServiceGoTSRPCProxyFloat32Slice = "Float32Slice" + ServiceGoTSRPCProxyFloat32Type = "Float32Type" + ServiceGoTSRPCProxyFloat32TypeMap = "Float32TypeMap" + ServiceGoTSRPCProxyFloat32TypeMapTyped = "Float32TypeMapTyped" + ServiceGoTSRPCProxyFloat64 = "Float64" + ServiceGoTSRPCProxyFloat64Map = "Float64Map" + ServiceGoTSRPCProxyFloat64Slice = "Float64Slice" + ServiceGoTSRPCProxyFloat64Type = "Float64Type" + ServiceGoTSRPCProxyFloat64TypeMap = "Float64TypeMap" + ServiceGoTSRPCProxyFloat64TypeMapTyped = "Float64TypeMapTyped" + ServiceGoTSRPCProxyInt = "Int" + ServiceGoTSRPCProxyInt32 = "Int32" + ServiceGoTSRPCProxyInt32Map = "Int32Map" + ServiceGoTSRPCProxyInt32Slice = "Int32Slice" + ServiceGoTSRPCProxyInt32Type = "Int32Type" + ServiceGoTSRPCProxyInt32TypeMap = "Int32TypeMap" + ServiceGoTSRPCProxyInt32TypeMapTyped = "Int32TypeMapTyped" + ServiceGoTSRPCProxyInt64 = "Int64" + ServiceGoTSRPCProxyInt64Map = "Int64Map" + ServiceGoTSRPCProxyInt64Slice = "Int64Slice" + ServiceGoTSRPCProxyInt64Type = "Int64Type" + ServiceGoTSRPCProxyInt64TypeMap = "Int64TypeMap" + ServiceGoTSRPCProxyInt64TypeMapTyped = "Int64TypeMapTyped" + ServiceGoTSRPCProxyIntMap = "IntMap" + ServiceGoTSRPCProxyIntSlice = "IntSlice" + ServiceGoTSRPCProxyIntType = "IntType" + ServiceGoTSRPCProxyIntTypeMap = "IntTypeMap" + ServiceGoTSRPCProxyIntTypeMapTyped = "IntTypeMapTyped" + ServiceGoTSRPCProxyInterface = "Interface" + ServiceGoTSRPCProxyInterfaceSlice = "InterfaceSlice" + ServiceGoTSRPCProxyString = "String" + ServiceGoTSRPCProxyStringMap = "StringMap" + ServiceGoTSRPCProxyStringSlice = "StringSlice" + ServiceGoTSRPCProxyStringType = "StringType" + ServiceGoTSRPCProxyStringTypeMap = "StringTypeMap" + ServiceGoTSRPCProxyStringTypeMapTyped = "StringTypeMapTyped" + ServiceGoTSRPCProxyStruct = "Struct" + ServiceGoTSRPCProxyUInt = "UInt" + ServiceGoTSRPCProxyUInt32 = "UInt32" + ServiceGoTSRPCProxyUInt32Map = "UInt32Map" + ServiceGoTSRPCProxyUInt32Slice = "UInt32Slice" + ServiceGoTSRPCProxyUInt32Type = "UInt32Type" + ServiceGoTSRPCProxyUInt32TypeMap = "UInt32TypeMap" + ServiceGoTSRPCProxyUInt32TypeMapTyped = "UInt32TypeMapTyped" + ServiceGoTSRPCProxyUInt64 = "UInt64" + ServiceGoTSRPCProxyUInt64Map = "UInt64Map" + ServiceGoTSRPCProxyUInt64Slice = "UInt64Slice" + ServiceGoTSRPCProxyUInt64Type = "UInt64Type" + ServiceGoTSRPCProxyUInt64TypeMap = "UInt64TypeMap" + ServiceGoTSRPCProxyUInt64TypeMapTyped = "UInt64TypeMapTyped" + ServiceGoTSRPCProxyUIntMap = "UIntMap" + ServiceGoTSRPCProxyUIntSlice = "UIntSlice" + ServiceGoTSRPCProxyUIntType = "UIntType" + ServiceGoTSRPCProxyUIntTypeMap = "UIntTypeMap" + ServiceGoTSRPCProxyUIntTypeMapTyped = "UIntTypeMapTyped" +) + +type ServiceGoTSRPCProxy struct { + EndPoint string + service Service +} + +func NewDefaultServiceGoTSRPCProxy(service Service) *ServiceGoTSRPCProxy { + return &ServiceGoTSRPCProxy{ + EndPoint: "/service", + service: service, + } +} + +func NewServiceGoTSRPCProxy(service Service, endpoint string) *ServiceGoTSRPCProxy { + return &ServiceGoTSRPCProxy{ + EndPoint: endpoint, + service: service, + } +} + +// ServeHTTP exposes your service +func (p *ServiceGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + if r.Method == http.MethodOptions { + return + } + gotsrpc.ErrorMethodNotAllowed(w) + return + } + defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body + + funcName := gotsrpc.GetCalledFunc(r, p.EndPoint) + callStats := gotsrpc.GetStatsForRequest(r) + if callStats != nil { + callStats.Func = funcName + callStats.Package = "github.com/foomo/gotsrpc/v2/example/basic/service" + callStats.Service = "Service" + } + switch funcName { + case ServiceGoTSRPCProxyBool: + var ( + arg_v bool + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + boolRet := p.service.Bool(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{boolRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyBoolSlice: + var ( + arg_v []bool + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + boolSliceRet := p.service.BoolSlice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{boolSliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat32: + var ( + arg_v float32 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float32Ret := p.service.Float32(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float32Ret}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat32Map: + var ( + arg_v map[float32]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float32MapRet := p.service.Float32Map(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float32MapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat32Slice: + var ( + arg_v []float32 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float32SliceRet := p.service.Float32Slice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float32SliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat32Type: + var ( + arg_v Float32Type + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float32TypeRet := p.service.Float32Type(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float32TypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat32TypeMap: + var ( + arg_v map[Float32TypeMapKey]Float32TypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float32TypeMapRet := p.service.Float32TypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float32TypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat32TypeMapTyped: + var ( + arg_v Float32TypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float32TypeMapTypedRet := p.service.Float32TypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float32TypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat64: + var ( + arg_v float64 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float64Ret := p.service.Float64(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float64Ret}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat64Map: + var ( + arg_v map[float64]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float64MapRet := p.service.Float64Map(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float64MapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat64Slice: + var ( + arg_v []float64 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float64SliceRet := p.service.Float64Slice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float64SliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat64Type: + var ( + arg_v Float64Type + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float64TypeRet := p.service.Float64Type(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float64TypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat64TypeMap: + var ( + arg_v map[Float64TypeMapKey]Float64TypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float64TypeMapRet := p.service.Float64TypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float64TypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyFloat64TypeMapTyped: + var ( + arg_v Float64TypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + float64TypeMapTypedRet := p.service.Float64TypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{float64TypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt: + var ( + arg_v int + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + intRet := p.service.Int(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{intRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt32: + var ( + arg_v int32 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int32Ret := p.service.Int32(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int32Ret}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt32Map: + var ( + arg_v map[int32]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int32MapRet := p.service.Int32Map(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int32MapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt32Slice: + var ( + arg_v []int32 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int32SliceRet := p.service.Int32Slice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int32SliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt32Type: + var ( + arg_v Int32Type + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int32TypeRet := p.service.Int32Type(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int32TypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt32TypeMap: + var ( + arg_v map[Int32TypeMapKey]Int32TypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int32TypeMapRet := p.service.Int32TypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int32TypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt32TypeMapTyped: + var ( + arg_v Int32TypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int32TypeMapTypedRet := p.service.Int32TypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int32TypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt64: + var ( + arg_v int64 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int64Ret := p.service.Int64(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int64Ret}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt64Map: + var ( + arg_v map[int64]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int64MapRet := p.service.Int64Map(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int64MapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt64Slice: + var ( + arg_v []int64 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int64SliceRet := p.service.Int64Slice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int64SliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt64Type: + var ( + arg_v Int64Type + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int64TypeRet := p.service.Int64Type(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int64TypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt64TypeMap: + var ( + arg_v map[Int64TypeMapKey]Int64TypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int64TypeMapRet := p.service.Int64TypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int64TypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInt64TypeMapTyped: + var ( + arg_v Int64TypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + int64TypeMapTypedRet := p.service.Int64TypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{int64TypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyIntMap: + var ( + arg_v map[int]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + intMapRet := p.service.IntMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{intMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyIntSlice: + var ( + arg_v []int + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + intSliceRet := p.service.IntSlice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{intSliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyIntType: + var ( + arg_v IntType + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + intTypeRet := p.service.IntType(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{intTypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyIntTypeMap: + var ( + arg_v map[IntTypeMapKey]IntTypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + intTypeMapRet := p.service.IntTypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{intTypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyIntTypeMapTyped: + var ( + arg_v IntTypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + intTypeMapTypedRet := p.service.IntTypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{intTypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInterface: + var ( + arg_v interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + interfaceRet := p.service.Interface(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{interfaceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyInterfaceSlice: + var ( + arg_v []interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + interfaceSliceRet := p.service.InterfaceSlice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{interfaceSliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyString: + var ( + arg_v string + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + stringRet := p.service.String(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{stringRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyStringMap: + var ( + arg_v map[string]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + stringMapRet := p.service.StringMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{stringMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyStringSlice: + var ( + arg_v []string + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + stringSliceRet := p.service.StringSlice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{stringSliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyStringType: + var ( + arg_v StringType + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + stringTypeRet := p.service.StringType(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{stringTypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyStringTypeMap: + var ( + arg_v map[StringTypeMapKey]StringTypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + stringTypeMapRet := p.service.StringTypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{stringTypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyStringTypeMapTyped: + var ( + arg_v StringTypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + stringTypeMapTypedRet := p.service.StringTypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{stringTypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyStruct: + var ( + arg_v Struct + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + structRet := p.service.Struct(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{structRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt: + var ( + arg_v uint + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uIntRet := p.service.UInt(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uIntRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt32: + var ( + arg_v uint32 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt32Ret := p.service.UInt32(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt32Ret}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt32Map: + var ( + arg_v map[uint32]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt32MapRet := p.service.UInt32Map(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt32MapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt32Slice: + var ( + arg_v []uint32 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt32SliceRet := p.service.UInt32Slice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt32SliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt32Type: + var ( + arg_v UInt32Type + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt32TypeRet := p.service.UInt32Type(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt32TypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt32TypeMap: + var ( + arg_v map[UInt32TypeMapKey]UInt32TypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt32TypeMapRet := p.service.UInt32TypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt32TypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt32TypeMapTyped: + var ( + arg_v UInt32TypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt32TypeMapTypedRet := p.service.UInt32TypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt32TypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt64: + var ( + arg_v uint64 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt64Ret := p.service.UInt64(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt64Ret}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt64Map: + var ( + arg_v map[uint64]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt64MapRet := p.service.UInt64Map(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt64MapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt64Slice: + var ( + arg_v []uint64 + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt64SliceRet := p.service.UInt64Slice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt64SliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt64Type: + var ( + arg_v UInt64Type + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt64TypeRet := p.service.UInt64Type(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt64TypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt64TypeMap: + var ( + arg_v map[UInt64TypeMapKey]UInt64TypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt64TypeMapRet := p.service.UInt64TypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt64TypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUInt64TypeMapTyped: + var ( + arg_v UInt64TypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uInt64TypeMapTypedRet := p.service.UInt64TypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uInt64TypeMapTypedRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUIntMap: + var ( + arg_v map[uint]interface{} + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uIntMapRet := p.service.UIntMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uIntMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUIntSlice: + var ( + arg_v []uint + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uIntSliceRet := p.service.UIntSlice(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uIntSliceRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUIntType: + var ( + arg_v UIntType + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uIntTypeRet := p.service.UIntType(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uIntTypeRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUIntTypeMap: + var ( + arg_v map[UIntTypeMapKey]UIntTypeMapValue + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uIntTypeMapRet := p.service.UIntTypeMap(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uIntTypeMapRet}, callStats, r, w) + return + case ServiceGoTSRPCProxyUIntTypeMapTyped: + var ( + arg_v UIntTypeMapTyped + ) + args := []interface{}{&arg_v} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + uIntTypeMapTypedRet := p.service.UIntTypeMapTyped(arg_v) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + gotsrpc.Reply([]interface{}{uIntTypeMapTypedRet}, callStats, r, w) + return + default: + gotsrpc.ClearStats(r) + http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound) + } +} diff --git a/example/basic/service/gotsrpcclient_gen.go b/example/basic/service/gotsrpcclient_gen.go new file mode 100644 index 0000000..334238f --- /dev/null +++ b/example/basic/service/gotsrpcclient_gen.go @@ -0,0 +1,684 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + go_context "context" + go_net_http "net/http" + + gotsrpc "github.com/foomo/gotsrpc/v2" + pkg_errors "github.com/pkg/errors" +) + +type ServiceGoTSRPCClient interface { + Bool(ctx go_context.Context, v bool) (retBool_0 bool, clientErr error) + BoolSlice(ctx go_context.Context, v []bool) (retBoolSlice_0 []bool, clientErr error) + Float32(ctx go_context.Context, v float32) (retFloat32_0 float32, clientErr error) + Float32Map(ctx go_context.Context, v map[float32]interface{}) (retFloat32Map_0 map[float32]interface{}, clientErr error) + Float32Slice(ctx go_context.Context, v []float32) (retFloat32Slice_0 []float32, clientErr error) + Float32Type(ctx go_context.Context, v Float32Type) (retFloat32Type_0 Float32Type, clientErr error) + Float32TypeMap(ctx go_context.Context, v map[Float32TypeMapKey]Float32TypeMapValue) (retFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue, clientErr error) + Float32TypeMapTyped(ctx go_context.Context, v Float32TypeMapTyped) (retFloat32TypeMapTyped_0 Float32TypeMapTyped, clientErr error) + Float64(ctx go_context.Context, v float64) (retFloat64_0 float64, clientErr error) + Float64Map(ctx go_context.Context, v map[float64]interface{}) (retFloat64Map_0 map[float64]interface{}, clientErr error) + Float64Slice(ctx go_context.Context, v []float64) (retFloat64Slice_0 []float64, clientErr error) + Float64Type(ctx go_context.Context, v Float64Type) (retFloat64Type_0 Float64Type, clientErr error) + Float64TypeMap(ctx go_context.Context, v map[Float64TypeMapKey]Float64TypeMapValue) (retFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue, clientErr error) + Float64TypeMapTyped(ctx go_context.Context, v Float64TypeMapTyped) (retFloat64TypeMapTyped_0 Float64TypeMapTyped, clientErr error) + Int(ctx go_context.Context, v int) (retInt_0 int, clientErr error) + Int32(ctx go_context.Context, v int32) (retInt32_0 int32, clientErr error) + Int32Map(ctx go_context.Context, v map[int32]interface{}) (retInt32Map_0 map[int32]interface{}, clientErr error) + Int32Slice(ctx go_context.Context, v []int32) (retInt32Slice_0 []int32, clientErr error) + Int32Type(ctx go_context.Context, v Int32Type) (retInt32Type_0 Int32Type, clientErr error) + Int32TypeMap(ctx go_context.Context, v map[Int32TypeMapKey]Int32TypeMapValue) (retInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue, clientErr error) + Int32TypeMapTyped(ctx go_context.Context, v Int32TypeMapTyped) (retInt32TypeMapTyped_0 Int32TypeMapTyped, clientErr error) + Int64(ctx go_context.Context, v int64) (retInt64_0 int64, clientErr error) + Int64Map(ctx go_context.Context, v map[int64]interface{}) (retInt64Map_0 map[int64]interface{}, clientErr error) + Int64Slice(ctx go_context.Context, v []int64) (retInt64Slice_0 []int64, clientErr error) + Int64Type(ctx go_context.Context, v Int64Type) (retInt64Type_0 Int64Type, clientErr error) + Int64TypeMap(ctx go_context.Context, v map[Int64TypeMapKey]Int64TypeMapValue) (retInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue, clientErr error) + Int64TypeMapTyped(ctx go_context.Context, v Int64TypeMapTyped) (retInt64TypeMapTyped_0 Int64TypeMapTyped, clientErr error) + IntMap(ctx go_context.Context, v map[int]interface{}) (retIntMap_0 map[int]interface{}, clientErr error) + IntSlice(ctx go_context.Context, v []int) (retIntSlice_0 []int, clientErr error) + IntType(ctx go_context.Context, v IntType) (retIntType_0 IntType, clientErr error) + IntTypeMap(ctx go_context.Context, v map[IntTypeMapKey]IntTypeMapValue) (retIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue, clientErr error) + IntTypeMapTyped(ctx go_context.Context, v IntTypeMapTyped) (retIntTypeMapTyped_0 IntTypeMapTyped, clientErr error) + Interface(ctx go_context.Context, v interface{}) (retInterface_0 interface{}, clientErr error) + InterfaceSlice(ctx go_context.Context, v []interface{}) (retInterfaceSlice_0 []interface{}, clientErr error) + String(ctx go_context.Context, v string) (retString_0 string, clientErr error) + StringMap(ctx go_context.Context, v map[string]interface{}) (retStringMap_0 map[string]interface{}, clientErr error) + StringSlice(ctx go_context.Context, v []string) (retStringSlice_0 []string, clientErr error) + StringType(ctx go_context.Context, v StringType) (retStringType_0 StringType, clientErr error) + StringTypeMap(ctx go_context.Context, v map[StringTypeMapKey]StringTypeMapValue) (retStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue, clientErr error) + StringTypeMapTyped(ctx go_context.Context, v StringTypeMapTyped) (retStringTypeMapTyped_0 StringTypeMapTyped, clientErr error) + Struct(ctx go_context.Context, v Struct) (retStruct_0 Struct, clientErr error) + UInt(ctx go_context.Context, v uint) (retUInt_0 uint, clientErr error) + UInt32(ctx go_context.Context, v uint32) (retUInt32_0 uint32, clientErr error) + UInt32Map(ctx go_context.Context, v map[uint32]interface{}) (retUInt32Map_0 map[uint32]interface{}, clientErr error) + UInt32Slice(ctx go_context.Context, v []uint32) (retUInt32Slice_0 []uint32, clientErr error) + UInt32Type(ctx go_context.Context, v UInt32Type) (retUInt32Type_0 UInt32Type, clientErr error) + UInt32TypeMap(ctx go_context.Context, v map[UInt32TypeMapKey]UInt32TypeMapValue) (retUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue, clientErr error) + UInt32TypeMapTyped(ctx go_context.Context, v UInt32TypeMapTyped) (retUInt32TypeMapTyped_0 UInt32TypeMapTyped, clientErr error) + UInt64(ctx go_context.Context, v uint64) (retUInt64_0 uint64, clientErr error) + UInt64Map(ctx go_context.Context, v map[uint64]interface{}) (retUInt64Map_0 map[uint64]interface{}, clientErr error) + UInt64Slice(ctx go_context.Context, v []uint64) (retUInt64Slice_0 []uint64, clientErr error) + UInt64Type(ctx go_context.Context, v UInt64Type) (retUInt64Type_0 UInt64Type, clientErr error) + UInt64TypeMap(ctx go_context.Context, v map[UInt64TypeMapKey]UInt64TypeMapValue) (retUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue, clientErr error) + UInt64TypeMapTyped(ctx go_context.Context, v UInt64TypeMapTyped) (retUInt64TypeMapTyped_0 UInt64TypeMapTyped, clientErr error) + UIntMap(ctx go_context.Context, v map[uint]interface{}) (retUIntMap_0 map[uint]interface{}, clientErr error) + UIntSlice(ctx go_context.Context, v []uint) (retUIntSlice_0 []uint, clientErr error) + UIntType(ctx go_context.Context, v UIntType) (retUIntType_0 UIntType, clientErr error) + UIntTypeMap(ctx go_context.Context, v map[UIntTypeMapKey]UIntTypeMapValue) (retUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue, clientErr error) + UIntTypeMapTyped(ctx go_context.Context, v UIntTypeMapTyped) (retUIntTypeMapTyped_0 UIntTypeMapTyped, clientErr error) +} + +type HTTPServiceGoTSRPCClient struct { + URL string + EndPoint string + Client gotsrpc.Client +} + +func NewDefaultServiceGoTSRPCClient(url string) *HTTPServiceGoTSRPCClient { + return NewServiceGoTSRPCClient(url, "/service") +} + +func NewServiceGoTSRPCClient(url string, endpoint string) *HTTPServiceGoTSRPCClient { + return NewServiceGoTSRPCClientWithClient(url, endpoint, nil) +} + +func NewServiceGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPServiceGoTSRPCClient { + return &HTTPServiceGoTSRPCClient{ + URL: url, + EndPoint: endpoint, + Client: gotsrpc.NewClientWithHttpClient(client), + } +} +func (tsc *HTTPServiceGoTSRPCClient) Bool(ctx go_context.Context, v bool) (retBool_0 bool, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retBool_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Bool", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Bool") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) BoolSlice(ctx go_context.Context, v []bool) (retBoolSlice_0 []bool, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retBoolSlice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "BoolSlice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy BoolSlice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float32(ctx go_context.Context, v float32) (retFloat32_0 float32, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat32_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float32Map(ctx go_context.Context, v map[float32]interface{}) (retFloat32Map_0 map[float32]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat32Map_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32Map", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32Map") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float32Slice(ctx go_context.Context, v []float32) (retFloat32Slice_0 []float32, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat32Slice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32Slice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32Slice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float32Type(ctx go_context.Context, v Float32Type) (retFloat32Type_0 Float32Type, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat32Type_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32Type", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32Type") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float32TypeMap(ctx go_context.Context, v map[Float32TypeMapKey]Float32TypeMapValue) (retFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat32TypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32TypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32TypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float32TypeMapTyped(ctx go_context.Context, v Float32TypeMapTyped) (retFloat32TypeMapTyped_0 Float32TypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat32TypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32TypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32TypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float64(ctx go_context.Context, v float64) (retFloat64_0 float64, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat64_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float64Map(ctx go_context.Context, v map[float64]interface{}) (retFloat64Map_0 map[float64]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat64Map_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64Map", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64Map") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float64Slice(ctx go_context.Context, v []float64) (retFloat64Slice_0 []float64, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat64Slice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64Slice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64Slice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float64Type(ctx go_context.Context, v Float64Type) (retFloat64Type_0 Float64Type, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat64Type_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64Type", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64Type") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float64TypeMap(ctx go_context.Context, v map[Float64TypeMapKey]Float64TypeMapValue) (retFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat64TypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64TypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64TypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Float64TypeMapTyped(ctx go_context.Context, v Float64TypeMapTyped) (retFloat64TypeMapTyped_0 Float64TypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retFloat64TypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64TypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64TypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int(ctx go_context.Context, v int) (retInt_0 int, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int32(ctx go_context.Context, v int32) (retInt32_0 int32, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt32_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int32Map(ctx go_context.Context, v map[int32]interface{}) (retInt32Map_0 map[int32]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt32Map_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32Map", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32Map") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int32Slice(ctx go_context.Context, v []int32) (retInt32Slice_0 []int32, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt32Slice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32Slice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32Slice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int32Type(ctx go_context.Context, v Int32Type) (retInt32Type_0 Int32Type, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt32Type_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32Type", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32Type") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int32TypeMap(ctx go_context.Context, v map[Int32TypeMapKey]Int32TypeMapValue) (retInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt32TypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32TypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32TypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int32TypeMapTyped(ctx go_context.Context, v Int32TypeMapTyped) (retInt32TypeMapTyped_0 Int32TypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt32TypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32TypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32TypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int64(ctx go_context.Context, v int64) (retInt64_0 int64, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt64_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int64Map(ctx go_context.Context, v map[int64]interface{}) (retInt64Map_0 map[int64]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt64Map_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64Map", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64Map") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int64Slice(ctx go_context.Context, v []int64) (retInt64Slice_0 []int64, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt64Slice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64Slice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64Slice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int64Type(ctx go_context.Context, v Int64Type) (retInt64Type_0 Int64Type, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt64Type_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64Type", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64Type") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int64TypeMap(ctx go_context.Context, v map[Int64TypeMapKey]Int64TypeMapValue) (retInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt64TypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64TypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64TypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Int64TypeMapTyped(ctx go_context.Context, v Int64TypeMapTyped) (retInt64TypeMapTyped_0 Int64TypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInt64TypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64TypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64TypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) IntMap(ctx go_context.Context, v map[int]interface{}) (retIntMap_0 map[int]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retIntMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) IntSlice(ctx go_context.Context, v []int) (retIntSlice_0 []int, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retIntSlice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntSlice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntSlice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) IntType(ctx go_context.Context, v IntType) (retIntType_0 IntType, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retIntType_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntType", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntType") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) IntTypeMap(ctx go_context.Context, v map[IntTypeMapKey]IntTypeMapValue) (retIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retIntTypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntTypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntTypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) IntTypeMapTyped(ctx go_context.Context, v IntTypeMapTyped) (retIntTypeMapTyped_0 IntTypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retIntTypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntTypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntTypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Interface(ctx go_context.Context, v interface{}) (retInterface_0 interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInterface_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Interface", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Interface") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) InterfaceSlice(ctx go_context.Context, v []interface{}) (retInterfaceSlice_0 []interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retInterfaceSlice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "InterfaceSlice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy InterfaceSlice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) String(ctx go_context.Context, v string) (retString_0 string, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retString_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "String", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy String") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) StringMap(ctx go_context.Context, v map[string]interface{}) (retStringMap_0 map[string]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retStringMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) StringSlice(ctx go_context.Context, v []string) (retStringSlice_0 []string, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retStringSlice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringSlice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringSlice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) StringType(ctx go_context.Context, v StringType) (retStringType_0 StringType, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retStringType_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringType", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringType") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) StringTypeMap(ctx go_context.Context, v map[StringTypeMapKey]StringTypeMapValue) (retStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retStringTypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringTypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringTypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) StringTypeMapTyped(ctx go_context.Context, v StringTypeMapTyped) (retStringTypeMapTyped_0 StringTypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retStringTypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringTypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringTypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) Struct(ctx go_context.Context, v Struct) (retStruct_0 Struct, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retStruct_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Struct", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Struct") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt(ctx go_context.Context, v uint) (retUInt_0 uint, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt32(ctx go_context.Context, v uint32) (retUInt32_0 uint32, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt32_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt32Map(ctx go_context.Context, v map[uint32]interface{}) (retUInt32Map_0 map[uint32]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt32Map_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32Map", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32Map") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt32Slice(ctx go_context.Context, v []uint32) (retUInt32Slice_0 []uint32, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt32Slice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32Slice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32Slice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt32Type(ctx go_context.Context, v UInt32Type) (retUInt32Type_0 UInt32Type, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt32Type_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32Type", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32Type") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt32TypeMap(ctx go_context.Context, v map[UInt32TypeMapKey]UInt32TypeMapValue) (retUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt32TypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32TypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32TypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt32TypeMapTyped(ctx go_context.Context, v UInt32TypeMapTyped) (retUInt32TypeMapTyped_0 UInt32TypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt32TypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32TypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32TypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt64(ctx go_context.Context, v uint64) (retUInt64_0 uint64, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt64_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt64Map(ctx go_context.Context, v map[uint64]interface{}) (retUInt64Map_0 map[uint64]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt64Map_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64Map", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64Map") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt64Slice(ctx go_context.Context, v []uint64) (retUInt64Slice_0 []uint64, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt64Slice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64Slice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64Slice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt64Type(ctx go_context.Context, v UInt64Type) (retUInt64Type_0 UInt64Type, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt64Type_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64Type", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64Type") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt64TypeMap(ctx go_context.Context, v map[UInt64TypeMapKey]UInt64TypeMapValue) (retUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt64TypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64TypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64TypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UInt64TypeMapTyped(ctx go_context.Context, v UInt64TypeMapTyped) (retUInt64TypeMapTyped_0 UInt64TypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUInt64TypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64TypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64TypeMapTyped") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UIntMap(ctx go_context.Context, v map[uint]interface{}) (retUIntMap_0 map[uint]interface{}, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUIntMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UIntSlice(ctx go_context.Context, v []uint) (retUIntSlice_0 []uint, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUIntSlice_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntSlice", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntSlice") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UIntType(ctx go_context.Context, v UIntType) (retUIntType_0 UIntType, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUIntType_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntType", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntType") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UIntTypeMap(ctx go_context.Context, v map[UIntTypeMapKey]UIntTypeMapValue) (retUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUIntTypeMap_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntTypeMap", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntTypeMap") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) UIntTypeMapTyped(ctx go_context.Context, v UIntTypeMapTyped) (retUIntTypeMapTyped_0 UIntTypeMapTyped, clientErr error) { + args := []interface{}{v} + reply := []interface{}{&retUIntTypeMapTyped_0} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntTypeMapTyped", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntTypeMapTyped") + } + return +} diff --git a/example/basic/service/handler.go b/example/basic/service/handler.go new file mode 100644 index 0000000..00a541d --- /dev/null +++ b/example/basic/service/handler.go @@ -0,0 +1,239 @@ +package service + +type Handler struct{} + +func (h *Handler) Bool(v bool) bool { + return v +} + +func (h *Handler) Int(v int) int { + return v +} + +func (h *Handler) Int32(v int32) int32 { + return v +} + +func (h *Handler) Int64(v int64) int64 { + return v +} + +func (h *Handler) UInt(v uint) uint { + return v +} + +func (h *Handler) UInt32(v uint32) uint32 { + return v +} + +func (h *Handler) UInt64(v uint64) uint64 { + return v +} + +func (h *Handler) Float32(v float32) float32 { + return v +} + +func (h *Handler) Float64(v float64) float64 { + return v +} + +func (h *Handler) String(v string) string { + return v +} + +func (h *Handler) Struct(v Struct) Struct { + return v +} + +func (h *Handler) Interface(v interface{}) interface{} { + return v +} + +func (h *Handler) BoolSlice(v []bool) []bool { + return v +} + +func (h *Handler) IntSlice(v []int) []int { + return v +} + +func (h *Handler) Int32Slice(v []int32) []int32 { + return v +} + +func (h *Handler) Int64Slice(v []int64) []int64 { + return v +} + +func (h *Handler) UIntSlice(v []uint) []uint { + return v +} + +func (h *Handler) UInt32Slice(v []uint32) []uint32 { + return v +} + +func (h *Handler) UInt64Slice(v []uint64) []uint64 { + return v +} + +func (h *Handler) Float32Slice(v []float32) []float32 { + return v +} + +func (h *Handler) Float64Slice(v []float64) []float64 { + return v +} + +func (h *Handler) StringSlice(v []string) []string { + return v +} + +func (h *Handler) IntMap(v map[int]interface{}) map[int]interface{} { + return v +} + +func (h *Handler) Int32Map(v map[int32]interface{}) map[int32]interface{} { + return v +} + +func (h *Handler) Int64Map(v map[int64]interface{}) map[int64]interface{} { + return v +} + +func (h *Handler) UIntMap(v map[uint]interface{}) map[uint]interface{} { + return v +} + +func (h *Handler) UInt32Map(v map[uint32]interface{}) map[uint32]interface{} { + return v +} + +func (h *Handler) UInt64Map(v map[uint64]interface{}) map[uint64]interface{} { + return v +} + +func (h *Handler) Float32Map(v map[float32]interface{}) map[float32]interface{} { + return v +} + +func (h *Handler) Float64Map(v map[float64]interface{}) map[float64]interface{} { + return v +} + +func (h *Handler) StringMap(v map[string]interface{}) map[string]interface{} { + return v +} + +func (h *Handler) IntTypeMap(v map[IntTypeMapKey]IntTypeMapValue) map[IntTypeMapKey]IntTypeMapValue { + return v +} + +func (h *Handler) Int32TypeMap(v map[Int32TypeMapKey]Int32TypeMapValue) map[Int32TypeMapKey]Int32TypeMapValue { + return v +} + +func (h *Handler) Int64TypeMap(v map[Int64TypeMapKey]Int64TypeMapValue) map[Int64TypeMapKey]Int64TypeMapValue { + return v +} + +func (h *Handler) UIntTypeMap(v map[UIntTypeMapKey]UIntTypeMapValue) map[UIntTypeMapKey]UIntTypeMapValue { + return v +} + +func (h *Handler) UInt32TypeMap(v map[UInt32TypeMapKey]UInt32TypeMapValue) map[UInt32TypeMapKey]UInt32TypeMapValue { + return v +} + +func (h *Handler) UInt64TypeMap(v map[UInt64TypeMapKey]UInt64TypeMapValue) map[UInt64TypeMapKey]UInt64TypeMapValue { + return v +} + +func (h *Handler) Float32TypeMap(v map[Float32TypeMapKey]Float32TypeMapValue) map[Float32TypeMapKey]Float32TypeMapValue { + return v +} + +func (h *Handler) Float64TypeMap(v map[Float64TypeMapKey]Float64TypeMapValue) map[Float64TypeMapKey]Float64TypeMapValue { + return v +} + +func (h *Handler) StringTypeMap(v map[StringTypeMapKey]StringTypeMapValue) map[StringTypeMapKey]StringTypeMapValue { + return v +} + +func (h *Handler) IntTypeMapTyped(v IntTypeMapTyped) IntTypeMapTyped { + return v +} + +func (h *Handler) Int32TypeMapTyped(v Int32TypeMapTyped) Int32TypeMapTyped { + return v +} + +func (h *Handler) Int64TypeMapTyped(v Int64TypeMapTyped) Int64TypeMapTyped { + return v +} + +func (h *Handler) UIntTypeMapTyped(v UIntTypeMapTyped) UIntTypeMapTyped { + return v +} + +func (h *Handler) UInt32TypeMapTyped(v UInt32TypeMapTyped) UInt32TypeMapTyped { + return v +} + +func (h *Handler) UInt64TypeMapTyped(v UInt64TypeMapTyped) UInt64TypeMapTyped { + return v +} + +func (h *Handler) Float32TypeMapTyped(v Float32TypeMapTyped) Float32TypeMapTyped { + return v +} + +func (h *Handler) Float64TypeMapTyped(v Float64TypeMapTyped) Float64TypeMapTyped { + return v +} + +func (h *Handler) StringTypeMapTyped(v StringTypeMapTyped) StringTypeMapTyped { + return v +} + +func (h *Handler) InterfaceSlice(v []interface{}) []interface{} { + return v +} + +func (h *Handler) IntType(v IntType) IntType { + return v +} + +func (h *Handler) Int32Type(v Int32Type) Int32Type { + return v +} + +func (h *Handler) Int64Type(v Int64Type) Int64Type { + return v +} + +func (h *Handler) UIntType(v UIntType) UIntType { + return v +} + +func (h *Handler) UInt32Type(v UInt32Type) UInt32Type { + return v +} + +func (h *Handler) UInt64Type(v UInt64Type) UInt64Type { + return v +} + +func (h *Handler) Float32Type(v Float32Type) Float32Type { + return v +} + +func (h *Handler) Float64Type(v Float64Type) Float64Type { + return v +} + +func (h *Handler) StringType(v StringType) StringType { + return v +} diff --git a/example/basic/service/service.go b/example/basic/service/service.go new file mode 100644 index 0000000..2ca7faa --- /dev/null +++ b/example/basic/service/service.go @@ -0,0 +1,63 @@ +package service + +type Service interface { + Bool(v bool) bool + Int(v int) int + Int32(v int32) int32 + Int64(v int64) int64 + UInt(v uint) uint + UInt32(v uint32) uint32 + UInt64(v uint64) uint64 + Float32(v float32) float32 + Float64(v float64) float64 + String(v string) string + Struct(v Struct) Struct + Interface(v interface{}) interface{} + BoolSlice(v []bool) []bool + IntSlice(v []int) []int + Int32Slice(v []int32) []int32 + Int64Slice(v []int64) []int64 + UIntSlice(v []uint) []uint + UInt32Slice(v []uint32) []uint32 + UInt64Slice(v []uint64) []uint64 + Float32Slice(v []float32) []float32 + Float64Slice(v []float64) []float64 + StringSlice(v []string) []string + IntMap(v map[int]interface{}) map[int]interface{} + Int32Map(v map[int32]interface{}) map[int32]interface{} + Int64Map(v map[int64]interface{}) map[int64]interface{} + UIntMap(v map[uint]interface{}) map[uint]interface{} + UInt32Map(v map[uint32]interface{}) map[uint32]interface{} + UInt64Map(v map[uint64]interface{}) map[uint64]interface{} + Float32Map(v map[float32]interface{}) map[float32]interface{} + Float64Map(v map[float64]interface{}) map[float64]interface{} + StringMap(v map[string]interface{}) map[string]interface{} + IntTypeMap(v map[IntTypeMapKey]IntTypeMapValue) map[IntTypeMapKey]IntTypeMapValue + Int32TypeMap(v map[Int32TypeMapKey]Int32TypeMapValue) map[Int32TypeMapKey]Int32TypeMapValue + Int64TypeMap(v map[Int64TypeMapKey]Int64TypeMapValue) map[Int64TypeMapKey]Int64TypeMapValue + UIntTypeMap(v map[UIntTypeMapKey]UIntTypeMapValue) map[UIntTypeMapKey]UIntTypeMapValue + UInt32TypeMap(v map[UInt32TypeMapKey]UInt32TypeMapValue) map[UInt32TypeMapKey]UInt32TypeMapValue + UInt64TypeMap(v map[UInt64TypeMapKey]UInt64TypeMapValue) map[UInt64TypeMapKey]UInt64TypeMapValue + Float32TypeMap(v map[Float32TypeMapKey]Float32TypeMapValue) map[Float32TypeMapKey]Float32TypeMapValue + Float64TypeMap(v map[Float64TypeMapKey]Float64TypeMapValue) map[Float64TypeMapKey]Float64TypeMapValue + StringTypeMap(v map[StringTypeMapKey]StringTypeMapValue) map[StringTypeMapKey]StringTypeMapValue + IntTypeMapTyped(v IntTypeMapTyped) IntTypeMapTyped + Int32TypeMapTyped(v Int32TypeMapTyped) Int32TypeMapTyped + Int64TypeMapTyped(v Int64TypeMapTyped) Int64TypeMapTyped + UIntTypeMapTyped(v UIntTypeMapTyped) UIntTypeMapTyped + UInt32TypeMapTyped(v UInt32TypeMapTyped) UInt32TypeMapTyped + UInt64TypeMapTyped(v UInt64TypeMapTyped) UInt64TypeMapTyped + Float32TypeMapTyped(v Float32TypeMapTyped) Float32TypeMapTyped + Float64TypeMapTyped(v Float64TypeMapTyped) Float64TypeMapTyped + StringTypeMapTyped(v StringTypeMapTyped) StringTypeMapTyped + InterfaceSlice(v []interface{}) []interface{} + IntType(v IntType) IntType + Int32Type(v Int32Type) Int32Type + Int64Type(v Int64Type) Int64Type + UIntType(v UIntType) UIntType + UInt32Type(v UInt32Type) UInt32Type + UInt64Type(v UInt64Type) UInt64Type + Float32Type(v Float32Type) Float32Type + Float64Type(v Float64Type) Float64Type + StringType(v StringType) StringType +} diff --git a/example/basic/service/vo.go b/example/basic/service/vo.go new file mode 100644 index 0000000..a7d38b9 --- /dev/null +++ b/example/basic/service/vo.go @@ -0,0 +1,224 @@ +package service + +type IntType int + +const ( + IntAType IntType = 1 + IntBType IntType = 2 +) + +type Int32Type int32 + +const ( + Int32AType Int32Type = 1 + Int32BType Int32Type = 2 +) + +type Int64Type int64 + +const ( + Int64AType Int64Type = 1 + Int64BType Int64Type = 2 +) + +type UIntType int + +const ( + UIntAType UIntType = 1 + UIntBType UIntType = 2 +) + +type UInt32Type uint32 + +const ( + UInt32AType UInt32Type = 1 + UInt32BType UInt32Type = 2 +) + +type UInt64Type uint64 + +const ( + UInt64AType UInt64Type = 1 + UInt64BType UInt64Type = 2 +) + +type Float32Type float32 + +const ( + Float32AType Float32Type = 1 + Float32BType Float32Type = 2 +) + +type Float64Type float64 + +const ( + Float64AType Float64Type = 1 + Float64BType Float64Type = 2 +) + +type StringType string + +const ( + StringAType StringType = "A" + StringBType StringType = "B" +) + +type IntTypeMapKey int + +const ( + IntATypeMapKey IntTypeMapKey = 1 + IntBTypeMapKey IntTypeMapKey = 2 +) + +type Int32TypeMapKey int32 + +const ( + Int32ATypeMapKey Int32TypeMapKey = 1 + Int32BTypeMapKey Int32TypeMapKey = 2 +) + +type Int64TypeMapKey int64 + +const ( + Int64ATypeMapKey Int64TypeMapKey = 1 + Int64BTypeMapKey Int64TypeMapKey = 2 +) + +type UIntTypeMapKey int + +const ( + UIntATypeMapKey UIntTypeMapKey = 1 + UIntBTypeMapKey UIntTypeMapKey = 2 +) + +type UInt32TypeMapKey uint32 + +const ( + UInt32ATypeMapKey UInt32TypeMapKey = 1 + UInt32BTypeMapKey UInt32TypeMapKey = 2 +) + +type UInt64TypeMapKey uint64 + +const ( + UInt64ATypeMapKey UInt64TypeMapKey = 1 + UInt64BTypeMapKey UInt64TypeMapKey = 2 +) + +type Float32TypeMapKey float32 + +const ( + Float32ATypeMapKey Float32TypeMapKey = 1 + Float32BTypeMapKey Float32TypeMapKey = 2 +) + +type Float64TypeMapKey float64 + +const ( + Float64ATypeMapKey Float64TypeMapKey = 1 + Float64BTypeMapKey Float64TypeMapKey = 2 +) + +type StringTypeMapKey string + +const ( + StringATypeMapKey StringTypeMapKey = "A" + StringBTypeMapKey StringTypeMapKey = "B" +) + +type IntTypeMapValue int + +const ( + IntATypeMapValue IntTypeMapValue = 1 + IntBTypeMapValue IntTypeMapValue = 2 +) + +type Int32TypeMapValue int32 + +const ( + Int32ATypeMapValue Int32TypeMapValue = 1 + Int32BTypeMapValue Int32TypeMapValue = 2 +) + +type Int64TypeMapValue int64 + +const ( + Int64ATypeMapValue Int64TypeMapValue = 1 + Int64BTypeMapValue Int64TypeMapValue = 2 +) + +type UIntTypeMapValue int + +const ( + UIntATypeMapValue UIntTypeMapValue = 1 + UIntBTypeMapValue UIntTypeMapValue = 2 +) + +type UInt32TypeMapValue uint32 + +const ( + UInt32ATypeMapValue UInt32TypeMapValue = 1 + UInt32BTypeMapValue UInt32TypeMapValue = 2 +) + +type UInt64TypeMapValue uint64 + +const ( + UInt64ATypeMapValue UInt64TypeMapValue = 1 + UInt64BTypeMapValue UInt64TypeMapValue = 2 +) + +type Float32TypeMapValue float32 + +const ( + Float32ATypeMapValue Float32TypeMapValue = 1 + Float32BTypeMapValue Float32TypeMapValue = 2 +) + +type Float64TypeMapValue float64 + +const ( + Float64ATypeMapValue Float64TypeMapValue = 1 + Float64BTypeMapValue Float64TypeMapValue = 2 +) + +type StringTypeMapValue string + +const ( + StringATypeMapValue StringTypeMapValue = "A" + StringBTypeMapValue StringTypeMapValue = "B" +) + +type ( + IntTypeMapTyped map[IntTypeMapKey]IntTypeMapValue + Int32TypeMapTyped map[Int32TypeMapKey]Int32TypeMapValue + Int64TypeMapTyped map[Int64TypeMapKey]Int64TypeMapValue + UIntTypeMapTyped map[UIntTypeMapKey]UIntTypeMapValue + UInt32TypeMapTyped map[UInt32TypeMapKey]UInt32TypeMapValue + UInt64TypeMapTyped map[UInt64TypeMapKey]UInt64TypeMapValue + Float32TypeMapTyped map[Float32TypeMapKey]Float32TypeMapValue + Float64TypeMapTyped map[Float64TypeMapKey]Float64TypeMapValue + StringTypeMapTyped map[StringTypeMapKey]StringTypeMapValue +) + +type Struct struct { + Int int + Int32 int32 + Int64 int64 + UInt uint + UInt32 uint32 + UInt64 uint64 + Float32 float32 + Float64 float64 + String string + Interface interface{} + IntTypeMapTyped map[IntTypeMapKey]IntTypeMapValue + Int32TypeMapTyped map[Int32TypeMapKey]Int32TypeMapValue + Int64TypeMapTyped map[Int64TypeMapKey]Int64TypeMapValue + UIntTypeMapTyped map[UIntTypeMapKey]UIntTypeMapValue + UInt32TypeMapTyped map[UInt32TypeMapKey]UInt32TypeMapValue + UInt64TypeMapTyped map[UInt64TypeMapKey]UInt64TypeMapValue + Float32TypeMapTyped map[Float32TypeMapKey]Float32TypeMapValue + Float64TypeMapTyped map[Float64TypeMapKey]Float64TypeMapValue + StringTypeMapTyped map[StringTypeMapKey]StringTypeMapValue +} diff --git a/example/nullable/client/index.html b/example/nullable/client/index.html new file mode 100644 index 0000000..02d0c88 --- /dev/null +++ b/example/nullable/client/index.html @@ -0,0 +1,19 @@ + + + + + + + Nullable + + + +

A service test

+ +
open the console!
+
+ + \ No newline at end of file diff --git a/example/nullable/client/src/app.ts b/example/nullable/client/src/app.ts new file mode 100644 index 0000000..3efecd0 --- /dev/null +++ b/example/nullable/client/src/app.ts @@ -0,0 +1,11 @@ +import {ServiceClient} from "./service-client.js"; +import {Base} from "./service-vo.js"; +import transport from "./transport.js"; + +export const init = () => { + const client = new ServiceClient(transport("/service")) + + client.variantA({} as Base).then(ret => { + console.log("Variant A", ret) + }) +} diff --git a/example/nullable/client/src/service-client.ts b/example/nullable/client/src/service-client.ts new file mode 100644 index 0000000..aaeb63e --- /dev/null +++ b/example/nullable/client/src/service-client.ts @@ -0,0 +1,36 @@ +/* eslint:disable */ +// hello commonjs - we need some imports - sorted in alphabetical order, by go package +import * as github_com_foomo_gotsrpc_v2_example_nullable_service from './service-vo'; // ./client/src/service-client.ts to ./client/src/service-vo.ts + +export class ServiceClient { + public static defaultEndpoint = "/service"; + constructor( + public transport:(method: string, data?: any[]) => Promise + ) {} + async variantA(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.Base}>("VariantA", [i1]))[0] + } + async variantB(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomType):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomType}>("VariantB", [i1]))[0] + } + async variantC(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypes|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypes|null}>("VariantC", [i1]))[0] + } + async variantD(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypesMap|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypesMap|null}>("VariantD", [i1]))[0] + } + async variantE(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null):Promise { + return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null}>("VariantE", [i1]))[0] + } + async variantF(i1:Array|null):Promise|null> { + return (await this.transport<{0:Array|null}>("VariantF", [i1]))[0] + } + async variantG(i1:Record|null):Promise|null> { + return (await this.transport<{0:Record|null}>("VariantG", [i1]))[0] + } + async variantH(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base, i2:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null, i3:Array|null, i4:Record|null):Promise<{r1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base; r2:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null; r3:Array|null; r4:Record|null}> { + let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.Base; 1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null; 2:Array|null; 3:Record|null}>("VariantH", [i1, i2, i3, i4]) + let responseObject = {r1 : response[0], r2 : response[1], r3 : response[2], r4 : response[3]}; + return responseObject; + } +} \ No newline at end of file diff --git a/example/nullable/client/src/service-vo.ts b/example/nullable/client/src/service-vo.ts new file mode 100644 index 0000000..85939ed --- /dev/null +++ b/example/nullable/client/src/service-vo.ts @@ -0,0 +1,54 @@ +/* eslint:disable */ +// hello commonjs - we need some imports - sorted in alphabetical order, by go package +import * as github_com_foomo_gotsrpc_v2_example_nullable_service from './service-vo'; // ./client/src/service-vo.ts to ./client/src/service-vo.ts +// github.com/foomo/gotsrpc/v2/example/nullable/service.ACustomType +export enum ACustomType { + One = "one", + Two = "two", +} +// github.com/foomo/gotsrpc/v2/example/nullable/service.ACustomTypes +export type ACustomTypes = Array +// github.com/foomo/gotsrpc/v2/example/nullable/service.ACustomTypesMap +export type ACustomTypesMap = Record +// github.com/foomo/gotsrpc/v2/example/nullable/service.BCustomType +export type BCustomType = string +// github.com/foomo/gotsrpc/v2/example/nullable/service.BCustomTypes +export type BCustomTypes = Array +// github.com/foomo/gotsrpc/v2/example/nullable/service.BCustomTypesMap +export type BCustomTypesMap = Record +// github.com/foomo/gotsrpc/v2/example/nullable/service.Base +export interface Base { + a1:github_com_foomo_gotsrpc_v2_example_nullable_service.Nested; + a2?:github_com_foomo_gotsrpc_v2_example_nullable_service.Nested; + a3:github_com_foomo_gotsrpc_v2_example_nullable_service.Nested|null; + b1:string; + b2?:string; + b3:string|null; + c1:any; + c2?:any; + c3:any; + d1:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomType; + d2?:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomType; + d3:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomType|null; + e1:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypes|null; + e2?:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypes; + e3:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypes|null; + f1:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypesMap|null; + f2?:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypesMap; + f3:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypesMap|null; + Two:Array|null; + Two1:Array|null>|null; + Two2:Array|null>|null; + Three:Array|null; + Three1:Array|null; + Four:Record|null; + Five:Record|null; + Six:{ + Foo:string; + }|null; +} +// github.com/foomo/gotsrpc/v2/example/nullable/service.Nested +export interface Nested { + Foo:string; +} +// end of common js \ No newline at end of file diff --git a/example/nullable/client/src/transport.ts b/example/nullable/client/src/transport.ts new file mode 100644 index 0000000..79683ce --- /dev/null +++ b/example/nullable/client/src/transport.ts @@ -0,0 +1,18 @@ +const transport = endpoint => async (method: string, args: any = []) => { + return new Promise(async (resolve, reject) => { + fetch( + `${endpoint}/${encodeURIComponent(method)}`, + { + method: 'POST', + body: JSON.stringify(args), + } + ) + .then((response) => { + return response.json() as Promise; + }) + .then((val) => resolve(val)) + .catch((err) => reject(err)) + }) +}; + +export default transport diff --git a/example/nullable/client/tsconfig.json b/example/nullable/client/tsconfig.json new file mode 100644 index 0000000..7729245 --- /dev/null +++ b/example/nullable/client/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + } +} \ No newline at end of file diff --git a/example/nullable/go.mod b/example/nullable/go.mod new file mode 100644 index 0000000..0248631 --- /dev/null +++ b/example/nullable/go.mod @@ -0,0 +1,13 @@ +module github.com/foomo/gotsrpc/v2/example/basic + +go 1.16 + +require ( + github.com/davecgh/go-spew v1.1.1 + github.com/foomo/gotsrpc/v2 v2.0.10 + github.com/pkg/errors v0.9.1 + github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774 + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +) + +replace github.com/foomo/gotsrpc/v2 => ../../ diff --git a/example/nullable/go.sum b/example/nullable/go.sum new file mode 100644 index 0000000..ac4944b --- /dev/null +++ b/example/nullable/go.sum @@ -0,0 +1,487 @@ +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/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/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/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/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/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +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/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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +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/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +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/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.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.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/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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +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/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/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +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/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +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/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +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 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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/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.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +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/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.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E= +github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= +github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= +github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= +github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774 h1:SUHFQHAaySqF0YHCmmm0EIFooFZpDPpi5KTom7YJ07c= +github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774/go.mod h1:8uNqM1i7pr0jO7gdvbNCgsSa8Ki2vMh7JCQxO9BlF90= +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.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +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= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-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/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.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +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-20181114220301-adae6a3d119a/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-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-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-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +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-20210514164344-f6687ab2804c/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-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-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-20181116152217-5ac8a444bdc5/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-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-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-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-20200106162015-b016eb3dc98e/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-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-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +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-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-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-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.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +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/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/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-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/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/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/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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +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/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/example/nullable/gotsrpc.yml b/example/nullable/gotsrpc.yml new file mode 100644 index 0000000..978c974 --- /dev/null +++ b/example/nullable/gotsrpc.yml @@ -0,0 +1,18 @@ +module: + name: github.com/foomo/gotsrpc/v2/example/nullable + path: ./ + +targets: + basic: + services: + /service: Service + package: github.com/foomo/gotsrpc/v2/example/nullable/service + out: ./client/src/service-client.ts + gorpc: + - Service + tsrpc: + - Service + +mappings: + github.com/foomo/gotsrpc/v2/example/nullable/service: + out: ./client/src/service-vo.ts diff --git a/example/nullable/main.go b/example/nullable/main.go new file mode 100644 index 0000000..6569fe6 --- /dev/null +++ b/example/nullable/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "net/http" + "os/exec" + "strings" + "time" + + "github.com/foomo/gotsrpc/v2/example/basic/service" +) + +func main() { + fs := http.FileServer(http.Dir("./client")) + ws := service.NewDefaultServiceGoTSRPCProxy(&service.Handler{}) + + mux := http.NewServeMux() + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + switch { + case strings.HasPrefix(r.URL.Path, "/service/"): + ws.ServeHTTP(w, r) + default: + fs.ServeHTTP(w, r) + } + }) + + go func() { + time.Sleep(time.Second) + _ = exec.Command("open", "http://127.0.0.1:3000").Run() + }() + + _ = http.ListenAndServe("localhost:3000", mux) +} diff --git a/example/nullable/service/gorpc_gen.go b/example/nullable/service/gorpc_gen.go new file mode 100644 index 0000000..26a2481 --- /dev/null +++ b/example/nullable/service/gorpc_gen.go @@ -0,0 +1,190 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + tls "crypto/tls" + gob "encoding/gob" + fmt "fmt" + reflect "reflect" + strings "strings" + time "time" + + gotsrpc "github.com/foomo/gotsrpc/v2" + gorpc "github.com/valyala/gorpc" +) + +type ( + ServiceGoRPCProxy struct { + server *gorpc.Server + service Service + callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun + } + + ServiceVariantARequest struct { + I1 Base + } + ServiceVariantAResponse struct { + R1 Base + } + + ServiceVariantBRequest struct { + I1 BCustomType + } + ServiceVariantBResponse struct { + R1 BCustomType + } + + ServiceVariantCRequest struct { + I1 BCustomTypes + } + ServiceVariantCResponse struct { + R1 BCustomTypes + } + + ServiceVariantDRequest struct { + I1 BCustomTypesMap + } + ServiceVariantDResponse struct { + R1 BCustomTypesMap + } + + ServiceVariantERequest struct { + I1 *Base + } + ServiceVariantEResponse struct { + R1 *Base + } + + ServiceVariantFRequest struct { + I1 []*Base + } + ServiceVariantFResponse struct { + R1 []*Base + } + + ServiceVariantGRequest struct { + I1 map[string]*Base + } + ServiceVariantGResponse struct { + R1 map[string]*Base + } + + ServiceVariantHRequest struct { + I1 Base + I2 *Base + I3 []*Base + I4 map[string]Base + } + ServiceVariantHResponse struct { + R1 Base + R2 *Base + R3 []*Base + R4 map[string]Base + } +) + +func init() { + gob.Register(ServiceVariantARequest{}) + gob.Register(ServiceVariantAResponse{}) + gob.Register(ServiceVariantBRequest{}) + gob.Register(ServiceVariantBResponse{}) + gob.Register(ServiceVariantCRequest{}) + gob.Register(ServiceVariantCResponse{}) + gob.Register(ServiceVariantDRequest{}) + gob.Register(ServiceVariantDResponse{}) + gob.Register(ServiceVariantERequest{}) + gob.Register(ServiceVariantEResponse{}) + gob.Register(ServiceVariantFRequest{}) + gob.Register(ServiceVariantFResponse{}) + gob.Register(ServiceVariantGRequest{}) + gob.Register(ServiceVariantGResponse{}) + gob.Register(ServiceVariantHRequest{}) + gob.Register(ServiceVariantHResponse{}) +} + +func NewServiceGoRPCProxy(addr string, service Service, tlsConfig *tls.Config) *ServiceGoRPCProxy { + proxy := &ServiceGoRPCProxy{ + service: service, + } + + if tlsConfig != nil { + proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig) + } else { + proxy.server = gorpc.NewTCPServer(addr, proxy.handler) + } + + return proxy +} + +func (p *ServiceGoRPCProxy) Start() error { + return p.server.Start() +} + +func (p *ServiceGoRPCProxy) Serve() error { + return p.server.Serve() +} + +func (p *ServiceGoRPCProxy) Stop() { + p.server.Stop() +} + +func (p *ServiceGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) { + p.callStatsHandler = handler +} + +func (p *ServiceGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) { + start := time.Now() + + reqType := reflect.TypeOf(request).String() + funcNameParts := strings.Split(reqType, ".") + funcName := funcNameParts[len(funcNameParts)-1] + + switch funcName { + case "ServiceVariantARequest": + req := request.(ServiceVariantARequest) + r1 := p.service.VariantA(nil, nil, req.I1) + response = ServiceVariantAResponse{R1: r1} + case "ServiceVariantBRequest": + req := request.(ServiceVariantBRequest) + r1 := p.service.VariantB(nil, nil, req.I1) + response = ServiceVariantBResponse{R1: r1} + case "ServiceVariantCRequest": + req := request.(ServiceVariantCRequest) + r1 := p.service.VariantC(nil, nil, req.I1) + response = ServiceVariantCResponse{R1: r1} + case "ServiceVariantDRequest": + req := request.(ServiceVariantDRequest) + r1 := p.service.VariantD(nil, nil, req.I1) + response = ServiceVariantDResponse{R1: r1} + case "ServiceVariantERequest": + req := request.(ServiceVariantERequest) + r1 := p.service.VariantE(nil, nil, req.I1) + response = ServiceVariantEResponse{R1: r1} + case "ServiceVariantFRequest": + req := request.(ServiceVariantFRequest) + r1 := p.service.VariantF(nil, nil, req.I1) + response = ServiceVariantFResponse{R1: r1} + case "ServiceVariantGRequest": + req := request.(ServiceVariantGRequest) + r1 := p.service.VariantG(nil, nil, req.I1) + response = ServiceVariantGResponse{R1: r1} + case "ServiceVariantHRequest": + req := request.(ServiceVariantHRequest) + r1, r2, r3, r4 := p.service.VariantH(nil, nil, req.I1, req.I2, req.I3, req.I4) + response = ServiceVariantHResponse{R1: r1, R2: r2, R3: r3, R4: r4} + default: + fmt.Println("Unkown request type", reflect.TypeOf(request).String()) + } + + if p.callStatsHandler != nil { + p.callStatsHandler(&gotsrpc.CallStats{ + Func: funcName, + Package: "github.com/foomo/gotsrpc/v2/example/nullable/service", + Service: "Service", + Execution: time.Since(start), + }) + } + + return +} diff --git a/example/nullable/service/gorpcclient_gen.go b/example/nullable/service/gorpcclient_gen.go new file mode 100644 index 0000000..f551aa6 --- /dev/null +++ b/example/nullable/service/gorpcclient_gen.go @@ -0,0 +1,119 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + tls "crypto/tls" + + gorpc "github.com/valyala/gorpc" +) + +type ServiceGoRPCClient struct { + Client *gorpc.Client +} + +func NewServiceGoRPCClient(addr string, tlsConfig *tls.Config) *ServiceGoRPCClient { + client := &ServiceGoRPCClient{} + if tlsConfig == nil { + client.Client = gorpc.NewTCPClient(addr) + } else { + client.Client = gorpc.NewTLSClient(addr, tlsConfig) + } + return client +} + +func (tsc *ServiceGoRPCClient) Start() { + tsc.Client.Start() +} + +func (tsc *ServiceGoRPCClient) Stop() { + tsc.Client.Stop() +} + +func (tsc *ServiceGoRPCClient) VariantA(i1 Base) (r1 Base, clientErr error) { + req := ServiceVariantARequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantAResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantB(i1 BCustomType) (r1 BCustomType, clientErr error) { + req := ServiceVariantBRequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantBResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantC(i1 BCustomTypes) (r1 BCustomTypes, clientErr error) { + req := ServiceVariantCRequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantCResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantD(i1 BCustomTypesMap) (r1 BCustomTypesMap, clientErr error) { + req := ServiceVariantDRequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantDResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantE(i1 *Base) (r1 *Base, clientErr error) { + req := ServiceVariantERequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantEResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantF(i1 []*Base) (r1 []*Base, clientErr error) { + req := ServiceVariantFRequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantFResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantG(i1 map[string]*Base) (r1 map[string]*Base, clientErr error) { + req := ServiceVariantGRequest{I1: i1} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantGResponse) + return response.R1, nil +} + +func (tsc *ServiceGoRPCClient) VariantH(i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base, clientErr error) { + req := ServiceVariantHRequest{I1: i1, I2: i2, I3: i3, I4: i4} + rpcCallRes, rpcCallErr := tsc.Client.Call(req) + if rpcCallErr != nil { + clientErr = rpcCallErr + return + } + response := rpcCallRes.(ServiceVariantHResponse) + return response.R1, response.R2, response.R3, response.R4, nil +} diff --git a/example/nullable/service/gotsrpc_gen.go b/example/nullable/service/gotsrpc_gen.go new file mode 100644 index 0000000..c212f5c --- /dev/null +++ b/example/nullable/service/gotsrpc_gen.go @@ -0,0 +1,230 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + io "io" + ioutil "io/ioutil" + http "net/http" + time "time" + + gotsrpc "github.com/foomo/gotsrpc/v2" +) + +const ( + ServiceGoTSRPCProxyVariantA = "VariantA" + ServiceGoTSRPCProxyVariantB = "VariantB" + ServiceGoTSRPCProxyVariantC = "VariantC" + ServiceGoTSRPCProxyVariantD = "VariantD" + ServiceGoTSRPCProxyVariantE = "VariantE" + ServiceGoTSRPCProxyVariantF = "VariantF" + ServiceGoTSRPCProxyVariantG = "VariantG" + ServiceGoTSRPCProxyVariantH = "VariantH" +) + +type ServiceGoTSRPCProxy struct { + EndPoint string + service Service +} + +func NewDefaultServiceGoTSRPCProxy(service Service) *ServiceGoTSRPCProxy { + return &ServiceGoTSRPCProxy{ + EndPoint: "/service", + service: service, + } +} + +func NewServiceGoTSRPCProxy(service Service, endpoint string) *ServiceGoTSRPCProxy { + return &ServiceGoTSRPCProxy{ + EndPoint: endpoint, + service: service, + } +} + +// ServeHTTP exposes your service +func (p *ServiceGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + if r.Method == http.MethodOptions { + return + } + gotsrpc.ErrorMethodNotAllowed(w) + return + } + defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body + + funcName := gotsrpc.GetCalledFunc(r, p.EndPoint) + callStats := gotsrpc.GetStatsForRequest(r) + if callStats != nil { + callStats.Func = funcName + callStats.Package = "github.com/foomo/gotsrpc/v2/example/nullable/service" + callStats.Service = "Service" + } + switch funcName { + case ServiceGoTSRPCProxyVariantA: + var ( + arg_i1 Base + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantAR1 := p.service.VariantA(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantAR1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantB: + var ( + arg_i1 BCustomType + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantBR1 := p.service.VariantB(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantBR1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantC: + var ( + arg_i1 BCustomTypes + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantCR1 := p.service.VariantC(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantCR1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantD: + var ( + arg_i1 BCustomTypesMap + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantDR1 := p.service.VariantD(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantDR1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantE: + var ( + arg_i1 *Base + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantER1 := p.service.VariantE(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantER1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantF: + var ( + arg_i1 []*Base + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantFR1 := p.service.VariantF(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantFR1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantG: + var ( + arg_i1 map[string]*Base + ) + args := []interface{}{&arg_i1} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantGR1 := p.service.VariantG(&rw, r, arg_i1) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantGR1}, callStats, r, w) + } + return + case ServiceGoTSRPCProxyVariantH: + var ( + arg_i1 Base + arg_i2 *Base + arg_i3 []*Base + arg_i4 map[string]Base + ) + args := []interface{}{&arg_i1, &arg_i2, &arg_i3, &arg_i4} + err := gotsrpc.LoadArgs(&args, callStats, r) + if err != nil { + gotsrpc.ErrorCouldNotLoadArgs(w) + return + } + executionStart := time.Now() + rw := gotsrpc.ResponseWriter{ResponseWriter: w} + variantHR1, variantHR2, variantHR3, variantHR4 := p.service.VariantH(&rw, r, arg_i1, arg_i2, arg_i3, arg_i4) + if callStats != nil { + callStats.Execution = time.Now().Sub(executionStart) + } + if rw.Status() == http.StatusOK { + gotsrpc.Reply([]interface{}{variantHR1, variantHR2, variantHR3, variantHR4}, callStats, r, w) + } + return + default: + gotsrpc.ClearStats(r) + http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound) + } +} diff --git a/example/nullable/service/gotsrpcclient_gen.go b/example/nullable/service/gotsrpcclient_gen.go new file mode 100644 index 0000000..35e2ca9 --- /dev/null +++ b/example/nullable/service/gotsrpcclient_gen.go @@ -0,0 +1,123 @@ +// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. + +package service + +import ( + go_context "context" + go_net_http "net/http" + + gotsrpc "github.com/foomo/gotsrpc/v2" + pkg_errors "github.com/pkg/errors" +) + +type ServiceGoTSRPCClient interface { + VariantA(ctx go_context.Context, i1 Base) (r1 Base, clientErr error) + VariantB(ctx go_context.Context, i1 BCustomType) (r1 BCustomType, clientErr error) + VariantC(ctx go_context.Context, i1 BCustomTypes) (r1 BCustomTypes, clientErr error) + VariantD(ctx go_context.Context, i1 BCustomTypesMap) (r1 BCustomTypesMap, clientErr error) + VariantE(ctx go_context.Context, i1 *Base) (r1 *Base, clientErr error) + VariantF(ctx go_context.Context, i1 []*Base) (r1 []*Base, clientErr error) + VariantG(ctx go_context.Context, i1 map[string]*Base) (r1 map[string]*Base, clientErr error) + VariantH(ctx go_context.Context, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base, clientErr error) +} + +type HTTPServiceGoTSRPCClient struct { + URL string + EndPoint string + Client gotsrpc.Client +} + +func NewDefaultServiceGoTSRPCClient(url string) *HTTPServiceGoTSRPCClient { + return NewServiceGoTSRPCClient(url, "/service") +} + +func NewServiceGoTSRPCClient(url string, endpoint string) *HTTPServiceGoTSRPCClient { + return NewServiceGoTSRPCClientWithClient(url, endpoint, nil) +} + +func NewServiceGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPServiceGoTSRPCClient { + return &HTTPServiceGoTSRPCClient{ + URL: url, + EndPoint: endpoint, + Client: gotsrpc.NewClientWithHttpClient(client), + } +} +func (tsc *HTTPServiceGoTSRPCClient) VariantA(ctx go_context.Context, i1 Base) (r1 Base, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantA", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantA") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantB(ctx go_context.Context, i1 BCustomType) (r1 BCustomType, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantB", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantB") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantC(ctx go_context.Context, i1 BCustomTypes) (r1 BCustomTypes, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantC", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantC") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantD(ctx go_context.Context, i1 BCustomTypesMap) (r1 BCustomTypesMap, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantD", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantD") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantE(ctx go_context.Context, i1 *Base) (r1 *Base, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantE", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantE") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantF(ctx go_context.Context, i1 []*Base) (r1 []*Base, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantF", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantF") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantG(ctx go_context.Context, i1 map[string]*Base) (r1 map[string]*Base, clientErr error) { + args := []interface{}{i1} + reply := []interface{}{&r1} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantG", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantG") + } + return +} + +func (tsc *HTTPServiceGoTSRPCClient) VariantH(ctx go_context.Context, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base, clientErr error) { + args := []interface{}{i1, i2, i3, i4} + reply := []interface{}{&r1, &r2, &r3, &r4} + clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantH", args, reply) + if clientErr != nil { + clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantH") + } + return +} diff --git a/example/nullable/service/handler.go b/example/nullable/service/handler.go new file mode 100644 index 0000000..d3fb6c7 --- /dev/null +++ b/example/nullable/service/handler.go @@ -0,0 +1,40 @@ +package service + +import ( + "net/http" +) + +type Handler struct{} + +func (h *Handler) VariantA(w http.ResponseWriter, r *http.Request, i1 Base) (r1 Base) { + return i1 +} + +func (h *Handler) VariantB(w http.ResponseWriter, r *http.Request, i1 BCustomType) (r1 BCustomType) { + return i1 +} + +func (h *Handler) VariantC(w http.ResponseWriter, r *http.Request, i1 BCustomTypes) (r1 BCustomTypes) { + return i1 +} + +func (h *Handler) VariantD(w http.ResponseWriter, r *http.Request, i1 BCustomTypesMap) (r1 BCustomTypesMap) { + return i1 +} + +func (h *Handler) VariantE(w http.ResponseWriter, r *http.Request, i1 *Base) (r1 *Base) { + return i1 +} + +func (h *Handler) VariantF(w http.ResponseWriter, r *http.Request, i1 []*Base) (r1 []*Base) { + return i1 +} + +func (h *Handler) VariantG(w http.ResponseWriter, r *http.Request, i1 map[string]*Base) (r1 map[string]*Base) { + return i1 +} + +func (h *Handler) VariantH(w http.ResponseWriter, r *http.Request, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base) { + //TODO implement me + panic("implement me") +} diff --git a/example/nullable/service/service.go b/example/nullable/service/service.go new file mode 100644 index 0000000..afc1886 --- /dev/null +++ b/example/nullable/service/service.go @@ -0,0 +1,20 @@ +package service + +import ( + "net/http" +) + +type Service interface { + VariantA(w http.ResponseWriter, r *http.Request, i1 Base) (r1 Base) + VariantB(w http.ResponseWriter, r *http.Request, i1 BCustomType) (r1 BCustomType) + VariantC(w http.ResponseWriter, r *http.Request, i1 BCustomTypes) (r1 BCustomTypes) + VariantD(w http.ResponseWriter, r *http.Request, i1 BCustomTypesMap) (r1 BCustomTypesMap) + + VariantE(w http.ResponseWriter, r *http.Request, i1 *Base) (r1 *Base) + + VariantF(w http.ResponseWriter, r *http.Request, i1 []*Base) (r1 []*Base) + + VariantG(w http.ResponseWriter, r *http.Request, i1 map[string]*Base) (r1 map[string]*Base) + + VariantH(w http.ResponseWriter, r *http.Request, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base) +} diff --git a/example/nullable/service/vo.go b/example/nullable/service/vo.go new file mode 100644 index 0000000..6dbdb0b --- /dev/null +++ b/example/nullable/service/vo.go @@ -0,0 +1,56 @@ +package service + +type ( + ACustomType string + ACustomTypes []ACustomType + ACustomTypesMap map[ACustomType]ACustomType + BCustomType string + BCustomTypes []BCustomType + BCustomTypesMap map[BCustomType]BCustomType +) + +const ( + ACustomTypeOne ACustomType = "one" + ACustomTypeTwo ACustomType = "two" +) + +type Base struct { + A1 Nested `json:"a1"` + A2 *Nested `json:"a2,omitempty"` + A3 *Nested `json:"a3"` + + B1 string `json:"b1"` + B2 *string `json:"b2,omitempty"` + B3 *string `json:"b3"` + + C1 interface{} `json:"c1"` + C2 *interface{} `json:"c2,omitempty"` + C3 *interface{} `json:"c3"` + + D1 ACustomType `json:"d1"` + D2 *ACustomType `json:"d2,omitempty"` + D3 *ACustomType `json:"d3"` + + E1 ACustomTypes `json:"e1"` + E2 *ACustomTypes `json:"e2,omitempty"` + E3 *ACustomTypes `json:"e3"` + + F1 ACustomTypesMap `json:"f1"` + F2 *ACustomTypesMap `json:"f2,omitempty"` + F3 *ACustomTypesMap `json:"f3"` + + Two []Nested + Two1 [][]Nested + Two2 []map[string]Nested + Three []*Nested + Three1 []*string + Four map[string]Nested + Five map[string]*Nested + Six *struct { + Foo string + } +} + +type Nested struct { + Foo string +} diff --git a/example/tsconfig.json b/example/tsconfig.json new file mode 100644 index 0000000..b081b5e --- /dev/null +++ b/example/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "module": "ESNext", + "target": "ESNext", + "lib": ["es5", "es6", "dom"], + "strictNullChecks": true, + "noImplicitAny": false, + "strict": true, + } +} \ No newline at end of file