Update libraries and reduce redundant code

This commit is contained in:
Him188 2019-11-28 11:22:07 +08:00
parent d5e6c2f890
commit 2bf0a96375
8 changed files with 24 additions and 70 deletions

View File

@ -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

View File

@ -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 算法
*

View File

@ -14,7 +14,7 @@ import kotlin.reflect.KClass
/**
* 订阅者的状态
*/
*/ // Not using enum for Android
inline class ListeningStatus(inline val listening: Boolean) {
companion object {
@JvmStatic

View File

@ -86,6 +86,7 @@ abstract class BotSessionBase(
field = value
_gtk = getGTK(value)
}
@Suppress("PropertyName")
internal lateinit var _cookies: String
private var _gtk: Int = 0

View File

@ -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!!

View File

@ -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()

View File

@ -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)

View File

@ -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)