github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/_examples/golang-imports/main.go (about) 1 //go:generate ../../bin/webrpc-gen -schema=./proto/api.ridl -target=go -pkg=main -server -client -out=./api.gen.go 2 package main 3 4 import ( 5 "context" 6 "log" 7 "net/http" 8 9 "github.com/go-chi/chi" 10 "github.com/go-chi/chi/middleware" 11 ) 12 13 func main() { 14 err := startServer() 15 if err != nil { 16 log.Fatal(err) 17 } 18 } 19 20 func startServer() error { 21 r := chi.NewRouter() 22 r.Use(middleware.RequestID) 23 r.Use(middleware.Logger) 24 r.Use(middleware.Recoverer) 25 26 r.Get("/", func(w http.ResponseWriter, r *http.Request) { 27 w.Write([]byte(".")) 28 }) 29 30 webrpcHandler := NewExampleAPIServer(&ExampleRPC{}) 31 r.Handle("/*", webrpcHandler) 32 33 return http.ListenAndServe(":4242", r) 34 } 35 36 type ExampleRPC struct { 37 } 38 39 func (s *ExampleRPC) Ping(ctx context.Context) error { 40 return nil 41 } 42 43 func (s *ExampleRPC) Status(ctx context.Context) (bool, error) { 44 return true, nil 45 } 46 47 func (s *ExampleRPC) GetUsers(ctx context.Context) ([]*User, *Location, error) { 48 loc := Location_TORONTO 49 return []*User{ 50 {Username: "pk", Age: 99}, 51 }, &loc, nil 52 }