mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-03 15:10:14 +08:00
Move Http client from MiraiPlatformUtils to IMirai.Http
Delete MiraiPlatformUtils Add timeout configuration for ktor HttpClient, fix #673
This commit is contained in:
parent
d99fc810f9
commit
767eb75d4e
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -13,6 +13,7 @@
|
||||
|
||||
package net.mamoe.mirai
|
||||
|
||||
import io.ktor.client.*
|
||||
import net.mamoe.kjbb.JvmBlockingBridge
|
||||
import net.mamoe.mirai.contact.*
|
||||
import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent
|
||||
@ -55,6 +56,10 @@ public interface IMirai : LowLevelApiAccessor {
|
||||
@MiraiExperimentalApi
|
||||
public var FileCacheStrategy: FileCacheStrategy
|
||||
|
||||
@Suppress("PropertyName")
|
||||
@MiraiInternalApi
|
||||
public val Http: HttpClient
|
||||
|
||||
/**
|
||||
* 使用 groupCode 计算 groupUin. 这两个值仅在 mirai 内部协议区分, 一般人使用时无需在意.
|
||||
*/
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -13,6 +13,7 @@
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import io.ktor.client.*
|
||||
import io.ktor.client.features.*
|
||||
import kotlinx.io.core.Input
|
||||
import kotlinx.io.core.readAvailable
|
||||
import java.io.*
|
||||
@ -25,13 +26,6 @@ import java.util.zip.Inflater
|
||||
import kotlin.contracts.InvocationKind
|
||||
import kotlin.contracts.contract
|
||||
|
||||
public object MiraiPlatformUtils {
|
||||
/**
|
||||
* Ktor HttpClient. 不同平台使用不同引擎.
|
||||
*/
|
||||
public val Http: HttpClient = HttpClient()
|
||||
}
|
||||
|
||||
@JvmOverloads
|
||||
public fun ByteArray.unzip(offset: Int = 0, length: Int = size - offset): ByteArray {
|
||||
checkOffsetAndLength(offset, length)
|
||||
|
@ -10,6 +10,8 @@
|
||||
package net.mamoe.mirai.internal
|
||||
|
||||
import io.ktor.client.*
|
||||
import io.ktor.client.engine.okhttp.*
|
||||
import io.ktor.client.features.*
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.client.request.forms.*
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@ -68,6 +70,14 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
|
||||
override var FileCacheStrategy: FileCacheStrategy = net.mamoe.mirai.utils.FileCacheStrategy.PlatformDefault
|
||||
|
||||
override val Http: HttpClient = HttpClient(OkHttp) {
|
||||
install(HttpTimeout) {
|
||||
this.requestTimeoutMillis = 30_0000
|
||||
this.connectTimeoutMillis = 30_0000
|
||||
this.socketTimeoutMillis = 30_0000
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
override suspend fun acceptNewFriendRequest(event: NewFriendRequestEvent) {
|
||||
@Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
|
||||
@ -404,7 +414,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
amount: Int
|
||||
): GroupAnnouncementList = bot.asQQAndroidBot().run {
|
||||
val rep = bot.asQQAndroidBot().network.run {
|
||||
MiraiPlatformUtils.Http.post<String> {
|
||||
Mirai.Http.post<String> {
|
||||
url("https://web.qun.qq.com/cgi-bin/announce/list_announce")
|
||||
body = MultiPartFormDataContent(formData {
|
||||
append("qid", groupId)
|
||||
@ -432,7 +442,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
override suspend fun _lowLevelSendAnnouncement(bot: Bot, groupId: Long, announcement: GroupAnnouncement): String =
|
||||
bot.asQQAndroidBot().run {
|
||||
val rep = withContext(network.coroutineContext) {
|
||||
MiraiPlatformUtils.Http.post<String> {
|
||||
Mirai.Http.post<String> {
|
||||
url("https://web.qun.qq.com/cgi-bin/announce/add_qun_notice")
|
||||
body = MultiPartFormDataContent(formData {
|
||||
append("qid", groupId)
|
||||
@ -468,7 +478,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
@MiraiExperimentalApi
|
||||
override suspend fun _lowLevelDeleteAnnouncement(bot: Bot, groupId: Long, fid: String) = bot.asQQAndroidBot().run {
|
||||
val data = withContext(network.coroutineContext) {
|
||||
MiraiPlatformUtils.Http.post<String> {
|
||||
Mirai.Http.post<String> {
|
||||
url("https://web.qun.qq.com/cgi-bin/announce/del_feed")
|
||||
body = MultiPartFormDataContent(formData {
|
||||
append("qid", groupId)
|
||||
@ -498,7 +508,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
override suspend fun _lowLevelGetAnnouncement(bot: Bot, groupId: Long, fid: String): GroupAnnouncement =
|
||||
bot.asQQAndroidBot().run {
|
||||
val rep = network.run {
|
||||
MiraiPlatformUtils.Http.post<String> {
|
||||
Mirai.Http.post<String> {
|
||||
url("https://web.qun.qq.com/cgi-bin/announce/get_feed")
|
||||
body = MultiPartFormDataContent(formData {
|
||||
append("qid", groupId)
|
||||
@ -525,7 +535,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
override suspend fun _lowLevelGetGroupActiveData(bot: Bot, groupId: Long, page: Int): GroupActiveData =
|
||||
bot.asQQAndroidBot().run {
|
||||
val rep = network.run {
|
||||
MiraiPlatformUtils.Http.get<String> {
|
||||
Mirai.Http.get<String> {
|
||||
url("https://qqweb.qq.com/c/activedata/get_mygroup_data")
|
||||
parameter("bkn", bkn)
|
||||
parameter("gc", groupId)
|
||||
@ -551,7 +561,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
type: GroupHonorType
|
||||
): GroupHonorListData? = bot.asQQAndroidBot().run {
|
||||
val rep = network.run {
|
||||
MiraiPlatformUtils.Http.get<String> {
|
||||
Mirai.Http.get<String> {
|
||||
url("https://qun.qq.com/interactive/honorlist")
|
||||
parameter("gc", groupId)
|
||||
parameter("type", type.value)
|
||||
@ -781,7 +791,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
seconds: Int
|
||||
) {
|
||||
bot as QQAndroidBot
|
||||
val response = MiraiPlatformUtils.Http.post<String> {
|
||||
val response = Mirai.Http.post<String> {
|
||||
url("https://qqweb.qq.com/c/anonymoustalk/blacklist")
|
||||
body = MultiPartFormDataContent(formData {
|
||||
append("anony_id", anonymousId)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -10,6 +10,7 @@
|
||||
package net.mamoe.mirai.internal.contact
|
||||
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.Mirai
|
||||
import net.mamoe.mirai.contact.Friend
|
||||
import net.mamoe.mirai.contact.Member
|
||||
import net.mamoe.mirai.contact.Stranger
|
||||
@ -26,7 +27,6 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x352
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn
|
||||
import net.mamoe.mirai.message.data.Image
|
||||
import net.mamoe.mirai.utils.ExternalResource
|
||||
import net.mamoe.mirai.utils.MiraiPlatformUtils
|
||||
import net.mamoe.mirai.utils.toUHexString
|
||||
import net.mamoe.mirai.utils.verbose
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
@ -81,7 +81,7 @@ internal abstract class AbstractUser(
|
||||
}
|
||||
|
||||
val time = measureTime {
|
||||
MiraiPlatformUtils.Http.postImage(
|
||||
Mirai.Http.postImage(
|
||||
"0x6ff0070",
|
||||
bot.id,
|
||||
null,
|
||||
|
@ -20,6 +20,7 @@ import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import kotlinx.io.core.*
|
||||
import net.mamoe.mirai.Mirai
|
||||
import net.mamoe.mirai.internal.QQAndroidBot
|
||||
import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.CSDataHighwayHead
|
||||
@ -199,7 +200,7 @@ internal object HighwayHelper {
|
||||
uKey: ByteArray,
|
||||
fileKey: ByteArray,
|
||||
) {
|
||||
MiraiPlatformUtils.Http.post<String> {
|
||||
Mirai.Http.post<String> {
|
||||
url("http://$serverIp:$serverPort")
|
||||
parameter("ver", 4679)
|
||||
parameter("ukey", uKey.toUHexString(""))
|
||||
|
Loading…
Reference in New Issue
Block a user