更新依赖到最新版本

更新插件版本号到v1.1.0
This commit is contained in:
2023-01-27 17:08:28 +08:00
parent 184a6d9228
commit 1ffd53cab1
5 changed files with 38 additions and 32 deletions

View File

@ -1,20 +1,22 @@
plugins { plugins {
val kotlinVersion = "1.6.21" val kotlinVersion = "1.7.10"
kotlin("jvm") version kotlinVersion kotlin("jvm") version kotlinVersion
kotlin("plugin.serialization") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion
id("net.mamoe.mirai-console") version "2.11.1" id("net.mamoe.mirai-console") version "2.13.2"
} }
group = "top.jie65535.jcf" group = "top.jie65535.jcf"
version = "1.0.0" version = "1.1.0"
repositories { repositories {
maven("https://maven.aliyun.com/repository/public") maven("https://maven.aliyun.com/repository/public")
mavenCentral() mavenCentral()
} }
val ktorVersion = "2.2.2"
dependencies { dependencies {
testImplementation(kotlin("test")) // implementation("io.ktor:ktor-client-core:$ktorVersion")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.2") implementation("io.ktor:ktor-client-core-jvm:$ktorVersion")
implementation("io.ktor:ktor-client-okhttp:$ktorVersion")
} }

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@ -1,9 +1,11 @@
package top.jie65535.jcf package top.jie65535.jcf
import io.ktor.client.* import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.engine.okhttp.* import io.ktor.client.engine.okhttp.*
import io.ktor.client.features.* import io.ktor.client.plugins.*
import io.ktor.client.request.* import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.* import io.ktor.http.*
import kotlinx.serialization.* import kotlinx.serialization.*
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
@ -31,9 +33,9 @@ class CurseforgeApi(apiKey: String) {
private val http = HttpClient(OkHttp) { private val http = HttpClient(OkHttp) {
install(HttpTimeout) { install(HttpTimeout) {
this.requestTimeoutMillis = 300_000 this.requestTimeoutMillis = 60_000
this.connectTimeoutMillis = 300_000 this.connectTimeoutMillis = 60_000
this.socketTimeoutMillis = 300_000 this.socketTimeoutMillis = 60_000
} }
defaultRequest { defaultRequest {
url.protocol = URLProtocol.HTTPS url.protocol = URLProtocol.HTTPS
@ -53,7 +55,7 @@ class CurseforgeApi(apiKey: String) {
http.get("/v1/games") { http.get("/v1/games") {
parameter("index", index) parameter("index", index)
parameter("pageSize", pageSize) parameter("pageSize", pageSize)
} }.body()
) )
} }
@ -62,7 +64,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getGame(gameId: Int): Game { suspend fun getGame(gameId: Int): Game {
return json.decodeFromString<GetGameResponse>( return json.decodeFromString<GetGameResponse>(
http.get("/v1/games/$gameId") http.get("/v1/games/$gameId").body()
).data ).data
} }
@ -72,7 +74,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getVersions(gameId: Int): Array<GameVersionsByType> { suspend fun getVersions(gameId: Int): Array<GameVersionsByType> {
return json.decodeFromString<GetVersionsResponse>( return json.decodeFromString<GetVersionsResponse>(
http.get("/v1/games/$gameId/versions") http.get("/v1/games/$gameId/versions").body()
).data ).data
} }
@ -90,7 +92,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getVersionTypes(gameId: Int): Array<GameVersionType> { suspend fun getVersionTypes(gameId: Int): Array<GameVersionType> {
return json.decodeFromString<GetVersionTypesResponse>( return json.decodeFromString<GetVersionTypesResponse>(
http.get("/v1/games/$gameId/versions") http.get("/v1/games/$gameId/versions").body()
).data ).data
} }
@ -108,7 +110,7 @@ class CurseforgeApi(apiKey: String) {
http.get("/v1/categories") { http.get("/v1/categories") {
parameter("gameId", gameId) parameter("gameId", gameId)
parameter("classId", classId) parameter("classId", classId)
} }.body()
).data ).data
} }
@ -163,7 +165,7 @@ class CurseforgeApi(apiKey: String) {
parameter("slug", slug) parameter("slug", slug)
parameter("index", index) parameter("index", index)
parameter("pageSize", pageSize) parameter("pageSize", pageSize)
} }.body()
) )
} }
@ -172,7 +174,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getMod(modId: Int): Mod { suspend fun getMod(modId: Int): Mod {
return json.decodeFromString<GetModResponse>( return json.decodeFromString<GetModResponse>(
http.get("/v1/mods/$modId") http.get("/v1/mods/$modId").body()
).data ).data
} }
@ -183,8 +185,8 @@ class CurseforgeApi(apiKey: String) {
return json.decodeFromString<GetModsResponse>( return json.decodeFromString<GetModsResponse>(
http.post("/v1/mods") { http.post("/v1/mods") {
headers.append("Content-Type", "application/json") headers.append("Content-Type", "application/json")
body = json.encodeToString(GetModsByIdsListRequestBody(modIds)) setBody(json.encodeToString(GetModsByIdsListRequestBody(modIds)))
} }.body()
).data ).data
} }
@ -199,8 +201,8 @@ class CurseforgeApi(apiKey: String) {
return json.decodeFromString<GetFeaturedModsResponse>( return json.decodeFromString<GetFeaturedModsResponse>(
http.get("/v1/mods/featured") { http.get("/v1/mods/featured") {
headers.append("Content-Type", "application/json") headers.append("Content-Type", "application/json")
body = json.encodeToString(GetFeaturedModsRequestBody(gameId, excludedModIds, gameVersionTypeId)) setBody(json.encodeToString(GetFeaturedModsRequestBody(gameId, excludedModIds, gameVersionTypeId)))
} }.body()
).data ).data
} }
@ -209,7 +211,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getModDescription(modId: Int): String { suspend fun getModDescription(modId: Int): String {
return json.decodeFromString<StringResponse>( return json.decodeFromString<StringResponse>(
http.get("/v1/mods/$modId/description") http.get("/v1/mods/$modId/description").body()
).data ).data
} }
@ -222,7 +224,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getModFile(modId: Int, fileId: Int): File { suspend fun getModFile(modId: Int, fileId: Int): File {
return json.decodeFromString<GetModFileResponse>( return json.decodeFromString<GetModFileResponse>(
http.get("/v1/mods/$modId/files/$fileId") http.get("/v1/mods/$modId/files/$fileId").body()
).data ).data
} }
@ -244,7 +246,7 @@ class CurseforgeApi(apiKey: String) {
parameter("gameVersionTypeId", gameVersionTypeId) parameter("gameVersionTypeId", gameVersionTypeId)
parameter("index", index) parameter("index", index)
parameter("pageSize", pageSize) parameter("pageSize", pageSize)
} }.body()
) )
} }
@ -255,8 +257,8 @@ class CurseforgeApi(apiKey: String) {
return json.decodeFromString<GetFilesResponse>( return json.decodeFromString<GetFilesResponse>(
http.post("/v1/mods/files") { http.post("/v1/mods/files") {
headers.append("Content-Type", "application/json") headers.append("Content-Type", "application/json")
body = json.encodeToString(GetModFilesRequestBody(fileIds)) setBody(json.encodeToString(GetModFilesRequestBody(fileIds)))
} }.body()
).data ).data
} }
@ -265,7 +267,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getModFileChangelog(modId: Int, fileId: Int): String { suspend fun getModFileChangelog(modId: Int, fileId: Int): String {
return json.decodeFromString<StringResponse>( return json.decodeFromString<StringResponse>(
http.get("/v1/mods/$modId/files/$fileId/changelog") http.get("/v1/mods/$modId/files/$fileId/changelog").body()
).data ).data
} }
@ -274,7 +276,7 @@ class CurseforgeApi(apiKey: String) {
*/ */
suspend fun getModFileDownloadURL(modId: Int, fileId: Int): String { suspend fun getModFileDownloadURL(modId: Int, fileId: Int): String {
return json.decodeFromString<StringResponse>( return json.decodeFromString<StringResponse>(
http.get("/v1/mods/$modId/files/$fileId/download-url") http.get("/v1/mods/$modId/files/$fileId/download-url").body()
).data ).data
} }

View File

@ -1,7 +1,7 @@
package top.jie65535.jcf package top.jie65535.jcf
import io.ktor.http.*
import kotlinx.coroutines.* import kotlinx.coroutines.*
import net.mamoe.mirai.contact.nameCardOrNick
import net.mamoe.mirai.event.* import net.mamoe.mirai.event.*
import net.mamoe.mirai.event.events.GroupMessageEvent import net.mamoe.mirai.event.events.GroupMessageEvent
import net.mamoe.mirai.event.events.MessageEvent import net.mamoe.mirai.event.events.MessageEvent
@ -33,6 +33,7 @@ class MessageHandler(
subject.sendMessage(message.quote() + "必须输入关键字") subject.sendMessage(message.quote() + "必须输入关键字")
} else { } else {
try { try {
logger.info("${sender.nameCardOrNick}(${sender.id}) $modClass \"$filter\"")
val pagedList = service.search(modClass, filter) val pagedList = service.search(modClass, filter)
with(pagedList.current()) { with(pagedList.current()) {
if (isEmpty()) { if (isEmpty()) {
@ -59,7 +60,7 @@ class MessageHandler(
* @param format 格式化方法 * @param format 格式化方法
* @return 用户选中项null表示未选择任何项 * @return 用户选中项null表示未选择任何项
*/ */
private suspend fun <T> MessageEvent.handlePagedList(pagedList: PagedList<T>, format: (T)->Message): T? { private suspend fun <T> MessageEvent.handlePagedList(pagedList: PagedList<T>, format: suspend (T)->Message): T? {
do { do {
var isContinue = false var isContinue = false
val list = pagedList.current() val list = pagedList.current()
@ -109,13 +110,14 @@ class MessageHandler(
*/ */
private suspend fun MessageEvent.handleModsSearchResult(pagedList: PagedList<Mod>) { private suspend fun MessageEvent.handleModsSearchResult(pagedList: PagedList<Mod>) {
val selectedMod = handlePagedList(pagedList) { mod -> val selectedMod = handlePagedList(pagedList) { mod ->
PlainText( val text = PlainText(
""" """
[${mod.name}] by ${mod.authors.firstOrNull()?.name} [${mod.name}] by ${mod.authors.firstOrNull()?.name}
${formatCount(mod.downloadCount)} Downloads Updated ${mod.dateModified.toLocalDate()} ${formatCount(mod.downloadCount)} Downloads Updated ${mod.dateModified.toLocalDate()}
${mod.summary} ${mod.summary}
${mod.links.websiteUrl} ${mod.links.websiteUrl}
""".trimIndent()) """.trimIndent())
mod.logo?.thumbnailUrl?.let { loadImage(it) + text } ?: text
} }
selectedMod?.let { handleShowMod(it) } selectedMod?.let { handleShowMod(it) }
} }

View File

@ -11,7 +11,7 @@ object PluginMain: KotlinPlugin(
JvmPluginDescription( JvmPluginDescription(
id = "top.jie65535.jcf", id = "top.jie65535.jcf",
name = "J Curseforge Util", name = "J Curseforge Util",
version = "1.0.0", version = "1.1.0",
) { ) {
author("jie65535") author("jie65535")
info("MC Curseforge Util\n" + info("MC Curseforge Util\n" +