Initial commit

This commit is contained in:
garethgeorge
2023-11-10 00:41:37 -08:00
commit dd9e14e450
36 changed files with 4108 additions and 0 deletions

55
internal/api/server.go Normal file
View File

@@ -0,0 +1,55 @@
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:
}
}
}