From 24d65666d99f4bbdd408d059aca046062b3fe8d1 Mon Sep 17 00:00:00 2001 From: "jiahua.liu" Date: Tue, 28 Jan 2020 13:59:57 +0800 Subject: [PATCH] :ProtoBuf --- .../packet/chat/data/Cmd0x352Packet.kt | 4 +- .../protocol/packet/chat/data/ImageRequest.kt | 3 +- .../packet/chat/data/MessageCommon.kt | 13 +- .../network/protocol/packet/chat/data/Msg.kt | 211 +++++++++--------- .../protocol/packet/chat/data/MsgCommon.kt | 29 +-- .../protocol/packet/chat/data/OnlinePush.kt | 3 +- .../packet/chat/receive/MessageSvc.kt | 5 +- .../packet/friend/GetFriendListRequest.kt | 19 ++ .../packet/friend/data/Vec0xd50Req.kt | 2 + .../packet/friend/data/Vec0xd6bReq.kt | 8 + .../network/protocol/packet/login/Register.kt | 4 +- .../network/protocol/protobuf/ProtoBuf.kt | 7 + 12 files changed, 177 insertions(+), 131 deletions(-) create mode 100644 mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/GetFriendListRequest.kt create mode 100644 mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd50Req.kt create mode 100644 mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd6bReq.kt create mode 100644 mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/protobuf/ProtoBuf.kt diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Cmd0x352Packet.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Cmd0x352Packet.kt index 2b7b722ad..f08b4a137 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Cmd0x352Packet.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Cmd0x352Packet.kt @@ -2,6 +2,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data import kotlinx.serialization.SerialId import kotlinx.serialization.Serializable +import net.mamoe.mirai.qqandroid.network.protocol.protobuf.ProtoBuf @Serializable internal class Cmd0x352Packet( @@ -10,7 +11,7 @@ internal class Cmd0x352Packet( @SerialId(3) val getImgUrlReq: GetImgUrlReq? = null,// optional @SerialId(4) val deleteImgReq: String? = "",// optional (没有做也不准备做, 没用) @SerialId(10) val networkType: Int = 5// 数据网络=5 -) { +) : ProtoBuf { companion object { fun createByImageRequest(req: ImgReq, networkType: Int = 5): Cmd0x352Packet { if (req is UploadImgReq) @@ -32,5 +33,4 @@ internal class Cmd0x352Packet( error("Unknown ImgReq") } } - } \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/ImageRequest.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/ImageRequest.kt index 64f4439af..4fc0c5fa1 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/ImageRequest.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/ImageRequest.kt @@ -3,9 +3,10 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data import kotlinx.serialization.SerialId import kotlinx.serialization.Serializable import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.qqandroid.network.protocol.protobuf.ProtoBuf import net.mamoe.mirai.utils.currentTimeSeconds -interface ImgReq +interface ImgReq : ProtoBuf @Serializable internal class UploadImgReq( diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MessageCommon.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MessageCommon.kt index fe8b78d48..5b63687fb 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MessageCommon.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MessageCommon.kt @@ -7,6 +7,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumberType import kotlinx.serialization.protobuf.ProtoType import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.qqandroid.network.protocol.protobuf.ProtoBuf class MessageCommon { @@ -36,25 +37,25 @@ class MessageCommon { @SerialId(9) val resUrlBig: String = "", @SerialId(10) val resUrlSmall: String = "", @SerialId(11) val resConf: String = "" - ) + ) : ProtoBuf @Serializable data class AppShareInfo( - @ProtoType(ProtoNumberType.FIXED) @SerialId(1) val id: Int = 0, + @ProtoType(ProtoNumberType.FIXED) @SerialId(1) val id: Int = 0, @SerialId(2) val cookie: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val resource: PluginInfo = PluginInfo() - ) + ) : ProtoBuf @Serializable data class ContentHead( @SerialId(1) val pkgNum: Int = 0, @SerialId(2) val pkgIndex: Int = 0, - @SerialId(3) val divSeq: Int = 0, + @SerialId(3) val divSeq: Int = 0, @SerialId(4) val autoReply: Int = 0 - ) + ) : ProtoBuf @Serializable data class Msg( val s: String - ) + ) : ProtoBuf } \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Msg.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Msg.kt index 9433cefe1..908e70c6a 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Msg.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/Msg.kt @@ -5,28 +5,29 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumberType import kotlinx.serialization.protobuf.ProtoType import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.qqandroid.network.protocol.protobuf.ProtoBuf @Serializable -class ImCommon { +class ImCommon : ProtoBuf { @Serializable class GroupInfo( @SerialId(1) val groupId: Long = 0L, @SerialId(2) val groupType: Int /* enum */ = 1 - ) + ) : ProtoBuf @Serializable class Signature( @SerialId(1) val keyType: Int = 0, @SerialId(2) val sessionAppId: Int = 0, @SerialId(3) val sessionKey: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class Token( @SerialId(1) val buf: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val c2cType: Int = 0, @SerialId(3) val serviceType: Int = 0 - ) + ) : ProtoBuf @Serializable class User( @@ -40,11 +41,11 @@ class ImCommon { @SerialId(8) val platformId: Int = 0, @SerialId(9) val language: Int = 0, @SerialId(10) val equipKey: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf } @Serializable -class ImImagent { +class ImImagent : ProtoBuf { @Serializable class ImAgentHead( @SerialId(1) val command: Int /* enum */ = 1, @@ -57,45 +58,45 @@ class ImImagent { @SerialId(8) val signature: Signature? = null, @SerialId(9) val subCmd: Int = 0, @SerialId(10) val serverIp: Int = 0 - ) + ) : ProtoBuf @Serializable class ImAgentPackage( @SerialId(1) val head: ImAgentHead? = null, @SerialId(11) val msgSendReq: ImMsg.MsgSendReq? = null, @SerialId(12) val msgSendResp: ImMsg.MsgSendResp? = null - ) + ) : ProtoBuf @Serializable class Requestinfo( @ProtoType(ProtoNumberType.FIXED) @SerialId(1) val reqIp: Int = 0, @SerialId(2) val reqPort: Int = 0, @SerialId(3) val reqFlag: Int = 0 - ) + ) : ProtoBuf @Serializable class Signature( @SerialId(1) val keyType: Int = 0, @SerialId(2) val sessionAppId: Int = 0, @SerialId(3) val sessionKey: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf } @Serializable -class ImMsg { +class ImMsg : ProtoBuf { @Serializable class C2C( @SerialId(1) val sender: ImCommon.User? = null, @SerialId(2) val receiver: ImCommon.User? = null, @SerialId(3) val c2cRelation: C2CRelation? = null - ) + ) : ProtoBuf @Serializable class C2CRelation( @SerialId(1) val c2cType: Int /* enum */ = 0, @SerialId(2) val groupInfo: ImCommon.GroupInfo? = null, @SerialId(3) val token: ImCommon.Token? = null - ) + ) : ProtoBuf @Serializable class ContentHead( @@ -109,27 +110,27 @@ class ImMsg { @SerialId(8) val msgdbSeq: Int = 0, @SerialId(9) val wordMsgSeq: Int = 0, @SerialId(10) val msgRand: Int = 0 - ) + ) : ProtoBuf @Serializable class Group( @SerialId(1) val sender: ImCommon.User? = null, @SerialId(2) val receiver: ImCommon.User? = null, @SerialId(3) val groupInfo: ImCommon.GroupInfo? = null - ) + ) : ProtoBuf @Serializable class Msg( @SerialId(1) val head: MsgHead? = null, @SerialId(2) val body: ImMsgBody.MsgBody? = null - ) + ) : ProtoBuf @Serializable class MsgHead( @SerialId(1) val routingHead: RoutingHead? = null, @SerialId(2) val contentHead: ContentHead? = null, @SerialId(3) val gbkTmpMsgBody: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class MsgSendReq( @@ -138,7 +139,7 @@ class ImMsg { @SerialId(3) val msgTailId: Int = 0, @SerialId(4) val connMsgFlag: Int = 0, @SerialId(5) val cookie: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class MsgSendResp @@ -147,11 +148,11 @@ class ImMsg { class RoutingHead( @SerialId(1) val c2c: C2C? = null, @SerialId(2) val group: Group? = null - ) + ) : ProtoBuf } @Serializable -class ImMsgBody { +class ImMsgBody : ProtoBuf { @Serializable class AnonymousGroupMsg( @SerialId(1) val flags: Int = 0, @@ -161,7 +162,7 @@ class ImMsgBody { @SerialId(5) val expireTime: Int = 0, @SerialId(6) val bubbleId: Int = 0, @SerialId(7) val rankColor: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class ApolloActMsg( @@ -178,7 +179,7 @@ class ImMsgBody { @SerialId(11) val diytextContent: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(12) val inputText: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(13) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class ArkAppElem( @@ -186,7 +187,7 @@ class ImMsgBody { @SerialId(2) val minVersion: String = "", @SerialId(3) val xmlTemplate: String = "", @SerialId(4) val data: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class Attr( @@ -200,32 +201,32 @@ class ImMsgBody { @SerialId(8) val pitchAndFamily: Int = 90, @SerialId(9) val fontName: String = "Times New Roman", @SerialId(10) val reserveData: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class BitAppMsg( @SerialId(1) val buf: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class BlessingMessage( @SerialId(1) val msgType: Int = 0, @SerialId(2) val exFlag: Int = 0 - ) + ) : ProtoBuf @Serializable class CommonElem( @SerialId(1) val serviceType: Int = 0, @SerialId(2) val pbElem: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val businessType: Int = 0 - ) + ) : ProtoBuf @Serializable class ConferenceTipsInfo( @SerialId(1) val sessionType: Int = 0, @SerialId(2) val sessionUin: Long = 0L, @SerialId(3) val text: String = "" - ) + ) : ProtoBuf @Serializable class CrmElem( @@ -234,7 +235,7 @@ class ImMsgBody { @SerialId(3) val qidianFlag: Int = 0, @SerialId(4) val pushFlag: Int = 0, @SerialId(5) val countFlag: Int = 0 - ) + ) : ProtoBuf @Serializable class CustomElem( @@ -243,7 +244,7 @@ class ImMsgBody { @SerialId(3) val enumType: Int /* enum */ = 1, @SerialId(4) val ext: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(5) val sound: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class CustomFace( @@ -281,7 +282,7 @@ class ImMsgBody { @SerialId(32) val _400Width: Int = 0, @SerialId(33) val _400Height: Int = 0, @SerialId(34) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class DeliverGiftMsg( @@ -307,13 +308,13 @@ class ImMsgBody { @SerialId(20) val receiverName: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(21) val receiverPic: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(22) val stmessageGifturl: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class EIMInfo( @SerialId(1) val rootId: Long = 0L, @SerialId(2) val flag: Int = 0 - ) + ) : ProtoBuf @Serializable class Elem( @@ -370,13 +371,13 @@ class ImMsgBody { @SerialId(51) val lightApp: ImMsgBody.LightAppElem? = null, @SerialId(52) val eimInfo: ImMsgBody.EIMInfo? = null, @SerialId(53) val commonElem: ImMsgBody.CommonElem? = null - ) + ) : ProtoBuf @Serializable class ElemFlags( @SerialId(1) val flags1: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val businessData: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class ElemFlags2( @@ -394,7 +395,7 @@ class ImMsgBody { @SerialId(12) val customFont: Int = 0, @SerialId(13) val pcSupportDef: ImMsgBody.PcSupportDef? = null, @SerialId(14) val crmFlags: Int = 0 - ) { + ) : ProtoBuf { @Serializable class Inst( @SerialId(1) val appId: Int = 0, @@ -416,19 +417,19 @@ class ImMsgBody { @SerialId(10) val msgStateFlag: Int = 0, @SerialId(11) val apnsSoundType: Int = 0, @SerialId(12) val newGroupFlag: Int = 0 - ) + ) : ProtoBuf @Serializable class Face( @SerialId(1) val index: Int = 0, @SerialId(2) val old: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(11) val buf: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class FSJMessageElem( @SerialId(1) val msgType: Int = 0 - ) + ) : ProtoBuf @Serializable class FunFace( @@ -469,7 +470,7 @@ class ImMsgBody { @SerialId(17) val pendantId: Long = 0L, @SerialId(18) val rpIndex: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(19) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class GroupBusinessMsg( @@ -481,7 +482,7 @@ class ImMsgBody { @SerialId(6) val rank: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(7) val rankColor: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(8) val rankBgcolor: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class GroupFile( @@ -495,18 +496,18 @@ class ImMsgBody { @SerialId(8) val batchItemId: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(9) val feedMsgTime: Int = 0, @SerialId(10) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class GroupPostElem( @SerialId(1) val transType: Int = 0, @SerialId(2) val transMsg: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class GroupPubAccountInfo( @SerialId(1) val pubAccount: Long = 0L - ) + ) : ProtoBuf @Serializable class LifeOnlineAccount( @@ -519,20 +520,20 @@ class ImMsgBody { @SerialId(7) val gdtImpData: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(8) val gdtCliData: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(9) val viewId: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class LightAppElem( @SerialId(1) val data: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val msgResid: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class LocationInfo( @SerialId(1) val longitude: Double = 0.0, @SerialId(2) val latitude: Double = 0.0, @SerialId(3) val desc: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class LolaMsg( @@ -540,7 +541,7 @@ class ImMsgBody { @SerialId(2) val encodeContent: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val longMsgUrl: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(4) val downloadKey: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class LowVersionTips( @@ -549,7 +550,7 @@ class ImMsgBody { @SerialId(3) val sessionUin: Long = 0L, @SerialId(4) val senderUin: Long = 0L, @SerialId(5) val text: String = "" - ) + ) : ProtoBuf @Serializable class MarketFace( @@ -566,7 +567,7 @@ class ImMsgBody { @SerialId(11) val imageHeight: Int = 0, @SerialId(12) val mobileparam: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(13) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class MarketTrans( @@ -575,26 +576,26 @@ class ImMsgBody { @SerialId(3) val msgResid: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(4) val ability: Int = 0, @SerialId(5) val minAbility: Int = 0 - ) + ) : ProtoBuf @Serializable class MsgBody( @SerialId(1) val richText: ImMsgBody.RichText? = null, @SerialId(2) val msgContent: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val msgEncryptContent: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class MsgBodySubtype4( @SerialId(1) val msgNotOnlineFile: ImMsgBody.NotOnlineFile? = null, @SerialId(2) val msgTime: Int = 0 - ) + ) : ProtoBuf @Serializable class NearByMessageType( @SerialId(1) val type: Int = 0, @SerialId(2) val identifyType: Int = 0 - ) + ) : ProtoBuf @Serializable class NotOnlineFile( @@ -617,7 +618,7 @@ class ImMsgBody { @SerialId(54) val clientType: Int = 0, @SerialId(55) val expireTime: Int = 0, @SerialId(56) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class NotOnlineImage( @@ -650,25 +651,25 @@ class ImMsgBody { @SerialId(27) val _400Width: Int = 0, @SerialId(28) val _400Height: Int = 0, @SerialId(29) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class OnlineImage( @SerialId(1) val guid: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val filePath: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val oldVerSendFile: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class OpenQQData( @SerialId(1) val carQqData: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class PatsElem( @SerialId(1) val patType: Int = 0, @SerialId(2) val patCount: Int = 0 - ) + ) : ProtoBuf @Serializable class PcSupportDef( @@ -678,7 +679,7 @@ class ImMsgBody { @SerialId(4) val macPtlEnd: Int = 0, @SerialId(5) val ptlsSupport: List? = null, @SerialId(6) val ptlsNotSupport: List? = null - ) + ) : ProtoBuf @Serializable class Ptt( @@ -706,7 +707,7 @@ class ImMsgBody { @SerialId(30) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(31) val bytesPttUrls: List? = null, @SerialId(32) val downloadFlag: Int = 0 - ) + ) : ProtoBuf @Serializable class PubAccInfo( @@ -714,13 +715,13 @@ class ImMsgBody { @SerialId(2) val ingMsgTemplateId: String = "", @SerialId(3) val ingLongMsgUrl: String = "", @SerialId(4) val downloadKey: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class PubAccount( @SerialId(1) val buf: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val pubAccountUin: Long = 0L - ) + ) : ProtoBuf @Serializable class PubGroup( @@ -728,7 +729,7 @@ class ImMsgBody { @SerialId(2) val gender: Int = 0, @SerialId(3) val age: Int = 0, @SerialId(4) val distance: Int = 0 - ) + ) : ProtoBuf @Serializable class QQLiveOld( @@ -736,7 +737,7 @@ class ImMsgBody { @SerialId(2) val showText: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val param: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(4) val introduce: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class QQWalletAioBody( @@ -761,7 +762,7 @@ class ImMsgBody { @SerialId(19) val redchannel: Int = 0, @SerialId(20) val grapUin: List? = null, @SerialId(21) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class QQWalletAioElem( @@ -786,17 +787,17 @@ class ImMsgBody { @SerialId(19) val aioImageRight: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(20) val cftImage: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(21) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class QQWalletMsg( @SerialId(1) val aioBody: ImMsgBody.QQWalletAioBody? = null - ) + ) : ProtoBuf @Serializable class RedBagInfo( @SerialId(1) val redbagType: Int = 0 - ) + ) : ProtoBuf @Serializable class RichMsg( @@ -806,7 +807,7 @@ class ImMsgBody { @SerialId(4) val rand: Int = 0, @SerialId(5) val seq: Int = 0, @SerialId(6) val flags: Int = 0 - ) + ) : ProtoBuf @Serializable class RichText( @@ -816,7 +817,7 @@ class ImMsgBody { @SerialId(4) val ptt: ImMsgBody.Ptt? = null, @SerialId(5) val tmpPtt: ImMsgBody.TmpPtt? = null, @SerialId(6) val trans211TmpMsg: ImMsgBody.Trans211TmpMsg? = null - ) + ) : ProtoBuf @Serializable class SecretFileMsg( @@ -835,20 +836,20 @@ class ImMsgBody { @SerialId(13) val elemFlags2: ImMsgBody.ElemFlags2? = null, @SerialId(14) val opertype: Int = 0, @SerialId(15) val fromphonenum: String = "" - ) + ) : ProtoBuf @Serializable class ShakeWindow( @SerialId(1) val type: Int = 0, @SerialId(2) val reserve: Int = 0, @SerialId(3) val uin: Long = 0L - ) + ) : ProtoBuf @Serializable class SmallEmoji( @SerialId(1) val packIdSum: Int = 0, @SerialId(2) val imageType: Int = 0 - ) + ) : ProtoBuf @Serializable class SourceMsg( @@ -863,7 +864,7 @@ class ImMsgBody { @SerialId(9) val srcMsg: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(10) val toUin: Long = 0L, @SerialId(11) val troopName: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class Text( @@ -873,12 +874,12 @@ class ImMsgBody { @SerialId(4) val attr7Buf: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(11) val buf: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(12) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class TipsInfo( @SerialId(1) val text: String = "" - ) + ) : ProtoBuf @Serializable class TmpPtt( @@ -894,19 +895,19 @@ class ImMsgBody { @SerialId(10) val msgId: Long = 0L, @SerialId(30) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(31) val pttEncodeData: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class Trans211TmpMsg( @SerialId(1) val msgBody: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val c2cCmd: Int = 0 - ) + ) : ProtoBuf @Serializable class TransElem( @SerialId(1) val elemType: Int = 0, @SerialId(2) val elemValue: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class VideoFile( @@ -934,17 +935,17 @@ class ImMsgBody { @SerialId(22) val thumbDownloadFlag: Int = 0, @SerialId(23) val videoDownloadFlag: Int = 0, @SerialId(24) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class WorkflowNotifyMsg( @SerialId(1) val extMsg: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val createUin: Long = 0L - ) + ) : ProtoBuf } @Serializable -class ImMsgHead { +class ImMsgHead : ProtoBuf { @Serializable class C2CHead( @SerialId(1) val toUin: Long = 0L, @@ -958,7 +959,7 @@ class ImMsgHead { @SerialId(9) val clientTime: Int = 0, @SerialId(10) val rand: Int = 0, @SerialId(11) val ingPhoneNumber: String = "" - ) + ) : ProtoBuf @Serializable class CSHead( @@ -986,7 +987,7 @@ class ImMsgHead { @SerialId(22) val instanceId: Int = 0, @SerialId(23) val sessionId: Long = 0L, @SerialId(24) val idcId: Int = 0 - ) + ) : ProtoBuf @Serializable class DeltaHead( @@ -997,7 +998,7 @@ class ImMsgHead { @SerialId(5) val ackCookie: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(6) val result: Int = 0, @SerialId(7) val flags: Int = 0 - ) + ) : ProtoBuf @Serializable class Head( @@ -1011,7 +1012,7 @@ class ImMsgHead { @SerialId(8) val msgC2cHead: C2CHead? = null, @SerialId(9) val msgSconnHead: SConnHead? = null, @SerialId(10) val msgInstCtrl: InstCtrl? = null - ) + ) : ProtoBuf @Serializable class HttpConnHead( @@ -1040,14 +1041,14 @@ class ImMsgHead { @SerialId(23) val commandId: Int = 0, @SerialId(24) val serviceCmdid: Int = 0, @SerialId(25) val msgOidbhead: TransOidbHead? = null - ) + ) : ProtoBuf @Serializable class InstCtrl( @SerialId(1) val msgSendToInst: List? = null, @SerialId(2) val msgExcludeInst: List? = null, @SerialId(3) val msgFromInst: InstInfo? = null - ) + ) : ProtoBuf @Serializable class InstInfo( @@ -1055,13 +1056,13 @@ class ImMsgHead { @SerialId(2) val instid: Int = 0, @SerialId(3) val platform: Int = 0, @SerialId(10) val enumDeviceType: Int /* enum */ = 0 - ) + ) : ProtoBuf @Serializable class LoginSig( @SerialId(1) val type: Int = 0, @SerialId(2) val sig: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class RedirectMsg( @@ -1070,7 +1071,7 @@ class ImMsgHead { @ProtoType(ProtoNumberType.FIXED) @SerialId(3) val redirectIp: Int = 0, @SerialId(4) val redirectPort: Int = 0, @SerialId(5) val redirectCount: Int = 0 - ) + ) : ProtoBuf @Serializable class S2CHead( @@ -1081,10 +1082,10 @@ class ImMsgHead { @ProtoType(ProtoNumberType.FIXED) @SerialId(5) val relayIp: Int = 0, @SerialId(6) val relayPort: Int = 0, @SerialId(7) val toUin: Long = 0L - ) + ) : ProtoBuf @Serializable - class SConnHead + class SConnHead : ProtoBuf @Serializable class TransOidbHead( @@ -1092,44 +1093,44 @@ class ImMsgHead { @SerialId(2) val serviceType: Int = 0, @SerialId(3) val result: Int = 0, @SerialId(4) val errorMsg: String = "" - ) + ) : ProtoBuf } @Serializable -class ImReceipt { +class ImReceipt : ProtoBuf { @Serializable class MsgInfo( @SerialId(1) val fromUin: Long = 0L, @SerialId(2) val toUin: Long = 0L, @SerialId(3) val msgSeq: Int = 0, @SerialId(4) val msgRandom: Int = 0 - ) + ) : ProtoBuf @Serializable class ReceiptInfo( @SerialId(1) val readTime: Long = 0L - ) + ) : ProtoBuf @Serializable class ReceiptReq( @SerialId(1) val command: Int /* enum */ = 1, @SerialId(2) val msgInfo: MsgInfo? = null - ) + ) : ProtoBuf @Serializable class ReceiptResp( @SerialId(1) val command: Int /* enum */ = 1, @SerialId(2) val receiptInfo: ReceiptInfo? = null - ) + ) : ProtoBuf } @Serializable -class ObjMsg { +class ObjMsg : ProtoBuf { @Serializable class MsgContentInfo( @SerialId(1) val contentInfoId: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val msgFile: MsgFile? = null - ) { + ) : ProtoBuf { @Serializable class MsgFile( @SerialId(1) val busId: Int = 0, @@ -1139,7 +1140,7 @@ class ObjMsg { @SerialId(5) val int64DeadTime: Long = 0L, @SerialId(6) val fileSha1: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(7) val ext: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf } @Serializable @@ -1147,7 +1148,7 @@ class ObjMsg { @SerialId(1) val smallPicUrl: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(2) val originalPicUrl: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val localPicId: Int = 0 - ) + ) : ProtoBuf @Serializable class ObjMsg( @@ -1158,5 +1159,5 @@ class ObjMsg { @SerialId(6) val msgPic: List? = null, @SerialId(7) val msgContentInfo: List? = null, @SerialId(8) val reportIdShow: Int = 0 - ) + ) : ProtoBuf } \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MsgCommon.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MsgCommon.kt index ec5072819..6796214c1 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MsgCommon.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/MsgCommon.kt @@ -3,18 +3,19 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data import kotlinx.serialization.SerialId import kotlinx.serialization.Serializable import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.qqandroid.network.protocol.protobuf.ProtoBuf /** * msf.msgcomm.msg_comm */ @Serializable -class MsgComm { +class MsgComm : ProtoBuf { @Serializable class AppShareInfo( @SerialId(1) val appshareId: Int = 0, @SerialId(2) val appshareCookie: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(3) val appshareResource: PluginInfo? = null - ) + ) : ProtoBuf @Serializable class C2CTmpMsgHead( @@ -29,7 +30,7 @@ class MsgComm { @SerialId(9) val lockDisplay: Int = 0, @SerialId(10) val directionFlag: Int = 0, @SerialId(11) val reserved: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class ContentHead( @@ -37,7 +38,7 @@ class MsgComm { @SerialId(2) val pkgIndex: Int = 0, @SerialId(3) val divSeq: Int = 0, @SerialId(4) val autoReply: Int = 0 - ) + ) : ProtoBuf @Serializable class DiscussInfo( @@ -46,13 +47,13 @@ class MsgComm { @SerialId(3) val discussInfoSeq: Long = 0L, @SerialId(4) val discussRemark: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(5) val discussName: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class ExtGroupKeyInfo( @SerialId(1) val curMaxSeq: Int = 0, @SerialId(2) val curTime: Long = 0L - ) + ) : ProtoBuf @Serializable class GroupInfo( @@ -64,7 +65,7 @@ class MsgComm { @SerialId(6) val groupLevel: Int = 0, @SerialId(7) val groupCardType: Int = 0, @SerialId(8) val groupName: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class Msg( @@ -72,7 +73,7 @@ class MsgComm { @SerialId(2) val contentHead: ContentHead? = null, @SerialId(3) val msgBody: ImMsgBody.MsgBody? = null, @SerialId(4) val appshareInfo: AppShareInfo? = null - ) + ) : ProtoBuf @Serializable class MsgHead( @@ -104,19 +105,19 @@ class MsgComm { @SerialId(26) val multiCompatibleText: String = "", @SerialId(27) val authSex: Int = 0, @SerialId(28) val isSrcMsg: Boolean = false - ) + ) : ProtoBuf @Serializable class MsgType0x210( @SerialId(1) val subMsgType: Int = 0, @SerialId(2) val msgContent: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf @Serializable class MutilTransHead( @SerialId(1) val status: Int = 0, @SerialId(2) val msgId: Int = 0 - ) + ) : ProtoBuf @Serializable class PluginInfo( @@ -131,13 +132,13 @@ class MsgComm { @SerialId(9) val resUrlBig: String = "", @SerialId(10) val resUrlSmall: String = "", @SerialId(11) val resConf: String = "" - ) + ) : ProtoBuf @Serializable class Uin2Nick( @SerialId(1) val uin: Long = 0L, @SerialId(2) val nick: String = "" - ) + ) : ProtoBuf @Serializable class UinPairMsg( @@ -149,5 +150,5 @@ class MsgComm { @SerialId(8) val c2cType: Int = 0, @SerialId(9) val serviceType: Int = 0, @SerialId(10) val pbReserve: ByteArray = EMPTY_BYTE_ARRAY - ) + ) : ProtoBuf } \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/OnlinePush.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/OnlinePush.kt index b890eb07a..a77adcb31 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/OnlinePush.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/data/OnlinePush.kt @@ -3,6 +3,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data import kotlinx.serialization.SerialId import kotlinx.serialization.Serializable import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.qqandroid.network.protocol.protobuf.ProtoBuf @Serializable class MsgOnlinePush { @@ -13,5 +14,5 @@ class MsgOnlinePush { @SerialId(3) val pushToken: ByteArray = EMPTY_BYTE_ARRAY, @SerialId(4) val pingFlag: Int = 0, @SerialId(9) val generalFlag: Int = 0 - ) + ) : ProtoBuf } \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt index 3e4de9a30..0158e4633 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt @@ -2,6 +2,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.discardExact +import kotlinx.serialization.protobuf.ProtoBuf import net.mamoe.mirai.qqandroid.QQAndroidBot import net.mamoe.mirai.qqandroid.io.serialization.Jce import net.mamoe.mirai.qqandroid.network.protocol.jce.RequestPacket @@ -22,7 +23,9 @@ class MessageSvc { req.sBuffer[0]!! ) println(messageNotification.contentToString()) + ProtoBuf TODO() } } -} \ No newline at end of file +} + diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/GetFriendListRequest.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/GetFriendListRequest.kt new file mode 100644 index 000000000..b1dc79014 --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/GetFriendListRequest.kt @@ -0,0 +1,19 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.friend + +import kotlinx.io.core.ByteReadPacket +import net.mamoe.mirai.data.Packet +import net.mamoe.mirai.qqandroid.QQAndroidBot +import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory + + +internal object GetFriendListRequest : + PacketFactory("friendlist.GetFriendListReq") { + + class GetFriendListResponse() : Packet + + + override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): GetFriendListResponse { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} + diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd50Req.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd50Req.kt new file mode 100644 index 000000000..f1949c602 --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd50Req.kt @@ -0,0 +1,2 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.friend.data + diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd6bReq.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd6bReq.kt new file mode 100644 index 000000000..6c2ec1e18 --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/friend/data/Vec0xd6bReq.kt @@ -0,0 +1,8 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.friend.data + +import kotlinx.serialization.Serializable + +@Serializable +class Vec0xd6bReq { + +} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Register.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Register.kt index 41342f294..561d161ec 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Register.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Register.kt @@ -4,9 +4,10 @@ import kotlinx.io.core.ByteReadPacket import kotlinx.serialization.protobuf.ProtoBuf import net.mamoe.mirai.data.Packet import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.QQAndroidClient +import net.mamoe.mirai.qqandroid.io.JceInput import net.mamoe.mirai.qqandroid.io.jceMap import net.mamoe.mirai.qqandroid.io.jceStruct +import net.mamoe.mirai.qqandroid.network.QQAndroidClient import net.mamoe.mirai.qqandroid.network.protocol.jce.SvcReqRegister import net.mamoe.mirai.qqandroid.network.protocol.jce.writeUniRequestPacket import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket @@ -55,6 +56,7 @@ class StatSvc { client, subAppId = subAppId, commandName = commandName, extraData = client.wLoginSigInfo.tgt.toReadPacket(), sequenceId = sequenceId ) { + JceInput writeUniRequestPacket { sServantName = "PushService" sFuncName = "SvcReqRegister" diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/protobuf/ProtoBuf.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/protobuf/ProtoBuf.kt new file mode 100644 index 000000000..bb876aa6e --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/protobuf/ProtoBuf.kt @@ -0,0 +1,7 @@ +package net.mamoe.mirai.qqandroid.network.protocol.protobuf + +/** + * 仅有标示作用 + */ +interface ProtoBuf { +} \ No newline at end of file