aboutsummaryrefslogtreecommitdiff
path: root/server/rest.go
diff options
context:
space:
mode:
authorCarlos Sosa <gnusosa@gnusosa.net>2020-06-22 11:33:39 -0700
committerCarlos Sosa <gnusosa@gnusosa.net>2020-06-22 11:33:39 -0700
commit0b609156b184d00ab1a6e742b9b998be4457345e (patch)
tree9283646735cf0f7a984ff0fe4013f6abc7a8be4f /server/rest.go
First Commit
Diffstat (limited to 'server/rest.go')
-rw-r--r--server/rest.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/server/rest.go b/server/rest.go
new file mode 100644
index 0000000..3dd0f0c
--- /dev/null
+++ b/server/rest.go
@@ -0,0 +1,40 @@
+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
+}