![JAR search and dependency download from the Maven repository](/logo.png)
jvmMain.retrofit.deferred.handlers.HandleDeferred.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of network-response-jvm Show documentation
Show all versions of network-response-jvm Show documentation
NetworkResponse multiplatform
The newest version!
package com.javiersc.resources.networkResponse.retrofit.deferred.handlers
import com.javiersc.resources.networkResponse.NetworkResponse
import com.javiersc.resources.networkResponse.utils.printlnError
import io.ktor.http.Headers
import io.ktor.http.HttpStatusCode
import kotlinx.coroutines.CompletableDeferred
@Suppress("UNCHECKED_CAST")
internal fun handleDeferred(
deferred: CompletableDeferred>,
status: HttpStatusCode,
body: R?,
errorBody: E?,
headers: Headers,
) {
@Suppress("MagicNumber")
when (status.value) {
in 200..299 -> {
if (body != null) deferred.complete(NetworkResponse.Success(body, status, headers))
else handleNullBody(deferred, status, headers)
}
in 400..599 -> {
if (errorBody != null) deferred.complete(NetworkResponse.Error(errorBody, status, headers))
else handleNullErrorBody(deferred, status, headers)
}
}
}
@Suppress("UNCHECKED_CAST")
private fun handleNullBody(
deferred: CompletableDeferred>,
status: HttpStatusCode,
headers: Headers,
) {
try {
deferred.complete(NetworkResponse.Success(Unit as R, status, headers))
} catch (e: ClassCastException) {
printlnError(
"""
| # # # # # # # # # # # # # # ERROR # # # # # # # # # # # # # # # # # #
| # NetworkResponse should use Unit as Success type when body is null #
| # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
""".trimMargin()
)
deferred.complete(NetworkResponse.UnknownError(e))
}
}
@Suppress("UNCHECKED_CAST")
private fun handleNullErrorBody(
deferred: CompletableDeferred>,
status: HttpStatusCode,
headers: Headers,
) {
try {
deferred.complete(NetworkResponse.Error(Unit as E, status, headers))
} catch (e: ClassCastException) {
printlnError(
"""
| # # # # # # # # # # # # # # ERROR # # # # # # # # # # # # # # # # #
| # NetworkResponse should use Unit as Error type when body is null #
| # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
""".trimMargin()
)
deferred.complete(NetworkResponse.UnknownError(e))
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy