1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00
wdvxdr 1c29ac7d96
refactor: packets.BuildUniPacket -> c.uniPacket
mostly auto-generated by

```
rf '
ex {
    var c QQClient
    var seq uint16
    var payload []byte
    var command string
    BuildUniPacket(c.Uin, seq, command, 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) -> c.uniPacket(seq, command, payload)
}
'
```
2021-12-17 22:58:41 +08:00

42 lines
846 B
Go

package codec
import (
"strconv"
"github.com/Mrs4s/MiraiGo/binary"
)
type Uni struct {
Uin int64
Seq uint16
CommandName string
EncryptType byte
SessionID []byte
ExtraData []byte
Key []byte
Body []byte
}
func (u *Uni) Encode() []byte {
return binary.NewWriterF(func(w *binary.Writer) {
w2 := binary.SelectWriter()
{ // w.WriteIntLvPacket
w2.WriteUInt32(0x0B)
w2.WriteByte(u.EncryptType)
w2.WriteUInt32(uint32(u.Seq))
w2.WriteByte(0)
w2.WriteString(strconv.FormatInt(u.Uin, 10))
// inline NewWriterF
w3 := binary.SelectWriter()
w3.WriteUniPacket(u.CommandName, u.SessionID, u.ExtraData, u.Body)
w2.EncryptAndWrite(u.Key, w3.Bytes())
binary.PutWriter(w3)
}
data := w2.Bytes()
w.WriteUInt32(uint32(len(data) + 4))
w.Write(data)
binary.PutWriter(w2)
})
}