1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-23 13:42:25 +08:00

improve code for unmarshal message

This commit is contained in:
houseme
2023-10-16 15:12:05 +08:00
parent fe545a6de9
commit 3d9cb16709

View File

@@ -205,6 +205,28 @@ func (receiver *PushReceiver) getEvent(dataType string, eventType EventType, dec
return &pushData, err return &pushData, err
case EventSubscribePopup: case EventSubscribePopup:
// 用户操作订阅通知弹窗事件推送 // 用户操作订阅通知弹窗事件推送
return receiver.unmarshalSubscribePopup(dataType, decryptMsg)
case EventSubscribeMsgChange:
// 用户管理订阅通知事件推送
return receiver.unmarshalSubscribeMsgChange(dataType, decryptMsg)
case EventSubscribeMsgSent:
// 用户发送订阅通知事件推送
return receiver.unmarshalSubscribeMsgSent(dataType, decryptMsg)
}
// 暂不支持其他事件类型,直接返回解密后的数据,由调用方处理
return decryptMsg, nil
}
// unmarshal 解析推送的数据
func (receiver *PushReceiver) unmarshal(dataType string, decryptMsg []byte, pushData interface{}) error {
if dataType == DataTypeXML {
return xml.Unmarshal(decryptMsg, pushData)
}
return json.Unmarshal(decryptMsg, pushData)
}
// unmarshalSubscribePopup
func (receiver *PushReceiver) unmarshalSubscribePopup(dataType string, decryptMsg []byte) (PushData, error) {
var pushData PushDataSubscribePopup var pushData PushDataSubscribePopup
err := receiver.unmarshal(dataType, decryptMsg, &pushData) err := receiver.unmarshal(dataType, decryptMsg, &pushData)
if err == nil { if err == nil {
@@ -225,8 +247,10 @@ func (receiver *PushReceiver) getEvent(dataType string, eventType EventType, dec
} }
return &pushData, err return &pushData, err
case EventSubscribeMsgChange: }
// 用户管理订阅通知事件推送
// unmarshalSubscribeMsgChange 解析用户管理订阅通知事件推送
func (receiver *PushReceiver) unmarshalSubscribeMsgChange(dataType string, decryptMsg []byte) (PushData, error) {
var pushData PushDataSubscribeMsgChange var pushData PushDataSubscribeMsgChange
err := receiver.unmarshal(dataType, decryptMsg, &pushData) err := receiver.unmarshal(dataType, decryptMsg, &pushData)
if err == nil { if err == nil {
@@ -246,8 +270,10 @@ func (receiver *PushReceiver) getEvent(dataType string, eventType EventType, dec
} }
} }
return &pushData, err return &pushData, err
case EventSubscribeMsgSent: }
// 用户发送订阅通知事件推送
// unmarshalSubscribeMsgSent 解析用户发送订阅通知事件推送
func (receiver *PushReceiver) unmarshalSubscribeMsgSent(dataType string, decryptMsg []byte) (PushData, error) {
var pushData PushDataSubscribeMsgSent var pushData PushDataSubscribeMsgSent
err := receiver.unmarshal(dataType, decryptMsg, &pushData) err := receiver.unmarshal(dataType, decryptMsg, &pushData)
if err == nil { if err == nil {
@@ -268,17 +294,6 @@ func (receiver *PushReceiver) getEvent(dataType string, eventType EventType, dec
} }
return &pushData, err return &pushData, err
} }
// 暂不支持其他事件类型,直接返回解密后的数据,由调用方处理
return decryptMsg, nil
}
// unmarshal 解析推送的数据
func (receiver *PushReceiver) unmarshal(dateType string, decryptMsg []byte, pushData interface{}) error {
if dateType == DataTypeXML {
return xml.Unmarshal(decryptMsg, pushData)
}
return json.Unmarshal(decryptMsg, pushData)
}
// DataReceived 接收到的数据 // DataReceived 接收到的数据
type DataReceived struct { type DataReceived struct {