慧斌
10/20/2021, 6:40 AMtypealias HttpCall<T> = suspend () -> Response<HttpResult<T>>
suspend fun <T> HttpCall<T>.doTransform(): Try<T> {
return try {
invoke().run {
if (isSuccessful && body()?.statusCode == 200) {
Right(body()!!.result)
} else {
Left(Exception(body()?.message))
}
}
} catch (e: Exception) {
Left(e)
}
}
//getToken is a REST API by retrofit
val httpCall: HttpCall<AuthenticationToken> = { service.getToken(params) }
httpCall.doTransform() // OK
{ service.getToken(params) }.doTransform() // failure
Albert Chang
10/20/2021, 6:45 AMsuspend { service.getToken(params) }
慧斌
10/20/2021, 6:48 AM