/
httpConsumer.go
82 lines (65 loc) · 2.03 KB
/
httpConsumer.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
package alimq
import (
"encoding/json"
"errors"
// "fmt"
"strconv"
)
func (this *Messages) getUrl() string {
return URL_PREFIX + "/message/?topic=" + this.Topic + "&time=" + strconv.FormatInt(this.Time, 10) + "&num=32"
}
// 获取发送消息签名字符串
func (this *Messages) getSignStr() string {
return this.Topic + newline + this.ConsumerId + newline + strconv.FormatInt(this.Time, 10)
}
// 接收信息
func (this *Messages) List() (*[]Message, error) {
url := this.getUrl()
signStr := this.getSignStr()
sign := HamSha1(signStr, []byte(SECRET_KEY))
header := make(map[string]string)
header["AccessKey"] = ACCESS_KEY
header["Signature"] = sign
header["ConsumerId"] = this.ConsumerId
body, status, err := HttpGet(url, header)
if err != nil {
return nil, err
}
statusMessage := getStatusCodeMessage(status)
if statusMessage != "" {
return nil, errors.New(statusMessage)
}
list := make([]Message, 32)
err = json.Unmarshal(body, &list)
if err != nil {
return nil, err
}
return &list, nil
}
// 删除地址
func (this *Messages) getDelUrl(msgHandle string) string {
return URL_PREFIX + "/message/?topic=" + this.Topic + "&time=" + strconv.FormatInt(this.Time, 10) + "&msgHandle=" + msgHandle
}
// 签名字符串
func (this *Messages) getDelSignStr(msgHandle string) string {
return this.Topic + newline + this.ConsumerId + newline + msgHandle + newline + strconv.FormatInt(this.Time, 10)
}
// 删除消息
func (this *Messages) Delete(msgHandle string) (bool, error) {
url := this.getDelUrl(msgHandle)
signStr := this.getDelSignStr(msgHandle)
sign := HamSha1(signStr, []byte(SECRET_KEY))
header := make(map[string]string)
header["AccessKey"] = ACCESS_KEY
header["Signature"] = sign
header["ConsumerId"] = this.ConsumerId
_, status, err := HttpDelete(url, header)
if err != nil {
return false, err
}
statusMessage := getStatusCodeMessage(status)
if statusMessage != "" {
return false, errors.New(statusMessage)
}
return true, nil
}