Tim Malseed
01/08/2021, 1:11 AMTim Malseed
01/08/2021, 1:11 AMoverride fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
response.body?.let { body ->
continuation.resume(body.byteStream())
} ?: continuation.resumeWithException(IOException("Request failed: $response"))
} else {
continuation.resumeWithException(IOException("Request failed: $response"))
}
}
Tim Malseed
01/08/2021, 1:12 AMoverride fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
response.body?.let { body ->
continuation.resume(body.byteStream())
return@let
}
}
continuation.resumeWithException(IOException("Request failed: $response"))
}
But the 'early return' doesn't actually exit the outer scopeTim Malseed
01/08/2021, 1:13 AMTim Malseed
01/08/2021, 1:13 AMreturn
instead of return@let
. Confused myself trying to solve a problem I didn't haveYoussef Shoaib [MOD]
01/09/2021, 10:02 PMif(response.isSuccessful && response.body != null) { //resume with stream } else //resume with exception
Youssef Shoaib [MOD]
01/09/2021, 10:07 PMval Response.successfulBody get() = if(response.isSuccesful) response.body else null
and then:
override fun onResponse(call: Call, response: Response) {
response.successfulBody?.let { body ->
continuation.resume(body.byteStream())
} ?: continuation.resumeWithException(IOException("Request failed: $response"))
}
or even turn it into a one-liner if you want:
override fun onResponse(call: Call, response: Response) = response.successfulBody?.let { continuation.resume(it.byteStream()) } ?: continuation.resumeWithException(IOException("Request failed: $response"))