Files
OpenList/alidrive/request.go

125 lines
3.6 KiB
Go
Raw Normal View History

2020-12-24 01:39:45 +08:00
package alidrive
import (
"fmt"
"github.com/Xhofe/alist/conf"
)
2021-02-04 10:02:34 +08:00
// get file
2021-03-16 21:25:16 +08:00
func GetFile(fileId string, drive *conf.Drive) (*File, error) {
2021-03-05 21:25:44 +08:00
url := conf.Conf.AliDrive.ApiUrl + "/file/get"
req := GetReq{
2021-03-16 21:25:16 +08:00
DriveId: drive.DefaultDriveId,
2020-12-24 01:39:45 +08:00
FileId: fileId,
ImageThumbnailProcess: conf.ImageThumbnailProcess,
VideoThumbnailProcess: conf.VideoThumbnailProcess,
}
2021-01-19 17:19:48 +08:00
var resp File
2021-03-16 21:25:16 +08:00
if err := BodyToJson(url, req, &resp, drive); err != nil {
2021-03-05 21:25:44 +08:00
return nil, err
2020-12-24 01:39:45 +08:00
}
2021-03-05 21:25:44 +08:00
return &resp, nil
2020-12-24 01:39:45 +08:00
}
// get download_url
2021-03-16 21:25:16 +08:00
func GetDownLoadUrl(fileId string, drive *conf.Drive) (*DownloadResp, error) {
2021-03-05 21:25:44 +08:00
url := conf.Conf.AliDrive.ApiUrl + "/file/get_download_url"
req := DownloadReq{
2021-03-16 21:25:16 +08:00
DriveId: drive.DefaultDriveId,
2021-03-05 21:25:44 +08:00
FileId: fileId,
ExpireSec: 14400,
}
2021-02-27 20:06:09 +08:00
var resp DownloadResp
2021-03-16 21:25:16 +08:00
if err := BodyToJson(url, req, &resp, drive); err != nil {
2021-03-05 21:25:44 +08:00
return nil, err
}
2021-03-05 21:25:44 +08:00
return &resp, nil
}
2021-02-04 10:02:34 +08:00
// search by keyword
2021-03-16 21:25:16 +08:00
func Search(key string, limit int, marker string, drive *conf.Drive) (*Files, error) {
2021-03-05 21:25:44 +08:00
url := conf.Conf.AliDrive.ApiUrl + "/file/search"
req := SearchReq{
2021-03-16 21:25:16 +08:00
DriveId: drive.DefaultDriveId,
2020-12-24 01:39:45 +08:00
ImageThumbnailProcess: conf.ImageThumbnailProcess,
ImageUrlProcess: conf.ImageUrlProcess,
Limit: limit,
Marker: marker,
OrderBy: conf.OrderSearch,
2021-03-05 21:25:44 +08:00
Query: fmt.Sprintf("name match '%s'", key),
2020-12-24 01:39:45 +08:00
VideoThumbnailProcess: conf.VideoThumbnailProcess,
}
2021-01-19 17:19:48 +08:00
var resp Files
2021-03-16 21:25:16 +08:00
if err := BodyToJson(url, req, &resp, drive); err != nil {
2021-03-05 21:25:44 +08:00
return nil, err
2020-12-24 01:39:45 +08:00
}
2021-03-05 21:25:44 +08:00
return &resp, nil
2020-12-24 01:39:45 +08:00
}
2021-02-04 10:02:34 +08:00
// get root folder
2021-03-16 21:25:16 +08:00
func GetRoot(limit int, marker string, orderBy string, orderDirection string, drive *conf.Drive) (*Files, error) {
return GetList(drive.RootFolder, limit, marker, orderBy, orderDirection, drive)
2020-12-24 01:39:45 +08:00
}
2021-02-04 10:02:34 +08:00
// get folder list by file_id
2021-03-16 21:25:16 +08:00
func GetList(parent string, limit int, marker string, orderBy string, orderDirection string, drive *conf.Drive) (*Files, error) {
2021-03-05 21:25:44 +08:00
url := conf.Conf.AliDrive.ApiUrl + "/file/list"
req := ListReq{
2021-03-16 21:25:16 +08:00
DriveId: drive.DefaultDriveId,
2020-12-24 01:39:45 +08:00
Fields: "*",
ImageThumbnailProcess: conf.ImageThumbnailProcess,
ImageUrlProcess: conf.ImageUrlProcess,
Limit: limit,
Marker: marker,
OrderBy: orderBy,
OrderDirection: orderDirection,
ParentFileId: parent,
VideoThumbnailProcess: conf.VideoThumbnailProcess,
}
2021-01-19 17:19:48 +08:00
var resp Files
2021-03-16 21:25:16 +08:00
if err := BodyToJson(url, req, &resp, drive); err != nil {
2021-03-05 21:25:44 +08:00
return nil, err
2020-12-24 01:39:45 +08:00
}
2021-03-05 21:25:44 +08:00
return &resp, nil
2020-12-24 01:39:45 +08:00
}
2021-02-04 10:02:34 +08:00
// get user info
2021-03-16 21:25:16 +08:00
func GetUserInfo(drive *conf.Drive) (*UserInfo, error) {
2021-03-05 21:25:44 +08:00
url := conf.Conf.AliDrive.ApiUrl + "/user/get"
2021-01-19 17:19:48 +08:00
var resp UserInfo
2021-03-16 21:25:16 +08:00
if err := BodyToJson(url, map[string]interface{}{}, &resp, drive); err != nil {
2021-03-05 21:25:44 +08:00
return nil, err
2021-01-19 17:19:48 +08:00
}
2021-03-05 21:25:44 +08:00
return &resp, nil
2021-01-19 17:19:48 +08:00
}
2021-02-04 10:02:34 +08:00
// get office preview url and token
2021-03-16 21:25:16 +08:00
func GetOfficePreviewUrl(fileId string, drive *conf.Drive) (*OfficePreviewUrlResp, error) {
2021-03-05 21:25:44 +08:00
url := conf.Conf.AliDrive.ApiUrl + "/file/get_office_preview_url"
req := OfficePreviewUrlReq{
2021-03-16 21:25:16 +08:00
AccessToken: drive.AccessToken,
DriveId: drive.DefaultDriveId,
2021-01-19 17:19:48 +08:00
FileId: fileId,
}
var resp OfficePreviewUrlResp
2021-03-16 21:25:16 +08:00
if err := BodyToJson(url, req, &resp, drive); err != nil {
2021-03-05 21:25:44 +08:00
return nil, err
2021-01-19 17:19:48 +08:00
}
2021-03-05 21:25:44 +08:00
return &resp, nil
2021-01-19 17:19:48 +08:00
}
2021-03-30 10:22:07 +08:00
// get video preview url
func GetVideoPreviewUrl(fileId string, drive *conf.Drive) (*VideoPreviewUrlResp, error) {
url := conf.Conf.AliDrive.ApiUrl + "/databox/get_video_play_info"
req := VideoPreviewUrlReq{
DriveId: drive.DefaultDriveId,
FileId: fileId,
ExpireSec: 14400,
2020-12-24 01:39:45 +08:00
}
2021-03-30 10:22:07 +08:00
var resp VideoPreviewUrlResp
if err := BodyToJson(url, req, &resp, drive); err != nil {
return nil, err
2020-12-24 01:39:45 +08:00
}
2021-03-30 10:22:07 +08:00
return &resp, nil
}