16535: Fix XML tags on ListBucket response, add XML headers.
authorTom Clegg <tom@tomclegg.ca>
Thu, 30 Jul 2020 20:23:13 +0000 (16:23 -0400)
committerTom Clegg <tom@tomclegg.ca>
Thu, 30 Jul 2020 20:23:13 +0000 (16:23 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

services/keep-web/s3.go

index bc43c524369c819bbf13a208591e8a5128515a7b..7a25e9277e755ae10d295663c03a31018d554f34 100644 (file)
@@ -71,6 +71,7 @@ func (h *handler) serveS3(w http.ResponseWriter, r *http.Request) bool {
                if _, ok := r.URL.Query()["versioning"]; ok {
                        // GetBucketVersioning
                        w.Header().Set("Content-Type", "application/xml")
+                       io.WriteString(w, xml.Header)
                        fmt.Fprintln(w, `<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"/>`)
                } else {
                        // ListObjects
@@ -306,8 +307,13 @@ func (h *handler) s3list(w http.ResponseWriter, r *http.Request, fs arvados.Cust
                        sort.Strings(resp.CommonPrefixes)
                }
        }
+       wrappedResp := struct {
+               XMLName string `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListBucketResult"`
+               s3.ListResp
+       }{"", resp}
        w.Header().Set("Content-Type", "application/xml")
-       if err := xml.NewEncoder(w).Encode(resp); err != nil {
+       io.WriteString(w, xml.Header)
+       if err := xml.NewEncoder(w).Encode(wrappedResp); err != nil {
                ctxlog.FromContext(r.Context()).WithError(err).Error("error writing xml response")
        }
 }