All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jvmMain.retrofit.deferred.handlers.ResponseCodeDeferredHandler.kt Maven / Gradle / Ivy

The newest version!
package com.javiersc.resources.networkResponse.retrofit.deferred.handlers

import com.javiersc.resources.networkResponse.NetworkResponse
import com.javiersc.resources.networkResponse.retrofit.utils.headers
import com.javiersc.resources.networkResponse.retrofit.utils.httpStatusCode
import com.javiersc.resources.networkResponse.utils.printlnError
import kotlinx.coroutines.CompletableDeferred
import okhttp3.ResponseBody
import retrofit2.Converter
import retrofit2.Response

internal fun  Response.responseDeferredHandler(
    errorConverter: Converter,
    deferred: CompletableDeferred>,
) {
    val errorBody: E? =
        if (errorBody()?.contentLength() == 0L) null
        else runCatching { errorBody()?.let { errorConverter.convert(it) } }
            .getOrElse { printlnError("Error body can't be serialized with the error object provided").run { null } }

    handleDeferred(deferred, httpStatusCode, body(), errorBody, headers)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy