-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patherror.go
81 lines (70 loc) · 2.14 KB
/
error.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
package mns
import (
"encoding/xml"
)
const (
ErrorHttpStatusCodeQueueNotExist = 404
ErrorHttpStatusCodeTopicNotExist = 404
ErrorHttpStatusCodeMessageNotExist = 404
ErrorHttpStatusCodeReceiptHandleError = 400
)
const (
ErrorCodeQueueNotExist = "QueueNotExist"
ErrorCodeTopicNotExist = "TopicNotExist"
ErrorCodeMessageNotExist = "MessageNotExist"
ErrorCodeReceiptHandleError = "ReceiptHandleError"
)
func IsQueueNotExist(err error) bool {
v, ok := err.(*Error)
if !ok {
return false
}
if v == nil {
return false
}
return v.HttpStatusCode == ErrorHttpStatusCodeQueueNotExist && v.Code == ErrorCodeQueueNotExist
}
func IsTopicNotExist(err error) bool {
v, ok := err.(*Error)
if !ok {
return false
}
if v == nil {
return false
}
return v.HttpStatusCode == ErrorHttpStatusCodeTopicNotExist && v.Code == ErrorCodeTopicNotExist
}
func IsMessageNotExist(err error) bool {
v, ok := err.(*Error)
if !ok {
return false
}
if v == nil {
return false
}
return v.HttpStatusCode == ErrorHttpStatusCodeMessageNotExist && v.Code == ErrorCodeMessageNotExist
}
func IsReceiptHandleError(err error) bool {
v, ok := err.(*Error)
if !ok {
return false
}
if v == nil {
return false
}
return v.HttpStatusCode == ErrorHttpStatusCodeReceiptHandleError && v.Code == ErrorCodeReceiptHandleError
}
var _ error = (*Error)(nil)
// Error 表示 MNS 的错误响应.
type Error struct {
XMLName struct{} `xml:"Error" json:"-"`
HttpStatusCode int `xml:"HttpStatusCode" json:"http_status_code"` // HTTP 状态码
Code string `xml:"Code" json:"code"` // MNS 返回给用户的错误码。
Message string `xml:"Message" json:"message"` // MNS 给出的详细错误信息。
RequestId string `xml:"RequestId" json:"request_id"` // 用于唯一标识该次请求的编号;当你无法解决问题时,可以提供这个 RequestId 寻求 MNS 支持工程师的帮助。
HostId string `xml:"HostId" json:"host_id"` // 用于标识访问的 MNS 服务的地域。
}
func (e *Error) Error() string {
b, _ := xml.Marshal(e)
return string(b)
}