Skip to content

Commit b7d9a67

Browse files
committed
explicitly define nonstrict json configuration
1 parent 1941463 commit b7d9a67

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

src/commonMain/kotlin/com.adamratzman.spotify/Builder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.adamratzman.spotify.SpotifyApi.Companion.spotifyClientApi
77
import com.adamratzman.spotify.http.HttpConnection
88
import com.adamratzman.spotify.http.HttpRequestMethod
99
import com.adamratzman.spotify.models.Token
10-
import com.adamratzman.spotify.models.serialization.stableJson
10+
import com.adamratzman.spotify.models.serialization.nonstrictJson
1111
import com.adamratzman.spotify.models.serialization.toObject
1212
import com.adamratzman.spotify.utils.runBlocking
1313
import kotlinx.coroutines.CancellationException
@@ -599,7 +599,7 @@ class SpotifyApiOptionsBuilder(
599599
var defaultLimit: Int = 50,
600600
var allowBulkRequests: Boolean = true,
601601
var requestTimeoutMillis: Long? = null,
602-
var json: Json = stableJson
602+
var json: Json = nonstrictJson
603603
) {
604604
fun build() =
605605
if (enableAllOptions)

src/commonMain/kotlin/com.adamratzman.spotify/http/HttpConnection.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.adamratzman.spotify.SpotifyApi
55
import com.adamratzman.spotify.SpotifyException
66
import com.adamratzman.spotify.models.ErrorResponse
77
import com.adamratzman.spotify.models.SpotifyRatelimitedException
8-
import com.adamratzman.spotify.models.serialization.stableJson
8+
import com.adamratzman.spotify.models.serialization.nonstrictJson
99
import com.adamratzman.spotify.models.serialization.toObject
1010
import com.adamratzman.spotify.utils.getCurrentTimeMs
1111
import io.ktor.client.HttpClient
@@ -148,7 +148,7 @@ class HttpConnection constructor(
148148
throw e
149149
} catch (e: ResponseException) {
150150
val errorBody = e.response.readText()
151-
val error = errorBody.toObject(ErrorResponse.serializer(), api, api?.json ?: stableJson).error
151+
val error = errorBody.toObject(ErrorResponse.serializer(), api, api?.json ?: nonstrictJson).error
152152
throw SpotifyException.BadRequestException(error)
153153
}
154154
}

src/commonMain/kotlin/com.adamratzman.spotify/models/serialization/SerializationUtils.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ import kotlinx.serialization.KSerializer
1414
import kotlinx.serialization.builtins.MapSerializer
1515
import kotlinx.serialization.builtins.serializer
1616
import kotlinx.serialization.json.Json
17+
import kotlinx.serialization.json.JsonConfiguration
1718
import kotlinx.serialization.json.JsonElement
1819
import kotlinx.serialization.json.JsonObject
1920

2021
@Suppress("EXPERIMENTAL_API_USAGE")
21-
internal val stableJson =
22-
Json.nonstrict
23-
// Json(JsonConfiguration.Stable.copy(strictMode = false, useArrayPolymorphism = true), spotifyUriSerializersModule)
22+
internal val nonstrictJson =
23+
Json(
24+
JsonConfiguration(
25+
isLenient = true,
26+
ignoreUnknownKeys = true,
27+
serializeSpecialFloatingPointValues = true,
28+
useArrayPolymorphism = true
29+
)
30+
)
2431

2532
internal inline fun <reified T : Any> String.toObjectNullable(serializer: KSerializer<T>, api: SpotifyApi<*, *>?, json: Json): T? = try {
2633
toObject(serializer, api, json)

0 commit comments

Comments
 (0)