frostfs-s3-gw/neofs/layer/neofs-container.go
2020-07-22 17:58:35 +03:00

49 lines
1.1 KiB
Go

package layer
import (
"context"
"time"
"go.uber.org/zap"
s3http "github.com/minio/minio/http"
"github.com/nspcc-dev/neofs-api-go/container"
"github.com/nspcc-dev/neofs-api-go/refs"
"github.com/nspcc-dev/neofs-api-go/service"
)
func (n *neofsObject) containerList(ctx context.Context) ([]refs.CID, error) {
req := new(container.ListRequest)
req.OwnerID = n.owner
req.SetTTL(service.SingleForwardingTTL)
req.SetVersion(APIVersion)
bearerToken := ctx.Value(s3http.BearerTokenContextKey).(*service.BearerTokenMsg)
req.SetBearer(bearerToken)
err := service.SignRequestData(n.key, req)
if err != nil {
n.log.Error("could not prepare request",
zap.Error(err))
return nil, err
}
conn, err := n.cli.GetConnection(ctx)
if err != nil {
n.log.Error("could not prepare client",
zap.Error(err))
return nil, err
}
// todo: think about timeout
ctx, cancel := context.WithTimeout(ctx, 30*time.Second)
defer cancel()
res, err := container.NewServiceClient(conn).List(ctx, req)
if err != nil {
n.log.Error("could not list buckets",
zap.Error(err))
return nil, err
}
return res.CID, nil
}