@@ -2,10 +2,12 @@ package local
22
33import (
44 "context"
5- "errors "
5+ "fmt "
66 "github.com/alist-org/alist/v3/internal/driver"
77 "github.com/alist-org/alist/v3/internal/model"
88 "github.com/alist-org/alist/v3/pkg/utils"
9+ "os"
10+ "path/filepath"
911)
1012
1113type Driver struct {
@@ -18,32 +20,42 @@ func (d Driver) Config() driver.Config {
1820}
1921
2022func (d * Driver ) Init (ctx context.Context , account model.Account ) error {
23+ d .Account = account
2124 addition := d .Account .Addition
2225 err := utils .Json .UnmarshalFromString (addition , d .Addition )
2326 if err != nil {
24- return errors . New ("error" )
27+ return fmt . Errorf ("error while unmarshal addition: %w" , err )
2528 }
2629 return nil
2730}
2831
2932func (d * Driver ) Update (ctx context.Context , account model.Account ) error {
30- //TODO implement me
31- panic ("implement me" )
33+ return d .Init (ctx , account )
3234}
3335
3436func (d * Driver ) Drop (ctx context.Context ) error {
35- //TODO implement me
36- panic ("implement me" )
37+ return nil
3738}
3839
3940func (d * Driver ) GetAccount () model.Account {
40- //TODO implement me
41- panic ("implement me" )
41+ return d .Account
4242}
4343
44- func (d * Driver ) File (ctx context.Context , path string ) (* driver.FileInfo , error ) {
45- //TODO implement me
46- panic ("implement me" )
44+ func (d * Driver ) File (ctx context.Context , path string ) (driver.FileInfo , error ) {
45+ fullPath := filepath .Join (d .RootFolder , path )
46+ if ! utils .Exists (fullPath ) {
47+ return nil , driver .ErrorObjectNotFound
48+ }
49+ f , err := os .Stat (fullPath )
50+ if err != nil {
51+ return nil , err
52+ }
53+ return model.File {
54+ Name : f .Name (),
55+ Size : uint64 (f .Size ()),
56+ Modified : f .ModTime (),
57+ IsFolder : f .IsDir (),
58+ }, nil
4759}
4860
4961func (d * Driver ) List (ctx context.Context , path string ) ([]driver.FileInfo , error ) {
@@ -56,6 +68,11 @@ func (d *Driver) Link(ctx context.Context, args driver.LinkArgs) (*driver.Link,
5668 panic ("implement me" )
5769}
5870
71+ func (d Driver ) Other (ctx context.Context , data interface {}) (interface {}, error ) {
72+ //TODO implement me
73+ panic ("implement me" )
74+ }
75+
5976func (d * Driver ) MakeDir (ctx context.Context , path string ) error {
6077 //TODO implement me
6178 panic ("implement me" )
@@ -87,7 +104,3 @@ func (d *Driver) Put(ctx context.Context, stream driver.FileStream, parentPath s
87104}
88105
89106var _ driver.Driver = (* Driver )(nil )
90-
91- func init () {
92- driver .RegisterDriver (config .Name , New )
93- }
0 commit comments