mirror of https://github.com/Xhofe/alist
🎇 139yun family support
parent
602994e213
commit
ddf6a4955f
|
@ -9,6 +9,7 @@ import (
|
||||||
"github.com/Xhofe/alist/utils"
|
"github.com/Xhofe/alist/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
"path"
|
"path"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -18,11 +19,16 @@ func (driver Cloud139) Request(pathname string, method int, headers, query, form
|
||||||
req := base.RestyClient.R()
|
req := base.RestyClient.R()
|
||||||
randStr := randomStr(16)
|
randStr := randomStr(16)
|
||||||
ts := time.Now().Format("2006-01-02 15:04:05")
|
ts := time.Now().Format("2006-01-02 15:04:05")
|
||||||
|
log.Debugf("%+v", data)
|
||||||
body, err := utils.Json.Marshal(data)
|
body, err := utils.Json.Marshal(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
sign := calSign(string(body), ts, randStr)
|
sign := calSign(string(body), ts, randStr)
|
||||||
|
svcType := "1"
|
||||||
|
if isFamily(account) {
|
||||||
|
svcType = "2"
|
||||||
|
}
|
||||||
req.SetHeaders(map[string]string{
|
req.SetHeaders(map[string]string{
|
||||||
"Accept": "application/json, text/plain, */*",
|
"Accept": "application/json, text/plain, */*",
|
||||||
"CMS-DEVICE": "default",
|
"CMS-DEVICE": "default",
|
||||||
|
@ -40,7 +46,7 @@ func (driver Cloud139) Request(pathname string, method int, headers, query, form
|
||||||
"x-inner-ntwk": "2",
|
"x-inner-ntwk": "2",
|
||||||
"x-m4c-caller": "PC",
|
"x-m4c-caller": "PC",
|
||||||
"x-m4c-src": "10002",
|
"x-m4c-src": "10002",
|
||||||
"x-SvcType": "1",
|
"x-SvcType": svcType,
|
||||||
})
|
})
|
||||||
if headers != nil {
|
if headers != nil {
|
||||||
req.SetHeaders(headers)
|
req.SetHeaders(headers)
|
||||||
|
@ -75,6 +81,7 @@ func (driver Cloud139) Request(pathname string, method int, headers, query, form
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
log.Debugln(res.String())
|
||||||
if !e.Success {
|
if !e.Success {
|
||||||
return nil, errors.New(e.Message)
|
return nil, errors.New(e.Message)
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,12 @@ func (driver Cloud139) Items() []base.Item {
|
||||||
Type: base.TypeString,
|
Type: base.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "site_id",
|
||||||
|
Label: "cloud_id",
|
||||||
|
Type: base.TypeString,
|
||||||
|
Required: false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +111,11 @@ func (driver Cloud139) Files(path string, account *model.Account) ([]model.File,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if isFamily(account) {
|
||||||
|
files, err = driver.familyGetFiles(file.Id, account)
|
||||||
|
} else {
|
||||||
files, err = driver.GetFiles(file.Id, account)
|
files, err = driver.GetFiles(file.Id, account)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -169,12 +179,26 @@ func (driver Cloud139) MakeDir(path string, account *model.Account) error {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pathname := "/orchestration/personalCloud/catalog/v1.0/createCatalogExt"
|
pathname := "/orchestration/personalCloud/catalog/v1.0/createCatalogExt"
|
||||||
|
if isFamily(account) {
|
||||||
|
data = base.Json{
|
||||||
|
"cloudID": account.SiteId,
|
||||||
|
"commonAccountInfo": base.Json{
|
||||||
|
"account": account.Username,
|
||||||
|
"accountType": 1,
|
||||||
|
},
|
||||||
|
"docLibName": utils.Base(path),
|
||||||
|
}
|
||||||
|
pathname = "/orchestration/familyCloud/cloudCatalog/v1.0/createCloudDoc"
|
||||||
|
}
|
||||||
_, err = driver.Post(pathname,
|
_, err = driver.Post(pathname,
|
||||||
data, nil, account)
|
data, nil, account)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver Cloud139) Move(src string, dst string, account *model.Account) error {
|
func (driver Cloud139) Move(src string, dst string, account *model.Account) error {
|
||||||
|
if isFamily(account) {
|
||||||
|
return base.ErrNotSupport
|
||||||
|
}
|
||||||
srcFile, err := driver.File(src, account)
|
srcFile, err := driver.File(src, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -211,6 +235,9 @@ func (driver Cloud139) Move(src string, dst string, account *model.Account) erro
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver Cloud139) Rename(src string, dst string, account *model.Account) error {
|
func (driver Cloud139) Rename(src string, dst string, account *model.Account) error {
|
||||||
|
if isFamily(account) {
|
||||||
|
return base.ErrNotSupport
|
||||||
|
}
|
||||||
srcFile, err := driver.File(src, account)
|
srcFile, err := driver.File(src, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -243,6 +270,9 @@ func (driver Cloud139) Rename(src string, dst string, account *model.Account) er
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver Cloud139) Copy(src string, dst string, account *model.Account) error {
|
func (driver Cloud139) Copy(src string, dst string, account *model.Account) error {
|
||||||
|
if isFamily(account) {
|
||||||
|
return base.ErrNotSupport
|
||||||
|
}
|
||||||
srcFile, err := driver.File(src, account)
|
srcFile, err := driver.File(src, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -251,19 +281,21 @@ func (driver Cloud139) Copy(src string, dst string, account *model.Account) erro
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
argName := "contentInfoList"
|
var contentInfoList []string
|
||||||
|
var catalogInfoList []string
|
||||||
if srcFile.IsDir() {
|
if srcFile.IsDir() {
|
||||||
argName = "catalogInfoList"
|
catalogInfoList = append(catalogInfoList, srcFile.Id)
|
||||||
|
} else {
|
||||||
|
contentInfoList = append(contentInfoList, srcFile.Id)
|
||||||
}
|
}
|
||||||
data := base.Json{
|
data := base.Json{
|
||||||
"createBatchOprTaskReq": base.Json{
|
"createBatchOprTaskReq": base.Json{
|
||||||
"taskType": 3,
|
"taskType": 3,
|
||||||
"actionType": 309,
|
"actionType": 309,
|
||||||
"taskInfo": base.Json{
|
"taskInfo": base.Json{
|
||||||
"contentInfoList": []string{},
|
"contentInfoList": contentInfoList,
|
||||||
"catalogInfoList": []string{},
|
"catalogInfoList": catalogInfoList,
|
||||||
"newCatalogID": dstParentFile.Id,
|
"newCatalogID": dstParentFile.Id,
|
||||||
argName: []string{srcFile.Id},
|
|
||||||
},
|
},
|
||||||
"commonAccountInfo": base.Json{
|
"commonAccountInfo": base.Json{
|
||||||
"account": "18627147660",
|
"account": "18627147660",
|
||||||
|
@ -281,9 +313,12 @@ func (driver Cloud139) Delete(path string, account *model.Account) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
argName := "contentInfoList"
|
var contentInfoList []string
|
||||||
|
var catalogInfoList []string
|
||||||
if file.IsDir() {
|
if file.IsDir() {
|
||||||
argName = "catalogInfoList"
|
catalogInfoList = append(catalogInfoList, file.Id)
|
||||||
|
} else {
|
||||||
|
contentInfoList = append(contentInfoList, file.Id)
|
||||||
}
|
}
|
||||||
data := base.Json{
|
data := base.Json{
|
||||||
"createBatchOprTaskReq": base.Json{
|
"createBatchOprTaskReq": base.Json{
|
||||||
|
@ -291,7 +326,8 @@ func (driver Cloud139) Delete(path string, account *model.Account) error {
|
||||||
"actionType": 201,
|
"actionType": 201,
|
||||||
"taskInfo": base.Json{
|
"taskInfo": base.Json{
|
||||||
"newCatalogID": "",
|
"newCatalogID": "",
|
||||||
argName: []string{file.Id},
|
"contentInfoList": contentInfoList,
|
||||||
|
"catalogInfoList": contentInfoList,
|
||||||
},
|
},
|
||||||
"commonAccountInfo": base.Json{
|
"commonAccountInfo": base.Json{
|
||||||
"account": "18627147660",
|
"account": "18627147660",
|
||||||
|
@ -300,6 +336,19 @@ func (driver Cloud139) Delete(path string, account *model.Account) error {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pathname := "/orchestration/personalCloud/batchOprTask/v1.0/createBatchOprTask"
|
pathname := "/orchestration/personalCloud/batchOprTask/v1.0/createBatchOprTask"
|
||||||
|
if isFamily(account) {
|
||||||
|
data = base.Json{
|
||||||
|
"catalogList": catalogInfoList,
|
||||||
|
"contentList": contentInfoList,
|
||||||
|
"commonAccountInfo": base.Json{
|
||||||
|
"account": "18627147660",
|
||||||
|
"accountType": 1,
|
||||||
|
},
|
||||||
|
"sourceCatalogType": 1002,
|
||||||
|
"taskType": 2,
|
||||||
|
}
|
||||||
|
pathname = "/orchestration/familyCloud/batchOprTask/v1.0/createBatchOprTask"
|
||||||
|
}
|
||||||
_, err = driver.Post(pathname, data, nil, account)
|
_, err = driver.Post(pathname, data, nil, account)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -333,6 +382,23 @@ func (driver Cloud139) Upload(file *model.FileStream, account *model.Account) er
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pathname := "/orchestration/personalCloud/uploadAndDownload/v1.0/pcUploadFileRequest"
|
pathname := "/orchestration/personalCloud/uploadAndDownload/v1.0/pcUploadFileRequest"
|
||||||
|
if isFamily(account) {
|
||||||
|
data = newJson(base.Json{
|
||||||
|
"fileCount": 1,
|
||||||
|
"manualRename": 2,
|
||||||
|
"operation": 0,
|
||||||
|
"path": "",
|
||||||
|
"seqNo": "",
|
||||||
|
"totalSize": file.Size,
|
||||||
|
"uploadContentList": []base.Json{{
|
||||||
|
"contentName": file.Name,
|
||||||
|
"contentSize": file.Size,
|
||||||
|
// "digest": "5a3231986ce7a6b46e408612d385bafa"
|
||||||
|
}},
|
||||||
|
}, account)
|
||||||
|
pathname = "/orchestration/familyCloud/content/v1.0/getFileUploadURL"
|
||||||
|
return base.ErrNotSupport
|
||||||
|
}
|
||||||
var resp UploadResp
|
var resp UploadResp
|
||||||
_, err = driver.Post(pathname, data, &resp, account)
|
_, err = driver.Post(pathname, data, &resp, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
package _39
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Xhofe/alist/conf"
|
||||||
|
"github.com/Xhofe/alist/drivers/base"
|
||||||
|
"github.com/Xhofe/alist/model"
|
||||||
|
"github.com/Xhofe/alist/utils"
|
||||||
|
jsoniter "github.com/json-iterator/go"
|
||||||
|
"path"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (driver Cloud139) familyGetFiles(catalogID string, account *model.Account) ([]model.File, error) {
|
||||||
|
pageNum := 1
|
||||||
|
files := make([]model.File, 0)
|
||||||
|
for {
|
||||||
|
data := newJson(base.Json{
|
||||||
|
"catalogID": catalogID,
|
||||||
|
"contentSortType": 0,
|
||||||
|
"pageInfo": base.Json{
|
||||||
|
"pageNum": pageNum,
|
||||||
|
"pageSize": 100,
|
||||||
|
},
|
||||||
|
"sortDirection": 1,
|
||||||
|
}, account)
|
||||||
|
|
||||||
|
var resp QueryContentListResp
|
||||||
|
_, err := driver.Post("/orchestration/familyCloud/content/v1.0/queryContentList", data, &resp, account)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, catalog := range resp.Data.CloudCatalogList {
|
||||||
|
f := model.File{
|
||||||
|
Id: catalog.CatalogID,
|
||||||
|
Name: catalog.CatalogName,
|
||||||
|
Size: 0,
|
||||||
|
Type: conf.FOLDER,
|
||||||
|
Driver: driver.Config().Name,
|
||||||
|
UpdatedAt: getTime(catalog.LastUpdateTime),
|
||||||
|
}
|
||||||
|
files = append(files, f)
|
||||||
|
}
|
||||||
|
for _, content := range resp.Data.CloudContentList {
|
||||||
|
f := model.File{
|
||||||
|
Id: content.ContentID,
|
||||||
|
Name: content.ContentName,
|
||||||
|
Size: int64(content.ContentSize),
|
||||||
|
Type: utils.GetFileType(path.Ext(content.ContentName)),
|
||||||
|
Driver: driver.Config().Name,
|
||||||
|
UpdatedAt: getTime(content.LastUpdateTime),
|
||||||
|
Thumbnail: content.ThumbnailURL,
|
||||||
|
//Thumbnail: content.BigthumbnailURL,
|
||||||
|
}
|
||||||
|
files = append(files, f)
|
||||||
|
}
|
||||||
|
if 100*pageNum > resp.Data.TotalCount {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
pageNum++
|
||||||
|
}
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (driver Cloud139) familyLink(contentId string, account *model.Account) (string, error) {
|
||||||
|
data := newJson(base.Json{
|
||||||
|
"contentID": contentId,
|
||||||
|
//"path":"",
|
||||||
|
}, account)
|
||||||
|
res, err := driver.Post("/orchestration/familyCloud/content/v1.0/getFileDownLoadURL",
|
||||||
|
data, nil, account)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return jsoniter.Get(res, "data", "downloadURL").ToString(), nil
|
||||||
|
}
|
|
@ -9,85 +9,85 @@ type BaseResp struct {
|
||||||
type Catalog struct {
|
type Catalog struct {
|
||||||
CatalogID string `json:"catalogID"`
|
CatalogID string `json:"catalogID"`
|
||||||
CatalogName string `json:"catalogName"`
|
CatalogName string `json:"catalogName"`
|
||||||
CatalogType int `json:"catalogType"`
|
//CatalogType int `json:"catalogType"`
|
||||||
CreateTime string `json:"createTime"`
|
//CreateTime string `json:"createTime"`
|
||||||
UpdateTime string `json:"updateTime"`
|
UpdateTime string `json:"updateTime"`
|
||||||
IsShared bool `json:"isShared"`
|
//IsShared bool `json:"isShared"`
|
||||||
CatalogLevel int `json:"catalogLevel"`
|
//CatalogLevel int `json:"catalogLevel"`
|
||||||
ShareDoneeCount int `json:"shareDoneeCount"`
|
//ShareDoneeCount int `json:"shareDoneeCount"`
|
||||||
OpenType int `json:"openType"`
|
//OpenType int `json:"openType"`
|
||||||
ParentCatalogID string `json:"parentCatalogId"`
|
//ParentCatalogID string `json:"parentCatalogId"`
|
||||||
DirEtag int `json:"dirEtag"`
|
//DirEtag int `json:"dirEtag"`
|
||||||
Tombstoned int `json:"tombstoned"`
|
//Tombstoned int `json:"tombstoned"`
|
||||||
ProxyID interface{} `json:"proxyID"`
|
//ProxyID interface{} `json:"proxyID"`
|
||||||
Moved int `json:"moved"`
|
//Moved int `json:"moved"`
|
||||||
IsFixedDir int `json:"isFixedDir"`
|
//IsFixedDir int `json:"isFixedDir"`
|
||||||
IsSynced interface{} `json:"isSynced"`
|
//IsSynced interface{} `json:"isSynced"`
|
||||||
Owner string `json:"owner"`
|
//Owner string `json:"owner"`
|
||||||
Modifier interface{} `json:"modifier"`
|
//Modifier interface{} `json:"modifier"`
|
||||||
Path string `json:"path"`
|
//Path string `json:"path"`
|
||||||
ShareType int `json:"shareType"`
|
//ShareType int `json:"shareType"`
|
||||||
SoftLink interface{} `json:"softLink"`
|
//SoftLink interface{} `json:"softLink"`
|
||||||
ExtProp1 interface{} `json:"extProp1"`
|
//ExtProp1 interface{} `json:"extProp1"`
|
||||||
ExtProp2 interface{} `json:"extProp2"`
|
//ExtProp2 interface{} `json:"extProp2"`
|
||||||
ExtProp3 interface{} `json:"extProp3"`
|
//ExtProp3 interface{} `json:"extProp3"`
|
||||||
ExtProp4 interface{} `json:"extProp4"`
|
//ExtProp4 interface{} `json:"extProp4"`
|
||||||
ExtProp5 interface{} `json:"extProp5"`
|
//ExtProp5 interface{} `json:"extProp5"`
|
||||||
ETagOprType int `json:"ETagOprType"`
|
//ETagOprType int `json:"ETagOprType"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Content struct {
|
type Content struct {
|
||||||
ContentID string `json:"contentID"`
|
ContentID string `json:"contentID"`
|
||||||
ContentName string `json:"contentName"`
|
ContentName string `json:"contentName"`
|
||||||
ContentSuffix string `json:"contentSuffix"`
|
//ContentSuffix string `json:"contentSuffix"`
|
||||||
ContentSize int `json:"contentSize"`
|
ContentSize int `json:"contentSize"`
|
||||||
ContentDesc string `json:"contentDesc"`
|
//ContentDesc string `json:"contentDesc"`
|
||||||
ContentType int `json:"contentType"`
|
//ContentType int `json:"contentType"`
|
||||||
ContentOrigin int `json:"contentOrigin"`
|
//ContentOrigin int `json:"contentOrigin"`
|
||||||
UpdateTime string `json:"updateTime"`
|
UpdateTime string `json:"updateTime"`
|
||||||
CommentCount int `json:"commentCount"`
|
//CommentCount int `json:"commentCount"`
|
||||||
ThumbnailURL string `json:"thumbnailURL"`
|
ThumbnailURL string `json:"thumbnailURL"`
|
||||||
BigthumbnailURL string `json:"bigthumbnailURL"`
|
//BigthumbnailURL string `json:"bigthumbnailURL"`
|
||||||
PresentURL string `json:"presentURL"`
|
//PresentURL string `json:"presentURL"`
|
||||||
PresentLURL string `json:"presentLURL"`
|
//PresentLURL string `json:"presentLURL"`
|
||||||
PresentHURL string `json:"presentHURL"`
|
//PresentHURL string `json:"presentHURL"`
|
||||||
ContentTAGList interface{} `json:"contentTAGList"`
|
//ContentTAGList interface{} `json:"contentTAGList"`
|
||||||
ShareDoneeCount int `json:"shareDoneeCount"`
|
//ShareDoneeCount int `json:"shareDoneeCount"`
|
||||||
Safestate int `json:"safestate"`
|
//Safestate int `json:"safestate"`
|
||||||
Transferstate int `json:"transferstate"`
|
//Transferstate int `json:"transferstate"`
|
||||||
IsFocusContent int `json:"isFocusContent"`
|
//IsFocusContent int `json:"isFocusContent"`
|
||||||
UpdateShareTime interface{} `json:"updateShareTime"`
|
//UpdateShareTime interface{} `json:"updateShareTime"`
|
||||||
UploadTime string `json:"uploadTime"`
|
//UploadTime string `json:"uploadTime"`
|
||||||
OpenType int `json:"openType"`
|
//OpenType int `json:"openType"`
|
||||||
AuditResult int `json:"auditResult"`
|
//AuditResult int `json:"auditResult"`
|
||||||
ParentCatalogID string `json:"parentCatalogId"`
|
//ParentCatalogID string `json:"parentCatalogId"`
|
||||||
Channel string `json:"channel"`
|
//Channel string `json:"channel"`
|
||||||
GeoLocFlag string `json:"geoLocFlag"`
|
//GeoLocFlag string `json:"geoLocFlag"`
|
||||||
Digest string `json:"digest"`
|
//Digest string `json:"digest"`
|
||||||
Version string `json:"version"`
|
//Version string `json:"version"`
|
||||||
FileEtag string `json:"fileEtag"`
|
//FileEtag string `json:"fileEtag"`
|
||||||
FileVersion string `json:"fileVersion"`
|
//FileVersion string `json:"fileVersion"`
|
||||||
Tombstoned int `json:"tombstoned"`
|
//Tombstoned int `json:"tombstoned"`
|
||||||
ProxyID string `json:"proxyID"`
|
//ProxyID string `json:"proxyID"`
|
||||||
Moved int `json:"moved"`
|
//Moved int `json:"moved"`
|
||||||
MidthumbnailURL string `json:"midthumbnailURL"`
|
//MidthumbnailURL string `json:"midthumbnailURL"`
|
||||||
Owner string `json:"owner"`
|
//Owner string `json:"owner"`
|
||||||
Modifier string `json:"modifier"`
|
//Modifier string `json:"modifier"`
|
||||||
ShareType int `json:"shareType"`
|
//ShareType int `json:"shareType"`
|
||||||
ExtInfo struct {
|
//ExtInfo struct {
|
||||||
Uploader string `json:"uploader"`
|
// Uploader string `json:"uploader"`
|
||||||
Address string `json:"address"`
|
// Address string `json:"address"`
|
||||||
} `json:"extInfo"`
|
//} `json:"extInfo"`
|
||||||
Exif struct {
|
//Exif struct {
|
||||||
CreateTime string `json:"createTime"`
|
// CreateTime string `json:"createTime"`
|
||||||
Longitude interface{} `json:"longitude"`
|
// Longitude interface{} `json:"longitude"`
|
||||||
Latitude interface{} `json:"latitude"`
|
// Latitude interface{} `json:"latitude"`
|
||||||
LocalSaveTime interface{} `json:"localSaveTime"`
|
// LocalSaveTime interface{} `json:"localSaveTime"`
|
||||||
} `json:"exif"`
|
//} `json:"exif"`
|
||||||
CollectionFlag interface{} `json:"collectionFlag"`
|
//CollectionFlag interface{} `json:"collectionFlag"`
|
||||||
TreeInfo interface{} `json:"treeInfo"`
|
//TreeInfo interface{} `json:"treeInfo"`
|
||||||
IsShared bool `json:"isShared"`
|
//IsShared bool `json:"isShared"`
|
||||||
ETagOprType int `json:"ETagOprType"`
|
//ETagOprType int `json:"ETagOprType"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetDiskResp struct {
|
type GetDiskResp struct {
|
||||||
|
@ -130,3 +130,58 @@ type UploadResp struct {
|
||||||
} `json:"uploadResult"`
|
} `json:"uploadResult"`
|
||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CloudContent struct {
|
||||||
|
ContentID string `json:"contentID"`
|
||||||
|
Modifier string `json:"modifier"`
|
||||||
|
Nickname string `json:"nickname"`
|
||||||
|
CloudNickName string `json:"cloudNickName"`
|
||||||
|
ContentName string `json:"contentName"`
|
||||||
|
ContentType int `json:"contentType"`
|
||||||
|
ContentSuffix string `json:"contentSuffix"`
|
||||||
|
ContentSize int `json:"contentSize"`
|
||||||
|
ContentDesc string `json:"contentDesc"`
|
||||||
|
CreateTime string `json:"createTime"`
|
||||||
|
Shottime interface{} `json:"shottime"`
|
||||||
|
LastUpdateTime string `json:"lastUpdateTime"`
|
||||||
|
ThumbnailURL string `json:"thumbnailURL"`
|
||||||
|
MidthumbnailURL string `json:"midthumbnailURL"`
|
||||||
|
BigthumbnailURL string `json:"bigthumbnailURL"`
|
||||||
|
PresentURL string `json:"presentURL"`
|
||||||
|
PresentLURL string `json:"presentLURL"`
|
||||||
|
PresentHURL string `json:"presentHURL"`
|
||||||
|
ParentCatalogID string `json:"parentCatalogID"`
|
||||||
|
Uploader string `json:"uploader"`
|
||||||
|
UploaderNickName string `json:"uploaderNickName"`
|
||||||
|
TreeInfo interface{} `json:"treeInfo"`
|
||||||
|
UpdateTime interface{} `json:"updateTime"`
|
||||||
|
ExtInfo struct {
|
||||||
|
Uploader string `json:"uploader"`
|
||||||
|
} `json:"extInfo"`
|
||||||
|
EtagOprType interface{} `json:"etagOprType"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CloudCatalog struct {
|
||||||
|
CatalogID string `json:"catalogID"`
|
||||||
|
CatalogName string `json:"catalogName"`
|
||||||
|
CloudID string `json:"cloudID"`
|
||||||
|
CreateTime string `json:"createTime"`
|
||||||
|
LastUpdateTime string `json:"lastUpdateTime"`
|
||||||
|
Creator string `json:"creator"`
|
||||||
|
CreatorNickname string `json:"creatorNickname"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type QueryContentListResp struct {
|
||||||
|
BaseResp
|
||||||
|
Data struct {
|
||||||
|
Result struct {
|
||||||
|
ResultCode string `json:"resultCode"`
|
||||||
|
ResultDesc string `json:"resultDesc"`
|
||||||
|
} `json:"result"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
CloudContentList []CloudContent `json:"cloudContentList"`
|
||||||
|
CloudCatalogList []CloudCatalog `json:"cloudCatalogList"`
|
||||||
|
TotalCount int `json:"totalCount"`
|
||||||
|
RecallContent interface{} `json:"recallContent"`
|
||||||
|
} `json:"data"`
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package _39
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
"github.com/Xhofe/alist/drivers/base"
|
||||||
"github.com/Xhofe/alist/model"
|
"github.com/Xhofe/alist/model"
|
||||||
"github.com/Xhofe/alist/utils"
|
"github.com/Xhofe/alist/utils"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
@ -55,3 +56,26 @@ func unicode(str string) string {
|
||||||
textUnquoted := textQuoted[1 : len(textQuoted)-1]
|
textUnquoted := textQuoted[1 : len(textQuoted)-1]
|
||||||
return textUnquoted
|
return textUnquoted
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MergeMap(mObj ...map[string]interface{}) map[string]interface{} {
|
||||||
|
newObj := map[string]interface{}{}
|
||||||
|
for _, m := range mObj {
|
||||||
|
for k, v := range m {
|
||||||
|
newObj[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newObj
|
||||||
|
}
|
||||||
|
|
||||||
|
func newJson(data map[string]interface{}, account *model.Account) map[string]interface{} {
|
||||||
|
common := map[string]interface{}{
|
||||||
|
"catalogType": 3,
|
||||||
|
"cloudID": account.SiteId,
|
||||||
|
"cloudType": 1,
|
||||||
|
"commonAccountInfo": base.Json{
|
||||||
|
"account": account.Username,
|
||||||
|
"accountType": 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return MergeMap(data, common)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue