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  }