Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(s3): tidy up props which aren't needed #1

Merged
merged 1 commit into from
Jan 27, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions s3file.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package s3iofs

import (
"errors"
"io/fs"
"time"

"github.com/aws/aws-sdk-go-v2/service/s3"
)

var (
_ fs.FileInfo = (*s3File)(nil)
_ fs.DirEntry = (*s3File)(nil)
)

type s3File struct {
name string
bucket string
res *s3.GetObjectOutput
size int64
mode fs.FileMode
modTime time.Time // zero value for directories
}

func (s3f *s3File) Stat() (fs.FileInfo, error) {
return s3f, nil
}

func (s3f *s3File) Info() (fs.FileInfo, error) {
return s3f, nil
}

func (s3f *s3File) Read(p []byte) (int, error) {
if s3f.IsDir() {
return 0, &fs.PathError{Op: "read", Path: s3f.name, Err: errors.New("is a directory")}
}
return s3f.res.Body.Read(p)
}

func (s3f *s3File) Close() error {
if s3f.IsDir() {
return nil // NOOP for directories
}
return s3f.res.Body.Close()
}

// Name returns the name of the file (or subdirectory) described by the entry.
func (s3f *s3File) Name() string {
return s3f.name
}

// Size length in bytes for regular files; system-dependent for others
func (s3f *s3File) Size() int64 {
return s3f.size
}

// Mode file mode bits
func (s3f *s3File) Mode() fs.FileMode {
return s3f.mode
}

// file mode bits
func (s3f *s3File) Type() fs.FileMode {
return s3f.mode
}

// modification time
func (s3f *s3File) ModTime() time.Time {
return s3f.modTime
}

// abbreviation for Mode().IsDir()
func (s3f *s3File) IsDir() bool {
return s3f.Mode().IsDir()
}

// underlying data source (can return nil)
func (s3f *s3File) Sys() interface{} {
return nil
}
72 changes: 0 additions & 72 deletions s3iofs.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"io/fs"
"os"
"path"
"time"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
Expand Down Expand Up @@ -48,7 +47,6 @@ func (s3fs *S3FS) Open(name string) (fs.File, error) {
name: name,
bucket: s3fs.bucket,
mode: fs.ModeDir,
isDir: true,
}, nil
}

Expand Down Expand Up @@ -131,7 +129,6 @@ func (s3fs *S3FS) ReadDir(name string) ([]fs.DirEntry, error) {
name: dir,
bucket: s3fs.bucket,
mode: fs.ModeDir,
isDir: true,
})
}

Expand Down Expand Up @@ -160,7 +157,6 @@ func (s3fs *S3FS) stat(name string) (fs.FileInfo, error) {
name: name,
bucket: s3fs.bucket,
mode: fs.ModeDir,
isDir: true,
}, nil
}

Expand All @@ -181,7 +177,6 @@ func (s3fs *S3FS) stat(name string) (fs.FileInfo, error) {
name: name,
bucket: s3fs.bucket,
mode: fs.ModeDir,
isDir: true,
}, nil
}

Expand Down Expand Up @@ -210,70 +205,3 @@ func (s3fs *S3FS) openDirectory(name string) (fs.File, error) {

return nil, &fs.PathError{Op: "open", Path: name, Err: fs.ErrNotExist}
}

type s3File struct {
name string
bucket string
res *s3.GetObjectOutput
size int64
mode fs.FileMode
modTime time.Time // zero value for directories
isDir bool
}

func (s3f *s3File) Stat() (fs.FileInfo, error) {
return s3f, nil
}

func (s3f *s3File) Info() (fs.FileInfo, error) {
return s3f, nil
}

func (s3f *s3File) Read(p []byte) (int, error) {
if s3f.isDir {
return 0, &fs.PathError{Op: "read", Path: s3f.name, Err: errors.New("is a directory")}
}
return s3f.res.Body.Read(p)
}

func (s3f *s3File) Close() error {
if s3f.isDir {
return nil // NOOP for directories
}
return s3f.res.Body.Close()
}

// base name of the file
func (s3f *s3File) Name() string {
return s3f.name
}

// length in bytes for regular files; system-dependent for others
func (s3f *s3File) Size() int64 {
return s3f.size
}

// file mode bits
func (s3f *s3File) Mode() fs.FileMode {
return s3f.mode
}

// file mode bits
func (s3f *s3File) Type() fs.FileMode {
return s3f.mode
}

// modification time
func (s3f *s3File) ModTime() time.Time {
return s3f.modTime
}

// abbreviation for Mode().IsDir()
func (s3f *s3File) IsDir() bool {
return s3f.isDir
}

// underlying data source (can return nil)
func (s3f *s3File) Sys() interface{} {
return nil
}
1 change: 0 additions & 1 deletion s3iofs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ func TestS3FS_Stat(t *testing.T) {
name: ".",
bucket: "test",
mode: fs.ModeDir,
isDir: true,
},
},
}
Expand Down