|
@@ -1,4 +1,4 @@
|
|
|
-package stpfs
|
|
|
+package sftpfs
|
|
|
|
|
|
import (
|
|
|
"errors"
|
|
@@ -238,19 +238,43 @@ func (s SFTPFileSystemAbstraction) ReadFile(filename string) ([]byte, error) {
|
|
|
return ioutil.ReadAll(f)
|
|
|
}
|
|
|
func (s SFTPFileSystemAbstraction) ReadDir(filename string) ([]fs.DirEntry, error) {
|
|
|
- s.client.ReadDir(filename)
|
|
|
- return []fs.DirEntry{}, arozfs.ErrOperationNotSupported
|
|
|
+ result := []fs.DirEntry{}
|
|
|
+ infos, err := s.client.ReadDir(filename)
|
|
|
+ if err != nil {
|
|
|
+ return result, err
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, finfo := range infos {
|
|
|
+ de := newDirEntryFromFileInfo(finfo)
|
|
|
+ result = append(result, de)
|
|
|
+ }
|
|
|
+
|
|
|
+ return result, nil
|
|
|
}
|
|
|
func (s SFTPFileSystemAbstraction) WriteStream(filename string, stream io.Reader, mode os.FileMode) error {
|
|
|
- return arozfs.ErrNullOperation
|
|
|
+ filename = arozfs.GenericPathFilter(filename)
|
|
|
+ f, err := s.client.OpenFile(filename, os.O_CREATE|os.O_WRONLY)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = io.Copy(f, stream)
|
|
|
+ return err
|
|
|
}
|
|
|
func (s SFTPFileSystemAbstraction) ReadStream(filename string) (io.ReadCloser, error) {
|
|
|
-
|
|
|
- return nil, arozfs.ErrOperationNotSupported
|
|
|
+ filename = arozfs.GenericPathFilter(filename)
|
|
|
+ f, err := s.client.OpenFile(filename, os.O_RDONLY)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return f, nil
|
|
|
}
|
|
|
|
|
|
func (s SFTPFileSystemAbstraction) Walk(root string, walkFn filepath.WalkFunc) error {
|
|
|
- return arozfs.ErrOperationNotSupported
|
|
|
+ walker := s.client.Walk(root)
|
|
|
+ for walker.Step() {
|
|
|
+ walkFn(walker.Path(), walker.Stat(), walker.Err())
|
|
|
+ }
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
func (s SFTPFileSystemAbstraction) Heartbeat() error {
|