diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/ImagePacket.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/ImagePacket.kt deleted file mode 100644 index 5805e7b1c..000000000 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/ImagePacket.kt +++ /dev/null @@ -1,111 +0,0 @@ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat - -import kotlinx.io.core.ByteReadPacket -import kotlinx.serialization.SerialId -import kotlinx.serialization.Serializable -import net.mamoe.mirai.data.Packet -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory -import net.mamoe.mirai.utils.currentTimeSeconds - -@UseExperimental(ExperimentalUnsignedTypes::class) -internal object ImagePacket : PacketFactory<ImagePacket.RequestImgUrlResponse>() { - init { - this._commandName = "LongConn.OffPicDown" - } - - - sealed class RequestImgUrlResponse : Packet { - object Success : RequestImgUrlResponse() - } - - - private fun createCmd0x325Packet(req: ImgReq, networkType: Int = 5): Cmd0x352Packet { - if (req is UploadImgReq) - return Cmd0x352Packet( - 1, - req, - null, - null, - networkType - ) - if (req is GetImgUrlReq) - return Cmd0x352Packet( - 2, - null, - req, - null, - networkType - ) - error("Unknown ImgReq") - } - - - @Serializable - internal class Cmd0x352Packet( - @SerialId(1) val subCommand: Int, //2是GetImgUrlReq 1是UploadImgReq - @SerialId(2) val uploadImgReq: UploadImgReq? = null,// optional - @SerialId(3) val getImgUrlReq: GetImgUrlReq? = null,// optional - @SerialId(4) val deleteImgReq: String? = "",// optional (没有做也不准备做, 没用) - @SerialId(10) val networkType: Int = 5// 数据网络=5 - ) - - interface ImgReq - @Serializable - class UploadImgReq( - @SerialId(1) val srcUni: Int, - @SerialId(2) val dstUni: Int, - @SerialId(3) val fileId: Int, - @SerialId(4) val fileMd5: ByteArray, - @SerialId(5) val fileSize: Int, - @SerialId(6) val fileName: String, - @SerialId(7) val srcTerm: Int, - @SerialId(8) val platformType: Int, - @SerialId(9) val innerIP: Int = 0, - @SerialId(10) val addressBook: Int = 0,//chatType == 1006为1 我觉得发0没问题 - @SerialId(11) val retry: Int, - @SerialId(12) val buType: Int, - @SerialId(13) val imgOriginal: Int,//是否为原图 - @SerialId(14) val imgWidth: Int, - @SerialId(15) val imgHeight: Int, - @SerialId(16) val imgType: Int, - @SerialId(17) val buildVer: String = "8.2.0.1296",//版本号 - @SerialId(18) val fileIndex: ByteArray, - @SerialId(19) val fileStoreDays: Int, - @SerialId(20) val stepFlag: Int, - @SerialId(21) val rejectTryFast: Int,//bool - @SerialId(22) val srvUpload: Int, - @SerialId(23) val transferUrl: ByteArray - ) : ImgReq - - @Serializable - class GetImgUrlReq( - @SerialId(1) val srcUni: Int, - @SerialId(2) val dstUni: Int, - @SerialId(3) val fileResID: String,//UUID - /** - * UUID例子: 没有找到 - */ - @SerialId(4) val urlFlag: Int = 1, - //5 unknown, 好像没用 - @SerialId(6) val urlType: Int = 4, - @SerialId(7) val requestTerm: Int = 5,//确定 - @SerialId(8) val requestPlatformType: Int = 9,//确定 - @SerialId(9) val srcFileType: Int = 1,//2=ftn,1=picplatform,255 - @SerialId(10) val innerIP: Int = 0,//确定 - @SerialId(11) val addressBook: Int = 0,//[ChatType.internalID]== 1006为1[为CONTACT时] 我觉得发0没问题 - @SerialId(12) val buType: Int = 1,//确定 - @SerialId(13) val buildVer: String = "8.2.0.1296",//版本号 - @SerialId(14) val timestamp: Int = currentTimeSeconds.toInt(),//(pic_up_timestamp) - @SerialId(15) val requestTransferType: Int = 1 - ) : ImgReq - - - override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): RequestImgUrlResponse { - 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/chat/image/Cmd0x325Packet.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/Cmd0x325Packet.kt new file mode 100644 index 000000000..f70e0c4e9 --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/Cmd0x325Packet.kt @@ -0,0 +1,36 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image + +import kotlinx.serialization.SerialId +import kotlinx.serialization.Serializable + +@Serializable +internal class Cmd0x325Packet( + @SerialId(1) val subCommand: Int, //2是GetImgUrlReq 1是UploadImgReq + @SerialId(2) val uploadImgReq: UploadImgReq? = null,// optional + @SerialId(3) val getImgUrlReq: GetImgUrlReq? = null,// optional + @SerialId(4) val deleteImgReq: String? = "",// optional (没有做也不准备做, 没用) + @SerialId(10) val networkType: Int = 5// 数据网络=5 +) { + companion object { + fun createByImageRequest(req: ImgReq, networkType: Int = 5): Cmd0x325Packet { + if (req is UploadImgReq) + return Cmd0x325Packet( + 1, + req, + null, + null, + networkType + ) + if (req is GetImgUrlReq) + return Cmd0x325Packet( + 2, + null, + req, + null, + networkType + ) + 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/image/ImageDownPacket.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageDownPacket.kt new file mode 100644 index 000000000..904e95e85 --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageDownPacket.kt @@ -0,0 +1,25 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image + +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 ImageDownPacket : PacketFactory<ImageDownPacket.ImageDownPacketResponse>() { + + init { + this._commandName = "LongConn.OffPicDown" + } + + + override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): ImageDownPacketResponse { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + + sealed class ImageDownPacketResponse : Packet { + object Success : ImageDownPacketResponse() + } + + +} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageRequest.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageRequest.kt new file mode 100644 index 000000000..c8313340f --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageRequest.kt @@ -0,0 +1,56 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image + +import kotlinx.serialization.SerialId +import kotlinx.serialization.Serializable +import net.mamoe.mirai.utils.currentTimeSeconds + +interface ImgReq + +@Serializable +internal class UploadImgReq( + @SerialId(1) val srcUni: Int, + @SerialId(2) val dstUni: Int, + @SerialId(3) val fileId: Int, + @SerialId(4) val fileMd5: ByteArray, + @SerialId(5) val fileSize: Int, + @SerialId(6) val fileName: String, + @SerialId(7) val srcTerm: Int, + @SerialId(8) val platformType: Int, + @SerialId(9) val innerIP: Int = 0, + @SerialId(10) val addressBook: Int = 0,//chatType == 1006为1 我觉得发0没问题 + @SerialId(11) val retry: Int, + @SerialId(12) val buType: Int, + @SerialId(13) val imgOriginal: Int,//是否为原图 + @SerialId(14) val imgWidth: Int, + @SerialId(15) val imgHeight: Int, + @SerialId(16) val imgType: Int, + @SerialId(17) val buildVer: String = "8.2.0.1296",//版本号 + @SerialId(18) val fileIndex: ByteArray, + @SerialId(19) val fileStoreDays: Int, + @SerialId(20) val stepFlag: Int, + @SerialId(21) val rejectTryFast: Int,//bool + @SerialId(22) val srvUpload: Int, + @SerialId(23) val transferUrl: ByteArray +) : ImgReq + +@Serializable +internal class GetImgUrlReq( + @SerialId(1) val srcUni: Int, + @SerialId(2) val dstUni: Int, + @SerialId(3) val fileResID: String,//UUID + /** + * UUID例子: 没有找到 + */ + @SerialId(4) val urlFlag: Int = 1, + //5 unknown, 好像没用 + @SerialId(6) val urlType: Int = 4, + @SerialId(7) val requestTerm: Int = 5,//确定 + @SerialId(8) val requestPlatformType: Int = 9,//确定 + @SerialId(9) val srcFileType: Int = 1,//2=ftn,1=picplatform,255 + @SerialId(10) val innerIP: Int = 0,//确定 + @SerialId(11) val addressBook: Int = 0,//[ChatType.internalID]== 1006为1[为CONTACT时] 我觉得发0没问题 + @SerialId(12) val buType: Int = 1,//确定 + @SerialId(13) val buildVer: String = "8.2.0.1296",//版本号 + @SerialId(14) val timestamp: Int = currentTimeSeconds.toInt(),//(pic_up_timestamp) + @SerialId(15) val requestTransferType: Int = 1 +) : ImgReq \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageUpPacket.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageUpPacket.kt new file mode 100644 index 000000000..63de044ab --- /dev/null +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageUpPacket.kt @@ -0,0 +1,25 @@ +package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image + +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 ImageUpPacket : PacketFactory<ImageUpPacket.ImageUpPacketResponse>() { + + init { + this._commandName = "LongConn.OffPicUp" + } + + + override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): ImageUpPacketResponse { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + + sealed class ImageUpPacketResponse : Packet { + object Success : ImageUpPacketResponse() + } + + +} \ No newline at end of file