From 9670cd90eeb0ba367d6cd30e5635cd7f30d10b1c Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 11 Jul 2026 12:32:09 +0200 Subject: [PATCH] graph: expose @libre.graph.tags on driveItems --- services/graph/pkg/service/v0/driveitems.go | 4 ++++ .../graph/pkg/service/v0/driveitems_test.go | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/services/graph/pkg/service/v0/driveitems.go b/services/graph/pkg/service/v0/driveitems.go index d25d20f533..87f34f3e64 100644 --- a/services/graph/pkg/service/v0/driveitems.go +++ b/services/graph/pkg/service/v0/driveitems.go @@ -24,6 +24,7 @@ import ( revactx "github.com/opencloud-eu/reva/v2/pkg/ctx" "github.com/opencloud-eu/reva/v2/pkg/storagespace" + "github.com/opencloud-eu/reva/v2/pkg/tags" "github.com/opencloud-eu/reva/v2/pkg/utils" "github.com/opencloud-eu/opencloud/pkg/log" @@ -460,6 +461,9 @@ func cs3ResourceToDriveItem(logger *log.Logger, publicBaseURL *url.URL, res *sto m := res.GetArbitraryMetadata().GetMetadata() driveItem.LibreGraphMeFollowing = libregraph.PtrBool(m[_favoriteMetadataKey] == "1") + if t := m["tags"]; t != "" { + driveItem.LibreGraphTags = tags.New(t).AsSlice() + } } return driveItem, nil diff --git a/services/graph/pkg/service/v0/driveitems_test.go b/services/graph/pkg/service/v0/driveitems_test.go index 5174302a97..b32530fef7 100644 --- a/services/graph/pkg/service/v0/driveitems_test.go +++ b/services/graph/pkg/service/v0/driveitems_test.go @@ -294,6 +294,29 @@ var _ = Describe("Driveitems", func() { Expect(res.Value[0].Audio).To(BeNil()) Expect(res.Value[0].Location).To(BeNil()) Expect(res.Value[0].LibreGraphMeFollowing).To(BeNil()) + Expect(res.Value[0].LibreGraphTags).To(BeNil()) + }) + + It("returns tags if metadata is available", func() { + gatewayClient.On("ListContainer", mock.Anything, mock.Anything).Return(&provider.ListContainerResponse{ + Status: status.NewOK(ctx), + Infos: []*provider.ResourceInfo{ + { + Type: provider.ResourceType_RESOURCE_TYPE_FILE, + Id: &provider.ResourceId{StorageId: "storageid", SpaceId: "spaceid", OpaqueId: "opaqueid"}, + Etag: "etag", + Mtime: utils.TimeToTS(mtime), + ArbitraryMetadata: &provider.ArbitraryMetadata{ + Metadata: map[string]string{ + "tags": "marketing,important", + }, + }, + }, + }, + }, nil) + + res := assertItemsList(1) + Expect(res.Value[0].GetLibreGraphTags()).To(ConsistOf("marketing", "important")) }) It("returns the following state if metadata is available", func() {