Files
backrest/internal/api/server.go
garethgeorge dd9e14e450 Initial commit
2023-11-10 00:59:48 -08:00

55 lines
1.2 KiB
Go

package api
import (
"context"
"fmt"
"time"
v1 "github.com/garethgeorge/resticui/gen/go/v1"
"github.com/garethgeorge/resticui/internal/config"
"go.uber.org/zap"
"google.golang.org/protobuf/types/known/emptypb"
)
type server struct {
*v1.UnimplementedResticUIServer
}
var _ v1.ResticUIServer = &server{}
func (s *server) GetConfig(ctx context.Context, empty *emptypb.Empty) (*v1.Config, error) {
return config.Default.Get()
}
func (s *server) SetConfig(ctx context.Context, c *v1.Config) (*v1.Config, error) {
err := config.Default.Update(c)
if err != nil {
return nil, fmt.Errorf("failed to update config: %w", err)
}
return config.Default.Get()
}
func (s *server) GetEvents(_ *emptypb.Empty, stream v1.ResticUI_GetEventsServer) error {
for {
zap.S().Info("Sending event")
stream.Send(&v1.Event{
Timestamp: 0,
Event: &v1.Event_BackupStatusChange{
BackupStatusChange: &v1.BackupStatusEvent{
Status: v1.Status_IN_PROGRESS,
Percent: 0,
Plan: "myplan",
},
},
})
timer := time.NewTimer(time.Second * 1)
select {
case <-stream.Context().Done():
zap.S().Info("Get events hangup")
return nil
case <-timer.C:
}
}
}