fix(graph): Use the correct opaqueId when Statting OCM shares

File shares need to use the base64 encoded path as the opaqueID, while
for folder shares the base64 encode '/' should work.

Fixes #10495
This commit is contained in:
Ralf Haferkamp
2024-11-07 12:00:38 +01:00
parent 28a0c9a98f
commit 4792071d3d
2 changed files with 17 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
Bugfix: Fixed `sharedWithMe` response for OCM shares
OCM shares returned in the `sharedWithMe` response did not have the `mimeType` property
populated correctly.
https://github.com/owncloud/ocis/pull/10501
https://github.com/owncloud/ocis/issues/10495

View File

@@ -2,6 +2,7 @@ package svc
import (
"context"
"encoding/base64"
"encoding/json"
"io"
"net/http"
@@ -538,14 +539,21 @@ func cs3ReceivedOCMSharesToDriveItems(ctx context.Context,
group.Go(func() error {
var err error // redeclare
// for OCM shares the opaqueID is the '/' for shared directories and '/filename' for
// file shares
resOpaqueID := "/"
if receivedShares[0].GetResourceType() == storageprovider.ResourceType_RESOURCE_TYPE_FILE {
resOpaqueID += receivedShares[0].GetName()
}
shareStat, err := gatewayClient.Stat(ctx, &storageprovider.StatRequest{
Ref: &storageprovider.Reference{
ResourceId: &storageprovider.ResourceId{
// TODO maybe the reference is wrong
StorageId: utils.OCMStorageProviderID,
SpaceId: receivedShares[0].GetId().GetOpaqueId(),
OpaqueId: "", // in OCM resources the opaque id is the base64 encoded path
//OpaqueId: maybe ? receivedShares[0].GetId().GetOpaqueId(),
OpaqueId: base64.StdEncoding.EncodeToString([]byte(resOpaqueID)),
},
},
})