package handler import ( "net/http" "time" "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/user" ) const maxObjectList = 1000 // Limit number of objects in a listObjectsResponse/listObjectsVersionsResponse. // ListBucketsHandler handles bucket listing requests. func (h *handler) ListBucketsHandler(w http.ResponseWriter, r *http.Request) { var ( own user.ID res *ListBucketsResponse reqInfo = middleware.GetReqInfo(r.Context()) ) list, err := h.obj.ListBuckets(r.Context()) if err != nil { h.logAndSendError(w, "something went wrong", reqInfo, err) return } if len(list) > 0 { own = list[0].Owner } res = &ListBucketsResponse{ Owner: Owner{ ID: own.String(), DisplayName: own.String(), }, } for _, item := range list { res.Buckets.Buckets = append(res.Buckets.Buckets, Bucket{ Name: item.Name, CreationDate: item.Created.UTC().Format(time.RFC3339), }) } if err = middleware.EncodeToResponse(w, res); err != nil { h.logAndSendError(w, "something went wrong", reqInfo, err) } }