80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
|
// Copyright (C) 2019 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
package storj
|
||
|
|
||
|
// ListDirection specifies listing direction
|
||
|
type ListDirection int8
|
||
|
|
||
|
const (
|
||
|
// Before lists backwards from cursor, without cursor [NOT SUPPORTED]
|
||
|
Before = ListDirection(-2)
|
||
|
// Backward lists backwards from cursor, including cursor [NOT SUPPORTED]
|
||
|
Backward = ListDirection(-1)
|
||
|
// Forward lists forwards from cursor, including cursor
|
||
|
Forward = ListDirection(1)
|
||
|
// After lists forwards from cursor, without cursor
|
||
|
After = ListDirection(2)
|
||
|
)
|
||
|
|
||
|
// ListOptions lists objects
|
||
|
type ListOptions struct {
|
||
|
Prefix Path
|
||
|
Cursor Path // Cursor is relative to Prefix, full path is Prefix + Cursor
|
||
|
Delimiter rune
|
||
|
Recursive bool
|
||
|
Direction ListDirection
|
||
|
Limit int
|
||
|
}
|
||
|
|
||
|
// ObjectList is a list of objects
|
||
|
type ObjectList struct {
|
||
|
Bucket string
|
||
|
Prefix Path
|
||
|
More bool
|
||
|
|
||
|
// Items paths are relative to Prefix
|
||
|
// To get the full path use list.Prefix + list.Items[0].Path
|
||
|
Items []Object
|
||
|
}
|
||
|
|
||
|
// NextPage returns options for listing the next page
|
||
|
func (opts ListOptions) NextPage(list ObjectList) ListOptions {
|
||
|
if !list.More || len(list.Items) == 0 {
|
||
|
return ListOptions{}
|
||
|
}
|
||
|
|
||
|
return ListOptions{
|
||
|
Prefix: opts.Prefix,
|
||
|
Cursor: list.Items[len(list.Items)-1].Path,
|
||
|
Direction: After,
|
||
|
Limit: opts.Limit,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// BucketListOptions lists objects
|
||
|
type BucketListOptions struct {
|
||
|
Cursor string
|
||
|
Direction ListDirection
|
||
|
Limit int
|
||
|
}
|
||
|
|
||
|
// BucketList is a list of buckets
|
||
|
type BucketList struct {
|
||
|
More bool
|
||
|
Items []Bucket
|
||
|
}
|
||
|
|
||
|
// NextPage returns options for listing the next page
|
||
|
func (opts BucketListOptions) NextPage(list BucketList) BucketListOptions {
|
||
|
if !list.More || len(list.Items) == 0 {
|
||
|
return BucketListOptions{}
|
||
|
}
|
||
|
|
||
|
return BucketListOptions{
|
||
|
Cursor: list.Items[len(list.Items)-1].Name,
|
||
|
Direction: After,
|
||
|
Limit: opts.Limit,
|
||
|
}
|
||
|
}
|