Skip to content

Commit

Permalink
Merge pull request #8860 from kobergj/ShareSSEs
Browse files Browse the repository at this point in the history
[full-ci] Sharing SSEs
  • Loading branch information
kobergj authored Apr 16, 2024
2 parents 0394890 + 368ca88 commit a0a94de
Show file tree
Hide file tree
Showing 24 changed files with 197 additions and 77 deletions.
5 changes: 5 additions & 0 deletions changelog/unreleased/sharing-sse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Enhancement: Sharing SSEs

Added server side events for item moved, share created/updated/removed, space membership created/removed.

https://github.com/owncloud/ocis/pull/8854
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ require (
github.com/cenkalti/backoff v2.2.1+incompatible
github.com/coreos/go-oidc/v3 v3.10.0
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781
github.com/cs3org/reva/v2 v2.19.2-0.20240405190914-ef59ba20ef0e
github.com/cs3org/reva/v2 v2.19.2-0.20240415154646-5c2c9831a2b7
github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25
github.com/disintegration/imaging v1.6.2
github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1022,8 +1022,8 @@ github.com/crewjam/saml v0.4.14 h1:g9FBNx62osKusnFzs3QTN5L9CVA/Egfgm+stJShzw/c=
github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME=
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY=
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/reva/v2 v2.19.2-0.20240405190914-ef59ba20ef0e h1:RAmS/42ZYRrkhvVLWgvJhwjna9zSAqa2DJ8xS7R3Rx0=
github.com/cs3org/reva/v2 v2.19.2-0.20240405190914-ef59ba20ef0e/go.mod h1:GRUrOp5HbFVwZTgR9bVrMZ/MvVy+Jhxw1PdMmhhKP9E=
github.com/cs3org/reva/v2 v2.19.2-0.20240415154646-5c2c9831a2b7 h1:7oBqhyPUyWSRNMKG5wLYDm9TSc0gfKj+LeVaUhjm+hQ=
github.com/cs3org/reva/v2 v2.19.2-0.20240415154646-5c2c9831a2b7/go.mod h1:GRUrOp5HbFVwZTgR9bVrMZ/MvVy+Jhxw1PdMmhhKP9E=
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
Expand Down
6 changes: 6 additions & 0 deletions services/clientlog/pkg/command/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ var _registeredEvents = []events.Unmarshaller{
events.FileLocked{},
events.FileUnlocked{},
events.FileTouched{},
events.SpaceShared{},
events.SpaceShareUpdated{},
events.SpaceUnshared{},
events.ShareCreated{},
events.ShareRemoved{},
events.ShareUpdated{},
}

// Server is the entrypoint for the server command.
Expand Down
44 changes: 35 additions & 9 deletions services/clientlog/pkg/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -148,17 +145,37 @@ func (cl *ClientlogService) processEvent(event events.Event) {
case events.ContainerCreated:
p("folder-created", e.Ref)
case events.ItemMoved:
// we are only interested in the rename case
if !utils.ResourceIDEqual(e.OldReference.GetResourceId(), e.Ref.GetResourceId()) || e.Ref.GetPath() == e.OldReference.GetPath() {
return
// we send a dedicated event in case the item was only renamed
if utils.ResourceIDEqual(e.OldReference.GetResourceId(), e.Ref.GetResourceId()) || e.Ref.GetPath() == e.OldReference.GetPath() {
p("item-renamed", e.Ref)
} else {
p("item-moved", e.Ref)
}
p("item-renamed", e.Ref)
case events.FileLocked:
p("file-locked", e.Ref)
case events.FileUnlocked:
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.SpaceShareUpdated:
r, _ := storagespace.ParseReference(e.ID.GetOpaqueId())
p("space-share-updated", &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.ShareUpdated:
p("share-updated", &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 {
Expand Down Expand Up @@ -203,3 +220,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
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions vendor/github.com/cs3org/reva/v2/pkg/events/spaces.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit a0a94de

Please sign in to comment.