Skip to content

Commit 73f7c9c

Browse files
YurnYurn
Yurn
authored and
Yurn
committed
更新 yutori, ktor
优化代码
1 parent 1b9edb7 commit 73f7c9c

File tree

7 files changed

+48
-78
lines changed

7 files changed

+48
-78
lines changed

adapter/src/commonMain/kotlin/cn/yurin/yutorix/module/satori/adapter/ActionService.kt

+21-29
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,23 @@ class SatoriActionService(
8989
userId?.let { append("Satori-User-ID", userId) }
9090
}
9191
setBody(
92-
content.entries
93-
.filter { it.value != null }
94-
.joinToString(",", "{", "}") { (key, value) ->
95-
buildString {
96-
append("\"$key\":")
97-
append(
98-
when (value) {
99-
is String -> "\"${value.replace("\"", "\\\"")}\""
100-
is List<*> ->
101-
"\"${
102-
(value as List<MessageElement>).serialize()
103-
.replace("\n", "\\n").replace("\"", "\\\"")
104-
}\""
105-
106-
else -> value.toString()
107-
},
108-
)
109-
}
110-
},
92+
content.entries.filter { it.value != null }.joinToString(",", "{", "}") { (key, value) ->
93+
buildString {
94+
append("\"$key\":")
95+
append(
96+
when (value) {
97+
is String -> "\"${value.replace("\"", "\\\"")}\""
98+
is List<*> ->
99+
"\"${
100+
(value as List<MessageElement>).serialize().replace("\n", "\\n")
101+
.replace("\"", "\\\"")
102+
}\""
103+
104+
else -> value.toString()
105+
},
106+
)
107+
}
108+
},
111109
)
112110
Logger.d(yutori.name) {
113111
"""
@@ -179,9 +177,7 @@ class SatoriActionService(
179177
when (method) {
180178
"get" ->
181179
Result.success(
182-
Json
183-
.decodeFromString<SerializableGuildMember>(body)
184-
.toUniverse(null, yutori) as T,
180+
Json.decodeFromString<SerializableGuildMember>(body).toUniverse(null, yutori) as T,
185181
)
186182

187183
"list" ->
@@ -217,9 +213,7 @@ class SatoriActionService(
217213

218214
"create" ->
219215
Result.success(
220-
Json
221-
.decodeFromString<SerializableGuildRole>(body)
222-
.toUniverse(null, yutori) as T,
216+
Json.decodeFromString<SerializableGuildRole>(body).toUniverse(null, yutori) as T,
223217
)
224218

225219
"update" -> Result.success(Unit as T)
@@ -241,9 +235,7 @@ class SatoriActionService(
241235
when (method) {
242236
"create" ->
243237
Result.success(
244-
Json
245-
.decodeFromString<List<SerializableMessage>>(body)
246-
.map { it.toUniverse(null, yutori) } as T,
238+
Json.decodeFromString<List<SerializableMessage>>(body).map { it.toUniverse(null, yutori) } as T,
247239
)
248240

249241
"get" ->
@@ -366,4 +358,4 @@ class SatoriActionService(
366358
Logger.d(yutori.name) { "Satori Action Response: $response" }
367359
Result.success(response.body())
368360
}
369-
}
361+
}

adapter/src/commonMain/kotlin/cn/yurin/yutorix/module/satori/adapter/Adapter.kt

+13-30
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
package cn.yurin.yutorix.module.satori.adapter
44

5-
import cn.yurin.yutori.Adapter
6-
import cn.yurin.yutori.BuilderMarker
7-
import cn.yurin.yutori.Login
8-
import cn.yurin.yutori.Reinstallable
9-
import cn.yurin.yutori.Yutori
5+
import cn.yurin.yutori.*
106
import cn.yurin.yutorix.module.satori.SatoriAdapterProperties
117
import co.touchlab.kermit.Logger
128
import kotlinx.atomicfu.atomic
@@ -19,44 +15,31 @@ fun Adapter.Companion.satori(
1915
path: String = "",
2016
token: String? = null,
2117
version: String = "v1",
22-
) = SatoriAdapter(alias, host, port, path, token, version)
18+
onStart: suspend WebSocketEventService.() -> Unit = { },
19+
onConnect: suspend WebSocketEventService.(List<Login>) -> Unit = { },
20+
onClose: suspend () -> Unit = { },
21+
onError: suspend () -> Unit = { },
22+
) = SatoriAdapter(alias, host, port, path, token, version, onStart, onConnect, onClose, onError)
2323

24-
@BuilderMarker
2524
class SatoriAdapter(
2625
alias: String?,
2726
val host: String,
2827
val port: Int,
2928
val path: String,
3029
val token: String?,
3130
val version: String,
31+
val onStart: suspend WebSocketEventService.() -> Unit,
32+
val onConnect: suspend WebSocketEventService.(List<Login>) -> Unit,
33+
val onClose: suspend () -> Unit,
34+
val onError: suspend () -> Unit,
3235
) : Adapter(alias),
3336
Reinstallable {
34-
var onStart: suspend WebSocketEventService.() -> Unit = { }
35-
var onConnect: suspend WebSocketEventService.(List<Login>) -> Unit = { }
36-
var onClose: suspend () -> Unit = { }
37-
var onError: suspend () -> Unit = { }
3837
private var connecting by atomic(false)
3938
private var service: WebSocketEventService? by atomic(null)
4039

41-
fun onStart(block: suspend WebSocketEventService.() -> Unit) {
42-
onStart = block
43-
}
44-
45-
fun onConnect(block: suspend WebSocketEventService.(List<Login>) -> Unit) {
46-
onConnect = block
47-
}
48-
49-
fun onClose(block: suspend () -> Unit) {
50-
onClose = block
51-
}
52-
53-
fun onError(block: suspend () -> Unit) {
54-
onError = block
55-
}
56-
57-
override fun install(yutori: Yutori) {}
40+
override fun install(builder: YutoriBuilder) {}
5841

59-
override fun uninstall(yutori: Yutori) {}
42+
override fun uninstall(builder: YutoriBuilder) {}
6043

6144
override suspend fun start(yutori: Yutori) {
6245
val properties = SatoriAdapterProperties(host, port, path, token, version)
@@ -89,4 +72,4 @@ class SatoriAdapter(
8972
service?.disconnect()
9073
service = null
9174
}
92-
}
75+
}

adapter/src/commonMain/kotlin/cn/yurin/yutorix/module/satori/adapter/EventService.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ class WebSocketEventService(
215215
}
216216

217217
val context = AdapterContext(actions, event, yutori)
218-
yutori.adapter.container(context)
218+
yutori.adapterConfig.container(context)
219219
} catch (e: Exception) {
220220
Logger.w(name, e) { "处理事件时出错: $event" }
221221
}
@@ -224,4 +224,4 @@ class WebSocketEventService(
224224
override fun disconnect() {
225225
job?.cancel("Event service disconnect")
226226
}
227-
}
227+
}

core/src/commonMain/kotlin/cn/yurin/yutorix/module/satori/Serializer.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ object DynamicLookupSerializer : KSerializer<Any> {
3434
encoder: Encoder,
3535
value: Any,
3636
) {
37-
val actualSerializer =
38-
encoder.serializersModule.getContextual(value::class) ?: value::class.serializer()
37+
val actualSerializer = encoder.serializersModule.getContextual(value::class) ?: value::class.serializer()
3938
@Suppress("UNCHECKED_CAST")
4039
encoder.encodeSerializableValue(
4140
actualSerializer as KSerializer<Any>,
@@ -46,4 +45,4 @@ object DynamicLookupSerializer : KSerializer<Any> {
4645
override fun deserialize(decoder: Decoder): Any {
4746
error("Unsupported")
4847
}
49-
}
48+
}

gradle/libs.versions.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
kotlin = "2.0.21"
33
agp = "8.6.1"
44
atomicfu = "0.25.0"
5-
ktor = "3.0.0-rc-1"
5+
ktor = "3.0.1"
66
ksoup = "0.1.9"
7-
yutori = "72549b81b4ef8f59103125cd8ffe9baf2a211b39"
7+
yutori = "10b1b97900331bc8fea475fa9f68627a5540b9ca"
88

99
[libraries]
1010
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }

server/src/commonMain/kotlin/cn/yurin/yutorix/module/satori/server/Server.kt

+4-10
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
package cn.yurin.yutorix.module.satori.server
44

5-
import cn.yurin.yutori.BuilderMarker
6-
import cn.yurin.yutori.Event
7-
import cn.yurin.yutori.Reinstallable
8-
import cn.yurin.yutori.Server
9-
import cn.yurin.yutori.SigningEvent
10-
import cn.yurin.yutori.Yutori
5+
import cn.yurin.yutori.*
116
import cn.yurin.yutorix.module.satori.SatoriServerProperties
127
import kotlinx.atomicfu.atomic
138

@@ -20,7 +15,6 @@ fun Server.Companion.satori(
2015
version: String = "v1",
2116
) = SatoriServer(alias, listen, port, path, token, version)
2217

23-
@BuilderMarker
2418
class SatoriServer(
2519
alias: String?,
2620
val listen: String,
@@ -33,9 +27,9 @@ class SatoriServer(
3327
private var connecting by atomic(false)
3428
private var service: SatoriServerService? by atomic(null)
3529

36-
override fun install(yutori: Yutori) {}
30+
override fun install(builder: YutoriBuilder) {}
3731

38-
override fun uninstall(yutori: Yutori) {}
32+
override fun uninstall(builder: YutoriBuilder) {}
3933

4034
override suspend fun start(yutori: Yutori) {
4135
val properties = SatoriServerProperties(listen, port, path, token, version)
@@ -51,4 +45,4 @@ class SatoriServer(
5145
}
5246

5347
override suspend fun pushEvent(event: Event<SigningEvent>) = service!!.pushEvent(event)
54-
}
48+
}

server/src/commonMain/kotlin/cn/yurin/yutorix/module/satori/server/ServerService.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("MemberVisibilityCanBePrivate")
2+
13
package cn.yurin.yutorix.module.satori.server
24

35
import cn.yurin.yutori.Event
@@ -227,7 +229,7 @@ class SatoriServerService(
227229
Response { call.respond(it) },
228230
yutori,
229231
)
230-
yutori.server.container(context)
232+
yutori.serverConfig.container(context)
231233
}
232234
}
233235
}.start(wait = true)
@@ -251,4 +253,4 @@ class SatoriServerService(
251253
override fun stop() {
252254
job?.cancel("Server service stop")
253255
}
254-
}
256+
}

0 commit comments

Comments
 (0)