Commit 0a6b39e6 authored by Him188's avatar Him188

Adapt new kotlinx.serialization

parent 30b6181e
...@@ -7,7 +7,7 @@ kotlin.parallel.tasks.in.project=true ...@@ -7,7 +7,7 @@ kotlin.parallel.tasks.in.project=true
# kotlin # kotlin
kotlinVersion=1.3.70 kotlinVersion=1.3.70
# kotlin libraries # kotlin libraries
serializationVersion=0.14.0 serializationVersion=0.20.0-1.3.70-eap-274-2
coroutinesVersion=1.3.3 coroutinesVersion=1.3.3
atomicFuVersion=0.14.1 atomicFuVersion=0.14.1
coroutinesIoVersion=0.1.16 coroutinesIoVersion=0.1.16
......
...@@ -59,6 +59,7 @@ kotlin { ...@@ -59,6 +59,7 @@ kotlin {
languageSettings.enableLanguageFeature("InlineClasses") languageSettings.enableLanguageFeature("InlineClasses")
languageSettings.useExperimentalAnnotation("kotlin.Experimental") languageSettings.useExperimentalAnnotation("kotlin.Experimental")
languageSettings.useExperimentalAnnotation("kotlin.OptIn")
dependencies { dependencies {
api(project(":mirai-core")) api(project(":mirai-core"))
...@@ -73,6 +74,7 @@ kotlin { ...@@ -73,6 +74,7 @@ kotlin {
commonMain { commonMain {
dependencies { dependencies {
api(kotlinx("serialization-runtime-common", serializationVersion)) api(kotlinx("serialization-runtime-common", serializationVersion))
api(kotlinx("serialization-protobuf-common", serializationVersion))
} }
} }
commonTest { commonTest {
...@@ -86,6 +88,7 @@ kotlin { ...@@ -86,6 +88,7 @@ kotlin {
if (isAndroidSDKAvailable) { if (isAndroidSDKAvailable) {
val androidMain by getting { val androidMain by getting {
dependencies { dependencies {
api(kotlinx("serialization-protobuf", serializationVersion))
} }
} }
...@@ -111,6 +114,7 @@ kotlin { ...@@ -111,6 +114,7 @@ kotlin {
api(kotlin("test", kotlinVersion)) api(kotlin("test", kotlinVersion))
api(kotlin("test-junit", kotlinVersion)) api(kotlin("test-junit", kotlinVersion))
implementation("org.pcap4j:pcap4j-distribution:1.8.2") implementation("org.pcap4j:pcap4j-distribution:1.8.2")
api(kotlinx("serialization-protobuf", serializationVersion))
runtimeOnly(files("build/classes/kotlin/jvm/main")) // classpath is not properly set by IDE runtimeOnly(files("build/classes/kotlin/jvm/main")) // classpath is not properly set by IDE
runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE
......
...@@ -28,10 +28,10 @@ import net.mamoe.mirai.qqandroid.message.OnlineFriendImageImpl ...@@ -28,10 +28,10 @@ import net.mamoe.mirai.qqandroid.message.OnlineFriendImageImpl
import net.mamoe.mirai.qqandroid.message.OnlineGroupImageImpl import net.mamoe.mirai.qqandroid.message.OnlineGroupImageImpl
import net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler import net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler
import net.mamoe.mirai.qqandroid.network.QQAndroidClient import net.mamoe.mirai.qqandroid.network.QQAndroidClient
import net.mamoe.mirai.qqandroid.network.protocol.packet.FriendList
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.PbMessageSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.PbMessageSvc
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.TroopManagement import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.TroopManagement
import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList
import net.mamoe.mirai.utils.* import net.mamoe.mirai.utils.*
import kotlin.collections.asSequence import kotlin.collections.asSequence
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
......
...@@ -5,11 +5,19 @@ ...@@ -5,11 +5,19 @@
* Some code changed by Mamoe is annotated around "MIRAI MODIFY START" and "MIRAI MODIFY END" * Some code changed by Mamoe is annotated around "MIRAI MODIFY START" and "MIRAI MODIFY END"
*/ */
@file:Suppress("DEPRECATION_ERROR")
package net.mamoe.mirai.qqandroid.io.serialization package net.mamoe.mirai.qqandroid.io.serialization
import kotlinx.io.* import kotlinx.io.ByteArrayOutputStream
import kotlinx.io.ByteBuffer
import kotlinx.io.ByteOrder
import kotlinx.serialization.* import kotlinx.serialization.*
import kotlinx.serialization.internal.* import kotlinx.serialization.builtins.ByteArraySerializer
import kotlinx.serialization.builtins.MapEntrySerializer
import kotlinx.serialization.builtins.SetSerializer
import kotlinx.serialization.internal.MapLikeSerializer
import kotlinx.serialization.internal.TaggedEncoder
import kotlinx.serialization.modules.EmptyModule import kotlinx.serialization.modules.EmptyModule
import kotlinx.serialization.modules.SerialModule import kotlinx.serialization.modules.SerialModule
import kotlinx.serialization.protobuf.ProtoBuf import kotlinx.serialization.protobuf.ProtoBuf
...@@ -33,22 +41,31 @@ internal fun extractParameters(desc: SerialDescriptor, index: Int, zeroBasedDefa ...@@ -33,22 +41,31 @@ internal fun extractParameters(desc: SerialDescriptor, index: Int, zeroBasedDefa
* *
* 代码复制自 kotlinx.serialization. 修改部分已进行标注 (详见 "MIRAI MODIFY START") * 代码复制自 kotlinx.serialization. 修改部分已进行标注 (详见 "MIRAI MODIFY START")
*/ */
class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : AbstractSerialFormat(context), BinaryFormat { @OptIn(InternalSerializationApi::class, ExperimentalStdlibApi::class)
class ProtoBufWithNullableSupport(override val context: SerialModule = EmptyModule) : SerialFormat, BinaryFormat {
internal open inner class ProtobufWriter(val encoder: ProtobufEncoder) : TaggedEncoder<ProtoDesc>() { internal open inner class ProtobufWriter(private val encoder: ProtobufEncoder) : TaggedEncoder<ProtoDesc>() {
public override val context override val context
get() = this@ProtoBufWithNullableSupport.context get() = this@ProtoBufWithNullableSupport.context
override fun beginStructure(desc: SerialDescriptor, vararg typeParams: KSerializer<*>): CompositeEncoder = when (desc.kind) { override fun beginStructure(
StructureKind.LIST -> RepeatedWriter(encoder, currentTag) descriptor: SerialDescriptor,
StructureKind.CLASS, UnionKind.OBJECT, is PolymorphicKind -> ObjectWriter(currentTagOrNull, encoder) vararg typeSerializers: KSerializer<*>
StructureKind.MAP -> MapRepeatedWriter(currentTagOrNull, encoder) ): CompositeEncoder =
else -> throw SerializationException("Primitives are not supported at top-level") when (descriptor.kind) {
} StructureKind.LIST -> RepeatedWriter(encoder, currentTag)
StructureKind.CLASS, StructureKind.OBJECT, is PolymorphicKind -> ObjectWriter(currentTagOrNull, encoder)
StructureKind.MAP -> MapRepeatedWriter(currentTagOrNull, encoder)
else -> throw SerializationException("Primitives are not supported at top-level")
}
override fun encodeTaggedInt(tag: ProtoDesc, value: Int) = encoder.writeInt(value, tag.first, tag.second) override fun encodeTaggedInt(tag: ProtoDesc, value: Int) = encoder.writeInt(value, tag.first, tag.second)
override fun encodeTaggedByte(tag: ProtoDesc, value: Byte) = encoder.writeInt(value.toInt(), tag.first, tag.second) override fun encodeTaggedByte(tag: ProtoDesc, value: Byte) =
override fun encodeTaggedShort(tag: ProtoDesc, value: Short) = encoder.writeInt(value.toInt(), tag.first, tag.second) encoder.writeInt(value.toInt(), tag.first, tag.second)
override fun encodeTaggedShort(tag: ProtoDesc, value: Short) =
encoder.writeInt(value.toInt(), tag.first, tag.second)
override fun encodeTaggedLong(tag: ProtoDesc, value: Long) = encoder.writeLong(value, tag.first, tag.second) override fun encodeTaggedLong(tag: ProtoDesc, value: Long) = encoder.writeLong(value, tag.first, tag.second)
override fun encodeTaggedFloat(tag: ProtoDesc, value: Float) = encoder.writeFloat(value, tag.first) override fun encodeTaggedFloat(tag: ProtoDesc, value: Float) = encoder.writeFloat(value, tag.first)
override fun encodeTaggedDouble(tag: ProtoDesc, value: Double) = encoder.writeDouble(value, tag.first) override fun encodeTaggedDouble(tag: ProtoDesc, value: Double) = encoder.writeDouble(value, tag.first)
...@@ -82,12 +99,15 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac ...@@ -82,12 +99,15 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac
@Suppress("UNCHECKED_CAST", "NAME_SHADOWING") @Suppress("UNCHECKED_CAST", "NAME_SHADOWING")
override fun <T> encodeSerializableValue(serializer: SerializationStrategy<T>, value: T) = when { override fun <T> encodeSerializableValue(serializer: SerializationStrategy<T>, value: T) = when {
// encode maps as collection of map entries, not merged collection of key-values // encode maps as collection of map entries, not merged collection of key-values
serializer.descriptor is MapLikeDescriptor -> { serializer.descriptor.kind == StructureKind.MAP -> {
val serializer = (serializer as MapLikeSerializer<Any?, Any?, T, *>) val serializer = (serializer as MapLikeSerializer<Any?, Any?, T, *>)
val mapEntrySerial = MapEntrySerializer(serializer.keySerializer, serializer.valueSerializer) val mapEntrySerial = MapEntrySerializer(serializer.keySerializer, serializer.valueSerializer)
HashSetSerializer(mapEntrySerial).serialize(this, (value as Map<*, *>).entries) SetSerializer(mapEntrySerial).serialize(this, (value as Map<*, *>).entries)
} }
serializer.descriptor == ByteArraySerializer.descriptor -> encoder.writeBytes(value as ByteArray, popTag().first) serializer.descriptor == ByteArraySerializer().descriptor -> encoder.writeBytes(
value as ByteArray,
popTag().first
)
else -> serializer.serialize(this, value) else -> serializer.serialize(this, value)
} }
} }
...@@ -96,7 +116,7 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac ...@@ -96,7 +116,7 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac
val parentTag: ProtoDesc?, private val parentEncoder: ProtobufEncoder, val parentTag: ProtoDesc?, private val parentEncoder: ProtobufEncoder,
private val stream: ByteArrayOutputStream = ByteArrayOutputStream() private val stream: ByteArrayOutputStream = ByteArrayOutputStream()
) : ProtobufWriter(ProtobufEncoder(stream)) { ) : ProtobufWriter(ProtobufEncoder(stream)) {
override fun endEncode(desc: SerialDescriptor) { override fun endEncode(descriptor: SerialDescriptor) {
if (parentTag != null) { if (parentTag != null) {
parentEncoder.writeBytes(stream.toByteArray(), parentTag.first) parentEncoder.writeBytes(stream.toByteArray(), parentTag.first)
} else { } else {
...@@ -111,7 +131,8 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac ...@@ -111,7 +131,8 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac
else 2 to (parentTag?.second ?: ProtoNumberType.DEFAULT) else 2 to (parentTag?.second ?: ProtoNumberType.DEFAULT)
} }
internal inner class RepeatedWriter(encoder: ProtobufEncoder, val curTag: ProtoDesc) : ProtobufWriter(encoder) { internal inner class RepeatedWriter(encoder: ProtobufEncoder, private val curTag: ProtoDesc) :
ProtobufWriter(encoder) {
override fun SerialDescriptor.getTag(index: Int) = curTag override fun SerialDescriptor.getTag(index: Int) = curTag
} }
...@@ -142,7 +163,7 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac ...@@ -142,7 +163,7 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac
} }
fun writeString(value: String, tag: Int) { fun writeString(value: String, tag: Int) {
val bytes = value.toUtf8Bytes() val bytes = value.encodeToByteArray()
writeBytes(bytes, tag) writeBytes(bytes, tag)
} }
...@@ -228,17 +249,17 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac ...@@ -228,17 +249,17 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac
internal const val SIZE_DELIMITED = 2 internal const val SIZE_DELIMITED = 2
internal const val i32 = 5 internal const val i32 = 5
val plain = ProtoBufWithNullableSupport() private val plain = ProtoBufWithNullableSupport()
override fun <T> dump(serializer: SerializationStrategy<T>, obj: T): ByteArray = plain.dump(serializer, obj) override fun <T> dump(serializer: SerializationStrategy<T>, value: T): ByteArray = plain.dump(serializer, value)
override fun <T> load(deserializer: DeserializationStrategy<T>, bytes: ByteArray): T = plain.load(deserializer, bytes) override fun <T> load(deserializer: DeserializationStrategy<T>, bytes: ByteArray): T =
override fun install(module: SerialModule) = throw IllegalStateException("You should not install anything to global instance") plain.load(deserializer, bytes)
} }
override fun <T> dump(serializer: SerializationStrategy<T>, obj: T): ByteArray { override fun <T> dump(serializer: SerializationStrategy<T>, value: T): ByteArray {
val encoder = ByteArrayOutputStream() val encoder = ByteArrayOutputStream()
val dumper = ProtobufWriter(ProtobufEncoder(encoder)) val dumper = ProtobufWriter(ProtobufEncoder(encoder))
dumper.encode(serializer, obj) dumper.encode(serializer, value)
return encoder.toByteArray() return encoder.toByteArray()
} }
...@@ -248,20 +269,3 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac ...@@ -248,20 +269,3 @@ class ProtoBufWithNullableSupport(context: SerialModule = EmptyModule) : Abstrac
} }
internal fun InputStream.readExactNBytes(bytes: Int): ByteArray {
val array = ByteArray(bytes)
var read = 0
while (read < bytes) {
val i = this.read(array, read, bytes - read)
if (i == -1) throw IOException("Unexpected EOF")
read += i
}
return array
}
internal fun InputStream.readToByteBuffer(bytes: Int): ByteBuffer {
val arr = readExactNBytes(bytes)
val buf = ByteBuffer.allocate(bytes)
buf.put(arr).flip()
return buf
}
\ No newline at end of file
...@@ -31,7 +31,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc ...@@ -31,7 +31,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc
import net.mamoe.mirai.qqandroid.network.protocol.packet.* import net.mamoe.mirai.qqandroid.network.protocol.packet.*
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvc
import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.Heartbeat import net.mamoe.mirai.qqandroid.network.protocol.packet.login.Heartbeat
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.WtLogin import net.mamoe.mirai.qqandroid.network.protocol.packet.login.WtLogin
......
...@@ -26,6 +26,7 @@ import io.ktor.utils.io.pool.useInstance ...@@ -26,6 +26,7 @@ import io.ktor.utils.io.pool.useInstance
import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.InternalCoroutinesApi
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.io.InputStream import kotlinx.io.InputStream
import kotlinx.serialization.InternalSerializationApi
import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf import net.mamoe.mirai.qqandroid.io.serialization.readProtoBuf
import net.mamoe.mirai.qqandroid.network.QQAndroidClient import net.mamoe.mirai.qqandroid.network.QQAndroidClient
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead
...@@ -34,7 +35,7 @@ import net.mamoe.mirai.utils.io.ByteArrayPool ...@@ -34,7 +35,7 @@ import net.mamoe.mirai.utils.io.ByteArrayPool
import net.mamoe.mirai.utils.io.PlatformSocket import net.mamoe.mirai.utils.io.PlatformSocket
import net.mamoe.mirai.utils.io.withUse import net.mamoe.mirai.utils.io.withUse
@OptIn(MiraiInternalAPI::class) @OptIn(MiraiInternalAPI::class, InternalSerializationApi::class)
@Suppress("SpellCheckingInspection") @Suppress("SpellCheckingInspection")
internal suspend fun HttpClient.postImage( internal suspend fun HttpClient.postImage(
htcmd: String, htcmd: String,
...@@ -92,7 +93,7 @@ internal suspend fun HttpClient.postImage( ...@@ -92,7 +93,7 @@ internal suspend fun HttpClient.postImage(
} }
} == HttpStatusCode.OK } == HttpStatusCode.OK
@OptIn(MiraiInternalAPI::class) @OptIn(MiraiInternalAPI::class, InternalSerializationApi::class)
internal object HighwayHelper { internal object HighwayHelper {
@OptIn(InternalCoroutinesApi::class) @OptIn(InternalCoroutinesApi::class)
suspend fun uploadImage( suspend fun uploadImage(
......
...@@ -15,7 +15,6 @@ import io.ktor.utils.io.ByteReadChannel ...@@ -15,7 +15,6 @@ import io.ktor.utils.io.ByteReadChannel
import io.ktor.utils.io.core.* import io.ktor.utils.io.core.*
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.io.InputStream
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
import net.mamoe.mirai.qqandroid.network.QQAndroidClient import net.mamoe.mirai.qqandroid.network.QQAndroidClient
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead
......
...@@ -9,139 +9,139 @@ ...@@ -9,139 +9,139 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.data.Packet import net.mamoe.mirai.data.Packet
import net.mamoe.mirai.qqandroid.io.JceStruct import net.mamoe.mirai.qqandroid.io.JceStruct
@Serializable @Serializable
internal class BigDataChannel( internal class BigDataChannel(
@SerialId(0) val vBigdataIplists: List<BigDataIpList>, @ProtoId(0) val vBigdataIplists: List<BigDataIpList>,
@SerialId(1) val sBigdataSigSession: ByteArray? = null, @ProtoId(1) val sBigdataSigSession: ByteArray? = null,
@SerialId(2) val sBigdataKeySession: ByteArray? = null, @ProtoId(2) val sBigdataKeySession: ByteArray? = null,
@SerialId(3) val uSigUin: Long? = null, @ProtoId(3) val uSigUin: Long? = null,
@SerialId(4) val iConnectFlag: Int? = 1, @ProtoId(4) val iConnectFlag: Int? = 1,
@SerialId(5) val vBigdataPbBuf: ByteArray? = null @ProtoId(5) val vBigdataPbBuf: ByteArray? = null
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class BigDataIpInfo( internal class BigDataIpInfo(
@SerialId(0) val uType: Long, @ProtoId(0) val uType: Long,
@SerialId(1) val sIp: String = "", @ProtoId(1) val sIp: String = "",
@SerialId(2) val uPort: Long @ProtoId(2) val uPort: Long
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class BigDataIpList( internal class BigDataIpList(
@SerialId(0) val uServiceType: Long, @ProtoId(0) val uServiceType: Long,
@SerialId(1) val vIplist: List<BigDataIpInfo>, @ProtoId(1) val vIplist: List<BigDataIpInfo>,
@SerialId(2) val netSegConfs: List<NetSegConf>? = null, @ProtoId(2) val netSegConfs: List<NetSegConf>? = null,
@SerialId(3) val ufragmentSize: Long? = null @ProtoId(3) val ufragmentSize: Long? = null
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class ClientLogConfig( internal class ClientLogConfig(
@SerialId(1) val type: Int, @ProtoId(1) val type: Int,
@SerialId(2) val timeStart: TimeStamp? = null, @ProtoId(2) val timeStart: TimeStamp? = null,
@SerialId(3) val timeFinish: TimeStamp? = null, @ProtoId(3) val timeFinish: TimeStamp? = null,
@SerialId(4) val loglevel: Byte? = null, @ProtoId(4) val loglevel: Byte? = null,
@SerialId(5) val cookie: Int? = null, @ProtoId(5) val cookie: Int? = null,
@SerialId(6) val lseq: Long? = null @ProtoId(6) val lseq: Long? = null
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class DomainIpChannel( internal class DomainIpChannel(
@SerialId(0) val vDomainIplists: List<DomainIpList> @ProtoId(0) val vDomainIplists: List<DomainIpList>
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class DomainIpInfo( internal class DomainIpInfo(
@SerialId(1) val uIp: Int, @ProtoId(1) val uIp: Int,
@SerialId(2) val uPort: Int @ProtoId(2) val uPort: Int
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class DomainIpList( internal class DomainIpList(
@SerialId(0) val uDomainType: Int, @ProtoId(0) val uDomainType: Int,
@SerialId(1) val vIplist: List<DomainIpInfo> @ProtoId(1) val vIplist: List<DomainIpInfo>
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class FileStoragePushFSSvcList( internal class FileStoragePushFSSvcList(
@SerialId(0) val vUpLoadList: List<FileStorageServerListInfo>, @ProtoId(0) val vUpLoadList: List<FileStorageServerListInfo>,
@SerialId(1) val vPicDownLoadList: List<FileStorageServerListInfo>, @ProtoId(1) val vPicDownLoadList: List<FileStorageServerListInfo>,
@SerialId(2) val vGPicDownLoadList: List<FileStorageServerListInfo>? = null, @ProtoId(2) val vGPicDownLoadList: List<FileStorageServerListInfo>? = null,
@SerialId(3) val vQzoneProxyServiceList: List<FileStorageServerListInfo>? = null, @ProtoId(3) val vQzoneProxyServiceList: List<FileStorageServerListInfo>? = null,
@SerialId(4) val vUrlEncodeServiceList: List<FileStorageServerListInfo>? = null, @ProtoId(4) val vUrlEncodeServiceList: List<FileStorageServerListInfo>? = null,
@SerialId(5) val bigDataChannel: BigDataChannel? = null, @ProtoId(5) val bigDataChannel: BigDataChannel? = null,
@SerialId(6) val vVipEmotionList: List<FileStorageServerListInfo>? = null, @ProtoId(6) val vVipEmotionList: List<FileStorageServerListInfo>? = null,
@SerialId(7) val vC2CPicDownList: List<FileStorageServerListInfo>? = null, @ProtoId(7) val vC2CPicDownList: List<FileStorageServerListInfo>? = null,
@SerialId(8) val fmtIPInfo: FmtIPInfo? = null, @ProtoId(8) val fmtIPInfo: FmtIPInfo? = null,
@SerialId(9) val domainIpChannel: DomainIpChannel? = null, @ProtoId(9) val domainIpChannel: DomainIpChannel? = null,
@SerialId(10) val pttlist: ByteArray? = null @ProtoId(10) val pttlist: ByteArray? = null
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class FileStorageServerListInfo( internal class FileStorageServerListInfo(
@SerialId(1) val sIP: String = "", @ProtoId(1) val sIP: String = "",
@SerialId(2) val iPort: Int @ProtoId(2) val iPort: Int
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class FmtIPInfo( internal class FmtIPInfo(
@SerialId(0) val sGateIp: String = "", @ProtoId(0) val sGateIp: String = "",
@SerialId(1) val iGateIpOper: Long @ProtoId(1) val iGateIpOper: Long
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class NetSegConf( internal class NetSegConf(
@SerialId(0) val uint32NetType: Long? = null, @ProtoId(0) val uint32NetType: Long? = null,
@SerialId(1) val uint32Segsize: Long? = null, @ProtoId(1) val uint32Segsize: Long? = null,
@SerialId(2) val uint32Segnum: Long? = null, @ProtoId(2) val uint32Segnum: Long? = null,
@SerialId(3) val uint32Curconnnum: Long? = null @ProtoId(3) val uint32Curconnnum: Long? = null
) : JceStruct ) : JceStruct
@Suppress("ArrayInDataClass") @Suppress("ArrayInDataClass")
@Serializable @Serializable
internal data class PushReq( internal data class PushReq(
@SerialId(1) val type: Int, @ProtoId(1) val type: Int,
@SerialId(2) val jcebuf: ByteArray, @ProtoId(2) val jcebuf: ByteArray,
@SerialId(3) val seq: Long @ProtoId(3) val seq: Long
) : JceStruct, Packet ) : JceStruct, Packet
@Serializable @Serializable
internal class PushResp( internal class PushResp(
@SerialId(1) val type: Int, @ProtoId(1) val type: Int,
@SerialId(2) val seq: Long, @ProtoId(2) val seq: Long,
@SerialId(3) val jcebuf: ByteArray? = null @ProtoId(3) val jcebuf: ByteArray? = null
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class SsoServerList( internal class SsoServerList(
@SerialId(1) val v2G3GList: List<SsoServerListInfo>, @ProtoId(1) val v2G3GList: List<SsoServerListInfo>,
@SerialId(3) val vWifiList: List<SsoServerListInfo>, @ProtoId(3) val vWifiList: List<SsoServerListInfo>,
@SerialId(4) val iReconnect: Int, @ProtoId(4) val iReconnect: Int,
@SerialId(5) val testSpeed: Byte? = null, @ProtoId(5) val testSpeed: Byte? = null,
@SerialId(6) val useNewList: Byte? = null, @ProtoId(6) val useNewList: Byte? = null,
@SerialId(7) val iMultiConn: Int? = 1, @ProtoId(7) val iMultiConn: Int? = 1,
@SerialId(8) val vHttp2g3glist: List<SsoServerListInfo>? = null, @ProtoId(8) val vHttp2g3glist: List<SsoServerListInfo>? = null,
@SerialId(9) val vHttpWifilist: List<SsoServerListInfo>? = null @ProtoId(9) val vHttpWifilist: List<SsoServerListInfo>? = null
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class SsoServerListInfo( internal class SsoServerListInfo(
@SerialId(1) val sIP: String = "", @ProtoId(1) val sIP: String = "",
@SerialId(2) val iPort: Int, @ProtoId(2) val iPort: Int,
@SerialId(3) val linkType: Byte, @ProtoId(3) val linkType: Byte,
@SerialId(4) val proxy: Byte, @ProtoId(4) val proxy: Byte,
@SerialId(5) val protocolType: Byte? = null, @ProtoId(5) val protocolType: Byte? = null,
@SerialId(6) val iTimeOut: Int? = 10 @ProtoId(6) val iTimeOut: Int? = 10
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class TimeStamp( internal class TimeStamp(
@SerialId(1) val year: Int, @ProtoId(1) val year: Int,
@SerialId(2) val month: Byte, @ProtoId(2) val month: Byte,
@SerialId(3) val day: Byte, @ProtoId(3) val day: Byte,
@SerialId(4) val hour: Byte @ProtoId(4) val hour: Byte
) : JceStruct ) : JceStruct
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.data.Packet import net.mamoe.mirai.data.Packet
import net.mamoe.mirai.qqandroid.io.JceStruct import net.mamoe.mirai.qqandroid.io.JceStruct
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
...@@ -18,63 +18,63 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY ...@@ -18,63 +18,63 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
@Suppress("ArrayInDataClass") @Suppress("ArrayInDataClass")
@Serializable @Serializable
internal data class RequestPushNotify( internal data class RequestPushNotify(
@SerialId(0) val uin: Long? = 0L, @ProtoId(0) val uin: Long? = 0L,
@SerialId(1) val ctype: Byte = 0, @ProtoId(1) val ctype: Byte = 0,
@SerialId(2) val strService: String?, @ProtoId(2) val strService: String?,
@SerialId(3) val strCmd: String?, @ProtoId(3) val strCmd: String?,
@SerialId(4) val vNotifyCookie: ByteArray? = EMPTY_BYTE_ARRAY, @ProtoId(4) val vNotifyCookie: ByteArray? = EMPTY_BYTE_ARRAY,
@SerialId(5) val usMsgType: Int?, @ProtoId(5) val usMsgType: Int?,
@SerialId(6) val wUserActive: Int?, @ProtoId(6) val wUserActive: Int?,
@SerialId(7) val wGeneralFlag: Int?, @ProtoId(7) val wGeneralFlag: Int?,
@SerialId(8) val bindedUin: Long?, @ProtoId(8) val bindedUin: Long?,
@SerialId(9) val stMsgInfo: MsgInfo?, @ProtoId(9) val stMsgInfo: MsgInfo?,
@SerialId(10) val msgCtrlBuf: String?, @ProtoId(10) val msgCtrlBuf: String?,
@SerialId(11) val serverBuf: ByteArray?, @ProtoId(11) val serverBuf: ByteArray?,
@SerialId(12) val pingFlag: Long?, @ProtoId(12) val pingFlag: Long?,
@SerialId(13) val svrip: Int? @ProtoId(13) val svrip: Int?
) : JceStruct, Packet ) : JceStruct, Packet
@Serializable @Serializable
internal class MsgInfo( internal class MsgInfo(
@SerialId(0) val lFromUin: Long? = 0L, @ProtoId(0) val lFromUin: Long? = 0L,
@SerialId(1) val uMsgTime: Long? = 0L, @ProtoId(1) val uMsgTime: Long? = 0L,
@SerialId(2) val shMsgType: Short, @ProtoId(2) val shMsgType: Short,
@SerialId(3) val shMsgSeq: Short, @ProtoId(3) val shMsgSeq: Short,
@SerialId(4) val strMsg: String?, @ProtoId(4) val strMsg: String?,
@SerialId(5) val uRealMsgTime: Int?, @ProtoId(5) val uRealMsgTime: Int?,
@SerialId(6) val vMsg: ByteArray?, @ProtoId(6) val vMsg: ByteArray?,
@SerialId(7) val uAppShareID: Long?, @ProtoId(7) val uAppShareID: Long?,
@SerialId(8) val vMsgCookies: ByteArray? = EMPTY_BYTE_ARRAY, @ProtoId(8) val vMsgCookies: ByteArray? = EMPTY_BYTE_ARRAY,
@SerialId(9) val vAppShareCookie: ByteArray? = EMPTY_BYTE_ARRAY, @ProtoId(9) val vAppShareCookie: ByteArray? = EMPTY_BYTE_ARRAY,
@SerialId(10) val lMsgUid: Long?, @ProtoId(10) val lMsgUid: Long?,
@SerialId(11) val lLastChangeTime: Long?, @ProtoId(11) val lLastChangeTime: Long?,
@SerialId(12) val vCPicInfo: List<CPicInfo>?, @ProtoId(12) val vCPicInfo: List<CPicInfo>?,
@SerialId(13) val stShareData: ShareData?, @ProtoId(13) val stShareData: ShareData?,
@SerialId(14) val lFromInstId: Long?, @ProtoId(14) val lFromInstId: Long?,
@SerialId(15) val vRemarkOfSender: ByteArray?, @ProtoId(15) val vRemarkOfSender: ByteArray?,
@SerialId(16) val strFromMobile: String?, @ProtoId(16) val strFromMobile: String?,
@SerialId(17) val strFromName: String?, @ProtoId(17) val strFromName: String?,
@SerialId(18) val vNickName: List<String>?//, @ProtoId(18) val vNickName: List<String>?//,
//@SerialId(19) val stC2CTmpMsgHead: TempMsgHead? //@SerialId(19) val stC2CTmpMsgHead: TempMsgHead?
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class ShareData( internal class ShareData(
@SerialId(0) val pkgname: String = "", @ProtoId(0) val pkgname: String = "",
@SerialId(1) val msgtail: String = "", @ProtoId(1) val msgtail: String = "",
@SerialId(2) val picurl: String = "", @ProtoId(2) val picurl: String = "",
@SerialId(3) val url: String = "" @ProtoId(3) val url: String = ""
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class TempMsgHead( internal class TempMsgHead(
@SerialId(0) val c2c_type: Int? = 0, @ProtoId(0) val c2c_type: Int? = 0,
@SerialId(1) val serviceType: Int? = 0 @ProtoId(1) val serviceType: Int? = 0
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class CPicInfo( internal class CPicInfo(
@SerialId(0) val vPath: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(0) val vPath: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(1) val vHost: ByteArray? = EMPTY_BYTE_ARRAY @ProtoId(1) val vHost: ByteArray? = EMPTY_BYTE_ARRAY
) : JceStruct ) : JceStruct
\ No newline at end of file
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.JceStruct import net.mamoe.mirai.qqandroid.io.JceStruct
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
...@@ -18,29 +18,29 @@ private val EMPTY_MAP = mapOf<String, String>() ...@@ -18,29 +18,29 @@ private val EMPTY_MAP = mapOf<String, String>()
@Serializable @Serializable
internal class RequestPacket( internal class RequestPacket(
@SerialId(1) val iVersion: Short = 3, @ProtoId(1) val iVersion: Short = 3,
@SerialId(2) val cPacketType: Byte = 0, @ProtoId(2) val cPacketType: Byte = 0,
@SerialId(3) val iMessageType: Int = 0, @ProtoId(3) val iMessageType: Int = 0,
@SerialId(4) val iRequestId: Int, @ProtoId(4) val iRequestId: Int,
@SerialId(5) val sServantName: String = "", @ProtoId(5) val sServantName: String = "",
@SerialId(6) val sFuncName: String = "", @ProtoId(6) val sFuncName: String = "",
@SerialId(7) val sBuffer: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(7) val sBuffer: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(8) val iTimeout: Int? = 0, @ProtoId(8) val iTimeout: Int? = 0,
@SerialId(9) val context: Map<String, String>? = EMPTY_MAP, @ProtoId(9) val context: Map<String, String>? = EMPTY_MAP,
@SerialId(10) val status: Map<String, String>? = EMPTY_MAP @ProtoId(10) val status: Map<String, String>? = EMPTY_MAP
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class RequestDataVersion3( internal class RequestDataVersion3(
@SerialId(0) val map: Map<String, ByteArray> // 注意: ByteArray 不能直接放序列化的 JceStruct!! 要放类似 RequestDataStructSvcReqRegister 的 @ProtoId(0) val map: Map<String, ByteArray> // 注意: ByteArray 不能直接放序列化的 JceStruct!! 要放类似 RequestDataStructSvcReqRegister 的
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class RequestDataVersion2( internal class RequestDataVersion2(
@SerialId(0) val map: Map<String, Map<String, ByteArray>> @ProtoId(0) val map: Map<String, Map<String, ByteArray>>
) : JceStruct ) : JceStruct
@Serializable @Serializable
internal class RequestDataStructSvcReqRegister( internal class RequestDataStructSvcReqRegister(
@SerialId(0) val struct: SvcReqRegister @ProtoId(0) val struct: SvcReqRegister
) : JceStruct ) : JceStruct
\ No newline at end of file
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.JceStruct import net.mamoe.mirai.qqandroid.io.JceStruct
@Serializable @Serializable
internal class RequestPushForceOffline( internal class RequestPushForceOffline(
@SerialId(0) val uin: Long, @ProtoId(0) val uin: Long,
@SerialId(1) val title: String? = "", @ProtoId(1) val title: String? = "",
@SerialId(2) val tips: String? = "", @ProtoId(2) val tips: String? = "",
@SerialId(3) val sameDevice: Byte? = null @ProtoId(3) val sameDevice: Byte? = null
) : JceStruct ) : JceStruct
\ No newline at end of file
...@@ -9,47 +9,47 @@ ...@@ -9,47 +9,47 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.JceStruct import net.mamoe.mirai.qqandroid.io.JceStruct
@Serializable @Serializable
internal class SvcReqRegister( internal class SvcReqRegister(
@SerialId(0) val lUin: Long = 0L, @ProtoId(0) val lUin: Long = 0L,
@SerialId(1) val lBid: Long = 0L, @ProtoId(1) val lBid: Long = 0L,
@SerialId(2) val cConnType: Byte = 0, @ProtoId(2) val cConnType: Byte = 0,
@SerialId(3) val sOther: String = "", @ProtoId(3) val sOther: String = "",
@SerialId(4) val iStatus: Int = 11, @ProtoId(4) val iStatus: Int = 11,
@SerialId(5) val bOnlinePush: Byte = 0, @ProtoId(5) val bOnlinePush: Byte = 0,
@SerialId(6) val bIsOnline: Byte = 0, @ProtoId(6) val bIsOnline: Byte = 0,
@SerialId(7) val bIsShowOnline: Byte = 0, @ProtoId(7) val bIsShowOnline: Byte = 0,
@SerialId(8) val bKikPC: Byte = 0, @ProtoId(8) val bKikPC: Byte = 0,
@SerialId(9) val bKikWeak: Byte = 0, @ProtoId(9) val bKikWeak: Byte = 0,
@SerialId(10) val timeStamp: Long = 0L, @ProtoId(10) val timeStamp: Long = 0L,
@SerialId(11) val iOSVersion: Long = 0L, @ProtoId(11) val iOSVersion: Long = 0L,
@SerialId(12) val cNetType: Byte = 0, @ProtoId(12) val cNetType: Byte = 0,
@SerialId(13) val sBuildVer: String? = "", @ProtoId(13) val sBuildVer: String? = "",
@SerialId(14) val bRegType: Byte = 0, @ProtoId(14) val bRegType: Byte = 0,
@SerialId(15) val vecDevParam: ByteArray? = null, @ProtoId(15) val vecDevParam: ByteArray? = null,
@SerialId(16) val vecGuid: ByteArray? = null, @ProtoId(16) val vecGuid: ByteArray? = null,
@SerialId(17) val iLocaleID: Int = 2052, @ProtoId(17) val iLocaleID: Int = 2052,
@SerialId(18) val bSlientPush: Byte = 0, @ProtoId(18) val bSlientPush: Byte = 0,
@SerialId(19) val strDevName: String? = null, @ProtoId(19) val strDevName: String? = null,
@SerialId(20) val strDevType: String? = null, @ProtoId(20) val strDevType: String? = null,
@SerialId(21) val strOSVer: String? = null, @ProtoId(21) val strOSVer: String? = null,
@SerialId(22) val bOpenPush: Byte = 1, @ProtoId(22) val bOpenPush: Byte = 1,
@SerialId(23) val iLargeSeq: Long = 0L, @ProtoId(23) val iLargeSeq: Long = 0L,
@SerialId(24) val iLastWatchStartTime: Long = 0L, @ProtoId(24) val iLastWatchStartTime: Long = 0L,
@SerialId(26) val uOldSSOIp: Long = 0L, @ProtoId(26) val uOldSSOIp: Long = 0L,
@SerialId(27) val uNewSSOIp: Long = 0L, @ProtoId(27) val uNewSSOIp: Long = 0L,
@SerialId(28) val sChannelNo: String? = null, @ProtoId(28) val sChannelNo: String? = null,
@SerialId(29) val lCpId: Long = 0L, @ProtoId(29) val lCpId: Long = 0L,
@SerialId(30) val strVendorName: String? = null, @ProtoId(30) val strVendorName: String? = null,
@SerialId(31) val strVendorOSName: String? = null, @ProtoId(31) val strVendorOSName: String? = null,
@SerialId(32) val strIOSIdfa: String? = null, @ProtoId(32) val strIOSIdfa: String? = null,
@SerialId(33) val bytes_0x769_reqbody: ByteArray? = null, @ProtoId(33) val bytes_0x769_reqbody: ByteArray? = null,
@SerialId(34) val bIsSetStatus: Byte = 0, @ProtoId(34) val bIsSetStatus: Byte = 0,
@SerialId(35) val vecServerBuf: ByteArray? = null, @ProtoId(35) val vecServerBuf: ByteArray? = null,
@SerialId(36) val bSetMute: Byte = 0 @ProtoId(36) val bSetMute: Byte = 0
// @SerialId(25) var vecBindUin: ArrayList<*>? = null // ?? 未知泛型 // @SerialId(25) var vecBindUin: ArrayList<*>? = null // ?? 未知泛型
) : JceStruct ) : JceStruct
\ No newline at end of file
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumberType import kotlinx.serialization.protobuf.ProtoNumberType
import kotlinx.serialization.protobuf.ProtoType import kotlinx.serialization.protobuf.ProtoType
import net.mamoe.mirai.qqandroid.io.ProtoBuf import net.mamoe.mirai.qqandroid.io.ProtoBuf
...@@ -22,74 +22,74 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY ...@@ -22,74 +22,74 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
class Oidb0x858 : ProtoBuf { class Oidb0x858 : ProtoBuf {
@Serializable @Serializable
class GoldMsgTipsElem( class GoldMsgTipsElem(
@SerialId(1) val type: Int = 0, @ProtoId(1) val type: Int = 0,
@SerialId(2) val billno: String = "", @ProtoId(2) val billno: String = "",
@SerialId(3) val result: Int = 0, @ProtoId(3) val result: Int = 0,
@SerialId(4) val amount: Int = 0, @ProtoId(4) val amount: Int = 0,
@SerialId(5) val total: Int = 0, @ProtoId(5) val total: Int = 0,
@SerialId(6) val interval: Int = 0, @ProtoId(6) val interval: Int = 0,
@SerialId(7) val finish: Int = 0, @ProtoId(7) val finish: Int = 0,
@SerialId(8) val uin: List<Long>? = null, @ProtoId(8) val uin: List<Long>? = null,
@SerialId(9) val action: Int = 0 @ProtoId(9) val action: Int = 0
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class MessageRecallReminder( class MessageRecallReminder(
@SerialId(1) val uin: Long = 0L, @ProtoId(1) val uin: Long = 0L,
@SerialId(2) val nickname: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(2) val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(3) val recalledMsgList: List<MessageMeta> = listOf(), @ProtoId(3) val recalledMsgList: List<MessageMeta> = listOf(),
@SerialId(4) val reminderContent: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(4) val reminderContent: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(5) val userdef: ByteArray = EMPTY_BYTE_ARRAY @ProtoId(5) val userdef: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf { ) : ProtoBuf {
@Serializable @Serializable
class MessageMeta( class MessageMeta(
@SerialId(1) val seq: Int = 0, @ProtoId(1) val seq: Int = 0,
@SerialId(2) val time: Int = 0, @ProtoId(2) val time: Int = 0,
@SerialId(3) val msgRandom: Int = 0 @ProtoId(3) val msgRandom: Int = 0
) : ProtoBuf ) : ProtoBuf
} }
@Serializable @Serializable
class NotifyMsgBody( class NotifyMsgBody(
@SerialId(1) val optEnumType: Int /* enum */ = 5, @ProtoId(1) val optEnumType: Int /* enum */ = 5,
@SerialId(2) val optUint64MsgTime: Long = 0L, @ProtoId(2) val optUint64MsgTime: Long = 0L,
@SerialId(3) val optUint64MsgExpires: Long = 0L, @ProtoId(3) val optUint64MsgExpires: Long = 0L,
@SerialId(4) val optUint64ConfUin: Long = 0L, @ProtoId(4) val optUint64ConfUin: Long = 0L,
@SerialId(5) val optMsgRedtips: RedGrayTipsInfo? = null, @ProtoId(5) val optMsgRedtips: RedGrayTipsInfo? = null,
@SerialId(6) val optMsgRecallReminder: MessageRecallReminder? = null, @ProtoId(6) val optMsgRecallReminder: MessageRecallReminder? = null,
@SerialId(7) val optMsgObjUpdate: NotifyObjmsgUpdate? = null, @ProtoId(7) val optMsgObjUpdate: NotifyObjmsgUpdate? = null,
// @SerialId(8) val optStcmGameState: ApolloGameStatus.STCMGameMessage? = null, // @SerialId(8) val optStcmGameState: ApolloGameStatus.STCMGameMessage? = null,
// @SerialId(9) val aplloMsgPush: ApolloPushMsgInfo.STPushMsgElem? = null, // @SerialId(9) val aplloMsgPush: ApolloPushMsgInfo.STPushMsgElem? = null,
@SerialId(10) val optMsgGoldtips: GoldMsgTipsElem? = null @ProtoId(10) val optMsgGoldtips: GoldMsgTipsElem? = null
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class NotifyObjmsgUpdate( class NotifyObjmsgUpdate(
@SerialId(1) val objmsgId: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(1) val objmsgId: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(2) val updateType: Int = 0, @ProtoId(2) val updateType: Int = 0,
@SerialId(3) val extMsg: ByteArray = EMPTY_BYTE_ARRAY @ProtoId(3) val extMsg: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class RedGrayTipsInfo( class RedGrayTipsInfo(
@SerialId(1) val optUint32ShowLastest: Int = 0, @ProtoId(1) val optUint32ShowLastest: Int = 0,
@SerialId(2) val senderUin: Long = 0L, @ProtoId(2) val senderUin: Long = 0L,
@SerialId(3) val receiverUin: Long = 0L, @ProtoId(3) val receiverUin: Long = 0L,
@SerialId(4) val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(4) val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(5) val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(5) val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(6) val authkey: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(6) val authkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoType(ProtoNumberType.SIGNED) @SerialId(7) val sint32Msgtype: Int = 0, @ProtoType(ProtoNumberType.SIGNED) @ProtoId(7) val sint32Msgtype: Int = 0,
@SerialId(8) val luckyFlag: Int = 0, @ProtoId(8) val luckyFlag: Int = 0,
@SerialId(9) val hideFlag: Int = 0, @ProtoId(9) val hideFlag: Int = 0,
@SerialId(10) val pcBody: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(10) val pcBody: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(11) val icon: Int = 0, @ProtoId(11) val icon: Int = 0,
@SerialId(12) val luckyUin: Long = 0L, @ProtoId(12) val luckyUin: Long = 0L,
@SerialId(13) val time: Int = 0, @ProtoId(13) val time: Int = 0,
@SerialId(14) val random: Int = 0, @ProtoId(14) val random: Int = 0,
@SerialId(15) val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(15) val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(16) val idiom: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(16) val idiom: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(17) val idiomSeq: Int = 0, @ProtoId(17) val idiomSeq: Int = 0,
@SerialId(18) val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(18) val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(19) val jumpurl: ByteArray = EMPTY_BYTE_ARRAY @ProtoId(19) val jumpurl: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf ) : ProtoBuf
} }
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.ProtoBuf import net.mamoe.mirai.qqandroid.io.ProtoBuf
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
...@@ -18,40 +18,40 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY ...@@ -18,40 +18,40 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
internal class Vec0xd50 : ProtoBuf { internal class Vec0xd50 : ProtoBuf {
@Serializable @Serializable
internal class ExtSnsFrdData( internal class ExtSnsFrdData(
@SerialId(1) val frdUin: Long = 0L, @ProtoId(1) val frdUin: Long = 0L,
@SerialId(91001) val musicSwitch: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(91001) val musicSwitch: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(101001) val mutualmarkAlienation: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(101001) val mutualmarkAlienation: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(141001) val mutualmarkScore: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(141001) val mutualmarkScore: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(151001) val ksingSwitch: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(151001) val ksingSwitch: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(181001) val lbsShare: ByteArray = EMPTY_BYTE_ARRAY @ProtoId(181001) val lbsShare: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
internal class RspBody( internal class RspBody(
@SerialId(1) val msgUpdateData: List<Vec0xd50.ExtSnsFrdData>? = null, @ProtoId(1) val msgUpdateData: List<Vec0xd50.ExtSnsFrdData>? = null,
@SerialId(11) val over: Int = 0, @ProtoId(11) val over: Int = 0,
@SerialId(12) val nextStart: Int = 0, @ProtoId(12) val nextStart: Int = 0,
@SerialId(13) val uint64UnfinishedUins: List<Long>? = null @ProtoId(13) val uint64UnfinishedUins: List<Long>? = null
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
internal class ReqBody( internal class ReqBody(
@SerialId(1) val appid: Long = 0L, @ProtoId(1) val appid: Long = 0L,
@SerialId(2) val maxPkgSize: Int = 0, @ProtoId(2) val maxPkgSize: Int = 0,
@SerialId(3) val startTime: Int = 0, @ProtoId(3) val startTime: Int = 0,
@SerialId(4) val startIndex: Int = 0, @ProtoId(4) val startIndex: Int = 0,
@SerialId(5) val reqNum: Int = 0, @ProtoId(5) val reqNum: Int = 0,
@SerialId(6) val uinList: List<Long>? = null, @ProtoId(6) val uinList: List<Long>? = null,
@SerialId(91001) val reqMusicSwitch: Int = 0, @ProtoId(91001) val reqMusicSwitch: Int = 0,
@SerialId(101001) val reqMutualmarkAlienation: Int = 0, @ProtoId(101001) val reqMutualmarkAlienation: Int = 0,
@SerialId(141001) val reqMutualmarkScore: Int = 0, @ProtoId(141001) val reqMutualmarkScore: Int = 0,
@SerialId(151001) val reqKsingSwitch: Int = 0, @ProtoId(151001) val reqKsingSwitch: Int = 0,
@SerialId(181001) val reqMutualmarkLbsshare: Int = 0 @ProtoId(181001) val reqMutualmarkLbsshare: Int = 0
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
internal class KSingRelationInfo( internal class KSingRelationInfo(
@SerialId(1) val flag: Int = 0 @ProtoId(1) val flag: Int = 0
) : ProtoBuf ) : ProtoBuf
} }
...@@ -59,21 +59,21 @@ internal class Vec0xd50 : ProtoBuf { ...@@ -59,21 +59,21 @@ internal class Vec0xd50 : ProtoBuf {
internal class Vec0xd6b : ProtoBuf { internal class Vec0xd6b : ProtoBuf {
@Serializable @Serializable
internal class ReqBody( internal class ReqBody(
@SerialId(1) val maxPkgSize: Int = 0, @ProtoId(1) val maxPkgSize: Int = 0,
@SerialId(2) val startTime: Int = 0, @ProtoId(2) val startTime: Int = 0,
@SerialId(11) val uinList: List<Long>? = null @ProtoId(11) val uinList: List<Long>? = null
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
internal class RspBody( internal class RspBody(
@SerialId(11) val msgMutualmarkData: List<Vec0xd6b.MutualMarkData>? = null, @ProtoId(11) val msgMutualmarkData: List<Vec0xd6b.MutualMarkData>? = null,
@SerialId(12) val uint64UnfinishedUins: List<Long>? = null @ProtoId(12) val uint64UnfinishedUins: List<Long>? = null
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
internal class MutualMarkData( internal class MutualMarkData(
@SerialId(1) val frdUin: Long = 0L, @ProtoId(1) val frdUin: Long = 0L,
@SerialId(2) val result: Int = 0 @ProtoId(2) val result: Int = 0
// @SerialId(11) val mutualmarkInfo: List<Mutualmark.MutualMark>? = null // @SerialId(11) val mutualmarkInfo: List<Mutualmark.MutualMark>? = null
) : ProtoBuf ) : ProtoBuf
} }
...@@ -82,26 +82,26 @@ internal class Vec0xd6b : ProtoBuf { ...@@ -82,26 +82,26 @@ internal class Vec0xd6b : ProtoBuf {
internal class Mutualmark : ProtoBuf { internal class Mutualmark : ProtoBuf {
@Serializable @Serializable
internal class MutualmarkInfo( internal class MutualmarkInfo(
@SerialId(1) val lastActionTime: Long = 0L, @ProtoId(1) val lastActionTime: Long = 0L,
@SerialId(2) val level: Int = 0, @ProtoId(2) val level: Int = 0,
@SerialId(3) val lastChangeTime: Long = 0L, @ProtoId(3) val lastChangeTime: Long = 0L,
@SerialId(4) val continueDays: Int = 0, @ProtoId(4) val continueDays: Int = 0,
@SerialId(5) val wildcardWording: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(5) val wildcardWording: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(6) val notifyTime: Long = 0L, @ProtoId(6) val notifyTime: Long = 0L,
@SerialId(7) val iconStatus: Long = 0L, @ProtoId(7) val iconStatus: Long = 0L,
@SerialId(8) val iconStatusEndTime: Long = 0L, @ProtoId(8) val iconStatusEndTime: Long = 0L,
@SerialId(9) val closeFlag: Int = 0, @ProtoId(9) val closeFlag: Int = 0,
@SerialId(10) val resourceInfo: ByteArray = EMPTY_BYTE_ARRAY @ProtoId(10) val resourceInfo: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
internal class ResourceInfo17( internal class ResourceInfo17(
@SerialId(1) val dynamicUrl: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(1) val dynamicUrl: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(2) val staticUrl: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(2) val staticUrl: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(3) val cartoonUrl: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(3) val cartoonUrl: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(4) val cartoonMd5: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(4) val cartoonMd5: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(5) val playCartoon: Int = 0, @ProtoId(5) val playCartoon: Int = 0,
@SerialId(6) val word: ByteArray = EMPTY_BYTE_ARRAY @ProtoId(6) val word: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf ) : ProtoBuf
} }
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.ProtoBuf import net.mamoe.mirai.qqandroid.io.ProtoBuf
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
...@@ -18,51 +18,51 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY ...@@ -18,51 +18,51 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
class GroupLabel : ProtoBuf { class GroupLabel : ProtoBuf {
@Serializable @Serializable
class Label( class Label(
@SerialId(1) val name: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(1) val name: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(2) val enumType: Int /* enum */ = 1, @ProtoId(2) val enumType: Int /* enum */ = 1,
@SerialId(3) val textColor: GroupLabel.Color? = null, @ProtoId(3) val textColor: GroupLabel.Color? = null,
@SerialId(4) val edgingColor: GroupLabel.Color? = null, @ProtoId(4) val edgingColor: GroupLabel.Color? = null,
@SerialId(5) val labelAttr: Int = 0, @ProtoId(5) val labelAttr: Int = 0,
@SerialId(6) val labelType: Int = 0 @ProtoId(6) val labelType: Int = 0
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class RspBody( class RspBody(
@SerialId(1) val error: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(1) val error: ByteArray = EMPTY_BYTE_ARRAY,
@SerialId(2) val groupInfo: List<GroupLabel.GroupInfo>? = null @ProtoId(2) val groupInfo: List<GroupLabel.GroupInfo>? = null
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class SourceId( class SourceId(
@SerialId(1) val sourceId: Int = 0 @ProtoId(1) val sourceId: Int = 0
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class GroupInfo( class GroupInfo(
@SerialId(1) val int32Result: Int = 0, @ProtoId(1) val int32Result: Int = 0,
@SerialId(2) val groupCode: Long = 0L, @ProtoId(2) val groupCode: Long = 0L,
@SerialId(3) val groupLabel: List<GroupLabel.Label>? = null @ProtoId(3) val groupLabel: List<GroupLabel.Label>? = null
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class Color( class Color(
@SerialId(1) val r: Int = 0, @ProtoId(1) val r: Int = 0,
@SerialId(2) val g: Int = 0, @ProtoId(2) val g: Int = 0,
@SerialId(3) val b: Int = 0 @ProtoId(3) val b: Int = 0
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class ReqBody( class ReqBody(
@SerialId(1) val sourceId: GroupLabel.SourceId? = null, @ProtoId(1) val sourceId: GroupLabel.SourceId? = null,
@SerialId(2) val uinInfo: GroupLabel.UinInfo? = null, @ProtoId(2) val uinInfo: GroupLabel.UinInfo? = null,
@SerialId(3) val numberLabel: Int = 5, @ProtoId(3) val numberLabel: Int = 5,
@SerialId(4) val groupCode: List<Long>? = null, @ProtoId(4) val groupCode: List<Long>? = null,
@SerialId(5) val labelStyle: Int = 0 @ProtoId(5) val labelStyle: Int = 0
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class UinInfo( class UinInfo(
@SerialId(1) val int64Longitude: Long = 0L, @ProtoId(1) val int64Longitude: Long = 0L,
@SerialId(2) val int64Latitude: Long = 0L @ProtoId(2) val int64Latitude: Long = 0L
) : ProtoBuf ) : ProtoBuf
} }
\ No newline at end of file
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.ProtoBuf import net.mamoe.mirai.qqandroid.io.ProtoBuf
import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.currentTimeSeconds
...@@ -20,22 +20,22 @@ interface ImgReq : ProtoBuf ...@@ -20,22 +20,22 @@ interface ImgReq : ProtoBuf
@Serializable @Serializable
internal class GetImgUrlReq( internal class GetImgUrlReq(
@SerialId(1) val srcUni: Int, @ProtoId(1) val srcUni: Int,
@SerialId(2) val dstUni: Int, @ProtoId(2) val dstUni: Int,
@SerialId(3) val fileResID: String,//UUID @ProtoId(3) val fileResID: String,//UUID
/** /**
* UUID例子: 没有找到 * UUID例子: 没有找到
*/ */
@SerialId(4) val urlFlag: Int = 1, @ProtoId(4) val urlFlag: Int = 1,
//5 unknown, 好像没用 //5 unknown, 好像没用
@SerialId(6) val urlType: Int = 4, @ProtoId(6) val urlType: Int = 4,
@SerialId(7) val requestTerm: Int = 5,//确定 @ProtoId(7) val requestTerm: Int = 5,//确定
@SerialId(8) val requestPlatformType: Int = 9,//确定 @ProtoId(8) val requestPlatformType: Int = 9,//确定
@SerialId(9) val srcFileType: Int = 1,//2=ftn,1=picplatform,255 @ProtoId(9) val srcFileType: Int = 1,//2=ftn,1=picplatform,255
@SerialId(10) val innerIP: Int = 0,//确定 @ProtoId(10) val innerIP: Int = 0,//确定
@SerialId(11) val addressBook: Int = 0,//[ChatType.internalID]== 1006为1[为CONTACT时] 我觉得发0没问题 @ProtoId(11) val addressBook: Int = 0,//[ChatType.internalID]== 1006为1[为CONTACT时] 我觉得发0没问题
@SerialId(12) val buType: Int = 1,//确定 @ProtoId(12) val buType: Int = 1,//确定
@SerialId(13) val buildVer: String = "8.2.7.4410",//版本号 @ProtoId(13) val buildVer: String = "8.2.7.4410",//版本号
@SerialId(14) val timestamp: Int = currentTimeSeconds.toInt(),//(pic_up_timestamp) @ProtoId(14) val timestamp: Int = currentTimeSeconds.toInt(),//(pic_up_timestamp)
@SerialId(15) val requestTransferType: Int = 1 @ProtoId(15) val requestTransferType: Int = 1
) : ImgReq ) : ImgReq
\ No newline at end of file
...@@ -9,30 +9,30 @@ ...@@ -9,30 +9,30 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.ProtoBuf import net.mamoe.mirai.qqandroid.io.ProtoBuf
class MsgRevokeUserDef : ProtoBuf { class MsgRevokeUserDef : ProtoBuf {
@Serializable @Serializable
class MsgInfoUserDef( class MsgInfoUserDef(
@SerialId(1) val longMessageFlag: Int = 0, @ProtoId(1) val longMessageFlag: Int = 0,
@SerialId(2) val longMsgInfo: List<MsgInfoDef>? = null, @ProtoId(2) val longMsgInfo: List<MsgInfoDef>? = null,
@SerialId(3) val fileUuid: List<String> = listOf() @ProtoId(3) val fileUuid: List<String> = listOf()
) : ProtoBuf { ) : ProtoBuf {
@Serializable @Serializable
class MsgInfoDef( class MsgInfoDef(
@SerialId(1) val msgSeq: Int = 0, @ProtoId(1) val msgSeq: Int = 0,
@SerialId(2) val longMsgId: Int = 0, @ProtoId(2) val longMsgId: Int = 0,
@SerialId(3) val longMsgNum: Int = 0, @ProtoId(3) val longMsgNum: Int = 0,
@SerialId(4) val longMsgIndex: Int = 0 @ProtoId(4) val longMsgIndex: Int = 0
) : ProtoBuf ) : ProtoBuf
} }
@Serializable @Serializable
class UinTypeUserDef( class UinTypeUserDef(
@SerialId(1) val fromUinType: Int = 0, @ProtoId(1) val fromUinType: Int = 0,
@SerialId(2) val fromGroupCode: Long = 0L, @ProtoId(2) val fromGroupCode: Long = 0L,
@SerialId(3) val fileUuid: List<String> = listOf() @ProtoId(3) val fileUuid: List<String> = listOf()
) : ProtoBuf ) : ProtoBuf
} }
\ No newline at end of file
...@@ -7,89 +7,89 @@ ...@@ -7,89 +7,89 @@
* https://github.com/mamoe/mirai/blob/master/LICENSE * https://github.com/mamoe/mirai/blob/master/LICENSE
*/ */
package net.mamoe.mirai.qqandroid.network.protocol.packet.oidb.oidb0x769 package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.SerialId
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import net.mamoe.mirai.qqandroid.io.ProtoBuf import net.mamoe.mirai.qqandroid.io.ProtoBuf
class Oidb0x769 { class Oidb0x769 {
@Serializable @Serializable
class RequestBody( class RequestBody(
@SerialId(1) val rpt_config_list: List<ConfigSeq> @ProtoId(1) val rpt_config_list: List<ConfigSeq>
// @SerialId(2) val msg_device_info: DeviceInfo, // @SerialId(2) val msg_device_info: DeviceInfo,
// @SerialId(3) val str_info: String = "", // @SerialId(3) val str_info: String = "",
// @SerialId(4) val province: String, // @SerialId(4) val province: String,
// @SerialId(5) val city: String, // @SerialId(5) val city: String,
// @SerialId(6) val req_debug_msg: Int = 0, // @SerialId(6) val req_debug_msg: Int = 0,
// @SerialId(101) val query_uin_package_usage_req: QueryUinPackageUsageReq // @SerialId(101) val query_uin_package_usage_req: QueryUinPackageUsageReq
) : ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class QueryUinPackageUsageReq( class QueryUinPackageUsageReq(
@SerialId(1) val type: Int, @ProtoId(1) val type: Int,
@SerialId(2) val uinFileSize: Long = 0 @ProtoId(2) val uinFileSize: Long = 0
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class ConfigSeq( class ConfigSeq(
@SerialId(1) val type: Int, // uint @ProtoId(1) val type: Int, // uint
@SerialId(2) val version: Int // uint @ProtoId(2) val version: Int // uint
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class DeviceInfo( class DeviceInfo(
@SerialId(1) val brand: String, @ProtoId(1) val brand: String,
@SerialId(2) val model: String @ProtoId(2) val model: String
//@SerialId(3) val os: OS, //@SerialId(3) val os: OS,
//@SerialId(4) val cpu: CPU, //@SerialId(4) val cpu: CPU,
//@SerialId(5) val memory: Memory, //@SerialId(5) val memory: Memory,
//@SerialId(6) val storage: Storage, //@SerialId(6) val storage: Storage,
//@SerialId(7) val screen: Screen, //@SerialId(7) val screen: Screen,
//@SerialId(8) val camera: Camera //@SerialId(8) val camera: Camera
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class OS( class OS(
@SerialId(1) val type: Int = 1, @ProtoId(1) val type: Int = 1,
@SerialId(2) val version: String, @ProtoId(2) val version: String,
@SerialId(3) val sdk: String, @ProtoId(3) val sdk: String,
@SerialId(4) val kernel: String, @ProtoId(4) val kernel: String,
@SerialId(5) val rom: String @ProtoId(5) val rom: String
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class Camera( class Camera(
@SerialId(1) val primary: Long, @ProtoId(1) val primary: Long,
@SerialId(2) val secondary: Long, @ProtoId(2) val secondary: Long,
@SerialId(3) val flag: Boolean @ProtoId(3) val flag: Boolean
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class CPU( class CPU(
@SerialId(1) val model: String, @ProtoId(1) val model: String,
@SerialId(2) val frequency: Int, @ProtoId(2) val frequency: Int,
@SerialId(3) val cores: Int @ProtoId(3) val cores: Int
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class Memory( class Memory(
@SerialId(1) val total: Int, @ProtoId(1) val total: Int,
@SerialId(2) val process: Int @ProtoId(2) val process: Int
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class Screen( class Screen(
@SerialId(1) val model: String, @ProtoId(1) val model: String,
@SerialId(2) val width: Int, @ProtoId(2) val width: Int,
@SerialId(3) val height: Int, @ProtoId(3) val height: Int,
@SerialId(4) val dpi: Int, @ProtoId(4) val dpi: Int,
@SerialId(5) val multiTouch: Boolean @ProtoId(5) val multiTouch: Boolean
): ProtoBuf ) : ProtoBuf
@Serializable @Serializable
class Storage( class Storage(
@SerialId(1) val builtin: Int, @ProtoId(1) val builtin: Int,
@SerialId(2) val external: Int @ProtoId(2) val external: Int
): ProtoBuf ) : ProtoBuf
} }
\ No newline at end of file
...@@ -20,7 +20,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.ImgStore ...@@ -20,7 +20,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.ImgStore
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.LongConn import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.LongConn
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvc
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.OnlinePush import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.OnlinePush
import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.ConfigPushSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.login.ConfigPushSvc
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.Heartbeat import net.mamoe.mirai.qqandroid.network.protocol.packet.login.Heartbeat
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc
......
...@@ -42,7 +42,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc ...@@ -42,7 +42,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SyncCookie import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SyncCookie
import net.mamoe.mirai.qqandroid.network.protocol.packet.* import net.mamoe.mirai.qqandroid.network.protocol.packet.*
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl
import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList
import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.utils.MiraiExperimentalAPI
import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.MiraiInternalAPI
import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.currentTimeSeconds
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment