258 lines
8.0 KiB
Go
258 lines
8.0 KiB
Go
// This file is auto-generated, don't edit it. Thanks.
|
||
package alibaba
|
||
|
||
import (
|
||
"fmt"
|
||
"io"
|
||
"net/http"
|
||
"os"
|
||
"path/filepath"
|
||
|
||
dingtalkdrive_1_0 "github.com/alibabacloud-go/dingtalk/drive_1_0"
|
||
dingtalkstorage_1_0 "github.com/alibabacloud-go/dingtalk/storage_1_0"
|
||
dingtalkstorage_2_0 "github.com/alibabacloud-go/dingtalk/storage_2_0"
|
||
|
||
util "github.com/alibabacloud-go/tea-utils/v2/service"
|
||
"github.com/alibabacloud-go/tea/tea"
|
||
)
|
||
|
||
func CreateSpace() (_err error) {
|
||
client, _err := CreateStorageClientV1()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
addSpaceHeaders := &dingtalkstorage_1_0.AddSpaceHeaders{}
|
||
addSpaceHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
optionCapabilities := &dingtalkstorage_1_0.AddSpaceRequestOptionCapabilities{
|
||
CanSearch: tea.Bool(true),
|
||
CanRename: tea.Bool(true),
|
||
CanRecordRecentFile: tea.Bool(true),
|
||
}
|
||
option := &dingtalkstorage_1_0.AddSpaceRequestOption{
|
||
Name: tea.String("测试空间"),
|
||
Quota: tea.Int64(1024),
|
||
Capabilities: optionCapabilities,
|
||
Scene: tea.String("scene"),
|
||
SceneId: tea.String("123"),
|
||
OwnerType: tea.String("USER"),
|
||
}
|
||
addSpaceRequest := &dingtalkstorage_1_0.AddSpaceRequest{
|
||
UnionId: tea.String("V7tQ9uuiSnF2naz1DY45fsQiEiE"),
|
||
Option: option,
|
||
}
|
||
resp, _err := client.AddSpaceWithOptions(addSpaceRequest, addSpaceHeaders, &util.RuntimeOptions{})
|
||
fmt.Println(resp)
|
||
return _err
|
||
}
|
||
|
||
func SearchDentryUuid() error {
|
||
client, _err := CreateStorageClientV2()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
searchDentriesHeaders := &dingtalkstorage_2_0.SearchDentriesHeaders{}
|
||
searchDentriesHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
optionVisitTimeRange := &dingtalkstorage_2_0.SearchDentriesRequestOptionVisitTimeRange{}
|
||
optionCreateTimeRange := &dingtalkstorage_2_0.SearchDentriesRequestOptionCreateTimeRange{}
|
||
option := &dingtalkstorage_2_0.SearchDentriesRequestOption{
|
||
NextToken: tea.String(""),
|
||
MaxResults: tea.Int32(20),
|
||
DentryCategories: []*string{},
|
||
CreatorIds: []*string{},
|
||
ModifierIds: []*string{},
|
||
CreateTimeRange: optionCreateTimeRange,
|
||
VisitTimeRange: optionVisitTimeRange,
|
||
}
|
||
searchDentriesRequest := &dingtalkstorage_2_0.SearchDentriesRequest{
|
||
OperatorId: tea.String("F6S4MWGk8iiuUOP82QyMe0AiEiE"),
|
||
Keyword: tea.String("Dialog"),
|
||
Option: option,
|
||
}
|
||
resp, _err := client.SearchDentriesWithOptions(searchDentriesRequest, searchDentriesHeaders, &util.RuntimeOptions{})
|
||
fmt.Println(resp)
|
||
return _err
|
||
}
|
||
|
||
func AddFloder() error {
|
||
client, _err := CreateStorageClientV1()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
addFolderHeaders := &dingtalkstorage_1_0.AddFolderHeaders{}
|
||
addFolderHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
optionAppProperties0 := &dingtalkstorage_1_0.AddFolderRequestOptionAppProperties{
|
||
Name: tea.String("属性1"),
|
||
Value: tea.String("属性值1"),
|
||
Visibility: tea.String("PUBLIC"),
|
||
}
|
||
option := &dingtalkstorage_1_0.AddFolderRequestOption{
|
||
ConflictStrategy: tea.String("AUTO_RENAME"),
|
||
AppProperties: []*dingtalkstorage_1_0.AddFolderRequestOptionAppProperties{optionAppProperties0},
|
||
}
|
||
addFolderRequest := &dingtalkstorage_1_0.AddFolderRequest{
|
||
UnionId: tea.String("V7tQ9uuiSnF2naz1DY45fsQiEiE"),
|
||
Name: tea.String("测试文件夹"),
|
||
Option: option,
|
||
}
|
||
resp, _err := client.AddFolderWithOptions(tea.String("28051557270"), tea.String("0"), addFolderRequest, addFolderHeaders, &util.RuntimeOptions{})
|
||
fmt.Println(resp)
|
||
|
||
return _err
|
||
}
|
||
|
||
func SearchSpaceId() error {
|
||
client, _err := CreateDriveClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
listSpacesHeaders := &dingtalkdrive_1_0.ListSpacesHeaders{}
|
||
listSpacesHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
listSpacesRequest := &dingtalkdrive_1_0.ListSpacesRequest{
|
||
UnionId: tea.String(UNIONID),
|
||
SpaceType: tea.String("org"),
|
||
NextToken: tea.String(""),
|
||
MaxResults: tea.Int32(50),
|
||
}
|
||
resp, _err := client.ListSpacesWithOptions(listSpacesRequest, listSpacesHeaders, &util.RuntimeOptions{})
|
||
fmt.Println(resp)
|
||
return _err
|
||
}
|
||
|
||
func GetMaxFileVersion(version int, nextToken string) int {
|
||
client, _err := CreateStorageClientV1()
|
||
if _err != nil {
|
||
return 0
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return 0
|
||
}
|
||
listDentryVersionsHeaders := &dingtalkstorage_1_0.ListDentryVersionsHeaders{}
|
||
listDentryVersionsHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
listDentryVersionsRequest := &dingtalkstorage_1_0.ListDentryVersionsRequest{
|
||
NextToken: tea.String(nextToken),
|
||
MaxResults: tea.Int32(30),
|
||
UnionId: tea.String(UNIONID),
|
||
}
|
||
resp, _err := client.ListDentryVersionsWithOptions(tea.String("28057154815"), tea.String("206700372014"), listDentryVersionsRequest, listDentryVersionsHeaders, &util.RuntimeOptions{})
|
||
if resp.Body.Dentries != nil {
|
||
return int(*resp.Body.Dentries[0].Version)
|
||
}
|
||
return version
|
||
}
|
||
|
||
func GetFileInfo() error {
|
||
client, _err := CreateStorageClientV1()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
listDentriesHeaders := &dingtalkstorage_1_0.ListDentriesHeaders{}
|
||
listDentriesHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
listDentriesRequest := &dingtalkstorage_1_0.ListDentriesRequest{
|
||
ParentId: tea.String("0"),
|
||
NextToken: tea.String(""),
|
||
MaxResults: tea.Int32(30),
|
||
OrderBy: tea.String("MODIFIED_TIME"),
|
||
Order: tea.String("DESC"),
|
||
WithThumbnail: tea.Bool(false),
|
||
UnionId: tea.String(UNIONID),
|
||
}
|
||
resp, _err := client.ListDentriesWithOptions(tea.String("28057154815"), listDentriesRequest, listDentriesHeaders, &util.RuntimeOptions{})
|
||
fmt.Println(resp)
|
||
return _err
|
||
}
|
||
|
||
func DownloadFile() error {
|
||
client, _err := CreateStorageClientV1()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
token, err := GetToken()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
MaxVersion := GetMaxFileVersion(0, "")
|
||
getFileDownloadInfoHeaders := &dingtalkstorage_1_0.GetFileDownloadInfoHeaders{}
|
||
getFileDownloadInfoHeaders.XAcsDingtalkAccessToken = tea.String(token)
|
||
option := &dingtalkstorage_1_0.GetFileDownloadInfoRequestOption{
|
||
Version: tea.Int64(int64(MaxVersion)),
|
||
PreferIntranet: tea.Bool(false),
|
||
}
|
||
getFileDownloadInfoRequest := &dingtalkstorage_1_0.GetFileDownloadInfoRequest{
|
||
UnionId: tea.String("YWjeT8Ltk2mUOP82QyMe0AiEiE"),
|
||
Option: option,
|
||
}
|
||
resp, _err := client.GetFileDownloadInfoWithOptions(tea.String("28057154815"), tea.String("206700372014"), getFileDownloadInfoRequest, getFileDownloadInfoHeaders, &util.RuntimeOptions{})
|
||
responseBody := resp.Body
|
||
downloadUrl := responseBody.HeaderSignatureInfo.ResourceUrls[0]
|
||
header := map[string]string{
|
||
"Authorization": *responseBody.HeaderSignatureInfo.Headers["Authorization"],
|
||
"x-oss-date": *responseBody.HeaderSignatureInfo.Headers["x-oss-date"],
|
||
}
|
||
_, _err = _downloadFile(header, *downloadUrl)
|
||
return _err
|
||
}
|
||
|
||
func _downloadFile(headers map[string]string, url string) ([]byte, error) {
|
||
req, err := http.NewRequest("GET", url, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
// 默认的下载相关 headers,可被传入的 headers 覆盖
|
||
defaultHeaders := map[string]string{
|
||
"Accept": "application/xlsx",
|
||
"Accept-Encoding": "identity",
|
||
"Connection": "keep-alive",
|
||
"Cache-Control": "no-cache",
|
||
}
|
||
for k, v := range defaultHeaders {
|
||
req.Header.Set(k, v)
|
||
}
|
||
for k, v := range headers {
|
||
req.Header.Set(k, v)
|
||
}
|
||
client := &http.Client{}
|
||
resp, err := client.Do(req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
defer resp.Body.Close()
|
||
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
|
||
return nil, fmt.Errorf("download failed: status %s", resp.Status)
|
||
}
|
||
data, err := io.ReadAll(resp.Body)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
targetDir := "/data/docs/config"
|
||
if err := os.MkdirAll(targetDir, 0755); err != nil {
|
||
return nil, err
|
||
}
|
||
targetFile := filepath.Join(targetDir, "DialogueData.xlsx")
|
||
if err := os.WriteFile(targetFile, data, 0644); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return data, nil
|
||
}
|