Coverage Summary for Class: ResponseDeferredHandlerKt (com.javiersc.network.either.internal.deferred)

Class Class, % Method, % Branch, % Line, % Instruction, %
ResponseDeferredHandlerKt 100% (1/1) 100% (1/1) 70% (7/10) 71.4% (5/7) 84.6% (66/78)


 package com.javiersc.network.either.internal.deferred
 
 import com.javiersc.network.either.NetworkEither
 import com.javiersc.network.either.internal.utils.headers
 import com.javiersc.network.either.internal.utils.httpStatusCode
 import com.javiersc.network.either.internal.utils.printlnError
 import io.ktor.util.toMap
 import kotlinx.coroutines.CompletableDeferred
 import okhttp3.ResponseBody
 import retrofit2.Converter
 import retrofit2.Response
 
 internal fun <F : Any, S : Any> Response<S>.responseDeferredHandler(
     errorConverter: Converter<ResponseBody, F>,
     deferred: CompletableDeferred<NetworkEither<F, S>>,
 ) {
     val errorBody: F? =
         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.value, body(), errorBody, headers.toMap())
 }