-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathResult.kt
36 lines (26 loc) · 1.11 KB
/
Result.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.ioki.passenger.api.result
import com.ioki.passenger.api.models.ApiBody
import com.ioki.passenger.api.models.ApiErrorBody
import com.ioki.result.Result
public typealias ApiResult<T> = Result<SuccessData<T>, Error>
public data class SuccessData<out T>(val value: T, val meta: ApiBody.Meta? = null)
public val <T> Result.Success<SuccessData<T>>.value: T
get() = this.data.value
public val <T> Result.Success<SuccessData<T>>.meta: ApiBody.Meta?
get() = this.data.meta
public sealed class Error {
public sealed class Api : Error() {
public abstract val errors: List<ApiErrorBody.ApiError>
public abstract val httpStatusCode: Int
public data class Generic(
override val errors: List<ApiErrorBody.ApiError>,
override val httpStatusCode: Int,
) : Api()
public data class Intercepted(
override val errors: List<ApiErrorBody.ApiError>,
override val httpStatusCode: Int,
) : Api()
}
public data class Connectivity(val error: Throwable) : Error()
public data class Generic(val error: Throwable) : Error()
}