package client import ( "context" "git.entr0py.de/garionion/gstreamer-graphix/api" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "time" ) type APIClient struct { client api.PipelineServiceClient log zerolog.Logger } func Init(address string) *APIClient { log := log.With().Str("gRPC", address).Logger() conn, err := grpc.Dial(address, grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { log.Error().Msgf("Failed to connect to gRPC server: %s", err) } return &APIClient{ client: api.NewPipelineServiceClient(conn), log: log, } } func (a *APIClient) CreatePipeline(pipeline *api.Pipeline) (string, error) { ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*5)) resp, err := a.client.CreatePipeline(ctx, pipeline) return resp.PipelineId.GetId(), err } func (a *APIClient) DeletePipeline(id string) error { ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*5)) _, err := a.client.DeletePipeline(ctx, &api.PipelineID{Id: id}) return err } func (a *APIClient) UpdatePipeline(id string, overlays []*api.Overlay) error { ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*5)) _, err := a.client.UpdatePipeline(ctx, &api.PipelineUpdates{ Id: &api.PipelineID{Id: id}, Overlays: overlays, }) return err }