| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package httpservers
- import (
- "context"
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- log "github.com/sirupsen/logrus"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/encoding/protojson"
- "net/http"
- gw "github.com/OliveTin/OliveTin/gen/grpc"
- cors "github.com/OliveTin/OliveTin/internal/cors"
- config "github.com/OliveTin/OliveTin/internal/config"
- )
- var (
- cfg *config.Config
- )
- func startRestAPIServer(globalConfig *config.Config) error {
- cfg = globalConfig
- log.WithFields(log.Fields{
- "address": cfg.ListenAddressGrpcActions,
- }).Info("Starting REST API")
- ctx := context.Background()
- ctx, cancel := context.WithCancel(ctx)
- defer cancel()
- // The JSONPb.EmitDefaults is necssary, so "empty" fields are returned in JSON.
- mux := runtime.NewServeMux(
- runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.HTTPBodyMarshaler{
- Marshaler: &runtime.JSONPb{
- MarshalOptions: protojson.MarshalOptions{
- UseProtoNames: true,
- EmitUnpopulated: true,
- },
- },
- }),
- )
- opts := []grpc.DialOption{grpc.WithInsecure()}
- err := gw.RegisterOliveTinApiHandlerFromEndpoint(ctx, mux, cfg.ListenAddressGrpcActions, opts)
- if err != nil {
- log.Errorf("Could not register REST API Handler %v", err)
- return err
- }
- return http.ListenAndServe(cfg.ListenAddressRestActions, cors.AllowCors(mux))
- }
|