From c4f25c6a55f2560f08c07755f77ecfa6ed2743f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Thu, 12 May 2022 15:41:05 +0200 Subject: [PATCH] Return a proper resource type in the propstat response Fixes https://github.com/owncloud/web/issues/6944 --- extensions/webdav/pkg/service/v0/search.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/extensions/webdav/pkg/service/v0/search.go b/extensions/webdav/pkg/service/v0/search.go index 96288df10b..817f401a14 100644 --- a/extensions/webdav/pkg/service/v0/search.go +++ b/extensions/webdav/pkg/service/v0/search.go @@ -9,6 +9,7 @@ import ( "strconv" "time" + provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" revactx "github.com/cs3org/reva/v2/pkg/ctx" "github.com/owncloud/ocis/v2/extensions/webdav/pkg/net" "github.com/owncloud/ocis/v2/extensions/webdav/pkg/prop" @@ -128,9 +129,15 @@ func matchToPropResponse(ctx context.Context, match *searchmsg.Match) (*propfind propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("d:getcontenttype", match.Entity.MimeType)) size := strconv.FormatUint(match.Entity.Size, 10) - propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:size", size)) - propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("d:getcontentlength", size)) - + if match.Entity.Type == uint64(provider.ResourceType_RESOURCE_TYPE_CONTAINER) { + propstatOK.Prop = append(propstatOK.Prop, prop.Raw("d:resourcetype", "")) + propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:size", size)) + } else { + propstatOK.Prop = append(propstatOK.Prop, + prop.Escaped("d:resourcetype", ""), + prop.Escaped("d:getcontentlength", size), + ) + } // TODO find name for score property score := strconv.FormatFloat(float64(match.Score), 'f', -1, 64) propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:score", score))