berkutschi/client/client.go

50 lines
1.4 KiB
Go

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
}