admin_backend/middleware/alibaba/space.go
2026-04-15 14:48:13 +08:00

258 lines
8.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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
}