refactor(baidu.photo): add a file api of download
This commit is contained in:
parent
44b8c6abf7
commit
bf0ee3d315
@ -43,6 +43,14 @@ func (driver Baidu) Items() []base.Item {
|
|||||||
Label: "album_id",
|
Label: "album_id",
|
||||||
Type: base.TypeString,
|
Type: base.TypeString,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "internal_type",
|
||||||
|
Label: "download api",
|
||||||
|
Type: base.TypeSelect,
|
||||||
|
Required: true,
|
||||||
|
Values: "file,album",
|
||||||
|
Default: "album",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Name: "client_id",
|
Name: "client_id",
|
||||||
Label: "client id",
|
Label: "client id",
|
||||||
@ -156,6 +164,13 @@ func (driver Baidu) Files(path string, account *model.Account) ([]model.File, er
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (driver Baidu) Link(args base.Args, account *model.Account) (*base.Link, error) {
|
func (driver Baidu) Link(args base.Args, account *model.Account) (*base.Link, error) {
|
||||||
|
if account.InternalType == "file" {
|
||||||
|
return driver.LinkFile(args, account)
|
||||||
|
}
|
||||||
|
return driver.LinkAlbum(args, account)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (driver Baidu) LinkAlbum(args base.Args, account *model.Account) (*base.Link, error) {
|
||||||
file, err := driver.File(args.Path, account)
|
file, err := driver.File(args.Path, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -190,6 +205,43 @@ func (driver Baidu) Link(args base.Args, account *model.Account) (*base.Link, er
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (driver Baidu) LinkFile(args base.Args, account *model.Account) (*base.Link, error) {
|
||||||
|
file, err := driver.File(args.Path, account)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !IsAlbumFile(file) {
|
||||||
|
return nil, base.ErrNotSupport
|
||||||
|
}
|
||||||
|
|
||||||
|
album, err := driver.File(utils.Dir(utils.ParsePath(args.Path)), account)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
// 拷贝到根目录
|
||||||
|
cfile, err := driver.CopyAlbumFile(album.Id, account, file.Id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
// 获取文件下载地址
|
||||||
|
res, err := base.NoRedirectClient.R().
|
||||||
|
SetQueryParams(map[string]string{
|
||||||
|
"access_token": account.AccessToken,
|
||||||
|
"fsid": fmt.Sprint(cfile.Fsid),
|
||||||
|
}).
|
||||||
|
Head(FILE_API_URL + "/download")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &base.Link{
|
||||||
|
Headers: []base.Header{
|
||||||
|
{Name: "User-Agent", Value: base.UserAgent},
|
||||||
|
},
|
||||||
|
Url: res.Header().Get("location"),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (driver Baidu) Path(path string, account *model.Account) (*model.File, []model.File, error) {
|
func (driver Baidu) Path(path string, account *model.Account) (*model.File, []model.File, error) {
|
||||||
path = utils.ParsePath(path)
|
path = utils.ParsePath(path)
|
||||||
file, err := driver.File(path, account)
|
file, err := driver.File(path, account)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user