From 46f2f7232d7250f960df496ca60da81326196038 Mon Sep 17 00:00:00 2001 From: Raphael Taylor-Davies Date: Fri, 27 Oct 2023 13:31:09 +0100 Subject: [PATCH] Support list start-after --- fakestorage/object.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fakestorage/object.go b/fakestorage/object.go index 95003d4158..cb9c8e1d3a 100644 --- a/fakestorage/object.go +++ b/fakestorage/object.go @@ -325,6 +325,7 @@ type ListOptions struct { StartOffset string EndOffset string IncludeTrailingDelimiter bool + StartExclusive bool } // ListObjects returns a sorted list of objects that match the given criteria, @@ -353,6 +354,9 @@ func (s *Server) ListObjectsWithOptions(bucketName string, options ListOptions) if !strings.HasPrefix(obj.Name, options.Prefix) { continue } + if options.StartExclusive && obj.Name == options.StartOffset { + continue + } objName := strings.Replace(obj.Name, options.Prefix, "", 1) delimPos := strings.Index(objName, options.Delimiter) if options.Delimiter != "" && delimPos > -1 { @@ -577,9 +581,11 @@ func (s *Server) xmlListObjects(r *http.Request) xmlResponse { bucketName := unescapeMuxVars(mux.Vars(r))["bucketName"] opts := ListOptions{ - Prefix: r.URL.Query().Get("prefix"), - Delimiter: r.URL.Query().Get("delimiter"), - Versions: r.URL.Query().Get("versions") == "true", + Prefix: r.URL.Query().Get("prefix"), + Delimiter: r.URL.Query().Get("delimiter"), + Versions: r.URL.Query().Get("versions") == "true", + StartOffset: r.URL.Query().Get("start-after"), + StartExclusive: true, } objs, prefixes, err := s.ListObjectsWithOptions(bucketName, opts)