mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-27 20:50:09 +08:00
Update libraries and reduce redundant code
This commit is contained in:
parent
d5e6c2f890
commit
2bf0a96375
@ -9,11 +9,11 @@ kotlinVersion=1.3.61
|
||||
# kotlin libraries
|
||||
serializationVersion=0.13.0
|
||||
coroutinesVersion=1.3.2
|
||||
atomicFuVersion=0.13.0
|
||||
kotlinXIoVersion=0.1.15
|
||||
coroutinesIoVersion=0.24.0
|
||||
atomicFuVersion=0.14.1
|
||||
kotlinXIoVersion=0.1.16
|
||||
coroutinesIoVersion=0.1.16
|
||||
# utility
|
||||
ktorVersion=1.2.4
|
||||
ktorVersion=1.2.6
|
||||
klockVersion=1.7.0
|
||||
# gradle plugin
|
||||
protobufJavaVersion=3.10.0
|
@ -2,12 +2,7 @@ package net.mamoe.mirai.utils
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.cio.CIO
|
||||
import io.ktor.client.request.HttpRequestBuilder
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.content.OutgoingContent
|
||||
import io.ktor.util.KtorExperimentalAPI
|
||||
import kotlinx.coroutines.io.ByteWriteChannel
|
||||
import kotlinx.io.core.Input
|
||||
import java.io.DataInput
|
||||
import java.io.EOFException
|
||||
import java.io.InputStream
|
||||
@ -33,24 +28,6 @@ internal actual val Http: HttpClient
|
||||
*/
|
||||
actual fun localIpAddress(): String = InetAddress.getLocalHost().hostAddress
|
||||
|
||||
internal actual fun HttpRequestBuilder.configureBody(
|
||||
inputSize: Long,
|
||||
input: Input
|
||||
) {
|
||||
body = object : OutgoingContent.WriteChannelContent() {
|
||||
override val contentType: ContentType = ContentType.Image.PNG
|
||||
override val contentLength: Long = inputSize
|
||||
|
||||
override suspend fun writeTo(channel: ByteWriteChannel) {//不知道为什么这个 channel 在 common 找不到...
|
||||
val buffer = byteArrayOf(1)
|
||||
repeat(contentLength.toInt()) {
|
||||
input.readFully(buffer, 0, 1)
|
||||
channel.writeFully(buffer, 0, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* MD5 算法
|
||||
*
|
||||
|
@ -14,7 +14,7 @@ import kotlin.reflect.KClass
|
||||
|
||||
/**
|
||||
* 订阅者的状态
|
||||
*/
|
||||
*/ // Not using enum for Android
|
||||
inline class ListeningStatus(inline val listening: Boolean) {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
@ -86,6 +86,7 @@ abstract class BotSessionBase(
|
||||
field = value
|
||||
_gtk = getGTK(value)
|
||||
}
|
||||
@Suppress("PropertyName")
|
||||
internal lateinit var _cookies: String
|
||||
private var _gtk: Int = 0
|
||||
|
||||
|
@ -75,8 +75,8 @@ class ImageDownloadInfo(
|
||||
@SerialId(13) private val _original: String? = null,
|
||||
@SerialId(14) private val _compressed: String? = null
|
||||
) : GroupImageResponse, ImageLink {
|
||||
private val port: List<Byte> get() = _port!!
|
||||
private val host: String get() = "http://" + _host!!
|
||||
private inline val port: List<Byte> get() = _port!!
|
||||
private inline val host: String get() = "http://" + _host!!
|
||||
|
||||
val thumbnail: String get() = host + ":" + port.first() + _thumbnail!!
|
||||
override val original: String get() = host + ":" + port.first() + _original!!
|
||||
|
@ -4,12 +4,14 @@ package net.mamoe.mirai.network.protocol.tim.packet.action
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.request.post
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.http.URLProtocol
|
||||
import io.ktor.http.content.OutgoingContent
|
||||
import io.ktor.http.userAgent
|
||||
import kotlinx.coroutines.io.ByteWriteChannel
|
||||
import kotlinx.io.core.Input
|
||||
import net.mamoe.mirai.contact.GroupId
|
||||
import net.mamoe.mirai.utils.configureBody
|
||||
|
||||
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@ -41,7 +43,18 @@ internal suspend inline fun HttpClient.postImage(
|
||||
userAgent("QQClient")
|
||||
}
|
||||
|
||||
configureBody(inputSize, imageInput)
|
||||
body = object : OutgoingContent.WriteChannelContent() {
|
||||
override val contentType: ContentType = ContentType.Image.PNG
|
||||
override val contentLength: Long = inputSize
|
||||
|
||||
override suspend fun writeTo(channel: ByteWriteChannel) {
|
||||
val buffer = byteArrayOf(1)
|
||||
repeat(contentLength.toInt()) {
|
||||
imageInput.readFully(buffer, 0, 1)
|
||||
channel.writeFully(buffer, 0, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
} == HttpStatusCode.OK
|
||||
} finally {
|
||||
imageInput.close()
|
||||
|
@ -4,8 +4,6 @@ package net.mamoe.mirai.utils
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.request.HttpRequestBuilder
|
||||
import kotlinx.io.core.Input
|
||||
|
||||
/**
|
||||
* 时间戳
|
||||
@ -45,7 +43,3 @@ expect fun localIpAddress(): String
|
||||
*/
|
||||
@PublishedApi
|
||||
internal expect val Http: HttpClient
|
||||
|
||||
|
||||
// FIXME: 2019/10/28 这个方法不是很好的实现
|
||||
internal expect fun HttpRequestBuilder.configureBody(inputSize: Long, input: Input)
|
||||
|
@ -4,13 +4,6 @@ package net.mamoe.mirai.utils
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.cio.CIO
|
||||
import io.ktor.client.request.HttpRequestBuilder
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.content.OutgoingContent
|
||||
import kotlinx.coroutines.io.ByteWriteChannel
|
||||
import kotlinx.io.core.ByteReadPacket
|
||||
import kotlinx.io.core.Input
|
||||
import java.io.DataInput
|
||||
import java.io.EOFException
|
||||
import java.io.InputStream
|
||||
@ -57,28 +50,4 @@ actual fun solveIpAddress(hostname: String): String = InetAddress.getByName(host
|
||||
|
||||
actual fun localIpAddress(): String = InetAddress.getLocalHost().hostAddress
|
||||
|
||||
actual val Http: HttpClient get() = HttpClient(CIO)
|
||||
|
||||
suspend fun HttpClient.getURL(url: String): ByteReadPacket {
|
||||
return this.get(url)
|
||||
}
|
||||
|
||||
internal actual fun HttpRequestBuilder.configureBody(
|
||||
inputSize: Long,
|
||||
input: Input
|
||||
) {
|
||||
//body = ByteArrayContent(input.readBytes(), ContentType.Image.PNG)
|
||||
|
||||
body = object : OutgoingContent.WriteChannelContent() {
|
||||
override val contentType: ContentType = ContentType.Image.PNG
|
||||
override val contentLength: Long = inputSize
|
||||
|
||||
override suspend fun writeTo(channel: ByteWriteChannel) {//不知道为什么这个 channel 在 common 找不到...
|
||||
val buffer = byteArrayOf(1)
|
||||
repeat(contentLength.toInt()) {
|
||||
input.readFully(buffer, 0, 1)
|
||||
channel.writeFully(buffer, 0, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
actual val Http: HttpClient get() = HttpClient(CIO)
|
Loading…
Reference in New Issue
Block a user