// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT. package service import ( io "io" http "net/http" time "time" gotsrpc "github.com/foomo/gotsrpc/v2" ) func init() { gotsrpc.MustRegisterUnionExt(UnionString{}) gotsrpc.MustRegisterUnionExt(UnionStruct{}) } const ( ServiceGoTSRPCProxyInlineStruct = "InlineStruct" ServiceGoTSRPCProxyInlineStructPtr = "InlineStructPtr" ServiceGoTSRPCProxyUnionString = "UnionString" ServiceGoTSRPCProxyUnionStruct = "UnionStruct" ) type ServiceGoTSRPCProxy struct { EndPoint string service Service } func NewDefaultServiceGoTSRPCProxy(service Service) *ServiceGoTSRPCProxy { return NewServiceGoTSRPCProxy(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.MethodOptions { return } else if r.Method != http.MethodPost { gotsrpc.ErrorMethodNotAllowed(w) return } defer io.Copy(io.Discard, r.Body) // Drain Request Body funcName := gotsrpc.GetCalledFunc(r, p.EndPoint) callStats, _ := gotsrpc.GetStatsForRequest(r) callStats.Func = funcName callStats.Package = "github.com/foomo/gotsrpc/v2/example/union/service" callStats.Service = "Service" switch funcName { case ServiceGoTSRPCProxyInlineStruct: var ( args []interface{} rets []interface{} ) executionStart := time.Now() rw := gotsrpc.ResponseWriter{ResponseWriter: w} inlineStructE := p.service.InlineStruct(&rw, r) callStats.Execution = time.Since(executionStart) if rw.Status() == http.StatusOK { rets = []interface{}{inlineStructE} if err := gotsrpc.Reply(rets, callStats, r, w); err != nil { gotsrpc.ErrorCouldNotReply(w) return } } gotsrpc.Monitor(w, r, args, rets, callStats) return case ServiceGoTSRPCProxyInlineStructPtr: var ( args []interface{} rets []interface{} ) executionStart := time.Now() rw := gotsrpc.ResponseWriter{ResponseWriter: w} inlineStructPtrE := p.service.InlineStructPtr(&rw, r) callStats.Execution = time.Since(executionStart) if rw.Status() == http.StatusOK { rets = []interface{}{inlineStructPtrE} if err := gotsrpc.Reply(rets, callStats, r, w); err != nil { gotsrpc.ErrorCouldNotReply(w) return } } gotsrpc.Monitor(w, r, args, rets, callStats) return case ServiceGoTSRPCProxyUnionString: var ( args []interface{} rets []interface{} ) executionStart := time.Now() rw := gotsrpc.ResponseWriter{ResponseWriter: w} unionStringE := p.service.UnionString(&rw, r) callStats.Execution = time.Since(executionStart) if rw.Status() == http.StatusOK { rets = []interface{}{unionStringE} if err := gotsrpc.Reply(rets, callStats, r, w); err != nil { gotsrpc.ErrorCouldNotReply(w) return } } gotsrpc.Monitor(w, r, args, rets, callStats) return case ServiceGoTSRPCProxyUnionStruct: var ( args []interface{} rets []interface{} ) executionStart := time.Now() rw := gotsrpc.ResponseWriter{ResponseWriter: w} unionStructE := p.service.UnionStruct(&rw, r) callStats.Execution = time.Since(executionStart) if rw.Status() == http.StatusOK { rets = []interface{}{unionStructE} if err := gotsrpc.Reply(rets, callStats, r, w); err != nil { gotsrpc.ErrorCouldNotReply(w) return } } gotsrpc.Monitor(w, r, args, rets, callStats) return default: gotsrpc.ClearStats(r) gotsrpc.ErrorFuncNotFound(w) } }