summaryrefslogtreecommitdiff
path: root/fileinfo.go
diff options
context:
space:
mode:
Diffstat (limited to 'fileinfo.go')
-rw-r--r--fileinfo.go57
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,
+ }
+
+}