/
open_api_cspace.go
127 lines (114 loc) · 3.44 KB
/
open_api_cspace.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package dingtalk
import (
"fmt"
"net/url"
)
type CspaceAddToSingleChatRequest struct {
AgentID string `json:"agent_id"`
UserID string `json:"userid"`
MediaID string `json:"media_id"`
FileName string `json:"file_name"`
}
type CspaceAddToSingleChatResponse struct {
OpenAPIResponse
}
type CspaceAddRequest struct {
AgentID string `json:"agent_id,omitempty"`
Code string `json:"code"`
MediaID string `json:"media_id"`
SpaceID string `json:"space_id"`
FolderID string `json:"folder_id"`
Name string `json:"name"`
Overwrite bool `json:"overwrite,omitempty"`
}
type CspaceAddResponse struct {
OpenAPIResponse
Dentry string
}
type CspaceGetCustomSpaceRequest struct {
Domain string `json:"domain"`
AgentID string `json:"agent_id"`
}
type CspaceGetCustomSpaceResponse struct {
OpenAPIResponse
SpaceID string
}
type CspaceGrantCustomSpaceRequest struct {
AgentID string `json:"agent_id"`
Domain string `json:"domain"`
IType string `json:"type"`
UserID string `json:"userid"`
Path string `json:"path"`
Fileids string `json:"fileids"`
Duration int64 `json:"Duration"`
}
type CspaceGrantCustomSpaceResponse struct {
OpenAPIResponse
}
// 发送文件给指定用户
func (dtc *DingTalkClient) CspaceAddToSingleChat(info *CspaceAddToSingleChatRequest) (CspaceAddToSingleChatResponse, error) {
/*
这一块要么是文档没写好,要么就是有bug,目前处理的方式是URL即拼接,也发送byte形式的POST
*/
var data CspaceAddToSingleChatResponse
params := url.Values{}
params.Add("agent_id", info.AgentID)
params.Add("userid", info.UserID)
params.Add("media_id", info.MediaID)
params.Add("file_name", info.FileName)
err := dtc.httpRPC("cspace/add_to_single_chat", params, info, &data)
return data, err
}
// 新增文件到用户钉盘
func (dtc *DingTalkClient) CspaceAdd(info *CspaceAddRequest) (CspaceAddResponse, error) {
var data CspaceAddResponse
params := url.Values{}
if info.AgentID != "" {
params.Add("agent_id", info.AgentID)
}
params.Add("code", info.Code)
params.Add("media_id", info.MediaID)
params.Add("space_id", info.SpaceID)
params.Add("folder_id", info.FolderID)
params.Add("name", info.Name)
if info.Overwrite {
params.Add("overwrite", fmt.Sprintf("%s", info.Overwrite))
}
err := dtc.httpRPC("cspace/add", params, nil, &data)
return data, err
}
// 获取企业下的自定义空间
func (dtc *DingTalkClient) CspaceGetCustomSpace(info *CspaceGetCustomSpaceRequest) (CspaceGetCustomSpaceResponse, error) {
var data CspaceGetCustomSpaceResponse
params := url.Values{}
if info.AgentID != "" {
params.Add("agent_id", info.AgentID)
}
if info.Domain != "" {
params.Add("domain", info.Domain)
}
err := dtc.httpRPC("cspace/get_custom_space", params, nil, &data)
return data, err
}
// 授权用户访问企业下的自定义空间
func (dtc *DingTalkClient) CspaceGrantCustomSpace(info *CspaceGrantCustomSpaceRequest) (CspaceGrantCustomSpaceResponse, error) {
var data CspaceGrantCustomSpaceResponse
params := url.Values{}
if info.AgentID != "" {
params.Add("agent_id", info.AgentID)
}
if info.Domain != "" {
params.Add("domain", info.Domain)
}
params.Add("type", info.IType)
params.Add("userid", info.UserID)
if info.Path != "" {
params.Add("path", info.Path)
}
if info.Fileids != "" {
params.Add("fileids", info.Fileids)
}
params.Add("duration", fmt.Sprintf("%d", info.Duration))
err := dtc.httpRPC("cspace/grant_custom_space", params, nil, &data)
return data, err
}