in lib/backend/gcsbackend/client.go [175:215]
func (c *Client) List(prefix string, opts ...backend.ListOption) (*backend.ListResult, error) {
options := backend.DefaultListOptions()
for _, opt := range opts {
opt(options)
}
absPrefix := path.Join(c.pather.BasePath(), prefix)
pageIterator := c.gcs.GetObjectIterator(absPrefix)
maxKeys := c.config.ListMaxKeys
paginationToken := ""
if options.Paginated {
maxKeys = options.MaxKeys
paginationToken = options.ContinuationToken
}
pager := iterator.NewPager(pageIterator, maxKeys, paginationToken)
blobs, continuationToken, err := c.gcs.NextPage(pager)
if err != nil {
return nil, err
}
var names []string
for _, b := range blobs {
name, err := c.pather.NameFromBlobPath(b)
if err != nil {
log.With("blob", b).Errorf("Error converting blob path into name: %s", err)
continue
}
names = append(names, name)
}
result := &backend.ListResult{
Names: names,
ContinuationToken: continuationToken,
}
if !options.Paginated {
result.ContinuationToken = ""
}
return result, nil
}