alist/drivers/operate/operate.go

104 lines
2.6 KiB
Go
Raw Normal View History

2022-01-03 12:06:36 +00:00
package operate
import (
"github.com/Xhofe/alist/drivers/base"
"github.com/Xhofe/alist/model"
"github.com/Xhofe/alist/utils"
2022-01-14 10:19:58 +00:00
log "github.com/sirupsen/logrus"
2022-01-27 15:48:29 +00:00
"runtime/debug"
2022-01-03 12:06:36 +00:00
)
2022-01-28 03:04:56 +00:00
func Path(driver base.Driver, account *model.Account, path string) (*model.File, []model.File, error) {
return driver.Path(path, account)
}
func Files(driver base.Driver, account *model.Account, path string) ([]model.File, error) {
_, files, err := Path(driver, account, path)
if err != nil {
return nil, err
}
if files == nil {
return nil, base.ErrNotFolder
}
return files, nil
}
func File(driver base.Driver, account *model.Account, path string) (*model.File, error) {
2022-01-29 10:36:22 +00:00
return driver.File(path, account)
2022-01-28 03:04:56 +00:00
}
2022-01-03 12:06:36 +00:00
func MakeDir(driver base.Driver, account *model.Account, path string, clearCache bool) error {
2022-01-20 11:58:25 +00:00
log.Debugf("mkdir: %s", path)
2022-01-03 12:06:36 +00:00
err := driver.MakeDir(path, account)
if err == nil && clearCache {
_ = base.DeleteCache(utils.Dir(path), account)
}
2022-01-14 10:19:58 +00:00
if err != nil {
log.Errorf("mkdir error: %s", err.Error())
}
2022-01-03 12:06:36 +00:00
return err
}
func Move(driver base.Driver, account *model.Account, src, dst string, clearCache bool) error {
2022-01-20 11:58:25 +00:00
log.Debugf("move %s to %s", src, dst)
2022-01-03 12:06:36 +00:00
rename := false
if utils.Dir(src) == utils.Dir(dst) {
rename = true
}
var err error
if rename {
err = driver.Rename(src, dst, account)
} else {
err = driver.Move(src, dst, account)
}
if err == nil && clearCache {
_ = base.DeleteCache(utils.Dir(src), account)
if !rename {
_ = base.DeleteCache(utils.Dir(dst), account)
}
}
2022-01-14 10:19:58 +00:00
if err != nil {
log.Errorf("move error: %s", err.Error())
}
2022-01-03 12:06:36 +00:00
return err
}
func Copy(driver base.Driver, account *model.Account, src, dst string, clearCache bool) error {
2022-01-20 11:58:25 +00:00
log.Debugf("copy %s to %s", src, dst)
2022-01-03 12:06:36 +00:00
err := driver.Copy(src, dst, account)
if err == nil && clearCache {
_ = base.DeleteCache(utils.Dir(dst), account)
}
2022-01-14 10:19:58 +00:00
if err != nil {
log.Errorf("copy error: %s", err.Error())
}
2022-01-03 12:06:36 +00:00
return err
}
func Delete(driver base.Driver, account *model.Account, path string, clearCache bool) error {
2022-01-20 11:58:25 +00:00
log.Debugf("delete %s", path)
2022-01-03 12:06:36 +00:00
err := driver.Delete(path, account)
if err == nil && clearCache {
_ = base.DeleteCache(utils.Dir(path), account)
}
2022-01-14 10:19:58 +00:00
if err != nil {
log.Errorf("delete error: %s", err.Error())
}
2022-01-03 12:06:36 +00:00
return err
}
func Upload(driver base.Driver, account *model.Account, file *model.FileStream, clearCache bool) error {
2022-01-08 13:29:00 +00:00
defer func() {
_ = file.Close()
}()
2022-01-03 12:06:36 +00:00
err := driver.Upload(file, account)
if err == nil && clearCache {
_ = base.DeleteCache(file.ParentPath, account)
}
2022-01-14 10:19:58 +00:00
if err != nil {
log.Errorf("upload error: %s", err.Error())
}
2022-01-27 15:48:29 +00:00
debug.FreeOSMemory()
2022-01-03 12:06:36 +00:00
return err
}