Skip to content

Commit 3f02d9d

Browse files
author
yisu
committed
updated
1 parent 48c7dce commit 3f02d9d

File tree

5 files changed

+101
-3
lines changed

5 files changed

+101
-3
lines changed

api_encryption.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package godingtalk
2+
3+
//DataMessage 服务端加密、解密消息
4+
type DataMessage struct {
5+
OAPIResponse
6+
Data string
7+
}
8+
9+
10+
//Encrypt is 服务端加密
11+
func (c *DingTalkClient) Encrypt(str string) (string, error) {
12+
var data DataMessage
13+
request := map[string]interface{}{
14+
"data": str,
15+
}
16+
err := c.httpRPC("encryption/encrypt", nil, request, &data)
17+
if err!=nil {
18+
return "", err
19+
}
20+
return data.Data, nil
21+
}
22+
23+
//Decrypt is 服务端解密
24+
func (c *DingTalkClient) Decrypt(str string) (string, error) {
25+
var data DataMessage
26+
request := map[string]interface{}{
27+
"data": str,
28+
}
29+
err := c.httpRPC("encryption/decrypt", nil, request, &data)
30+
if err!=nil {
31+
return "", err
32+
}
33+
return data.Data, nil
34+
}

api_encryption_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package godingtalk
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestEncryption(t *testing.T) {
8+
str, err := c.Encrypt("Hello")
9+
if err!=nil {
10+
t.Error(err)
11+
} else {
12+
t.Log(str)
13+
}
14+
}

api_file.go

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package godingtalk
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"io"
7+
"net/url"
8+
)
9+
10+
//FileResponse is
11+
type FileResponse struct {
12+
OAPIResponse
13+
Code int
14+
Msg string
15+
UploadID string `json:"uploadid"`
16+
Writer io.Writer
17+
}
18+
19+
func (f *FileResponse) getWriter() io.Writer {
20+
return f.Writer
21+
}
22+
23+
//CreateFile is to create a new file in Ding Space
24+
func (c *DingTalkClient) CreateFile(size int64) (file FileResponse, err error) {
25+
buf := bytes.Buffer{}
26+
file = FileResponse{
27+
Writer: &buf,
28+
}
29+
params := url.Values{}
30+
params.Add("size", fmt.Sprintf("%d", size))
31+
err = c.httpRPC("file/upload/create", params, nil, &file)
32+
return file, err
33+
}

api_file_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package godingtalk
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestCreateFile(t *testing.T) {
8+
file, err := c.CreateFile(1024)
9+
t.Log(file, err)
10+
}

transport.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"errors"
77
"io"
88
"io/ioutil"
9+
"log"
910
"mime/multipart"
1011
"net/http"
1112
"net/url"
@@ -32,7 +33,7 @@ func (c *DingTalkClient) httpRPC(path string, params url.Values, requestData int
3233
if params == nil {
3334
params = url.Values{}
3435
}
35-
if (params.Get("access_token")=="") {
36+
if params.Get("access_token") == "" {
3637
params.Set("access_token", c.AccessToken)
3738
}
3839
}
@@ -67,24 +68,30 @@ func (c *DingTalkClient) httpRequest(path string, params url.Values, requestData
6768
request.Header.Set("Content-Type", w.FormDataContentType())
6869
default:
6970
d, _ := json.Marshal(requestData)
70-
request, _ = http.NewRequest("POST", url2, bytes.NewReader(d))
7171
// log.Printf("url: %s request: %s", url2, string(d))
72+
request, _ = http.NewRequest("POST", url2, bytes.NewReader(d))
7273
request.Header.Set("Content-Type", typeJSON)
7374
}
7475
} else {
76+
// log.Printf("url: %s", url2)
7577
request, _ = http.NewRequest("GET", url2, nil)
7678
}
7779
resp, err := client.Do(request)
7880
if err != nil {
7981
return err
8082
}
83+
84+
if resp.StatusCode != 200 {
85+
return errors.New("Server error: " + resp.Status)
86+
}
87+
8188
defer resp.Body.Close()
8289
contentType := resp.Header.Get("Content-Type")
90+
log.Printf("url: %s response content type: %s", url2, contentType)
8391
pos := len(typeJSON)
8492
if len(contentType) >= pos && contentType[0:pos] == typeJSON {
8593
content, err := ioutil.ReadAll(resp.Body)
8694
if err == nil {
87-
// log.Printf("url: %s response: %s", url2, string(content))
8895
json.Unmarshal(content, responseData)
8996
return responseData.checkError()
9097
}

0 commit comments

Comments
 (0)