慧斌
typealias 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
suspend { service.getToken(params) }
A modern programming language that makes developers happier.