feat(clientlog): space/share created/removed sse

Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
jkoberg
2024-04-15 15:48:20 +02:00
parent 6aa71d74d2
commit 370522e7cf
3 changed files with 33 additions and 5 deletions

View File

@@ -0,0 +1,5 @@
Enhancement: Sharing SSEs
Added server side events for item moved, share created/removed, space membership created/removed, share/space membership updated.
https://github.com/owncloud/ocis/pull/8854

View File

@@ -33,6 +33,10 @@ var _registeredEvents = []events.Unmarshaller{
events.FileLocked{},
events.FileUnlocked{},
events.FileTouched{},
events.SpaceShared{},
events.SpaceUnshared{},
events.ShareCreated{},
events.ShareRemoved{},
}
// Server is the entrypoint for the server command.

View File

@@ -8,6 +8,8 @@ import (
"reflect"
gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
group "github.com/cs3org/go-cs3apis/cs3/identity/group/v1beta1"
user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
"go.opentelemetry.io/otel/trace"
@@ -90,11 +92,6 @@ func (cl *ClientlogService) processEvent(event events.Event) {
return
}
gwc, err = cl.gatewaySelector.Next()
if err != nil {
cl.log.Error().Err(err).Interface("event", event).Msg("error getting gateway client")
return
}
var (
users []string
evType string
@@ -160,6 +157,19 @@ func (cl *ClientlogService) processEvent(event events.Event) {
p("file-unlocked", e.Ref)
case events.FileTouched:
p("file-touched", e.Ref)
case events.SpaceShared:
r, _ := storagespace.ParseReference(e.ID.GetOpaqueId())
p("space-member-added", &r)
case events.SpaceUnshared:
r, _ := storagespace.ParseReference(e.ID.GetOpaqueId())
p("space-member-removed", &r)
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
case events.ShareCreated:
p("share-created", &provider.Reference{ResourceId: e.ItemID})
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
case events.ShareRemoved:
p("share-removed", &provider.Reference{ResourceId: e.ItemID})
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
}
if err != nil {
@@ -204,3 +214,12 @@ func processFileEvent(ctx context.Context, ref *provider.Reference, gwc gateway.
users, err := utils.GetSpaceMembers(ctx, info.GetSpace().GetId().GetOpaqueId(), gwc, utils.ViewerRole)
return users, data, err
}
// adds userid to users slice or gets members of groupid and adds them to users slice
func addSharees(ctx context.Context, users []string, gwc gateway.GatewayAPIClient, uid *user.UserId, gid *group.GroupId) ([]string, error) {
if uid != nil {
return append(users, uid.GetOpaqueId()), nil
}
us, err := utils.GetGroupMembers(ctx, gid.GetOpaqueId(), gwc)
return append(users, us...), err
}