mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
client: use unpackOIDBPackage
This commit is contained in:
parent
d9f803837f
commit
ef65fd67e6
@ -783,13 +783,10 @@ func decodeMSFOfflinePacket(c *QQClient, _ *network.IncomingPacketInfo, _ []byte
|
||||
|
||||
// OidbSvc.0xd79
|
||||
func decodeWordSegmentation(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := &oidb.D79RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.Content != nil {
|
||||
return rsp.Content.SliceContent, nil
|
||||
|
@ -25,8 +25,8 @@ func (handle *EventHandle[T]) Subscribe(handler func(client *QQClient, event T))
|
||||
|
||||
func (handle *EventHandle[T]) dispatch(client *QQClient, event T) {
|
||||
eventMu.RLock()
|
||||
defer eventMu.RUnlock()
|
||||
defer func() {
|
||||
eventMu.RUnlock()
|
||||
if pan := recover(); pan != nil {
|
||||
fmt.Printf("event error: %v\n%s", pan, debug.Stack())
|
||||
}
|
||||
|
@ -356,15 +356,15 @@ func (c *QQClient) packOIDBPackageProto(cmd, serviceType int32, msg proto.Messag
|
||||
return c.packOIDBPackage(cmd, serviceType, b)
|
||||
}
|
||||
|
||||
func unpackOIDBPackage(buff []byte, payload proto.Message) error {
|
||||
func unpackOIDBPackage(payload []byte, rsp proto.Message) error {
|
||||
pkg := new(oidb.OIDBSSOPkg)
|
||||
if err := proto.Unmarshal(buff, pkg); err != nil {
|
||||
if err := proto.Unmarshal(payload, pkg); err != nil {
|
||||
return errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if pkg.Result != 0 {
|
||||
return errors.Errorf("oidb result unsuccessful: %v msg: %v", pkg.Result, pkg.ErrorMsg)
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, payload); err != nil {
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, rsp); err != nil {
|
||||
return errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
return nil
|
||||
|
@ -441,26 +441,20 @@ func (c *QQClient) buildGroupFileDeleteReqPacket(groupCode int64, parentFolderId
|
||||
}
|
||||
|
||||
func decodeOIDB6d81Response(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D6D8RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &rsp, nil
|
||||
}
|
||||
|
||||
// OidbSvc.0x6d6_2
|
||||
func decodeOIDB6d62Response(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D6D6RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.DownloadFileRsp.DownloadUrl == nil {
|
||||
return nil, errors.New(rsp.DownloadFileRsp.GetClientWording())
|
||||
@ -471,13 +465,10 @@ func decodeOIDB6d62Response(_ *QQClient, _ *network.IncomingPacketInfo, payload
|
||||
}
|
||||
|
||||
func decodeOIDB6d63Response(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D6D6RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.DeleteFileRsp == nil {
|
||||
return "", nil
|
||||
@ -486,25 +477,19 @@ func decodeOIDB6d63Response(_ *QQClient, _ *network.IncomingPacketInfo, payload
|
||||
}
|
||||
|
||||
func decodeOIDB6d60Response(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D6D6RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rsp.UploadFileRsp, nil
|
||||
}
|
||||
|
||||
func decodeOIDB6d7Response(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D6D7RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.CreateFolderRsp != nil && rsp.CreateFolderRsp.GetRetCode() != 0 {
|
||||
return nil, errors.Errorf("create folder error: %v", rsp.CreateFolderRsp.GetRetCode())
|
||||
|
@ -227,13 +227,10 @@ func decodeGroupSearchResponse(_ *QQClient, _ *network.IncomingPacketInfo, paylo
|
||||
|
||||
// OidbSvc.0x88d_0
|
||||
func decodeGroupInfoResponse(c *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D88DRspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(rsp.RspGroupInfo) == 0 {
|
||||
return nil, errors.New(string(rsp.StrErrorInfo))
|
||||
|
@ -397,13 +397,10 @@ func decodeGetGroupMsgResponse(c *QQClient, info *network.IncomingPacketInfo, pa
|
||||
}
|
||||
|
||||
func decodeAtAllRemainResponse(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.D8A7RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &AtAllRemainInfo{
|
||||
CanAtAll: rsp.GetCanAtAll(),
|
||||
@ -593,13 +590,10 @@ func (c *QQClient) buildEssenceMsgOperatePacket(groupCode int64, msgSeq, msgRand
|
||||
|
||||
// OidbSvc.0xeac_1/2
|
||||
func decodeEssenceMsgResponse(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := &oidb.EACRspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rsp, nil
|
||||
}
|
||||
|
@ -405,13 +405,10 @@ func decodeGroupImageDownloadResponse(_ *QQClient, _ *network.IncomingPacketInfo
|
||||
|
||||
// OidbSvc.0xe07_0
|
||||
func decodeImageOcrResponse(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.DE07RspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.Wording != "" {
|
||||
if strings.Contains(rsp.Wording, "服务忙") {
|
||||
|
@ -49,13 +49,10 @@ func (c *QQClient) buildUrlCheckRequest(url string) (uint16, []byte) {
|
||||
}
|
||||
|
||||
func decodeUrlCheckResponse(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := &oidb.OIDBSSOPkg{}
|
||||
rsp := &oidb.DBCBRspBody{}
|
||||
if err := proto.Unmarshal(payload, pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rsp.CheckUrlRsp == nil || len(rsp.CheckUrlRsp.Results) == 0 {
|
||||
return nil, errors.New("response is empty")
|
||||
|
@ -42,13 +42,10 @@ func (c *QQClient) Translate(src, dst, text string) (string, error) {
|
||||
|
||||
// OidbSvc.0x990
|
||||
func decodeTranslateResponse(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (interface{}, error) {
|
||||
pkg := oidb.OIDBSSOPkg{}
|
||||
rsp := oidb.TranslateRspBody{}
|
||||
if err := proto.Unmarshal(payload, &pkg); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
}
|
||||
if err := proto.Unmarshal(pkg.Bodybuffer, &rsp); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal protobuf message")
|
||||
err := unpackOIDBPackage(payload, &rsp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rsp.BatchTranslateRsp, nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user