package server import ( "fmt" "git.rodere.systems/stream-service/api" "github.com/grpc-ecosystem/grpc-gateway/runtime" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "log" "net/http" ) // Start the REST HTTP API server func startRESTServer(address, grpcAddress, certFile string) error { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() mux := runtime.NewServeMux(runtime.WithIncomingHeaderMatcher(credMatcher)) creds, err := credentials.NewClientTLSFromFile(certFile, "") if err != nil { return fmt.Errorf("could not load TLS certificate: %s", err) } // Setup the client gRPC options opts := []grpc.DialOption{grpc.WithTransportCredentials(creds)} // Register ping err = api.RegisterPingHandlerFromEndpoint(ctx, mux, grpcAddress, opts) if err != nil { return fmt.Errorf("could not register service Ping: %s", err) } log.Printf("starting HTTP/1.1 REST server on %s", address) http.ListenAndServe(address, mux) return nil }