feat(clientlog): space/share created/removed sse
Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
@@ -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.FileLocked{},
|
||||||
events.FileUnlocked{},
|
events.FileUnlocked{},
|
||||||
events.FileTouched{},
|
events.FileTouched{},
|
||||||
|
events.SpaceShared{},
|
||||||
|
events.SpaceUnshared{},
|
||||||
|
events.ShareCreated{},
|
||||||
|
events.ShareRemoved{},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Server is the entrypoint for the server command.
|
// Server is the entrypoint for the server command.
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
|
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"
|
rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
|
||||||
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
|
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
|
||||||
"go.opentelemetry.io/otel/trace"
|
"go.opentelemetry.io/otel/trace"
|
||||||
@@ -90,11 +92,6 @@ func (cl *ClientlogService) processEvent(event events.Event) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
gwc, err = cl.gatewaySelector.Next()
|
|
||||||
if err != nil {
|
|
||||||
cl.log.Error().Err(err).Interface("event", event).Msg("error getting gateway client")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var (
|
var (
|
||||||
users []string
|
users []string
|
||||||
evType string
|
evType string
|
||||||
@@ -160,6 +157,19 @@ func (cl *ClientlogService) processEvent(event events.Event) {
|
|||||||
p("file-unlocked", e.Ref)
|
p("file-unlocked", e.Ref)
|
||||||
case events.FileTouched:
|
case events.FileTouched:
|
||||||
p("file-touched", e.Ref)
|
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 {
|
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)
|
users, err := utils.GetSpaceMembers(ctx, info.GetSpace().GetId().GetOpaqueId(), gwc, utils.ViewerRole)
|
||||||
return users, data, err
|
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