Skip to content

Commit 9928977

Browse files
committed
allow for deserialization of plugin info into data classes
1 parent 8df70c2 commit 9928977

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

LavalinkServer/src/main/java/lavalink/server/util/util.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ fun AudioTrack.toTrack(encoded: String, pluginInfoModifiers: List<AudioPluginInf
5454
acc + jsonObject
5555
}
5656

57-
return Track(encoded, this.toInfo(), pluginInfo)
57+
return Track(encoded, this.toInfo(), PluginData(pluginInfo))
5858
}
5959

6060
private operator fun JsonObject.plus(other: JsonObject) = JsonObject(toMap() + other.toMap())
@@ -80,12 +80,12 @@ fun AudioPlaylist.toPlaylistInfo(): PlaylistInfo {
8080
}
8181

8282

83-
fun AudioPlaylist.toPluginInfo(pluginInfoModifiers: List<AudioPluginInfoModifier>): JsonObject {
83+
fun AudioPlaylist.toPluginInfo(pluginInfoModifiers: List<AudioPluginInfoModifier>): PluginData {
8484
val pluginInfo = pluginInfoModifiers.fold(JsonObject(emptyMap())) { acc, it ->
8585
val jsonObject = it.modifyAudioPlaylistPluginInfo(this) ?: JsonObject(emptyMap())
8686
acc + jsonObject
8787
}
88-
return pluginInfo
88+
return PluginData(pluginInfo)
8989
}
9090

9191
fun LavalinkPlayer.toPlayer(context: SocketContext, pluginInfoModifiers: List<AudioPluginInfoModifier>): Player {

protocol/src/commonMain/kotlin/dev/arbjerg/lavalink/protocol/v4/loadResult.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ sealed interface LoadResult {
9696
companion object {
9797
fun trackLoaded(track: Track) = TrackLoaded(track)
9898

99-
fun playlistLoaded(playlistInfo: PlaylistInfo, pluginInfo: JsonObject, tracks: List<Track>) =
99+
fun playlistLoaded(playlistInfo: PlaylistInfo, pluginInfo: PluginData, tracks: List<Track>) =
100100
PlaylistLoaded(
101101
Playlist(
102102
playlistInfo,
@@ -133,7 +133,7 @@ data class PlaylistInfo(
133133
@Serializable
134134
data class Playlist(
135135
val info: PlaylistInfo,
136-
val pluginInfo: JsonObject,
136+
val pluginInfo: PluginData,
137137
val tracks: List<Track>
138138
) : LoadResult.Data
139139

protocol/src/commonMain/kotlin/dev/arbjerg/lavalink/protocol/v4/player.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
package dev.arbjerg.lavalink.protocol.v4
22

3+
import kotlinx.serialization.DeserializationStrategy
34
import kotlinx.serialization.Serializable
45
import kotlinx.serialization.json.JsonObject
6+
import kotlinx.serialization.serializer
57
import kotlin.jvm.JvmInline
68

7-
@Serializable()
9+
@Serializable
10+
@JvmInline
11+
value class PluginData(private val obj: JsonObject){
12+
inline fun <reified T> deserialize(): T = deserialize(json.serializersModule.serializer<T>())
13+
fun <T> deserialize(deserializer: DeserializationStrategy<T>): T = json.decodeFromJsonElement(deserializer, obj)
14+
}
15+
16+
@Serializable
817
@JvmInline
918
value class Players(val players: List<Player>)
1019

@@ -23,7 +32,7 @@ data class Player(
2332
data class Track(
2433
val encoded: String,
2534
val info: TrackInfo,
26-
val pluginInfo: JsonObject
35+
val pluginInfo: PluginData
2736
) : LoadResult.Data
2837

2938
@Serializable

0 commit comments

Comments
 (0)