diff --git a/remote/miniostorage/file.go b/remote/miniostorage/file.go index f5ab04d..a7f178f 100644 --- a/remote/miniostorage/file.go +++ b/remote/miniostorage/file.go @@ -13,6 +13,7 @@ import ( "syscall" "github.com/minio/minio-go/v7" + "github.com/tenrok/filestore/remote" ) var ( @@ -20,7 +21,7 @@ var ( ErrNotSupported = errors.New("doesn't support this operation") ) -var _ http.File = (*MinioFile)(nil) +var _ remote.File = (*MinioFile)(nil) type MinioFile struct { openFlags int diff --git a/remote/miniostorage/miniostorage.go b/remote/miniostorage/miniostorage.go index 62d7e3e..6fa6fb4 100644 --- a/remote/miniostorage/miniostorage.go +++ b/remote/miniostorage/miniostorage.go @@ -3,7 +3,6 @@ package miniostorage import ( "context" "errors" - "net/http" "net/url" "os" "strconv" @@ -70,17 +69,17 @@ func (s *MinioStorage) normSeparators(str string) string { } // Create -func (s *MinioStorage) Create(name string) (http.File, error) { +func (s *MinioStorage) Create(name string) (remote.File, error) { return s.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0) } // Open -func (s *MinioStorage) Open(name string) (http.File, error) { +func (s *MinioStorage) Open(name string) (remote.File, error) { return s.OpenFile(name, os.O_RDONLY, 0) } // OpenFile -func (s *MinioStorage) OpenFile(name string, flag int, fileMode os.FileMode) (http.File, error) { +func (s *MinioStorage) OpenFile(name string, flag int, fileMode os.FileMode) (remote.File, error) { if flag&os.O_APPEND != 0 { return nil, errors.New("appending files will lead to trouble") } diff --git a/remote/storage.go b/remote/storage.go index bcff9f5..5894676 100644 --- a/remote/storage.go +++ b/remote/storage.go @@ -3,7 +3,8 @@ package remote import ( "context" "fmt" - "net/http" + "io" + "io/fs" "os" "sync" ) @@ -13,11 +14,20 @@ var ( storages = make(map[string]Storage) ) +type File interface { + io.Closer + io.Reader + io.Seeker + io.Writer + Readdir(count int) ([]fs.FileInfo, error) + Stat() (fs.FileInfo, error) +} + type Storage interface { NewStorage(ctx context.Context, connString string) (Storage, error) - Create(name string) (http.File, error) - Open(name string) (http.File, error) - OpenFile(name string, flag int, fileMode os.FileMode) (http.File, error) + Create(name string) (File, error) + Open(name string) (File, error) + OpenFile(name string, flag int, fileMode os.FileMode) (File, error) Remove(name string) error RemoveAll(path string) error Rename(oldName, newName string) error