49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package core
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/aceld/zinx/ziface"
|
|
"omc/omc"
|
|
"strings"
|
|
)
|
|
|
|
type NeBind struct {
|
|
NeType string
|
|
NeId string
|
|
}
|
|
|
|
func ConvertBindFlag(bindFlag string) (NeBind, error) {
|
|
var neBind NeBind
|
|
nb := strings.Split(bindFlag, "#")
|
|
if len(nb) != 2 {
|
|
return neBind, errors.New("ne bind flag invalid")
|
|
}
|
|
neBind.NeType = nb[0]
|
|
neBind.NeId = nb[1]
|
|
return neBind, nil
|
|
}
|
|
|
|
// APIDecode 消息解析
|
|
func APIDecode(request ziface.IRequest, checker []string) (*omc.MsgBody, error) {
|
|
// 消息处理
|
|
msgBody := omc.MsgBody{
|
|
RawData: request.GetData(),
|
|
Msg: make(map[string]string, 0),
|
|
}
|
|
if err := msgBody.Decode(); err != nil {
|
|
return nil, errors.New("inlaid message body")
|
|
}
|
|
for _, v := range checker {
|
|
if _, ok := msgBody.Msg[v]; !ok {
|
|
return nil, errors.New("missing parameter of message body")
|
|
}
|
|
}
|
|
uID, err := request.GetConnection().GetProperty("UID")
|
|
if err != nil {
|
|
request.GetConnection().Stop()
|
|
return nil, errors.New("server internal error")
|
|
}
|
|
msgBody.UID = uID.(string)
|
|
return &msgBody, nil
|
|
}
|