diff --git a/drivers/google/driver.go b/drivers/google/driver.go index a0d3e549..e7ae231f 100644 --- a/drivers/google/driver.go +++ b/drivers/google/driver.go @@ -20,7 +20,6 @@ func (driver GoogleDrive) Config() base.DriverConfig { OnlyProxy: true, ApiProxy: true, NoNeedSetLink: true, - LocalSort: true, } } @@ -50,6 +49,20 @@ func (driver GoogleDrive) Items() []base.Item { Type: base.TypeString, Required: false, }, + { + Name: "order_by", + Label: "order_by", + Type: base.TypeString, + Required: false, + Description: "such as: folder,name,modifiedTime", + }, + { + Name: "order_direction", + Label: "order_direction", + Type: base.TypeSelect, + Values: "asc,desc", + Required: false, + }, } } @@ -115,7 +128,7 @@ func (driver GoogleDrive) Files(path string, account *model.Account) ([]model.Fi } files := make([]model.File, 0) for _, file := range rawFiles { - files = append(files, *driver.FormatFile(&file)) + files = append(files, *driver.FormatFile(&file, account)) } return files, nil } diff --git a/drivers/google/googledrive.go b/drivers/google/googledrive.go index 8fcadc43..4a3bcc6d 100644 --- a/drivers/google/googledrive.go +++ b/drivers/google/googledrive.go @@ -45,24 +45,24 @@ func (driver GoogleDrive) RefreshToken(account *model.Account) error { } type File struct { - Id string `json:"id"` - Name string `json:"name"` - MimeType string `json:"mimeType"` - ModifiedTime *time.Time `json:"modifiedTime"` - Size string `json:"size"` + Id string `json:"id"` + Name string `json:"name"` + MimeType string `json:"mimeType"` + ModifiedTime *time.Time `json:"modifiedTime"` + Size string `json:"size"` + ThumbnailLink string `json:"thumbnailLink"` } func (driver GoogleDrive) IsDir(mimeType string) bool { return mimeType == "application/vnd.google-apps.folder" || mimeType == "application/vnd.google-apps.shortcut" } -func (driver GoogleDrive) FormatFile(file *File) *model.File { +func (driver GoogleDrive) FormatFile(file *File, account *model.Account) *model.File { f := &model.File{ Id: file.Id, Name: file.Name, Driver: driver.Config().Name, UpdatedAt: file.ModifiedTime, - Thumbnail: "", Url: "", } if driver.IsDir(file.MimeType) { @@ -72,6 +72,13 @@ func (driver GoogleDrive) FormatFile(file *File) *model.File { f.Size = size f.Type = utils.GetFileType(filepath.Ext(file.Name)) } + if file.ThumbnailLink != "" { + if account.DownProxyUrl != "" { + f.Thumbnail = fmt.Sprintf("%s/%s", account.DownProxyUrl, file.ThumbnailLink) + } else { + f.Thumbnail = file.ThumbnailLink + } + } return f } @@ -102,9 +109,13 @@ func (driver GoogleDrive) GetFiles(id string, account *model.Account) ([]File, e pageToken = "" } var resp Files + orderBy := "folder,name,modifiedTime desc" + if account.OrderBy != "" { + orderBy = account.OrderBy + " " + account.OrderDirection + } query := map[string]string{ - "orderBy": "folder,name,modifiedTime desc", - "fields": "files(id,name,mimeType,size,modifiedTime),nextPageToken", + "orderBy": orderBy, + "fields": "files(id,name,mimeType,size,modifiedTime,thumbnailLink),nextPageToken", "pageSize": "1000", "q": fmt.Sprintf("'%s' in parents and trashed = false", id), //"includeItemsFromAllDrives": "true",