Procházet zdrojové kódy

Rename protocol.tim to protocol.timpc

Him188 před 6 roky
rodič
revize
0c6e09361d
87 změnil soubory, kde provedl 325 přidání a 238 odebrání
  1. 1 1
      mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/BotSession.kt
  2. 1 1
      mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/protocol/timpc/NetworkDispatcherAndroid.kt
  3. 1 1
      mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/protocol/timpc/packet/event/MessagePacket.kt
  4. 18 1
      mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsAndroid.kt
  5. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt
  6. 4 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotAddFriend.kt
  7. 4 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotHelper.kt
  8. 7 7
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt
  9. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt
  10. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/QQ.kt
  11. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/internal/ContactImpl.kt
  12. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt
  13. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/PacketEvents.kt
  14. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/Image.kt
  15. 1 0
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageType.kt
  16. 46 19
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/internal/MessageDataInternal.kt
  17. 7 7
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/BotNetworkHandler.kt
  18. 10 10
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/BotSession.kt
  19. 0 11
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/EventPacket.kt
  20. 0 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MuteEvent.kt
  21. 5 5
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/TIMBotNetworkHandler.kt
  22. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/TIMProtocol.kt
  23. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/handler/DataPacketSocketAdapter.kt
  24. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/handler/TemporaryPacketHandler.kt
  25. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/Annotations.kt
  26. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/Decrypters.kt
  27. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/OutgoingPacket.kt
  28. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/Packet.kt
  29. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/PacketFactory.kt
  30. 5 5
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/PacketId.kt
  31. 4 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/AddContact.kt
  32. 4 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/FriendImage.kt
  33. 4 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/FriendList.kt
  34. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/GradeInfo.kt
  35. 25 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/GroupImage.kt
  36. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/GroupPacket.kt
  37. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/HttpAPIAccessor.kt
  38. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/Image.kt
  39. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/Profile.kt
  40. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/Remark.kt
  41. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/RequestFriendListPacket.kt
  42. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/SendFriendMessagePacket.kt
  43. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/AndroidOnlineStatusChange.kt
  44. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/ConnectionOccupiedEvent.kt
  45. 11 0
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/EventPacket.kt
  46. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/EventPacketFactory.kt
  47. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/FriendAddRequestEventPacket.kt
  48. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/FriendConversationIniliaze.kt
  49. 4 4
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/FriendOnlineStatusChanged.kt
  50. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/GroupFileUpload.kt
  51. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/Ignored.kt
  52. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberJoin.kt
  53. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberKickEvent.kt
  54. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberMute.kt
  55. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberPermission.kt
  56. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MessageEvent.kt
  57. 4 0
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MuteEvent.kt
  58. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/PhoneMessage.kt
  59. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/QuitGroup.kt
  60. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/Unknown.kt
  61. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Captcha.kt
  62. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/ChangeOnlineStatusPacket.kt
  63. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Heartbeat.kt
  64. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/LoginResult.kt
  65. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/PasswordSubmission.kt
  66. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/SKey.kt
  67. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Session.kt
  68. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Touch.kt
  69. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/BotConfiguration.kt
  70. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/ExternalImage.kt
  71. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/OnlineStatus.kt
  72. 3 0
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/PlatformUtils.kt
  73. 2 2
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/TEA.kt
  74. 1 1
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/HexComparator.kt
  75. 3 3
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/OutputUtils.kt
  76. 1 1
      mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/SendImageUtilsJvm.kt
  77. 1 1
      mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/BotSessionJvm.kt
  78. 1 1
      mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/protocol/timpc/NetworkDispatcherJvm.kt
  79. 1 1
      mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/protocol/timpc/packet/event/MessagePacket.kt
  80. 19 5
      mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsJvm.kt
  81. 1 1
      mirai-core/src/jvmTest/kotlin/mirai/test/BadQQFilter.kt
  82. 8 8
      mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDebugger.kt
  83. 3 3
      mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDecoder.kt
  84. 1 1
      mirai-debug/src/main/kotlin/test/JaptTest.kt
  85. 3 3
      mirai-demos/mirai-demo-1/src/main/java/demo/subscribe/SubscribeSamples.kt
  86. 2 2
      mirai-demos/mirai-demo-android/src/main/kotlin/net/mamoe/mirai/demo/MiraiService.kt
  87. 10 7
      mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/Main.kt

+ 1 - 1
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/BotSession.kt

@@ -8,7 +8,7 @@ import kotlinx.io.core.use
 import kotlinx.io.streams.inputStream
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.message.Image
-import net.mamoe.mirai.network.protocol.tim.packet.SessionKey
+import net.mamoe.mirai.network.protocol.timpc.packet.SessionKey
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import java.io.InputStream
 

+ 1 - 1
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/protocol/tim/NetworkDispatcherAndroid.kt → mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/protocol/timpc/NetworkDispatcherAndroid.kt

@@ -1,4 +1,4 @@
-package net.mamoe.mirai.network.protocol.tim
+package net.mamoe.mirai.network.protocol.timpc
 
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.asCoroutineDispatcher

+ 1 - 1
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/protocol/tim/packet/event/MessagePacket.kt → mirai-core/src/androidMain/kotlin/net/mamoe/mirai/network/protocol/timpc/packet/event/MessagePacket.kt

@@ -1,4 +1,4 @@
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import net.mamoe.mirai.contact.Contact
 import net.mamoe.mirai.contact.QQ

+ 18 - 1
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsAndroid.kt

@@ -3,12 +3,16 @@ package net.mamoe.mirai.utils
 import io.ktor.client.HttpClient
 import io.ktor.client.engine.cio.CIO
 import io.ktor.util.KtorExperimentalAPI
+import kotlinx.io.core.IoBuffer
+import kotlinx.io.core.readBytes
+import java.io.ByteArrayOutputStream
 import java.io.DataInput
 import java.io.EOFException
 import java.io.InputStream
 import java.net.InetAddress
 import java.security.MessageDigest
 import java.util.zip.CRC32
+import java.util.zip.Inflater
 
 
 /**
@@ -74,4 +78,17 @@ actual fun crc32(key: ByteArray): Int = CRC32().apply { update(key) }.value.toIn
 /**
  * hostname 解析 ipv4
  */
-actual fun solveIpAddress(hostname: String): String = InetAddress.getByName(hostname).hostAddress
+actual fun solveIpAddress(hostname: String): String = InetAddress.getByName(hostname).hostAddress
+
+actual fun ByteArray.unzip(): ByteArray {
+    val inflater = Inflater()
+    inflater.reset()
+    val output = ByteArrayOutputStream()
+    inflater.setInput(this)
+    val buffer = ByteArray(128)
+    while (!inflater.finished()) {
+        output.write(buffer, 0, inflater.inflate(buffer))
+    }
+    inflater.end()
+    return output.toByteArray()
+}

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt

@@ -7,7 +7,7 @@ import kotlinx.coroutines.Deferred
 import kotlinx.coroutines.Job
 import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
 import net.mamoe.mirai.utils.BotConfiguration
 import net.mamoe.mirai.utils.GroupNotFoundException
 import net.mamoe.mirai.utils.MiraiLogger

+ 4 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotAddFriend.kt

@@ -4,10 +4,10 @@
 
 package net.mamoe.mirai
 
-import net.mamoe.mirai.network.protocol.tim.packet.action.AddFriendPacket
-import net.mamoe.mirai.network.protocol.tim.packet.action.CanAddFriendPacket
-import net.mamoe.mirai.network.protocol.tim.packet.action.CanAddFriendResponse
-import net.mamoe.mirai.network.protocol.tim.packet.action.RequestFriendAdditionKeyPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.action.AddFriendPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.action.CanAddFriendPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.action.CanAddFriendResponse
+import net.mamoe.mirai.network.protocol.timpc.packet.action.RequestFriendAdditionKeyPacket
 import net.mamoe.mirai.network.sessionKey
 import kotlin.contracts.ExperimentalContracts
 import kotlin.jvm.JvmMultifileClass

+ 4 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotHelper.kt

@@ -7,10 +7,10 @@ package net.mamoe.mirai
 import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.network.BotNetworkHandler
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.TIMBotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.OutgoingPacket
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
-import net.mamoe.mirai.network.protocol.tim.packet.login.requireSuccess
+import net.mamoe.mirai.network.protocol.timpc.TIMBotNetworkHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.OutgoingPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.login.requireSuccess
 import net.mamoe.mirai.utils.BotConfiguration
 import net.mamoe.mirai.utils.internal.PositiveNumbers
 import net.mamoe.mirai.utils.internal.coerceAtLeastOrFail

+ 7 - 7
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt

@@ -7,13 +7,13 @@ import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.contact.internal.Group
 import net.mamoe.mirai.contact.internal.QQ
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMBotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.KnownPacketId
-import net.mamoe.mirai.network.protocol.tim.packet.action.GroupNotFound
-import net.mamoe.mirai.network.protocol.tim.packet.action.GroupPacket
-import net.mamoe.mirai.network.protocol.tim.packet.action.RawGroupInfo
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
-import net.mamoe.mirai.network.protocol.tim.packet.login.isSuccess
+import net.mamoe.mirai.network.protocol.timpc.TIMBotNetworkHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.KnownPacketId
+import net.mamoe.mirai.network.protocol.timpc.packet.action.GroupNotFound
+import net.mamoe.mirai.network.protocol.timpc.packet.action.GroupPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.action.RawGroupInfo
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.login.isSuccess
 import net.mamoe.mirai.network.qqAccount
 import net.mamoe.mirai.utils.*
 import net.mamoe.mirai.utils.internal.PositiveNumbers

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt

@@ -3,8 +3,8 @@
 package net.mamoe.mirai.contact
 
 import kotlinx.coroutines.CoroutineScope
-import net.mamoe.mirai.network.protocol.tim.packet.action.GroupInfo
-import net.mamoe.mirai.network.protocol.tim.packet.action.QuitGroupResponse
+import net.mamoe.mirai.network.protocol.timpc.packet.action.GroupInfo
+import net.mamoe.mirai.network.protocol.timpc.packet.action.QuitGroupResponse
 import net.mamoe.mirai.utils.MiraiExperimentalAPI
 import net.mamoe.mirai.utils.internal.PositiveNumbers
 import net.mamoe.mirai.utils.internal.coerceAtLeastOrFail

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/QQ.kt

@@ -6,9 +6,9 @@ import kotlinx.coroutines.CoroutineScope
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.contact.data.Profile
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.packet.action.AvatarLink
-import net.mamoe.mirai.network.protocol.tim.packet.action.FriendNameRemark
-import net.mamoe.mirai.network.protocol.tim.packet.action.PreviousNameList
+import net.mamoe.mirai.network.protocol.timpc.packet.action.AvatarLink
+import net.mamoe.mirai.network.protocol.timpc.packet.action.FriendNameRemark
+import net.mamoe.mirai.network.protocol.timpc.packet.action.PreviousNameList
 import net.mamoe.mirai.utils.MiraiExperimentalAPI
 
 /**

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/internal/ContactImpl.kt

@@ -10,9 +10,9 @@ import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.contact.data.Profile
 import net.mamoe.mirai.event.subscribeAlways
 import net.mamoe.mirai.message.MessageChain
-import net.mamoe.mirai.network.protocol.tim.packet.action.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.MemberJoinEventPacket
-import net.mamoe.mirai.network.protocol.tim.packet.event.MemberQuitEvent
+import net.mamoe.mirai.network.protocol.timpc.packet.action.*
+import net.mamoe.mirai.network.protocol.timpc.packet.event.MemberJoinEventPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.event.MemberQuitEvent
 import net.mamoe.mirai.network.qqAccount
 import net.mamoe.mirai.network.sessionKey
 import net.mamoe.mirai.qqAccount

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt

@@ -8,9 +8,9 @@ import net.mamoe.mirai.contact.isOperator
 import net.mamoe.mirai.contact.isOwner
 import net.mamoe.mirai.message.Message
 import net.mamoe.mirai.message.any
-import net.mamoe.mirai.network.protocol.tim.packet.event.FriendMessage
-import net.mamoe.mirai.network.protocol.tim.packet.event.GroupMessage
-import net.mamoe.mirai.network.protocol.tim.packet.event.MessagePacket
+import net.mamoe.mirai.network.protocol.timpc.packet.event.FriendMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.event.GroupMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.event.MessagePacket
 import kotlin.contracts.ExperimentalContracts
 import kotlin.contracts.InvocationKind
 import kotlin.contracts.contract

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/PacketEvents.kt

@@ -2,8 +2,8 @@ package net.mamoe.mirai.event.events
 
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.event.Cancellable
-import net.mamoe.mirai.network.protocol.tim.packet.OutgoingPacket
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.OutgoingPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
 
 /* Abstract */
 

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/Image.kt

@@ -4,7 +4,7 @@ package net.mamoe.mirai.message
 
 import net.mamoe.mirai.contact.Contact
 import net.mamoe.mirai.contact.sendMessage
-import net.mamoe.mirai.network.protocol.tim.packet.action.FriendImagePacket
+import net.mamoe.mirai.network.protocol.timpc.packet.action.FriendImagePacket
 import net.mamoe.mirai.utils.ExternalImage
 
 

+ 1 - 0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageType.kt

@@ -16,6 +16,7 @@ enum class MessageType(val value: UByte) {
      * [ImageId.value] 长度为 37 的图片
      */
     IMAGE_37(0x06u),
+    XML(0x19u)
     ;
 
 

+ 46 - 19
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/internal/MessageDataInternal.kt

@@ -5,6 +5,7 @@ package net.mamoe.mirai.message.internal
 import kotlinx.io.core.*
 import net.mamoe.mirai.message.*
 import net.mamoe.mirai.utils.io.*
+import net.mamoe.mirai.utils.unzip
 
 internal fun IoBuffer.parseMessageFace(): Face {
     //00  01  AF  0B  00  08  00  01  00  04  52  CC  F5  D0  FF  00  02  14  F0
@@ -53,6 +54,40 @@ internal fun IoBuffer.parseMessageImage0x06(): Image {
     //return Image("{${readString(length)}}.$suffix")
 }
 
+internal fun IoBuffer.parseMessageXML(): XMLMessage {
+    discardExact(1)
+    discardExact(readUShort())
+    discardExact(1)
+    /*
+  网易云音乐分享
+19
+[01 BB]
+  01
+  [01 B8] 9A 03 B4 03 0A B1 03 01 78 9C 6D 51 CB 8A 14 31 14 FD 95 21 2B 85 A6 AA D2 F5 EA 34 88 B8 92 41 DD F9 58 88 34 31 95 2A E3 74 25 21 8F 19 A6 87 DE 54 83 C8 AC 1C 74 E1 6E 36 EE 86 01 C1 8D D3 20 7E 4C B5 0E FE 85 37 D5 4E 83 28 59 84 7B EE C9 B9 E7 9E 9C 20 AA 35 9A 22 A6 DA C8 71 C9 B8 74 91 75 C6 33 D7 DA 06 8D 00 97 B5 68 D0 F4 04 51 EF 94 15 0B 8E A6 D0 E6 D0 71 A2 85 02 E7 65 91 25 05 C1 78 84 6A 65 8E A8 A9 6E 18 4E 1D 70 09 DA A4 CE D3 62 5C BE 24 78 4C 38 AD 6B 56 67 39 CB 26 39 A1 09 61 A4 A4 30 C6 1D 6B D0 42 52 99 96 CE D1 72 84 2A 6E 19 00 BF CE BF 6C AE DE 01 A1 E5 8E 06 17 AD B7 82 0D 76 60 BE 0A EA D0 A4 B2 32 4A 54 33 7D D0 CC 24 0D AE 06 54 EB D9 56 17 0F 85 00 63 38 49 32 92 27 93 7C 37 E1 81 58 78 49 F7 EE ED C7 9B AF 97 D7 1F 3E F7 AB 4F 7D 77 D5 77 DF FB EE 02 44 5E FB 56 3F 31 73 20 BE 72 4E 4F E3 78 30 10 E1 22 8D 20 B2 D8 2A D9 C4 38 9D A4 24 4B 49 3A 8E EF 7A CB 8D A8 EE A4 E3 2C 29 8B 34 29 83 F5 F0 E2 2F 0D 6F E6 11 93 71 4E 26 CF 16 4F 1F 03 45 1B 7E 28 F8 D1 BF 8C E3 E6 7E FA B0 05 86 55 DE 30 FE C8 36 FB B0 05 4A 76 C8 4C B0 9B 14 FE 00 7E 98 14 32 A5 F0 6F E8 FA DB D9 CF 8F EF 37 EB B3 5D 94 4E B8 79 88 A8 EF 2E FB 6E DD AF 4E FB D5 F9 DE 2D A6 0E B9 B9 8D 96 CB E0 46 B5 DA 01 E3 F9 8F B7 6F 36 EB 8B 17 FF 65 8E 10 5C C1 4B 14 0E 0E F5 76 85 ED 17 2D 7F 03 2B B9 D5 0A
+01
+[00 8B]
+  01
+  [00 88] 5B E5 88 86 E4 BA AB 5D E3 82 AD E3 82 BA E3 83 8A E3 83 9F 20 28 63 6F 76 65 72 29 0A 4B 69 7A 75 6E 61 20 41 49 2F E4 B8 AD E7 94 B0 E3 83 A4 E3 82 B9 E3 82 BF E3 82 AB 0A 68 74 74 70 3A 2F 2F 6D 75 73 69 63 2E 31 36 33 2E 63 6F 6D 2F 73 6F 6E 67 2F 31 33 38 33 39 34 33 39 33 32 2F 3F 75 73 65 72 69 64 3D 33 32 34 30 37 36 33 30 37 0A E6 9D A5 E8 87 AA 3A 20 E7 BD 91 E6 98 93 E4 BA 91 E9 9F B3 E4 B9 90
+
+19
+[00 41]
+  01
+  [00 3E] AA 02 3B 08 00 50 03 60 00 68 00 88 01 00 9A 01 2D 08 09 20 CB 50 78 00 A0 01 81 DC 01 C8 01 00 F0 01 00 F8 01 00 90 02 00 98 03 00 A0 03 20 B0 03 00 C0 03 00 D0 03 00 E8 03 00 90 04 00
+0E
+[00 0E]
+  01
+  [00 04] 00 00 00 09
+0A
+[00 04] 00 00 00 00
+12
+[00 25]
+05 00 04 00 00 00 03 08 00 04 00 00 00 04 01 00
+[09] 48 69 6D 31 38 38 6D 6F 65
+03 00 01 01 04 00 04 00 00 00 08
+
+   */
+    return XMLMessage(readBytes().unzip().encodeToString())
+}
 
 //00 1B filenameLength
 // 43 37 46 29 5F 34 32 34 4E 33 55 37 7B 4C 47 36 7D 4F 25 5A 51 58 51 2E 6A 70 67 get suffix
@@ -147,23 +182,7 @@ internal fun ByteReadPacket.readMessage(): Message? {
              *
              * 19 00 42 01 00 3F AA 02 3C 08 00 50 03 60 00 68 00 88 01 00 9A 01 2E 08 09 20 BF 50 78 00 A0 01 81 DC 01 C8 01 00 F0 01 00 F8 01 00 90 02 00 98 03 00 A0 03 20 B0 03 00 C0 03 00 D0 03 00 E8 03 00 90 04 80 0B 0E 00 0E 01 00 04 00 00 00 09 0A 00 04 00 00 00 00 12 00 25 05 00 04 00 00 00 01 08 00 04 00 00 00 01 01 00 09 48 69 6D 31 38 38 6D 6F 65 03 00 01 04 04 00 04 00 00 00 10
              */
-
-
-            0x14 -> {//长文本的后一部分? 总长度 0x0175=373, body长度=0x016B=363
-//14  01  75  01  01  6B  01  78  9C  CD  92  4D  4F  C2  30  18  C7  EF  7E  8A  A6  1E  C9  64  83  B1  CD  A4  1B  E1  4D  19  8A  C6  20  11  BC  98  39  3A  A8  EE  C5  74  1D  20  37  6E  46  0F  C6  83  37  8D  31  D1  83  89  51  4F  DE  F8  38  4C  3E  86  1D  62  3C  7A  D4  7F  93  26  7D  DA  7F  9F  A7  BF  A7  28  3F  F4  5C  D0  C7  34  24  81  AF  43  69  45  84  00  FB  76  D0  21  7E  57  87  11  73  04  0D  E6  8D  25  C0  85  BC  B0  0B  0E  29  C1  8E  0E  57  FE  B9  20  F0  0E  1C  E2  E2  2D  CB  C3  3A  D4  A4  D5  72  A9  58  58  13  24  AD  A4  0A  B2  22  E5  84  42  59  91  85  9C  52  C8  2A  62  46  14  65  59  FD  76  34  C8  88  3B  38  05  CB  66  73  24  7D  82  07  F5  C8  65  A4  1E  76  21  70  5C  8B  73  C9  42  10  62  DA  27  36  36  CB  7C  95  4B  CC  14  87  A4  A3  C3  AA  B4  CE  82  63  B5  46  54  8D  A4  EC  F6  20  F4  68  D8  21  C5  ED  7D  B5  B9  A1  0D  46  4D  33  E5  8F  86  47  AD  DA  6E  73  2F  D3  3B  91  2B  55  53  A9  6C  B6  76  AC  96  DD  20  38  DB  36  21  30  00  22  0C  7B  C0  B5  4E  83  88  F1  9E  40  1E  61  84  B9  D8  00  7F  CD  F5  37  01  94  5E  54  0A  50  8F  1A  28  CD  A7  45  F1  C0  0E  DC  80  EA  70  59  13  93  C1  1F  15  DF  3D  7E  DC  5C  48  F1  ED  FD  6C  F2  3C  BD  BC  8A  DF  CF  E2  F1  2B  F8  B9  03  A5  13  10  06  0A  83  88  DA  18  F8  F3  66  CE  C6  E7  D3  87  A7  D9  CB  DB  74  72  0D  79  86  AF  CD  E4  30  FF  9F  C6  27  23  A2  C1  36  02  00  04  00  00  00  23  0E  00  07  01  00  04  00  00  00  09
-
-                discardExact(1)
-                val value = readUShortLVByteArray()
-                println(value.size)
-                println("0x14的未知压缩的data=" + value.toUHexString())
-                //todo 未知压缩算法
-
-                return PlainText("")
-
-                //后面似乎还有一节?
-                //discardExact(7)//02  00  04  00  00  00  23
-                //return PlainText(value.toUHexString())
-            }
+            0x14 -> sectionData.parseMessageXML()
 
             0x0E -> {
                 null
@@ -180,7 +199,7 @@ internal fun ByteReadPacket.readMessage(): Message? {
     }
 }
 
-fun ByteReadPacket.readMessageChain(): MessageChain {
+internal fun ByteReadPacket.readMessageChain(): MessageChain {
     val chain = MessageChain()
     do {
         if (this.remaining == 0L) {
@@ -190,10 +209,18 @@ fun ByteReadPacket.readMessageChain(): MessageChain {
     return chain
 }
 
-fun MessageChain.toPacket(): ByteReadPacket = buildPacket {
+internal fun MessageChain.toPacket(): ByteReadPacket = buildPacket {
     [email protected] { message ->
         writePacket(with(message) {
             when (this) {
+                is XMLMessage -> buildPacket {
+                    writeUByte(MessageType.XML.value)
+                    writeShortLVPacket {
+                        writeByte(0x01)
+                        //writeUByte()
+                    }
+                }
+
                 is Face -> buildPacket {
                     writeUByte(MessageType.FACE.value)
 

+ 7 - 7
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/BotNetworkHandler.kt

@@ -4,13 +4,13 @@ import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CompletableJob
 import kotlinx.coroutines.CoroutineScope
 import net.mamoe.mirai.Bot
-import net.mamoe.mirai.network.protocol.tim.handler.DataPacketSocketAdapter
-import net.mamoe.mirai.network.protocol.tim.handler.TemporaryPacketHandler
-import net.mamoe.mirai.network.protocol.tim.packet.OutgoingPacket
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
-import net.mamoe.mirai.network.protocol.tim.packet.login.HeartbeatPacket
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
-import net.mamoe.mirai.network.protocol.tim.packet.login.RequestSKeyPacket
+import net.mamoe.mirai.network.protocol.timpc.handler.DataPacketSocketAdapter
+import net.mamoe.mirai.network.protocol.timpc.handler.TemporaryPacketHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.OutgoingPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.login.HeartbeatPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.login.RequestSKeyPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.io.PlatformDatagramChannel
 

+ 10 - 10
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/BotSession.kt

@@ -12,13 +12,13 @@ import net.mamoe.mirai.contact.QQ
 import net.mamoe.mirai.message.Image
 import net.mamoe.mirai.message.ImageId0x03
 import net.mamoe.mirai.message.ImageId0x06
-import net.mamoe.mirai.network.protocol.tim.TIMBotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.handler.DataPacketSocketAdapter
-import net.mamoe.mirai.network.protocol.tim.handler.TemporaryPacketHandler
-import net.mamoe.mirai.network.protocol.tim.packet.OutgoingPacket
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
-import net.mamoe.mirai.network.protocol.tim.packet.SessionKey
-import net.mamoe.mirai.network.protocol.tim.packet.action.*
+import net.mamoe.mirai.network.protocol.timpc.TIMBotNetworkHandler
+import net.mamoe.mirai.network.protocol.timpc.handler.DataPacketSocketAdapter
+import net.mamoe.mirai.network.protocol.timpc.handler.TemporaryPacketHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.OutgoingPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.SessionKey
+import net.mamoe.mirai.network.protocol.timpc.packet.action.*
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.assertUnreachable
 import net.mamoe.mirai.utils.getGTK
@@ -120,7 +120,7 @@ abstract class BotSessionBase internal constructor(
      *  }
      * }
      * ```
-     * @sample net.mamoe.mirai.network.protocol.tim.packet.action.uploadImage
+     * @sample net.mamoe.mirai.network.protocol.timpc.packet.action.uploadImage
      *
      * @param checkSequence 是否筛选 `sequenceId`, 即是否筛选发出的包对应的返回包.
      * @param P 期待的包
@@ -191,8 +191,8 @@ internal inline val Bot.sessionKey: SessionKey get() = this.session.sessionKey
 internal suspend inline fun BotSession.sendPacket(packet: OutgoingPacket) = this.bot.sendPacket(packet)
 
 
-suspend inline fun BotSession.getQQ(@PositiveNumbers number: Long): QQ = this.bot.getQQ(number)
-suspend inline fun BotSession.getQQ(number: UInt): QQ = this.bot.getQQ(number)
+inline fun BotSession.getQQ(@PositiveNumbers number: Long): QQ = this.bot.getQQ(number)
+inline fun BotSession.getQQ(number: UInt): QQ = this.bot.getQQ(number)
 
 suspend inline fun BotSession.getGroup(id: UInt): Group = this.bot.getGroup(id)
 suspend inline fun BotSession.getGroup(@PositiveNumbers id: Long): Group = this.bot.getGroup(id)

+ 0 - 11
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/EventPacket.kt

@@ -1,11 +0,0 @@
-package net.mamoe.mirai.network.protocol.tim.packet.event
-
-import net.mamoe.mirai.event.Subscribable
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
-
-/**
- * 事件包. 可被监听.
- *
- * @see Subscribable
- */
-interface EventPacket : Subscribable, Packet

+ 0 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MuteEvent.kt

@@ -1,4 +0,0 @@
-package net.mamoe.mirai.network.protocol.tim.packet.event
-
-
-

+ 5 - 5
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/TIMBotNetworkHandler.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/TIMBotNetworkHandler.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim
+package net.mamoe.mirai.network.protocol.timpc
 
 import kotlinx.coroutines.*
 import kotlinx.coroutines.sync.Mutex
@@ -15,10 +15,10 @@ import net.mamoe.mirai.event.events.PacketSentEvent
 import net.mamoe.mirai.event.events.ServerPacketReceivedEvent
 import net.mamoe.mirai.network.BotNetworkHandler
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.handler.DataPacketSocketAdapter
-import net.mamoe.mirai.network.protocol.tim.handler.TemporaryPacketHandler
-import net.mamoe.mirai.network.protocol.tim.packet.*
-import net.mamoe.mirai.network.protocol.tim.packet.login.*
+import net.mamoe.mirai.network.protocol.timpc.handler.DataPacketSocketAdapter
+import net.mamoe.mirai.network.protocol.timpc.handler.TemporaryPacketHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.login.*
 import net.mamoe.mirai.qqAccount
 import net.mamoe.mirai.utils.OnlineStatus
 import net.mamoe.mirai.utils.currentBotConfiguration

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/TIMProtocol.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/TIMProtocol.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim
+package net.mamoe.mirai.network.protocol.timpc
 
 import net.mamoe.mirai.utils.io.hexToBytes
 import net.mamoe.mirai.utils.solveIpAddress

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/handler/DataPacketSocketAdapter.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/handler/DataPacketSocketAdapter.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.handler
+package net.mamoe.mirai.network.protocol.timpc.handler
 
 import kotlinx.io.core.Closeable
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.event.events.ServerPacketReceivedEvent
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.TIMBotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.OutgoingPacket
+import net.mamoe.mirai.network.protocol.timpc.TIMBotNetworkHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.OutgoingPacket
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.io.PlatformDatagramChannel
 

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/handler/TemporaryPacketHandler.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/handler/TemporaryPacketHandler.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.handler
+package net.mamoe.mirai.network.protocol.timpc.handler
 
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.withContext
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.packet.OutgoingPacket
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.OutgoingPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
 import net.mamoe.mirai.network.sendPacket
 import kotlin.coroutines.CoroutineContext
 import kotlin.reflect.KClass

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/Annotations.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/Annotations.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "unused")
 
-package net.mamoe.mirai.network.protocol.tim.packet
+package net.mamoe.mirai.network.protocol.timpc.packet
 
 /**
  * 包的最后一次修改时间, 和分析时使用的 TIM 版本

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/Decrypters.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/Decrypters.kt

@@ -1,4 +1,4 @@
-package net.mamoe.mirai.network.protocol.tim.packet
+package net.mamoe.mirai.network.protocol.timpc.packet
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.IoBuffer

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/OutgoingPacket.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/OutgoingPacket.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS", "unused", "MemberVisibilityCanBePrivate")
 
-package net.mamoe.mirai.network.protocol.tim.packet
+package net.mamoe.mirai.network.protocol.timpc.packet
 
 import kotlinx.io.core.*
 import kotlinx.serialization.SerializationStrategy
 import kotlinx.serialization.protobuf.ProtoBuf
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
 import net.mamoe.mirai.utils.io.encryptAndWrite
 import net.mamoe.mirai.utils.io.hexToBytes
 import net.mamoe.mirai.utils.io.writeQQ

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/Packet.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/Packet.kt

@@ -1,4 +1,4 @@
-package net.mamoe.mirai.network.protocol.tim.packet
+package net.mamoe.mirai.network.protocol.timpc.packet
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.readBytes

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/PacketFactory.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/PacketFactory.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet
+package net.mamoe.mirai.network.protocol.timpc.packet
 
 import kotlinx.atomicfu.atomic
 import kotlinx.io.core.ByteReadPacket

+ 5 - 5
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/PacketId.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/PacketId.kt

@@ -1,11 +1,11 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet
+package net.mamoe.mirai.network.protocol.timpc.packet
 
-import net.mamoe.mirai.network.protocol.tim.packet.action.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.EventPacketFactory
-import net.mamoe.mirai.network.protocol.tim.packet.event.FriendOnlineStatusChangedPacket
-import net.mamoe.mirai.network.protocol.tim.packet.login.*
+import net.mamoe.mirai.network.protocol.timpc.packet.action.*
+import net.mamoe.mirai.network.protocol.timpc.packet.event.EventPacketFactory
+import net.mamoe.mirai.network.protocol.timpc.packet.event.FriendOnlineStatusChangedPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.login.*
 import net.mamoe.mirai.utils.io.toUHexString
 
 

+ 4 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/AddContact.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/AddContact.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.contact.QQ
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.EventPacket
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.event.EventPacket
 import net.mamoe.mirai.utils.io.*
 import net.mamoe.mirai.withSession
 

+ 4 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/FriendImage.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/FriendImage.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.charsets.Charsets
 import kotlinx.io.core.*
@@ -9,9 +9,9 @@ import net.mamoe.mirai.message.ImageId
 import net.mamoe.mirai.message.ImageId0x06
 import net.mamoe.mirai.message.requireLength
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.EventPacket
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.event.EventPacket
 import net.mamoe.mirai.network.qqAccount
 import net.mamoe.mirai.qqAccount
 import net.mamoe.mirai.utils.ExternalImage

+ 4 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/FriendList.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/FriendList.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.ByteReadPacket
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
-import net.mamoe.mirai.network.protocol.tim.packet.PacketId
-import net.mamoe.mirai.network.protocol.tim.packet.SessionPacketFactory
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketId
+import net.mamoe.mirai.network.protocol.timpc.packet.SessionPacketFactory
 
 
 // 0001

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/GradeInfo.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/GradeInfo.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.writeFully
 import kotlinx.io.core.writeUByte
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.encryptAndWrite
 import net.mamoe.mirai.utils.io.writeQQ
 

+ 25 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/GroupImage.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/GroupImage.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS", "RUNTIME_ANNOTATION_NOT_SUPPORTED")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.coroutines.withContext
 import kotlinx.io.core.ByteReadPacket
@@ -14,8 +14,8 @@ import net.mamoe.mirai.message.ImageId
 import net.mamoe.mirai.message.ImageId0x03
 import net.mamoe.mirai.message.requireLength
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.EventPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.event.EventPacket
 import net.mamoe.mirai.qqAccount
 import net.mamoe.mirai.utils.ExternalImage
 import net.mamoe.mirai.utils.Http
@@ -113,6 +113,28 @@ internal object GroupImagePacket : SessionPacketFactory<GroupImageResponse>() {
         @SerialId(2) val unknown4: Byte = 1,
         @SerialId(3) var body: Body
     ) {
+        /*
+        "uint64_group_code"
+"uint64_dst_uin"
+"uint64_fileid"
+"bytes_file_md5"
+"uint32_url_flag"
+"uint32_url_type"
+"uint32_req_term"
+"uint32_req_platform_type"
+"uint32_inner_ip"
+"uint32_bu_type"
+"bytes_build_ver"
+"uint64_file_id"
+"uint64_file_size"
+"uint32_original_pic"
+"uint32_retry_req"
+"uint32_file_height"
+"uint32_file_width"
+"uint32_pic_type"
+"uint32_pic_up_timestamp"
+"uint32_req_transfer_type"
+         */
         @Serializable
         internal class Body(
             @SerialId(1) val group: Int,

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/GroupPacket.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/GroupPacket.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.contact.*
@@ -8,8 +8,8 @@ import net.mamoe.mirai.contact.internal.Member
 import net.mamoe.mirai.message.MessageChain
 import net.mamoe.mirai.message.internal.toPacket
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.LockFreeLinkedList
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.io.*

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/HttpAPIAccessor.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/HttpAPIAccessor.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import io.ktor.client.HttpClient
 import io.ktor.client.request.post

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/Image.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/Image.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS", "unused", "NO_REFLECTION_IN_CLASS_PATH")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import io.ktor.client.request.get
 import kotlinx.io.core.ByteReadPacket

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/Profile.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/Profile.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import io.ktor.util.date.GMTDate
 import kotlinx.io.core.*
 import net.mamoe.mirai.contact.data.Gender
 import net.mamoe.mirai.contact.data.Profile
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.*
 
 inline class AvatarLink(val value: String) : Packet

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/Remark.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/Remark.kt

@@ -1,11 +1,11 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.readUShortLVString
 import net.mamoe.mirai.utils.io.writeQQ
 import net.mamoe.mirai.utils.io.writeZero

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/RequestFriendListPacket.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/RequestFriendListPacket.kt

@@ -1,11 +1,11 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.ByteReadPacket
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.writeZero
 
 class FriendList : Packet

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/SendFriendMessagePacket.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/action/SendFriendMessagePacket.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.action
+package net.mamoe.mirai.network.protocol.timpc.packet.action
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.message.MessageChain
 import net.mamoe.mirai.message.internal.toPacket
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.*
 import net.mamoe.mirai.utils.md5
 

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/AndroidOnlineStatusChange.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/AndroidOnlineStatusChange.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import net.mamoe.mirai.Bot
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
-import net.mamoe.mirai.network.protocol.tim.packet.PacketVersion
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketVersion
 import net.mamoe.mirai.utils.io.readBoolean
 
 

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/ConnectionOccupiedEvent.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/ConnectionOccupiedEvent.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact

+ 11 - 0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/EventPacket.kt

@@ -0,0 +1,11 @@
+package net.mamoe.mirai.network.protocol.timpc.packet.event
+
+import net.mamoe.mirai.event.Subscribable
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
+
+/**
+ * 事件包. 可被监听.
+ *
+ * @see Subscribable
+ */
+interface EventPacket : Subscribable, Packet

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/EventPacketFactory.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/EventPacketFactory.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMBotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMBotNetworkHandler
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.network.sessionKey
 import net.mamoe.mirai.qqAccount
 import net.mamoe.mirai.utils.io.readIoBuffer

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendAddRequestEventPacket.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/FriendAddRequestEventPacket.kt

@@ -1,14 +1,14 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import kotlinx.io.core.readUInt
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.contact.QQ
-import net.mamoe.mirai.network.protocol.tim.packet.PacketVersion
-import net.mamoe.mirai.network.protocol.tim.packet.action.AddFriendPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketVersion
+import net.mamoe.mirai.network.protocol.timpc.packet.action.AddFriendPacket
 import net.mamoe.mirai.network.qqAccount
 import net.mamoe.mirai.utils.io.readUShortLVString
 import net.mamoe.mirai.withSession

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendConversationIniliaze.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/FriendConversationIniliaze.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import kotlinx.io.core.readUInt
 import net.mamoe.mirai.Bot
-import net.mamoe.mirai.network.protocol.tim.packet.PacketVersion
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketVersion
 
 
 data class FriendConversationInitialize(

+ 4 - 4
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendOnlineStatusChanged.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/FriendOnlineStatusChanged.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS", "JoinDeclarationAndAssignment")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
@@ -8,9 +8,9 @@ import kotlinx.io.core.readUByte
 import kotlinx.io.core.readUInt
 import net.mamoe.mirai.contact.QQ
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.packet.KnownPacketId
-import net.mamoe.mirai.network.protocol.tim.packet.PacketId
-import net.mamoe.mirai.network.protocol.tim.packet.SessionPacketFactory
+import net.mamoe.mirai.network.protocol.timpc.packet.KnownPacketId
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketId
+import net.mamoe.mirai.network.protocol.timpc.packet.SessionPacketFactory
 import net.mamoe.mirai.utils.OnlineStatus
 
 data class FriendStatusChanged(

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/GroupFileUpload.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/GroupFileUpload.kt

@@ -1,10 +1,10 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import net.mamoe.mirai.Bot
-import net.mamoe.mirai.network.protocol.tim.packet.PacketVersion
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketVersion
 import net.mamoe.mirai.utils.io.debugPrint
 
 

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/Ignored.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/Ignored.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import net.mamoe.mirai.Bot

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberJoin.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberJoin.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE", "unused", "MemberVisibilityCanBePrivate")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.readUInt

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberKickEvent.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberKickEvent.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.readUByte

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberMute.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberMute.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE", "MemberVisibilityCanBePrivate")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberPermission.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MemberPermission.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import kotlinx.io.core.readUInt
 import net.mamoe.mirai.Bot
-import net.mamoe.mirai.network.protocol.tim.packet.Packet
-import net.mamoe.mirai.network.protocol.tim.packet.PacketVersion
+import net.mamoe.mirai.network.protocol.timpc.packet.Packet
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketVersion
 
 
 data class MemberPermissionChangePacket(

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MessageEvent.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MessageEvent.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.String
@@ -13,8 +13,8 @@ import net.mamoe.mirai.event.events.BotEvent
 import net.mamoe.mirai.getGroup
 import net.mamoe.mirai.message.*
 import net.mamoe.mirai.message.internal.readMessageChain
-import net.mamoe.mirai.network.protocol.tim.packet.PacketVersion
-import net.mamoe.mirai.network.protocol.tim.packet.action.ImageLink
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketVersion
+import net.mamoe.mirai.network.protocol.timpc.packet.action.ImageLink
 import net.mamoe.mirai.utils.*
 import net.mamoe.mirai.utils.internal.coerceAtLeastOrFail
 import net.mamoe.mirai.utils.io.printTLVMap

+ 4 - 0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/MuteEvent.kt

@@ -0,0 +1,4 @@
+package net.mamoe.mirai.network.protocol.timpc.packet.event
+
+
+

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/PhoneMessage.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/PhoneMessage.kt

@@ -1,4 +1,4 @@
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 //来自 Android 给我的电脑发消息, ID 0211, 内容 "你好"
 //00 00 00 20 00 05 00 02 00 01 00 06 00 04 00 01 01 01 00 09 00 06 03 E9 20 02 EB 94 00 0A 00 04 01 00 00 00 00 00 00 54 00 00 00 3E 08 12 1A 16 08 07 10 91 04 18 DD F1 92 B7 07 20 83 76 38 DD F1 92 B7 07 50 04 42 21 08 DD F1 92 B7 07 10 DD F1 92 B7 07 18 01 20 07 40 DC 85 96 EE 05 48 DC 85 96 EE 05 50 FA AF FD 18 52 15 0A 06 08 01 10 00 50 01 1A 0B 08 E9 07 10 94 D7 8B 80 02 50 02 08 04 12 1D 08 E9 07 10 94 D7 8B 80 02 18 01 20 01 28 DD F1 92 B7 07 30 DD F1 92 B7 07 48 02 50 01 32 1B 08 80 80 B8 AE B5 02 10 01 18 00 20 01 2A 0C 0A 0A 08 01 12 06 E4 BD A0 E5 A5 BD

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/QuitGroup.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/QuitGroup.kt

@@ -1,4 +1,4 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/Unknown.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/event/Unknown.kt

@@ -1,6 +1,6 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.readBytes

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Captcha.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Captcha.kt

@@ -1,11 +1,11 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS", "unused", "FunctionName")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.*
 
 internal object CaptchaKey : DecrypterByteArray, DecrypterType<CaptchaKey> {

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/ChangeOnlineStatusPacket.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/ChangeOnlineStatusPacket.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.writeFully
 import kotlinx.io.core.writeUByte
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.OnlineStatus
 import net.mamoe.mirai.utils.io.encryptAndWrite
 import net.mamoe.mirai.utils.io.writeHex

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Heartbeat.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Heartbeat.kt

@@ -1,13 +1,13 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.writeFully
 import net.mamoe.mirai.event.Subscribable
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.encryptAndWrite
 import net.mamoe.mirai.utils.io.writeHex
 import net.mamoe.mirai.utils.io.writeQQ

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/LoginResult.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/LoginResult.kt

@@ -1,8 +1,8 @@
 @file:Suppress("unused")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult.SUCCESS
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult.SUCCESS
 import net.mamoe.mirai.utils.BotConfiguration
 import kotlin.contracts.ExperimentalContracts
 import kotlin.contracts.InvocationKind

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/PasswordSubmission.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/PasswordSubmission.kt

@@ -1,12 +1,12 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.contact.data.Gender
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.MiraiLogger
 import net.mamoe.mirai.utils.decryptBy
 import net.mamoe.mirai.utils.encryptBy

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/SKey.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/SKey.kt

@@ -1,14 +1,14 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE", "FunctionName")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import kotlinx.io.core.writeFully
 import net.mamoe.mirai.network.BotNetworkHandler
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.network.qqAccount
 import net.mamoe.mirai.utils.io.*
 import net.mamoe.mirai.withSession

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Session.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Session.kt

@@ -1,11 +1,11 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.*
 import net.mamoe.mirai.utils.localIpAddress
 

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Touch.kt → mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/timpc/packet/login/Touch.kt

@@ -1,14 +1,14 @@
 @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE")
 
-package net.mamoe.mirai.network.protocol.tim.packet.login
+package net.mamoe.mirai.network.protocol.timpc.packet.login
 
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import kotlinx.io.core.readBytes
 import kotlinx.io.core.writeFully
 import net.mamoe.mirai.network.BotNetworkHandler
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.*
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.*
 import net.mamoe.mirai.utils.io.*
 
 internal object TouchKey : DecrypterByteArray, DecrypterType<TouchKey> {

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/BotConfiguration.kt

@@ -2,7 +2,7 @@ package net.mamoe.mirai.utils
 
 import kotlinx.io.core.IoBuffer
 import net.mamoe.mirai.Bot
-import net.mamoe.mirai.network.protocol.tim.packet.login.TouchPacket.TouchResponse
+import net.mamoe.mirai.network.protocol.timpc.packet.login.TouchPacket.TouchResponse
 import kotlin.coroutines.CoroutineContext
 import kotlin.coroutines.coroutineContext
 import kotlin.jvm.JvmStatic

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/ExternalImage.kt

@@ -8,7 +8,7 @@ import net.mamoe.mirai.contact.Contact
 import net.mamoe.mirai.contact.Group
 import net.mamoe.mirai.contact.QQ
 import net.mamoe.mirai.message.*
-import net.mamoe.mirai.network.protocol.tim.packet.action.uploadImage
+import net.mamoe.mirai.network.protocol.timpc.packet.action.uploadImage
 import net.mamoe.mirai.utils.io.toUHexString
 
 @Suppress("FunctionName")

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/OnlineStatus.kt

@@ -8,7 +8,7 @@ import kotlin.jvm.JvmStatic
  * QQ 在线状态
  *
  * @author Him188moe
- * @see net.mamoe.mirai.network.protocol.tim.packet.login.ChangeOnlineStatusPacket
+ * @see net.mamoe.mirai.network.protocol.timpc.packet.login.ChangeOnlineStatusPacket
  */
 inline class OnlineStatus(
     inline val id: UByte

+ 3 - 0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/PlatformUtils.kt

@@ -4,6 +4,7 @@ package net.mamoe.mirai.utils
 
 import io.ktor.client.HttpClient
 import io.ktor.util.date.GMTDate
+import kotlinx.io.core.IoBuffer
 
 /**
  * 时间戳
@@ -21,6 +22,8 @@ expect val deviceName: String
  */
 expect fun crc32(key: ByteArray): Int
 
+expect fun ByteArray.unzip(): ByteArray
+
 /**
  * MD5 算法
  *

+ 2 - 2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/TEA.kt

@@ -3,8 +3,8 @@ package net.mamoe.mirai.utils
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.IoBuffer
 import kotlinx.io.pool.useInstance
-import net.mamoe.mirai.network.protocol.tim.packet.Decrypter
-import net.mamoe.mirai.network.protocol.tim.packet.DecrypterByteArray
+import net.mamoe.mirai.network.protocol.timpc.packet.Decrypter
+import net.mamoe.mirai.network.protocol.timpc.packet.DecrypterByteArray
 import net.mamoe.mirai.utils.io.ByteArrayPool
 import net.mamoe.mirai.utils.io.toByteArray
 import net.mamoe.mirai.utils.io.toUHexString

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/HexComparator.kt

@@ -3,7 +3,7 @@
 package net.mamoe.mirai.utils.internal
 
 import kotlinx.io.core.toByteArray
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.io.hexToBytes
 import net.mamoe.mirai.utils.io.read

+ 3 - 3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/OutputUtils.kt

@@ -8,9 +8,9 @@ import kotlinx.serialization.SerializationStrategy
 import kotlinx.serialization.protobuf.ProtoBuf
 import net.mamoe.mirai.contact.GroupId
 import net.mamoe.mirai.contact.GroupInternalId
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.packet.DecrypterByteArray
-import net.mamoe.mirai.network.protocol.tim.packet.login.PrivateKey
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.packet.DecrypterByteArray
+import net.mamoe.mirai.network.protocol.timpc.packet.login.PrivateKey
 import net.mamoe.mirai.utils.*
 import net.mamoe.mirai.utils.internal.coerceAtMostOrFail
 import kotlin.random.Random

+ 1 - 1
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/SendImageUtilsJvm.kt

@@ -6,7 +6,7 @@ import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
 import kotlinx.io.core.Input
 import net.mamoe.mirai.contact.Contact
-import net.mamoe.mirai.network.protocol.tim.packet.action.OverFileSizeMaxException
+import net.mamoe.mirai.network.protocol.timpc.packet.action.OverFileSizeMaxException
 import net.mamoe.mirai.utils.sendTo
 import net.mamoe.mirai.utils.toExternalImage
 import net.mamoe.mirai.utils.upload

+ 1 - 1
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/BotSessionJvm.kt

@@ -10,7 +10,7 @@ import kotlinx.io.streams.asOutput
 import kotlinx.io.streams.inputStream
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.message.Image
-import net.mamoe.mirai.network.protocol.tim.packet.SessionKey
+import net.mamoe.mirai.network.protocol.timpc.packet.SessionKey
 import net.mamoe.mirai.utils.ExternalImage
 import net.mamoe.mirai.utils.MiraiInternalAPI
 import net.mamoe.mirai.utils.toExternalImage

+ 1 - 1
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/protocol/tim/NetworkDispatcherJvm.kt → mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/protocol/timpc/NetworkDispatcherJvm.kt

@@ -1,4 +1,4 @@
-package net.mamoe.mirai.network.protocol.tim
+package net.mamoe.mirai.network.protocol.timpc
 
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.asCoroutineDispatcher

+ 1 - 1
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/protocol/tim/packet/event/MessagePacket.kt → mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/network/protocol/timpc/packet/event/MessagePacket.kt

@@ -1,6 +1,6 @@
 @file:Suppress("unused")
 
-package net.mamoe.mirai.network.protocol.tim.packet.event
+package net.mamoe.mirai.network.protocol.timpc.packet.event
 
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext

+ 19 - 5
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsJvm.kt

@@ -4,17 +4,17 @@ package net.mamoe.mirai.utils
 
 import io.ktor.client.HttpClient
 import io.ktor.client.engine.cio.CIO
+import kotlinx.io.core.IoBuffer
 import kotlinx.io.core.Output
 import kotlinx.io.core.copyTo
+import kotlinx.io.core.readBytes
 import kotlinx.io.streams.asInput
 import kotlinx.io.streams.asOutput
-import java.io.DataInput
-import java.io.EOFException
-import java.io.InputStream
-import java.io.OutputStream
+import java.io.*
 import java.net.InetAddress
 import java.security.MessageDigest
 import java.util.zip.CRC32
+import java.util.zip.Inflater
 
 actual val deviceName: String = InetAddress.getLocalHost().hostName
 
@@ -54,4 +54,18 @@ actual fun solveIpAddress(hostname: String): String = InetAddress.getByName(host
 
 actual fun localIpAddress(): String = InetAddress.getLocalHost().hostAddress
 
-actual val Http: HttpClient get() = HttpClient(CIO)
+actual val Http: HttpClient get() = HttpClient(CIO)
+
+actual fun ByteArray.unzip(): ByteArray {
+    val inflater = Inflater()
+    inflater.reset()
+    val input = this
+    val output = ByteArrayOutputStream()
+    inflater.setInput(input)
+    val buffer = ByteArray(128)
+    while (!inflater.finished()) {
+        output.write(buffer, 0, inflater.inflate(buffer))
+    }
+    inflater.end()
+    return output.toByteArray()
+}

+ 1 - 1
mirai-core/src/jvmTest/kotlin/mirai/test/BadQQFilter.kt

@@ -8,7 +8,7 @@ import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.login
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
 import java.util.*
 
 /**

+ 8 - 8
mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDebugger.kt

@@ -16,14 +16,14 @@ import mirai.test.packetdebugger.PacketDebugger.sessionKey
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.network.BotNetworkHandler
 import net.mamoe.mirai.network.BotSession
-import net.mamoe.mirai.network.protocol.tim.TIMProtocol
-import net.mamoe.mirai.network.protocol.tim.handler.DataPacketSocketAdapter
-import net.mamoe.mirai.network.protocol.tim.packet.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.IgnoredEventPacket
-import net.mamoe.mirai.network.protocol.tim.packet.login.CaptchaKey
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
-import net.mamoe.mirai.network.protocol.tim.packet.login.ShareKey
-import net.mamoe.mirai.network.protocol.tim.packet.login.TouchKey
+import net.mamoe.mirai.network.protocol.timpc.TIMProtocol
+import net.mamoe.mirai.network.protocol.timpc.handler.DataPacketSocketAdapter
+import net.mamoe.mirai.network.protocol.timpc.packet.*
+import net.mamoe.mirai.network.protocol.timpc.packet.event.IgnoredEventPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.login.CaptchaKey
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.login.ShareKey
+import net.mamoe.mirai.network.protocol.timpc.packet.login.TouchKey
 import net.mamoe.mirai.utils.DecryptionFailedException
 import net.mamoe.mirai.utils.decryptBy
 import net.mamoe.mirai.utils.io.*

+ 3 - 3
mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDecoder.kt

@@ -3,9 +3,9 @@ package mirai.test.packetdebugger
 import kotlinx.io.core.ByteReadPacket
 import kotlinx.io.core.discardExact
 import kotlinx.io.core.readUShort
-import net.mamoe.mirai.network.protocol.tim.packet.PacketId
-import net.mamoe.mirai.network.protocol.tim.packet.login.CaptchaPacket
-import net.mamoe.mirai.network.protocol.tim.packet.matchPacketId
+import net.mamoe.mirai.network.protocol.timpc.packet.PacketId
+import net.mamoe.mirai.network.protocol.timpc.packet.login.CaptchaPacket
+import net.mamoe.mirai.network.protocol.timpc.packet.matchPacketId
 import kotlin.contracts.ExperimentalContracts
 import kotlin.contracts.InvocationKind
 import kotlin.contracts.contract

+ 1 - 1
mirai-debug/src/main/kotlin/test/JaptTest.kt

@@ -1,6 +1,6 @@
 package test
 
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
 
 @Suppress("RedundantSuspendModifier")
 suspend fun suspendPrintln(arg: String) = println(arg)

+ 3 - 3
mirai-demos/mirai-demo-1/src/main/java/demo/subscribe/SubscribeSamples.kt

@@ -11,9 +11,9 @@ import net.mamoe.mirai.contact.QQ
 import net.mamoe.mirai.contact.sendMessage
 import net.mamoe.mirai.event.*
 import net.mamoe.mirai.message.*
-import net.mamoe.mirai.network.protocol.tim.packet.action.uploadImage
-import net.mamoe.mirai.network.protocol.tim.packet.event.FriendMessage
-import net.mamoe.mirai.network.protocol.tim.packet.event.GroupMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.action.uploadImage
+import net.mamoe.mirai.network.protocol.timpc.packet.event.FriendMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.event.GroupMessage
 import net.mamoe.mirai.utils.suspendToExternalImage
 import java.io.File
 

+ 2 - 2
mirai-demos/mirai-demo-android/src/main/kotlin/net/mamoe/mirai/demo/MiraiService.kt

@@ -17,8 +17,8 @@ import net.mamoe.mirai.contact.sendMessage
 import net.mamoe.mirai.event.subscribeMessages
 import net.mamoe.mirai.login
 import net.mamoe.mirai.message.Image
-import net.mamoe.mirai.network.protocol.tim.packet.event.GroupMessage
-import net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
+import net.mamoe.mirai.network.protocol.timpc.packet.event.GroupMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.login.LoginResult
 import java.lang.ref.WeakReference
 
 class MiraiService : Service() {

+ 10 - 7
mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/Main.kt

@@ -7,19 +7,16 @@ import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
-import net.mamoe.mirai.Bot
-import net.mamoe.mirai.BotAccount
-import net.mamoe.mirai.addFriend
-import net.mamoe.mirai.alsoLogin
+import net.mamoe.mirai.*
 import net.mamoe.mirai.contact.MemberPermission
 import net.mamoe.mirai.event.Subscribable
 import net.mamoe.mirai.event.subscribeAlways
 import net.mamoe.mirai.event.subscribeGroupMessages
 import net.mamoe.mirai.event.subscribeMessages
 import net.mamoe.mirai.message.*
-import net.mamoe.mirai.network.protocol.tim.packet.event.FriendMessage
-import net.mamoe.mirai.network.protocol.tim.packet.event.GroupMessage
-import net.mamoe.mirai.network.protocol.tim.packet.event.ReceiveFriendAddRequestEvent
+import net.mamoe.mirai.network.protocol.timpc.packet.event.FriendMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.event.GroupMessage
+import net.mamoe.mirai.network.protocol.timpc.packet.event.ReceiveFriendAddRequestEvent
 import java.io.File
 import java.util.*
 import javax.swing.filechooser.FileSystemView
@@ -94,6 +91,12 @@ suspend fun main() {
                 sender
             }.queryProfile().toString().reply()
         }
+        "grouplist" reply {
+
+            //"https://ssl.ptlogin2.qq.com/jump?pt_clientver=5509&pt_src=1&keyindex=9&clientuin=" + bot.qqAccount + "&clientkey=" + com.tick_tock.pctim.utils.Util.byte2HexString(
+            //    user.txprotocol.serviceTicketHttp
+            //).replace(" ", "").toString() + "&u1=http%3A%2F%2Fqun.qq.com%2Fmember.html%23gid%3D168209441"
+        }
 
         "xml" reply {