diff options
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 } |
