From ef3f9fd17ed1512940626d4d0f3211564fc75783 Mon Sep 17 00:00:00 2001 From: Sargun Vohra Date: Wed, 11 Jun 2025 12:22:53 -0700 Subject: [PATCH] simplify error response adapter --- .../kotlin/co/pokeapi/pokekotlin/PokeApi.kt | 1 + .../pokekotlin/internal/ResultConverter.kt | 18 ++---------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/commonMain/kotlin/co/pokeapi/pokekotlin/PokeApi.kt b/src/commonMain/kotlin/co/pokeapi/pokekotlin/PokeApi.kt index 0e7f22d4..d0c7ecf4 100644 --- a/src/commonMain/kotlin/co/pokeapi/pokekotlin/PokeApi.kt +++ b/src/commonMain/kotlin/co/pokeapi/pokekotlin/PokeApi.kt @@ -600,6 +600,7 @@ public fun PokeApi( configure() install(HttpCache) { cacheStorage?.let { privateStorage(it) } } install(ContentNegotiation) { json(PokeApiJson, ContentType.Any) } + expectSuccess = true } ) .converterFactories(ResultConverter.Factory) diff --git a/src/commonMain/kotlin/co/pokeapi/pokekotlin/internal/ResultConverter.kt b/src/commonMain/kotlin/co/pokeapi/pokekotlin/internal/ResultConverter.kt index 4447eafe..0ba90df4 100644 --- a/src/commonMain/kotlin/co/pokeapi/pokekotlin/internal/ResultConverter.kt +++ b/src/commonMain/kotlin/co/pokeapi/pokekotlin/internal/ResultConverter.kt @@ -5,27 +5,12 @@ import de.jensklingenberg.ktorfit.converter.Converter import de.jensklingenberg.ktorfit.converter.KtorfitResult import de.jensklingenberg.ktorfit.converter.TypeData import io.ktor.client.call.body -import io.ktor.client.plugins.ClientRequestException -import io.ktor.client.plugins.RedirectResponseException -import io.ktor.client.plugins.ResponseException -import io.ktor.client.plugins.ServerResponseException import io.ktor.client.statement.HttpResponse -import io.ktor.client.statement.bodyAsText import io.ktor.http.isSuccess internal class ResultConverter(private val typeData: TypeData) : Converter.SuspendResponseConverter> { - private suspend fun HttpResponse.toException(): Throwable { - val exceptionResponseText = runCatching { bodyAsText() }.getOrElse { "" } - return when (status.value) { - in 300..399 -> RedirectResponseException(this, exceptionResponseText) - in 400..499 -> ClientRequestException(this, exceptionResponseText) - in 500..599 -> ServerResponseException(this, exceptionResponseText) - else -> ResponseException(this, exceptionResponseText) - } - } - override suspend fun convert(result: KtorfitResult): Result { return when (result) { is KtorfitResult.Failure -> Result.failure(result.throwable) @@ -33,7 +18,8 @@ internal class ResultConverter(private val typeData: TypeData) : when { result.response.status.isSuccess() -> Result.success(result.response.body(typeData.typeArgs.first().typeInfo)) - else -> Result.failure(result.response.toException()) + // we configure the client with expectSuccess + else -> error("impossible: " + result.response) } } }