diff options
Diffstat (limited to 'object_iterator.go')
| -rw-r--r-- | object_iterator.go | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/object_iterator.go b/object_iterator.go index c6efa78..314b9bf 100644 --- a/object_iterator.go +++ b/object_iterator.go @@ -19,6 +19,7 @@ package schwift import ( + "context" "fmt" "regexp" "time" @@ -103,8 +104,8 @@ func (i *ObjectIterator) getBase() *iteratorBase { // // This method offers maximal flexibility, but most users will prefer the // simpler interfaces offered by Collect() and Foreach(). -func (i *ObjectIterator) NextPage(limit int) ([]*Object, error) { - names, err := i.getBase().nextPage(limit) +func (i *ObjectIterator) NextPage(ctx context.Context, limit int) ([]*Object, error) { + names, err := i.getBase().nextPage(ctx, limit) if err != nil { return nil, err } @@ -120,7 +121,7 @@ func (i *ObjectIterator) NextPage(limit int) ([]*Object, error) { var symlinkPathRx = regexp.MustCompile(`^/v1/([^/]+)/([^/]+)/(.+)$`) // NextPageDetailed is like NextPage, but includes basic metadata. -func (i *ObjectIterator) NextPageDetailed(limit int) ([]ObjectInfo, error) { +func (i *ObjectIterator) NextPageDetailed(ctx context.Context, limit int) ([]ObjectInfo, error) { b := i.getBase() var document []struct { @@ -134,7 +135,7 @@ func (i *ObjectIterator) NextPageDetailed(limit int) ([]ObjectInfo, error) { // or just this: Subdir string `json:"subdir"` } - err := b.nextPageDetailed(limit, &document) + err := b.nextPageDetailed(ctx, limit, &document) if err != nil { return nil, err } @@ -182,9 +183,9 @@ func (i *ObjectIterator) NextPageDetailed(limit int) ([]ObjectInfo, error) { // Foreach lists the object names matching this iterator and calls the // callback once for every object. Iteration is aborted when a GET request fails, // or when the callback returns a non-nil error. -func (i *ObjectIterator) Foreach(callback func(*Object) error) error { +func (i *ObjectIterator) Foreach(ctx context.Context, callback func(*Object) error) error { for { - objects, err := i.NextPage(-1) + objects, err := i.NextPage(ctx, -1) if err != nil { return err } @@ -201,9 +202,9 @@ func (i *ObjectIterator) Foreach(callback func(*Object) error) error { } // ForeachDetailed is like Foreach, but includes basic metadata. -func (i *ObjectIterator) ForeachDetailed(callback func(ObjectInfo) error) error { +func (i *ObjectIterator) ForeachDetailed(ctx context.Context, callback func(ObjectInfo) error) error { for { - infos, err := i.NextPageDetailed(-1) + infos, err := i.NextPageDetailed(ctx, -1) if err != nil { return err } @@ -222,10 +223,10 @@ func (i *ObjectIterator) ForeachDetailed(callback func(ObjectInfo) error) error // Collect lists all object names matching this iterator. For large sets of // objects that cannot be retrieved at once, Collect handles paging behind // the scenes. The return value is always the complete set of objects. -func (i *ObjectIterator) Collect() ([]*Object, error) { +func (i *ObjectIterator) Collect(ctx context.Context) ([]*Object, error) { var result []*Object for { - objects, err := i.NextPage(-1) + objects, err := i.NextPage(ctx, -1) if err != nil { return nil, err } @@ -237,10 +238,10 @@ func (i *ObjectIterator) Collect() ([]*Object, error) { } // CollectDetailed is like Collect, but includes basic metadata. -func (i *ObjectIterator) CollectDetailed() ([]ObjectInfo, error) { +func (i *ObjectIterator) CollectDetailed(ctx context.Context) ([]ObjectInfo, error) { var result []ObjectInfo for { - infos, err := i.NextPageDetailed(-1) + infos, err := i.NextPageDetailed(ctx, -1) if err != nil { return nil, err } |
