-
Notifications
You must be signed in to change notification settings - Fork 60
/
Copy pathapi_media.go
44 lines (39 loc) · 1.02 KB
/
api_media.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
package godingtalk
import (
"io"
"net/url"
"time"
)
//MediaResponse is
type MediaResponse struct {
OAPIResponse
Type string
MediaID string `json:"media_id"`
Writer io.Writer
}
func (m *MediaResponse) getWriter() io.Writer {
return m.Writer
}
//UploadMedia is to upload media file to DingTalk
func (c *DingTalkClient) UploadMedia(mediaType string, filename string, reader io.Reader) (media MediaResponse, err error) {
upload := UploadFile{
FieldName: "media",
FileName: filename,
Reader: reader,
}
params := url.Values{}
params.Add("type", mediaType)
c.HTTPClient.Timeout = 120 * time.Second
err = c.httpRPC("media/upload", params, upload, &media)
return media, err
}
//DownloadMedia is to download a media file from DingTalk
func (c *DingTalkClient) DownloadMedia(mediaID string, write io.Writer) error {
var data MediaResponse
data.Writer = write
params := url.Values{}
params.Add("media_id", mediaID)
c.HTTPClient.Timeout = 120 * time.Second
err := c.httpRPC("media/get", params, nil, &data)
return err
}