37 lines
851 B
Go
37 lines
851 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
|
|
pb "git.sshear.dev/sammyshear/rpc-go-example/rpc/helloworld"
|
|
)
|
|
|
|
type HelloWorldServer struct{}
|
|
|
|
// Hello implements helloworld.HelloWorld.
|
|
func (h *HelloWorldServer) Hello(_ context.Context, req *pb.HelloReq) (*pb.HelloResp, error) {
|
|
return &pb.HelloResp{Text: fmt.Sprintf("Hello %s!", req.Subject)}, nil
|
|
}
|
|
|
|
func main() {
|
|
twirpHandler := pb.NewHelloWorldServer(&HelloWorldServer{})
|
|
|
|
mux := http.NewServeMux()
|
|
mux.Handle(twirpHandler.PathPrefix(), twirpHandler)
|
|
go http.ListenAndServe(":8080", mux)
|
|
|
|
client := pb.NewHelloWorldProtobufClient("http://localhost:8080", &http.Client{})
|
|
res, err := client.Hello(context.Background(), &pb.HelloReq{
|
|
Subject: "Sammy",
|
|
})
|
|
if err != nil {
|
|
log.Panicf("Error making request: %s", err)
|
|
}
|
|
fmt.Printf("%s\n", res.Text)
|
|
os.Exit(0)
|
|
}
|