Package com.skydoves.sandwich

Types

Link copied to clipboard
fun interface ApiErrorModelMapper<V>
Link copied to clipboard
sealed class ApiResponse<out T>
Link copied to clipboard
enum ApiResponseMergePolicy : Enum<ApiResponseMergePolicy>
Link copied to clipboard
fun interface ApiSuccessModelMapper<T, V>
Link copied to clipboard
fun interface ResponseObserver<T>
Link copied to clipboard
object SandwichInitializer
Link copied to clipboard
enum StatusCode : Enum<StatusCode>

Properties

Link copied to clipboard
val ApiResponse<Any>.isError: Boolean
Link copied to clipboard
val ApiResponse<Any>.isException: Boolean
Link copied to clipboard
val ApiResponse<Any>.isFailure: Boolean
Link copied to clipboard
val ApiResponse<Any>.isSuccess: Boolean

Functions

Link copied to clipboard
fun <T> ApiResponse<T>.getOrElse(defaultValue: T): T
inline fun <T> ApiResponse<T>.getOrElse(defaultValue: () -> T): T
Link copied to clipboard
fun <T> ApiResponse<T>.getOrNull(): T?
Link copied to clipboard
fun <T> ApiResponse<T>.getOrThrow(): T
Link copied to clipboard
fun <T, V> ApiResponse.Failure.Error<T>.map(mapper: ApiErrorModelMapper<V>): V
fun <T, V> ApiResponse.Failure.Error<T>.map(mapper: (ApiResponse.Failure.Error<T>) -> V): V
fun <T, V> ApiResponse.Success<T>.map(mapper: ApiSuccessModelMapper<T, V>): V
fun <T, V> ApiResponse.Success<T>.map(mapper: (ApiResponse.Success<T>) -> V): V
inline fun <T, V> ApiResponse.Failure.Error<T>.map(mapper: ApiErrorModelMapper<V>, crossinline onResult: V.() -> Unit)
inline fun <T, V> ApiResponse.Success<T>.map(mapper: ApiSuccessModelMapper<T, V>, crossinline onResult: V.() -> Unit)
Link copied to clipboard
fun <T, V> ApiResponse<T>.mapSuccess(transformer: T.() -> V): ApiResponse<V>
Link copied to clipboard
fun <T> ApiResponse<List<T>>.merge(vararg responses: ApiResponse<List<T>>, mergePolicy: ApiResponseMergePolicy = ApiResponseMergePolicy.IGNORE_FAILURE): ApiResponse<List<T>>
Link copied to clipboard
fun <T> ApiResponse.Failure.Error<T>.message(): String

fun <T> ApiResponse.Failure.Exception<T>.message(): String

Returns an error message from the ApiResponse.Failure.Exception that consists of the localized message.

fun <T> ApiResponse.Failure<T>.message(): String

Returns an error message from the ApiResponse.Failure that consists of the localized message.

Link copied to clipboard
inline fun <T> ApiResponse<T>.onError(crossinline onResult: ApiResponse.Failure.Error<T>.() -> Unit): ApiResponse<T>
inline fun <T, V> ApiResponse<T>.onError(mapper: ApiErrorModelMapper<V>, crossinline onResult: V.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline fun <T> ApiResponse<T>.onException(crossinline onResult: ApiResponse.Failure.Exception<T>.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline fun <T> ApiResponse<T>.onFailure(crossinline onResult: ApiResponse.Failure<T>.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline fun <T> ApiResponse<T>.onProcedure(    crossinline onSuccess: ApiResponse.Success<T>.() -> Unit,     crossinline onError: ApiResponse.Failure.Error<T>.() -> Unit,     crossinline onException: ApiResponse.Failure.Exception<T>.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline fun <T> ApiResponse<T>.onSuccess(crossinline onResult: ApiResponse.Success<T>.() -> Unit): ApiResponse<T>
inline fun <T, V> ApiResponse<T>.onSuccess(mapper: ApiSuccessModelMapper<T, V>, crossinline onResult: V.() -> Unit): ApiResponse<T>
Link copied to clipboard
fun <T, V : ApiResponseOperator<T>> ApiResponse<T>.operator(apiResponseOperator: V): ApiResponse<T>
Link copied to clipboard
inline fun <T> Call<T>.request(crossinline onResult: (response: ApiResponse<T>) -> Unit): Call<T>
Link copied to clipboard
inline suspend fun <T : Any> retry(    retry: Int = 1,     timeMillis: Long = 1000,     execute: () -> ApiResponse<T>): ApiResponse<T>

Retry the given function execute specified number of times with delays if the execute returns ApiResponse.Failure.

Link copied to clipboard
inline suspend fun <T, V> ApiResponse.Failure.Error<T>.suspendMap(crossinline mapper: suspend (ApiResponse.Failure.Error<T>) -> V): V
inline suspend fun <T, V> ApiResponse.Success<T>.suspendMap(crossinline mapper: suspend (ApiResponse.Success<T>) -> V): V
inline suspend fun <T, V> ApiResponse.Failure.Error<T>.suspendMap(mapper: ApiErrorModelMapper<V>, crossinline onResult: suspend V.() -> Unit)
inline suspend fun <T, V> ApiResponse.Success<T>.suspendMap(mapper: ApiSuccessModelMapper<T, V>, crossinline onResult: suspend V.() -> Unit)
Link copied to clipboard
inline suspend fun <T> ApiResponse<T>.suspendOnError(crossinline onResult: suspend ApiResponse.Failure.Error<T>.() -> Unit): ApiResponse<T>
inline suspend fun <T, V> ApiResponse<T>.suspendOnError(mapper: ApiErrorModelMapper<V>, crossinline onResult: suspend V.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline suspend fun <T> ApiResponse<T>.suspendOnException(crossinline onResult: suspend ApiResponse.Failure.Exception<T>.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline suspend fun <T> ApiResponse<T>.suspendOnFailure(crossinline onResult: suspend ApiResponse.Failure<T>.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline suspend fun <T> ApiResponse<T>.suspendOnProcedure(    crossinline onSuccess: suspend ApiResponse.Success<T>.() -> Unit,     crossinline onError: suspend ApiResponse.Failure.Error<T>.() -> Unit,     crossinline onException: suspend ApiResponse.Failure.Exception<T>.() -> Unit): ApiResponse<T>
Link copied to clipboard
inline suspend fun <T> ApiResponse<T>.suspendOnSuccess(crossinline onResult: suspend ApiResponse.Success<T>.() -> Unit): ApiResponse<T>
inline suspend fun <T, V> ApiResponse<T>.suspendOnSuccess(mapper: ApiSuccessModelMapper<T, V>, crossinline onResult: suspend V.() -> Unit): ApiResponse<T>
Link copied to clipboard
suspend fun <T, V : ApiResponseSuspendOperator<T>> ApiResponse<T>.suspendOperator(apiResponseOperator: V): ApiResponse<T>
Link copied to clipboard
fun <T> ApiResponse<T>.toFlow(): Flow<T>
inline fun <T, R> ApiResponse<T>.toFlow(crossinline transformer: T.() -> R): Flow<R>
Link copied to clipboard
inline suspend fun <T, R> ApiResponse<T>.toSuspendFlow(crossinline transformer: suspend T.() -> R): Flow<R>