diff options
| author | Marin Ivanov <[email protected]> | 2022-08-15 04:24:23 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2022-08-15 04:24:23 +0300 |
| commit | 43069c737dde59bd86e5b09c496d9df90f29d136 (patch) | |
| tree | 8d6e81c36c0f16c9a5da2f90af31df6f08dd6bab /fs.go | |
| parent | 04200620823cf9b11e0185234429af6180110adc (diff) | |
Fid ReadDir and improve tests
Diffstat (limited to 'fs.go')
| -rw-r--r-- | fs.go | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -154,7 +154,7 @@ func (fs *Fs) RemoveAll(path string) error { if !isDirPath(path) { return ErrNotDirectory } - objectsCh := fs.client.ListObjects(ctx, fs.bucket, minio.ListObjectsOptions{Prefix: path}) + objectsCh := fs.client.ListObjects(ctx, fs.bucket, minio.ListObjectsOptions{Prefix: path, Recursive: true}) errc := fs.client.RemoveObjects(ctx, fs.bucket, objectsCh, minio.RemoveObjectsOptions{}) for err := range errc { if err.Err != nil { @@ -242,6 +242,33 @@ func (fs *Fs) newObjectWriter(key string) (io.WriteCloser, context.CancelFunc, < return w, cancel, errc } +func (fs *Fs) readdir(directory string, count int, onlyDir bool) ([]os.FileInfo, error) { + if !isDirPath(directory) { + return nil, ErrNotDirectory + } + if count == 0 { + return []os.FileInfo{}, nil + } + ctx, cancel := fs.contextWithTimeout() + defer cancel() + objectsCh := fs.client.ListObjects(ctx, fs.bucket, minio.ListObjectsOptions{Prefix: directory}) + n := uint(0) + maxcount := uint(count) + results := make([]os.FileInfo, 0) + for objectInfo := range objectsCh { + if onlyDir && !isDirPath(objectInfo.Key) { + continue + } + results = append(results, transformObjectInfo(objectInfo)) + n += 1 + if n > maxcount { + break + } + } + + return results, nil +} + func transformError(err error) error { resp, ok := err.(minio.ErrorResponse) if !ok { |
