Coverage Summary for Class: NetworkEitherToResourceKt (com.javiersc.network.either.resource)

Class Class, % Method, % Branch, % Line, % Instruction, %
NetworkEitherToResourceKt 100% (1/1) 100% (2/2) 62.5% (15/24) 81.8% (9/11) 61.3% (103/168)


 @file:Suppress("LongParameterList")
 
 package com.javiersc.network.either.resource
 
 import com.javiersc.network.either.NetworkEither
 import com.javiersc.network.either.NetworkEither.Failure
 import com.javiersc.resource.either.ResourceEither
 import com.javiersc.resource.either.ResourceEither.Companion.resourceFailure
 import com.javiersc.resource.either.ResourceEither.Companion.resourceSuccess
 
 /**
  * Map a `NetworkEither` to `ResourceEither` with the network `Failure` and `Success` as lambda
  * params
  *
  * ```
  * networkEither.toResource(
  *     left = { failure: Failure<SomeFailure> ->
  *         buildResource(failure)
  *     },
  *     right = { success: Success<SomeSuccess> ->
  *         buildResource(failure)
  *     },
  * )
  * ```
  */
 public inline fun <NF, NS, F, S> NetworkEither<NF, NS>.toResource(
     failure: (Failure<NF>) -> ResourceEither<F, S>,
     success: (NetworkEither.Success<NS>) -> ResourceEither<F, S>,
 ): ResourceEither<F, S> =
     when (this) {
         is Failure -> failure(this)
         is NetworkEither.Success -> success(this)
     }
 
 /**
  * Map a `NetworkEither` to `ResourceEither` with network `Failure` and `Success` unwrapped as
  * lambda params
  *
  * ```
  * networkEither.toResource(
  *     success = { data: Data, code: Int, headers: Headers ->
  *         buildResource(data, code, headers)
  *     },
  *     httpError = { error: Error, code: Int, headers: Headers ->
  *         buildResource(error, code, headers)
  *     },
  *     localError = { buildResource() },
  *     remoteError = { buildResource() }
  *     unknownError = { unknownError: Throwable -> buildResource(unknownError) }
  * )
  * ```
  */
 public inline fun <NF, NS, F, S> NetworkEither<NF, NS>.toResource(
     httpError: (Failure.Http<NF>) -> F,
     localError: () -> F,
     remoteError: () -> F,
     unknownError: (Throwable) -> F,
     success: (NetworkEither.Success<NS>) -> S,
     isLoading: Boolean = false
 ): ResourceEither<F, S> =
     when (this) {
         is Failure.Http -> resourceFailure(httpError(this), null, isLoading)
         is Failure.Local -> resourceFailure(localError(), null, isLoading)
         is Failure.Remote -> resourceFailure(remoteError(), null, isLoading)
         is Failure.Unknown -> resourceFailure(unknownError(throwable), null, isLoading)
         is NetworkEither.Success -> resourceSuccess(success(this), isLoading)
     }