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 /file.go | |
| parent | 04200620823cf9b11e0185234429af6180110adc (diff) | |
Fid ReadDir and improve tests
Diffstat (limited to 'file.go')
| -rw-r--r-- | file.go | 48 |
1 files changed, 5 insertions, 43 deletions
@@ -5,8 +5,6 @@ import ( "io" "os" "path" - - "github.com/minio/minio-go/v7" ) type File struct { @@ -20,7 +18,9 @@ type File struct { // implements io.Closer func (f *File) Close() error { - defer f.cancel() + if f.cancel != nil { + defer f.cancel() + } if f.r != nil { return f.r.Close() } @@ -70,50 +70,12 @@ func (f *File) Name() string { return path.Base(f.key) } -func (f *File) readdir(count int, onlyDir bool) ([]os.FileInfo, error) { - if !isDirPath(f.key) { - return nil, ErrNotDirectory - } - if count == 0 { - return []os.FileInfo{}, nil - } - ctx, cancel := f.fs.contextWithTimeout() - defer cancel() - objectsCh := f.fs.client.ListObjects(ctx, f.fs.bucket, minio.ListObjectsOptions{Prefix: f.key}) - n := 0 - lastDir := f.key - results := make([]os.FileInfo, 0) - for objectInfo := range objectsCh { - base := path.Base(objectInfo.Key) - dir := path.Dir(objectInfo.Key) + "/" - if lastDir != dir { - lastDir = dir - results = append(results, &FileInfo{ - name: base, - isDir: true, - }) - if onlyDir { - n += 1 - } - } - if !onlyDir { - results = append(results, transformObjectInfo(objectInfo)) - n += 1 - } - if n > count { - break - } - } - - return results, nil -} - func (f *File) Readdir(count int) ([]os.FileInfo, error) { - return f.readdir(count, false) + return f.fs.readdir(f.key, count, false) } func (f *File) Readdirnames(n int) ([]string, error) { - results, err := f.readdir(n, true) + results, err := f.fs.readdir(f.key, n, true) if err != nil { return nil, err } |
