Coverage Summary for Class: NetworkResponse (com.codandotv.streamplayerapp.core_networking.handleError)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| NetworkResponse |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(53/53)
|
| NetworkResponse$Companion |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| NetworkResponse$Error |
0%
(0/2)
|
0%
(0/10)
|
0%
(0/5)
|
0%
(0/73)
|
| NetworkResponse$Error$Companion |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/2)
|
| NetworkResponse$Success |
100%
(2/2)
|
0%
(0/2)
|
100%
(3/3)
|
78.8%
(41/52)
|
| NetworkResponse$Success$Companion |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| Total |
37.5%
(3/8)
|
0%
(0/12)
|
33.3%
(4/12)
|
49.5%
(94/190)
|
package com.codandotv.streamplayerapp.core_networking.handleError
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
sealed class NetworkResponse<out T> {
@Serializable
data class Success<out T>(
val value: T
) : NetworkResponse<T>()
@Serializable
data class Error(
val body: String? = null,
@Transient
val exception: Failure? = null
) : NetworkResponse<Nothing>()
}
fun <T> NetworkResponse<T>.toResult(): Result<T> =
when (this) {
is NetworkResponse.Success -> {
Result.success(this.value)
}
is NetworkResponse.Error -> {
Result.failure(this.exception ?: Failure.GenericError())
}
}
fun <T> NetworkResponse<T>.toFlow(): Flow<T> {
val networkResponse = this
return flow {
when (networkResponse) {
is NetworkResponse.Success -> {
emit(networkResponse.value)
}
is NetworkResponse.Error -> {
throw networkResponse.exception ?: Failure.GenericError()
}
}
}
}