50 lines
1.4 KiB
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
|
|
}
|