Skip to content

Commit b988184

Browse files
committed
init http client using reflection by default
1 parent 2a5a999 commit b988184

File tree

15 files changed

+121
-91
lines changed

15 files changed

+121
-91
lines changed

README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ A Kotlin-based Minecraft request library provides utility functions related to M
1111
```kotlin
1212
dependencies {
1313
implementation("tech.aliorpse:mcutils:$version")
14+
implementation("io.ktor:ktor-client-cio:$version") //or the client you want
1415
}
1516
```
1617

@@ -43,8 +44,6 @@ runBlocking {
4344

4445
```kotlin
4546
runBlocking {
46-
McUtilsHttpClient.init(CIO)
47-
4847
var pl
4948
pl = Player.getProfile("Aliorpse")
5049
pl = Player.getProfile("ec042e1200ac4a249cc83eb1fab0bd88")
@@ -56,8 +55,6 @@ runBlocking {
5655

5756
```kotlin
5857
runBlocking {
59-
McUtilsHttpClient.init(CIO)
60-
6158
var result
6259
result = Modrinth.search("xplus") {
6360
author = "Wudji"

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ dependencies {
3737
api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
3838
api("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
3939

40+
api(kotlin("reflect"))
41+
4042
api("io.ktor:ktor-client-core:3.3.0")
4143
api("io.ktor:ktor-client-content-negotiation:3.3.0")
4244
api("io.ktor:ktor-serialization-kotlinx-json:3.3.0")

src/main/kotlin/tech/aliorpse/mcutils/model/modrinth/project/ModrinthProject.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@ package tech.aliorpse.mcutils.model.modrinth.project
22

33
import kotlinx.serialization.SerialName
44
import kotlinx.serialization.Serializable
5-
import tech.aliorpse.mcutils.model.modrinth.MonetizationStatus
6-
import tech.aliorpse.mcutils.model.modrinth.ProjectStatus
7-
import tech.aliorpse.mcutils.model.modrinth.ProjectType
8-
import tech.aliorpse.mcutils.model.modrinth.RequestedStatus
9-
import tech.aliorpse.mcutils.model.modrinth.SideSupport
5+
import tech.aliorpse.mcutils.model.modrinth.*
106

117
@Serializable
128
public data class ModrinthProject(

src/main/kotlin/tech/aliorpse/mcutils/model/player/PlayerProfileSerializer.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
package tech.aliorpse.mcutils.model.player
22

3-
import io.ktor.util.decodeBase64Bytes
3+
import io.ktor.util.*
44
import kotlinx.serialization.KSerializer
55
import kotlinx.serialization.descriptors.SerialDescriptor
66
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
77
import kotlinx.serialization.descriptors.element
88
import kotlinx.serialization.encoding.Decoder
99
import kotlinx.serialization.encoding.Encoder
1010
import kotlinx.serialization.encoding.encodeStructure
11-
import kotlinx.serialization.json.Json
12-
import kotlinx.serialization.json.JsonDecoder
13-
import kotlinx.serialization.json.booleanOrNull
14-
import kotlinx.serialization.json.jsonArray
15-
import kotlinx.serialization.json.jsonObject
16-
import kotlinx.serialization.json.jsonPrimitive
11+
import kotlinx.serialization.json.*
1712

1813
public object PlayerProfileSerializer : KSerializer<PlayerProfile> {
1914
override val descriptor: SerialDescriptor =

src/main/kotlin/tech/aliorpse/mcutils/model/server/JavaServerStatusSerializer.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@ import kotlinx.serialization.descriptors.buildClassSerialDescriptor
66
import kotlinx.serialization.descriptors.element
77
import kotlinx.serialization.encoding.Decoder
88
import kotlinx.serialization.encoding.Encoder
9-
import kotlinx.serialization.json.JsonDecoder
10-
import kotlinx.serialization.json.booleanOrNull
11-
import kotlinx.serialization.json.contentOrNull
12-
import kotlinx.serialization.json.jsonObject
13-
import kotlinx.serialization.json.jsonPrimitive
9+
import kotlinx.serialization.json.*
1410

1511
internal object JavaServerStatusSerializer : KSerializer<JavaServerStatus> {
1612
override val descriptor: SerialDescriptor =

src/main/kotlin/tech/aliorpse/mcutils/model/server/TextComponentSerializer.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,9 @@ import kotlinx.serialization.builtins.ListSerializer
66
import kotlinx.serialization.descriptors.SerialDescriptor
77
import kotlinx.serialization.encoding.Decoder
88
import kotlinx.serialization.encoding.Encoder
9-
import kotlinx.serialization.json.JsonArray
10-
import kotlinx.serialization.json.JsonDecoder
11-
import kotlinx.serialization.json.JsonObject
12-
import kotlinx.serialization.json.JsonPrimitive
13-
import kotlinx.serialization.json.booleanOrNull
9+
import kotlinx.serialization.json.*
1410
import tech.aliorpse.mcutils.utils.toTextComponent
15-
import java.util.EnumSet
11+
import java.util.*
1612

1713
internal object TextComponentSerializer : KSerializer<TextComponent> {
1814
@Serializable

src/main/kotlin/tech/aliorpse/mcutils/modules/modrinth/Modrinth.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package tech.aliorpse.mcutils.modules.modrinth
22

3-
import io.ktor.client.call.body
4-
import io.ktor.client.request.get
5-
import io.ktor.client.request.parameter
3+
import io.ktor.client.call.*
4+
import io.ktor.client.request.*
65
import love.forte.plugin.suspendtrans.annotation.JvmAsync
76
import love.forte.plugin.suspendtrans.annotation.JvmBlocking
87
import tech.aliorpse.mcutils.model.modrinth.project.ModrinthProject
98
import tech.aliorpse.mcutils.model.modrinth.search.ModrinthSearchConfig
109
import tech.aliorpse.mcutils.model.modrinth.search.ModrinthSearchResponse
11-
import tech.aliorpse.mcutils.utils.McUtilsHttpClient
10+
import tech.aliorpse.mcutils.utils.McUtilsHttpClientProvider
1211
import tech.aliorpse.mcutils.utils.withDispatchersIO
1312

1413
/**
@@ -39,7 +38,7 @@ public object Modrinth {
3938
inner.joinToString(prefix = "[", postfix = "]") { "\"$it\"" }
4039
}
4140

42-
McUtilsHttpClient.client.get("$API_BASE/v2/search") {
41+
McUtilsHttpClientProvider.client.get("$API_BASE/v2/search") {
4342
parameter("query", query)
4443
parameter("facets", facetsStr)
4544
parameter("limit", cfg.limit)
@@ -56,7 +55,7 @@ public object Modrinth {
5655
@JvmBlocking
5756
public suspend fun getProjects(ids: List<String>): List<ModrinthProject> = withDispatchersIO {
5857
val idsStr = ids.joinToString(",", "[", "]") { "\"$it\"" }
59-
McUtilsHttpClient.client.get("$API_BASE/v2/projects") {
58+
McUtilsHttpClientProvider.client.get("$API_BASE/v2/projects") {
6059
parameter("ids", idsStr)
6160
}.body()
6261
}
@@ -81,7 +80,7 @@ public object Modrinth {
8180
@JvmBlocking
8281
public suspend fun getProjectsRandom(count: Int = 10): List<ModrinthProject> = withDispatchersIO {
8382
require(count <= 100)
84-
McUtilsHttpClient.client.get("$API_BASE/v2/projects_random") {
83+
McUtilsHttpClientProvider.client.get("$API_BASE/v2/projects_random") {
8584
parameter("count", count)
8685
}.body()
8786
}

src/main/kotlin/tech/aliorpse/mcutils/modules/player/Player.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package tech.aliorpse.mcutils.modules.player
22

3-
import io.ktor.client.call.body
4-
import io.ktor.client.request.get
3+
import io.ktor.client.call.*
4+
import io.ktor.client.request.*
55
import love.forte.plugin.suspendtrans.annotation.JvmAsync
66
import love.forte.plugin.suspendtrans.annotation.JvmBlocking
77
import tech.aliorpse.mcutils.model.player.PlayerProfile
88
import tech.aliorpse.mcutils.model.player.PlayerUUIDProfile
9-
import tech.aliorpse.mcutils.utils.McUtilsHttpClient
9+
import tech.aliorpse.mcutils.utils.McUtilsHttpClientProvider
1010
import tech.aliorpse.mcutils.utils.withDispatchersIO
1111

1212
/**
@@ -41,13 +41,13 @@ public object Player {
4141

4242
when {
4343
pl.length == UUID_LENGTH -> {
44-
McUtilsHttpClient.client.get("$MOJANG_SESSION_BASE/session/minecraft/profile/$pl").body()
44+
McUtilsHttpClientProvider.client.get("$MOJANG_SESSION_BASE/session/minecraft/profile/$pl").body()
4545
}
4646

4747
nameRegex.matches(pl) -> {
4848
val uuidProfile: PlayerUUIDProfile =
49-
McUtilsHttpClient.client.get("$MOJANG_PROFILE_BASE/users/profiles/minecraft/$pl").body()
50-
McUtilsHttpClient.client.get("$MOJANG_SESSION_BASE/session/minecraft/profile/${uuidProfile.id}").body()
49+
McUtilsHttpClientProvider.client.get("$MOJANG_PROFILE_BASE/users/profiles/minecraft/$pl").body()
50+
McUtilsHttpClientProvider.client.get("$MOJANG_SESSION_BASE/session/minecraft/profile/${uuidProfile.id}").body()
5151
}
5252

5353
else -> throw IllegalArgumentException("Invalid identifier: $pl")

src/main/kotlin/tech/aliorpse/mcutils/modules/server/JavaServer.kt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
11
package tech.aliorpse.mcutils.modules.server
22

33

4-
import kotlinx.serialization.json.Json
54
import kotlinx.io.IOException
5+
import kotlinx.serialization.json.Json
66
import love.forte.plugin.suspendtrans.annotation.JvmAsync
77
import love.forte.plugin.suspendtrans.annotation.JvmBlocking
8-
import org.xbill.DNS.AAAARecord
9-
import org.xbill.DNS.ARecord
10-
import org.xbill.DNS.CNAMERecord
11-
import org.xbill.DNS.Lookup
12-
import org.xbill.DNS.SRVRecord
13-
import org.xbill.DNS.Type
8+
import org.xbill.DNS.*
149
import tech.aliorpse.mcutils.model.server.JavaServerStatus
15-
import tech.aliorpse.mcutils.utils.withDispatchersIO
16-
import java.net.IDN
17-
import java.net.InetSocketAddress
18-
import java.net.Socket
19-
import java.nio.charset.StandardCharsets
2010
import tech.aliorpse.mcutils.model.server.JavaServerStatusSerializer
11+
import tech.aliorpse.mcutils.utils.withDispatchersIO
2112
import java.io.ByteArrayOutputStream
2213
import java.io.DataInputStream
2314
import java.io.DataOutputStream
2415
import java.io.OutputStream
16+
import java.net.IDN
17+
import java.net.InetSocketAddress
18+
import java.net.Socket
19+
import java.nio.charset.StandardCharsets
2520

2621
/**
2722
* Provides functionality to fetch and parse the status of a Java Minecraft server.

src/main/kotlin/tech/aliorpse/mcutils/utils/McUtilsHttpClient.kt

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)