diff options
| author | Marin Ivanov <[email protected]> | 2022-08-14 20:24:33 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2022-08-14 20:24:33 +0300 |
| commit | 46ff67ebdcdcc632958a8598ce694b3d3f9056e8 (patch) | |
| tree | 78efa93434a783f24b247d66577bcef1817827b6 /fileinfo.go | |
| parent | 5c50ab7055c5fb269b197c6d6d23a1108bd17ffe (diff) | |
Add FileInfo transformation from ObjectInfo
Diffstat (limited to 'fileinfo.go')
| -rw-r--r-- | fileinfo.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/fileinfo.go b/fileinfo.go new file mode 100644 index 0000000..5c51242 --- /dev/null +++ b/fileinfo.go @@ -0,0 +1,57 @@ +package s3 + +import ( + "io/fs" + "time" + + "github.com/minio/minio-go/v7" +) + +type FileInfo struct { + name string + size int64 + mtime time.Time + + objectInfo *minio.ObjectInfo +} + +// base name of the file +func (fi *FileInfo) Name() string { + return fi.name +} + +// length in bytes for regular files; system-dependent for others +func (fi *FileInfo) Size() int64 { + return fi.size +} + +// file mode bits +func (fi *FileInfo) Mode() fs.FileMode { + return 0o400 // user read/write permissions +} + +// modification time +func (fi *FileInfo) ModTime() time.Time { + return fi.mtime +} + +// abbreviation for Mode().IsDir() +func (fi *FileInfo) IsDir() bool { + return false // S3 has no directories +} + +// underlying data source (can return nil) +func (fi *FileInfo) Sys() interface{} { + return fi.objectInfo +} + +func transformObjectInfo(info minio.ObjectInfo) fs.FileInfo { + return &FileInfo{ + objectInfo: &info, + + name: info.Key, + size: info.Size, + mtime: info.LastModified, + } + +} |
