mirror of
https://github.com/simon-ding/polaris.git
synced 2026-02-24 04:30:47 +08:00
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package storage
|
|
|
|
import (
|
|
"io"
|
|
"io/fs"
|
|
"path/filepath"
|
|
"polaris/pkg/alist"
|
|
|
|
"github.com/gabriel-vasile/mimetype"
|
|
)
|
|
|
|
func NewAlist(cfg *alist.Config, dir string, videoFormats []string, subtitleFormats []string) (*Alist, error) {
|
|
cl := alist.New(cfg)
|
|
_, err := cl.Login()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Alist{baseDir: dir, cfg: cfg, client: cl, videoFormats: videoFormats, subtitleFormats: subtitleFormats}, nil
|
|
}
|
|
|
|
type Alist struct {
|
|
baseDir string
|
|
cfg *alist.Config
|
|
client *alist.Client
|
|
progresser func() float64
|
|
videoFormats []string
|
|
subtitleFormats []string
|
|
}
|
|
|
|
func (a *Alist) Copy(src, dest string, walkFn WalkFn) error {
|
|
b, err := NewBase(src, a.videoFormats, a.subtitleFormats)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
a.progresser = b.Progress
|
|
|
|
uploadFunc := func(destPath string, destInfo fs.FileInfo, srcReader io.Reader, mimeType *mimetype.MIME) error {
|
|
_, err := a.client.UploadStream(srcReader, destInfo.Size(), destPath)
|
|
return err
|
|
}
|
|
mkdirFunc := func(dir string) error {
|
|
return a.client.Mkdir(dir)
|
|
}
|
|
|
|
baseDest := filepath.Join(a.baseDir, dest)
|
|
return b.Upload(baseDest, false, false, false, uploadFunc, mkdirFunc, walkFn)
|
|
}
|
|
|
|
func (a *Alist) ReadDir(dir string) ([]fs.FileInfo, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (a *Alist) ReadFile(s string) ([]byte, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (a *Alist) WriteFile(s string, bytes []byte) error {
|
|
return nil
|
|
}
|
|
|
|
func (a *Alist) UploadProgress() float64 {
|
|
if a.progresser == nil {
|
|
return 0
|
|
}
|
|
return a.progresser()
|
|
}
|
|
|
|
func (a *Alist) RemoveAll(path string) error {
|
|
return nil
|
|
}
|