| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package s3fs
- import (
- "io/fs"
- "time"
- )
- /*
- s3FileWrapper.go
- S3 FileInfo and DirEntry wrappers for the arozos filesystem abstraction layer.
- */
- // S3FileInfo implements os.FileInfo for S3 objects.
- type S3FileInfo struct {
- name string
- size int64
- isDir bool
- modTime time.Time
- }
- func NewS3FileInfo(name string, size int64, isDir bool, modTime time.Time) *S3FileInfo {
- return &S3FileInfo{
- name: name,
- size: size,
- isDir: isDir,
- modTime: modTime,
- }
- }
- func (fi *S3FileInfo) Name() string { return fi.name }
- func (fi *S3FileInfo) Size() int64 { return fi.size }
- func (fi *S3FileInfo) Mode() fs.FileMode {
- if fi.isDir {
- return fs.ModeDir | 0755
- }
- return 0664
- }
- func (fi *S3FileInfo) ModTime() time.Time { return fi.modTime }
- func (fi *S3FileInfo) IsDir() bool { return fi.isDir }
- func (fi *S3FileInfo) Sys() interface{} { return nil }
- // S3DirEntry implements fs.DirEntry for S3 objects.
- type S3DirEntry struct {
- name string
- size int64
- isDir bool
- modTime time.Time
- }
- func NewS3DirEntry(name string, size int64, isDir bool, modTime time.Time) *S3DirEntry {
- return &S3DirEntry{
- name: name,
- size: size,
- isDir: isDir,
- modTime: modTime,
- }
- }
- func (de *S3DirEntry) Name() string { return de.name }
- func (de *S3DirEntry) IsDir() bool { return de.isDir }
- func (de *S3DirEntry) Type() fs.FileMode {
- if de.isDir {
- return fs.ModeDir
- }
- return 0
- }
- func (de *S3DirEntry) Info() (fs.FileInfo, error) {
- return NewS3FileInfo(de.name, de.size, de.isDir, de.modTime), nil
- }
|