mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
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) } ' ```
42 lines
846 B
Go
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)
|
|
})
|
|
}
|