mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-03 19:00:05 -06:00
feat(clientlog): space/share created/removed sse
Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
5
changelog/unreleased/sharing-sse.md
Normal file
5
changelog/unreleased/sharing-sse.md
Normal 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
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user