Create Extension to convert a Response to a Failure
This commit is contained in:
parent
b24a372262
commit
9b91b6ea87
|
@ -23,9 +23,9 @@ import im.vector.matrix.android.api.failure.Failure
|
||||||
import im.vector.matrix.android.api.failure.MatrixError
|
import im.vector.matrix.android.api.failure.MatrixError
|
||||||
import im.vector.matrix.android.internal.di.MoshiProvider
|
import im.vector.matrix.android.internal.di.MoshiProvider
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
import okhttp3.ResponseBody
|
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
|
import retrofit2.Response
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ internal class Request<DATA> {
|
||||||
response.body()
|
response.body()
|
||||||
?: throw IllegalStateException("The request returned a null body")
|
?: throw IllegalStateException("The request returned a null body")
|
||||||
} else {
|
} else {
|
||||||
throw manageFailure(response.errorBody(), response.code())
|
throw response.toFailure()
|
||||||
}
|
}
|
||||||
} catch (exception: Throwable) {
|
} catch (exception: Throwable) {
|
||||||
throw when (exception) {
|
throw when (exception) {
|
||||||
|
@ -56,10 +56,8 @@ internal class Request<DATA> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun manageFailure(errorBody: ResponseBody?, httpCode: Int): Throwable {
|
private fun <T> Response<T>.toFailure(): Failure {
|
||||||
if (errorBody == null) {
|
val errorBody = errorBody() ?: return Failure.Unknown(RuntimeException("errorBody() should not be null"))
|
||||||
return RuntimeException("Error body should not be null")
|
|
||||||
}
|
|
||||||
|
|
||||||
val errorBodyStr = errorBody.string()
|
val errorBodyStr = errorBody.string()
|
||||||
|
|
||||||
|
@ -74,13 +72,13 @@ internal class Request<DATA> {
|
||||||
EventBus.getDefault().post(ConsentNotGivenError(matrixError.consentUri))
|
EventBus.getDefault().post(ConsentNotGivenError(matrixError.consentUri))
|
||||||
}
|
}
|
||||||
|
|
||||||
return Failure.ServerError(matrixError, httpCode)
|
return Failure.ServerError(matrixError, code())
|
||||||
}
|
}
|
||||||
} catch (ex: JsonDataException) {
|
} catch (ex: JsonDataException) {
|
||||||
// This is not a MatrixError
|
// This is not a MatrixError
|
||||||
Timber.w("The error returned by the server is not a MatrixError")
|
Timber.w("The error returned by the server is not a MatrixError")
|
||||||
}
|
}
|
||||||
|
|
||||||
return Failure.OtherServerError(errorBodyStr, httpCode)
|
return Failure.OtherServerError(errorBodyStr, code())
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue