Skip to content

Commit 072045b

Browse files
YurnYurn
authored andcommitted
实现 server
优化代码
1 parent 2628758 commit 072045b

File tree

10 files changed

+798
-685
lines changed

10 files changed

+798
-685
lines changed

adapter/build.gradle.kts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,10 @@ kotlin {
8989
api(libs.ktor.client.js)
9090
}
9191

92-
nativeMain.dependencies {
93-
}
94-
9592
appleMain.dependencies {
9693
api(libs.ktor.client.darwin)
9794
}
9895

99-
iosMain.dependencies {
100-
}
101-
10296
iosX64Main.dependencies {
10397
implementation(libs.yutori.ios.x64)
10498
}
@@ -111,9 +105,6 @@ kotlin {
111105
implementation(libs.yutori.ios.simulator.arm64)
112106
}
113107

114-
macosMain.dependencies {
115-
}
116-
117108
macosX64Main.dependencies {
118109
implementation(libs.yutori.macos.x64)
119110
}

adapter/src/commonMain/kotlin/cn/yurn/yutori/module/satori/adapter/ActionService.kt

Lines changed: 43 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,26 @@
77

88
package cn.yurn.yutori.module.satori.adapter
99

10-
import cn.yurn.yutori.ActionService
10+
import cn.yurn.yutori.AdapterActionService
11+
import cn.yurn.yutori.Channel
1112
import cn.yurn.yutori.FormData
12-
import cn.yurn.yutori.SatoriProperties
13+
import cn.yurn.yutori.Guild
14+
import cn.yurn.yutori.GuildMember
15+
import cn.yurn.yutori.GuildRole
16+
import cn.yurn.yutori.Message
17+
import cn.yurn.yutori.User
18+
import cn.yurn.yutori.Yutori
1319
import cn.yurn.yutori.message.element.MessageElement
14-
import cn.yurn.yutori.module.satori.BidiPagingListSerializer
15-
import cn.yurn.yutori.module.satori.ChannelSerializer
16-
import cn.yurn.yutori.module.satori.GuildMemberSerializer
17-
import cn.yurn.yutori.module.satori.GuildRoleSerializer
18-
import cn.yurn.yutori.module.satori.GuildSerializer
19-
import cn.yurn.yutori.module.satori.LoginSerializer
20-
import cn.yurn.yutori.module.satori.MessageSerializer
21-
import cn.yurn.yutori.module.satori.PagingListSerializer
22-
import cn.yurn.yutori.module.satori.UserSerializer
20+
import cn.yurn.yutori.module.satori.SatoriAdapterProperties
21+
import cn.yurn.yutori.module.satori.SerializableBidiPagingList
22+
import cn.yurn.yutori.module.satori.SerializableChannel
23+
import cn.yurn.yutori.module.satori.SerializableGuild
24+
import cn.yurn.yutori.module.satori.SerializableGuildMember
25+
import cn.yurn.yutori.module.satori.SerializableGuildRole
26+
import cn.yurn.yutori.module.satori.SerializableLogin
27+
import cn.yurn.yutori.module.satori.SerializableMessage
28+
import cn.yurn.yutori.module.satori.SerializablePagingList
29+
import cn.yurn.yutori.module.satori.SerializableUser
2330
import cn.yurn.yutori.module.satori.serialize
2431
import co.touchlab.kermit.Logger
2532
import io.ktor.client.HttpClient
@@ -40,10 +47,12 @@ import io.ktor.http.contentType
4047
import io.ktor.http.headers
4148
import io.ktor.serialization.kotlinx.json.json
4249
import io.ktor.utils.io.core.use
43-
import kotlinx.serialization.builtins.ListSerializer
4450
import kotlinx.serialization.json.Json
4551

46-
class SatoriActionService(val properties: SatoriProperties, val name: String) : ActionService {
52+
class SatoriActionService(
53+
val yutori: Yutori,
54+
val properties: SatoriAdapterProperties
55+
) : AdapterActionService {
4756
override suspend fun send(
4857
resource: String,
4958
method: String,
@@ -92,42 +101,42 @@ class SatoriActionService(val properties: SatoriProperties, val name: String) :
92101
)
93102
}
94103
})
95-
Logger.d(name) {
104+
Logger.d(yutori.name) {
96105
"""
97106
Satori Action Request: url: ${this.url},
98107
headers: ${this.headers.build()},
99108
body: ${this.body}
100109
""".trimIndent()
101110
}
102111
}
103-
Logger.d(name) { "Satori Action Response: $response" }
112+
Logger.d(yutori.name) { "Satori Action Response: $response" }
104113
val body = response.bodyAsText()
105114
when (resource) {
106115
"channel" -> when (method) {
107-
"get" -> Json.decodeFromString(ChannelSerializer, body)
108-
"list" -> Json.decodeFromString(PagingListSerializer(ChannelSerializer), body)
109-
"create" -> Json.decodeFromString(ChannelSerializer, body)
116+
"get" -> Json.decodeFromString<SerializableChannel>(body).toUniverse(yutori)
117+
"list" -> Json.decodeFromString<SerializablePagingList<SerializableChannel, Channel>>(body).toUniverse(yutori)
118+
"create" -> Json.decodeFromString<SerializableChannel>(body).toUniverse(yutori)
110119
"update" -> Unit
111120
"delete" -> Unit
112121
"mute" -> Unit
113122
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
114123
}
115124

116125
"user.channel" -> when (method) {
117-
"create" -> Json.decodeFromString(ChannelSerializer, body)
126+
"create" -> Json.decodeFromString<SerializableChannel>(body).toUniverse(yutori)
118127
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
119128
}
120129

121130
"guild" -> when (method) {
122-
"get" -> Json.decodeFromString(GuildSerializer, body)
123-
"list" -> Json.decodeFromString(PagingListSerializer(GuildSerializer), body)
131+
"get" -> Json.decodeFromString<SerializableGuild>(body).toUniverse(yutori)
132+
"list" -> Json.decodeFromString<SerializablePagingList<SerializableGuild, Guild>>(body).toUniverse(yutori)
124133
"approve" -> Unit
125134
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
126135
}
127136

128137
"guild.member" -> when (method) {
129-
"get" -> Json.decodeFromString(GuildMemberSerializer, body)
130-
"list" -> Json.decodeFromString(PagingListSerializer(GuildMemberSerializer), body)
138+
"get" -> Json.decodeFromString<SerializableGuildMember>(body).toUniverse(yutori)
139+
"list" -> Json.decodeFromString<SerializablePagingList<SerializableGuildMember, GuildMember>>(body).toUniverse(yutori)
131140
"kick" -> Unit
132141
"mute" -> Unit
133142
"approve" -> Unit
@@ -141,42 +150,42 @@ class SatoriActionService(val properties: SatoriProperties, val name: String) :
141150
}
142151

143152
"guild.role" -> when (method) {
144-
"list" -> Json.decodeFromString(PagingListSerializer(GuildRoleSerializer), body)
145-
"create" -> Json.decodeFromString(GuildRoleSerializer, body)
153+
"list" -> Json.decodeFromString<SerializablePagingList<SerializableGuildRole, GuildRole>>(body).toUniverse(yutori)
154+
"create" -> Json.decodeFromString<SerializableGuildRole>(body).toUniverse(yutori)
146155
"update" -> Unit
147156
"delete" -> Unit
148157
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
149158
}
150159

151160
"login" -> when (method) {
152-
"get" -> Json.decodeFromString(LoginSerializer, body)
161+
"get" -> Json.decodeFromString<SerializableLogin>(body).toUniverse(yutori)
153162
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
154163
}
155164

156165
"message" -> when (method) {
157-
"create" -> Json.decodeFromString(ListSerializer(MessageSerializer), body)
158-
"get" -> Json.decodeFromString(MessageSerializer, body)
166+
"create" -> Json.decodeFromString<List<SerializableMessage>>(body).map { it.toUniverse(yutori) }
167+
"get" -> Json.decodeFromString<SerializableMessage>(body).toUniverse(yutori)
159168
"delete" -> Unit
160169
"update" -> Unit
161-
"list" -> Json.decodeFromString(BidiPagingListSerializer(MessageSerializer), body)
170+
"list" -> Json.decodeFromString<SerializableBidiPagingList<SerializableMessage, Message>>(body).toUniverse(yutori)
162171
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
163172
}
164173

165174
"reaction" -> when (method) {
166175
"create" -> Unit
167176
"delete" -> Unit
168177
"clear" -> Unit
169-
"list" -> Json.decodeFromString(PagingListSerializer(UserSerializer), body)
178+
"list" -> Json.decodeFromString<SerializablePagingList<SerializableUser, User>>(body).toUniverse(yutori)
170179
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
171180
}
172181

173182
"user" -> when (method) {
174-
"get" -> Json.decodeFromString(UserSerializer, body)
183+
"get" -> Json.decodeFromString<SerializableUser>(body).toUniverse(yutori)
175184
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
176185
}
177186

178187
"friend" -> when (method) {
179-
"list" -> Json.decodeFromString(PagingListSerializer(UserSerializer), body)
188+
"list" -> Json.decodeFromString<SerializablePagingList<SerializableUser, User>>(body).toUniverse(yutori)
180189
"approve" -> Unit
181190
else -> throw UnsupportedOperationException("Unsupported action: $resource.$method")
182191
}
@@ -224,14 +233,14 @@ class SatoriActionService(val properties: SatoriProperties, val name: String) :
224233
})
225234
}
226235
}
227-
Logger.d(name) {
236+
Logger.d(yutori.name) {
228237
"""
229238
Satori Action Request: url: $url,
230239
body: $formData
231240
""".trimIndent()
232241
}
233242
val response = client.submitFormWithBinaryData(url, formData)
234-
Logger.d(name) { "Satori Action Response: $response" }
243+
Logger.d(yutori.name) { "Satori Action Response: $response" }
235244
response.body()
236245
}
237246
}

adapter/src/commonMain/kotlin/cn/yurn/yutori/module/satori/adapter/Adapter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import cn.yurn.yutori.Adapter
66
import cn.yurn.yutori.BuilderMarker
77
import cn.yurn.yutori.Login
88
import cn.yurn.yutori.Reinstallable
9-
import cn.yurn.yutori.SatoriProperties
109
import cn.yurn.yutori.Yutori
10+
import cn.yurn.yutori.module.satori.SatoriAdapterProperties
1111
import co.touchlab.kermit.Logger
1212
import kotlinx.atomicfu.atomic
1313
import kotlinx.coroutines.delay
@@ -18,7 +18,7 @@ val Adapter.Companion.Satori: SatoriAdapter
1818
@BuilderMarker
1919
class SatoriAdapter : Adapter(), Reinstallable {
2020
var host: String = "127.0.0.1"
21-
var port: Int = 5500
21+
var port: Int = 8080
2222
var path: String = ""
2323
var token: String? = null
2424
var version: String = "v1"
@@ -49,7 +49,7 @@ class SatoriAdapter : Adapter(), Reinstallable {
4949
override fun uninstall(yutori: Yutori) {}
5050

5151
override suspend fun start(yutori: Yutori) {
52-
val properties = SatoriProperties(host, port, path, token, version)
52+
val properties = SatoriAdapterProperties(host, port, path, token, version)
5353
connecting = true
5454
var sequence: Number? = null
5555
do {

0 commit comments

Comments
 (0)