Coverage Summary for Class: InterceptResponsesAndReplaceWithNetworkEitherKt (com.javiersc.network.either.ktor._internal)

Class Method, % Branch, % Line, % Instruction, %
InterceptResponsesAndReplaceWithNetworkEitherKt 100% (1/1) 100% (1/1) 100% (10/10)
InterceptResponsesAndReplaceWithNetworkEitherKt$interceptSuccessesAndReplaceWithNetworkEitherSuccess$1 100% (1/1) 87.5% (7/8) 100% (12/12) 97.9% (94/96)
Total 100% (2/2) 87.5% (7/8) 100% (13/13) 98.1% (104/106)


 package com.javiersc.network.either.ktor._internal
 
 import com.javiersc.network.either.NetworkEither
 import com.javiersc.network.either.NetworkEither.Companion.httpFailure
 import com.javiersc.network.either.NetworkEither.Companion.success
 import io.ktor.client.HttpClient
 import io.ktor.client.statement.HttpResponseContainer
 import io.ktor.client.statement.HttpResponsePipeline
 import io.ktor.util.toMap
 
 internal fun interceptSuccessesAndReplaceWithNetworkEitherSuccess(client: HttpClient) {
     client.responsePipeline.intercept(HttpResponsePipeline.After) {
         if (isNetworkEither) return@intercept
         val code: Int = context.response.status.value
         val headers: Map<String, List<String>> = context.response.headers.toMap()
         val response = subject.response
         when (code) {
             in SUCCESS_RANGE -> {
                 val networkEither: NetworkEither<Nothing, *> =
                     success(data = response, code = code, headers = headers.toMap())
                 proceedWith(HttpResponseContainer(subject.expectedType, networkEither))
             }
             else -> {
                 val networkEither: NetworkEither<*, Nothing> =
                     httpFailure(error = response, code = code, headers = headers.toMap())
                 proceedWith(HttpResponseContainer(subject.expectedType, networkEither))
             }
         }
     }
 }