From b9919aa69bf3d0e703ba2016c49361399d6e05e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Wed, 13 Jul 2022 10:15:39 +0200 Subject: [PATCH] Return the range and number of total matches in a Content-Range header --- services/webdav/pkg/service/v0/search.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/webdav/pkg/service/v0/search.go b/services/webdav/pkg/service/v0/search.go index 084475ab93..64d7cc0a5f 100644 --- a/services/webdav/pkg/service/v0/search.go +++ b/services/webdav/pkg/service/v0/search.go @@ -3,6 +3,7 @@ package svc import ( "context" "encoding/xml" + "fmt" "io" "net/http" "path" @@ -71,6 +72,9 @@ func (g Webdav) sendSearchResponse(rsp *searchsvc.SearchResponse, w http.Respons } w.Header().Set(net.HeaderDav, "1, 3, extended-mkcol") w.Header().Set(net.HeaderContentType, "application/xml; charset=utf-8") + if len(rsp.Matches) > 0 { + w.Header().Set(net.HeaderContentRange, fmt.Sprintf("rows 0-%d/%d", len(rsp.Matches)-1, rsp.TotalMatches)) + } w.WriteHeader(http.StatusMultiStatus) if _, err := w.Write(responsesXML); err != nil { g.log.Err(err).Msg("error writing response")