File tree Expand file tree Collapse file tree 6 files changed +45
-2
lines changed
main/kotlin/github/buriedincode/kalibak
test/kotlin/github/buriedincode/kalibak/schemas Expand file tree Collapse file tree 6 files changed +45
-2
lines changed Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ println("Java v${System.getProperty("java.version")}")
1414println (" Arch: ${System .getProperty(" os.arch" )} " )
1515
1616group = " github.buriedincode"
17- version = " 0.2.1 "
17+ version = " 0.2.2 "
1818
1919repositories {
2020 mavenCentral()
Original file line number Diff line number Diff line change @@ -74,7 +74,7 @@ class Metron(
7474 .newBuilder()
7575 .uri(uri)
7676 .setHeader(" Accept" , " application/json" )
77- .setHeader(" User-Agent" , " Kalibak/0.2.1 (${System .getProperty(" os.name" )} /${System .getProperty(" os.version" )} ; Kotlin/${KotlinVersion .CURRENT } )" )
77+ .setHeader(" User-Agent" , " Kalibak/0.2.2 (${System .getProperty(" os.name" )} /${System .getProperty(" os.version" )} ; Kotlin/${KotlinVersion .CURRENT } )" )
7878 .setHeader(" Authorization" , this .authorization)
7979 .GET ()
8080 .build()
Original file line number Diff line number Diff line change 11package github.buriedincode.kalibak.schemas
22
3+ import github.buriedincode.kalibak.serializers.EmptyListSerializer
34import github.buriedincode.kalibak.serializers.NullableStringSerializer
45import kotlinx.datetime.Instant
56import kotlinx.serialization.ExperimentalSerializationApi
@@ -9,6 +10,7 @@ import kotlinx.serialization.json.JsonNames
910@OptIn(ExperimentalSerializationApi ::class )
1011@Serializable
1112data class Character (
13+ @Serializable(with = EmptyListSerializer ::class )
1214 val alias : List <String > = emptyList(),
1315 @JsonNames(" cv_id" )
1416 val comicvineId : Long? = null ,
Original file line number Diff line number Diff line change 1+ package github.buriedincode.kalibak.serializers
2+
3+ import kotlinx.serialization.ExperimentalSerializationApi
4+ import kotlinx.serialization.KSerializer
5+ import kotlinx.serialization.builtins.ListSerializer
6+ import kotlinx.serialization.descriptors.SerialDescriptor
7+ import kotlinx.serialization.descriptors.listSerialDescriptor
8+ import kotlinx.serialization.encoding.Decoder
9+ import kotlinx.serialization.encoding.Encoder
10+
11+ class EmptyListSerializer <T >(private val elementSerializer : KSerializer <T >) : KSerializer<List<T>> {
12+ @OptIn(ExperimentalSerializationApi ::class )
13+ override val descriptor: SerialDescriptor = listSerialDescriptor(elementSerializer.descriptor)
14+
15+ @OptIn(ExperimentalSerializationApi ::class )
16+ override fun deserialize (decoder : Decoder ): List <T > {
17+ return decoder.decodeNullableSerializableValue(ListSerializer (elementSerializer)) ? : emptyList()
18+ }
19+
20+ override fun serialize (encoder : Encoder , value : List <T >) {
21+ encoder.encodeSerializableValue(ListSerializer (elementSerializer), value)
22+ }
23+ }
Original file line number Diff line number Diff line change @@ -69,5 +69,23 @@ class CharacterTest {
6969 session.getCharacter(id = - 1 )
7070 }
7171 }
72+
73+ @Test
74+ fun `Test GetCharacter with a null alias` () {
75+ val result = session.getCharacter(id = 25657 )
76+ assertNotNull(result)
77+ assertAll(
78+ { assertTrue(result.alias.isEmpty()) },
79+ )
80+ }
81+
82+ @Test
83+ fun `Test GetCharacter with an alias` () {
84+ val result = session.getCharacter(id = 648 )
85+ assertNotNull(result)
86+ assertAll(
87+ { assertEquals(" Spy-D" , result.alias[0 ]) },
88+ )
89+ }
7290 }
7391}
You can’t perform that action at this time.
0 commit comments