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))
}
}
}
}