From 3a919ba7b92cefdfb70eb15ce585055e4593b460 Mon Sep 17 00:00:00 2001 From: jkoberg Date: Wed, 20 Mar 2024 11:56:20 +0100 Subject: [PATCH] add etag to sse event Signed-off-by: jkoberg --- services/clientlog/pkg/service/events.go | 1 + services/clientlog/pkg/service/service.go | 25 ++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/services/clientlog/pkg/service/events.go b/services/clientlog/pkg/service/events.go index fd10948bdd..1e0e4c6a3c 100644 --- a/services/clientlog/pkg/service/events.go +++ b/services/clientlog/pkg/service/events.go @@ -6,4 +6,5 @@ type FileEvent struct { ItemID string `json:"itemid"` SpaceID string `json:"spaceid"` InitiatorID string `json:"initiatorid"` + Etag string `json:"etag"` } diff --git a/services/clientlog/pkg/service/service.go b/services/clientlog/pkg/service/service.go index 73398cb6be..09933151bd 100644 --- a/services/clientlog/pkg/service/service.go +++ b/services/clientlog/pkg/service/service.go @@ -95,12 +95,17 @@ func (cl *ClientlogService) processEvent(event events.Event) { evType string data interface{} ) + + p := func(typ string, ref *provider.Reference) { + evType = typ + users, data, err = processFileEvent(ctx, ref, gwc, event.InitiatorID) + } + switch e := event.Event.(type) { default: err = errors.New("unhandled event") case events.UploadReady: - evType = "postprocessing-finished" - users, data, err = processFileEvent(ctx, e.FileRef, gwc, "") + p("postprocessing-finished", e.FileRef) case events.ItemTrashed: evType = "item-trashed" @@ -129,24 +134,19 @@ func (cl *ClientlogService) processEvent(event events.Event) { } } case events.ItemRestored: - evType = "item-restored" - users, data, err = processFileEvent(ctx, e.Ref, gwc, event.InitiatorID) + p("item-restored", e.Ref) case events.ContainerCreated: - evType = "folder-created" - users, data, err = processFileEvent(ctx, e.Ref, gwc, event.InitiatorID) + 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 } - evType = "item-renamed" - users, data, err = processFileEvent(ctx, e.Ref, gwc, event.InitiatorID) + p("item-renamed", e.Ref) case events.FileLocked: - evType = "file-locked" - users, data, err = processFileEvent(ctx, e.Ref, gwc, event.InitiatorID) + p("file-locked", e.Ref) case events.FileUnlocked: - evType = "file-unlocked" - users, data, err = processFileEvent(ctx, e.Ref, gwc, event.InitiatorID) + p("file-unlocked", e.Ref) } if err != nil { @@ -185,6 +185,7 @@ func processFileEvent(ctx context.Context, ref *provider.Reference, gwc gateway. ItemID: storagespace.FormatResourceID(*info.GetId()), SpaceID: storagespace.FormatStorageID(info.GetSpace().GetRoot().GetStorageId(), info.GetSpace().GetRoot().GetSpaceId()), InitiatorID: initiatorid, + Etag: info.GetEtag(), } users, err := utils.GetSpaceMembers(ctx, info.GetSpace().GetId().GetOpaqueId(), gwc, utils.ViewerRole)