Use expectSuccess on http client requests

This commit is contained in:
Syer10
2022-05-06 21:23:40 -04:00
parent 79d99713c3
commit 3a7c3850cf
13 changed files with 173 additions and 119 deletions

View File

@@ -6,7 +6,6 @@
package ca.gosyer.jui.ui.base.image
import ca.gosyer.jui.core.io.HttpException
import ca.gosyer.jui.data.models.Extension
import ca.gosyer.jui.data.models.Manga
import ca.gosyer.jui.data.models.Source
@@ -26,14 +25,13 @@ import io.kamel.core.fetcher.Fetcher
import io.kamel.core.mapper.Mapper
import io.kamel.image.config.imageBitmapDecoder
import io.ktor.client.HttpClient
import io.ktor.client.plugins.expectSuccess
import io.ktor.client.plugins.onDownload
import io.ktor.client.request.request
import io.ktor.client.request.takeFrom
import io.ktor.client.request.url
import io.ktor.client.statement.bodyAsChannel
import io.ktor.client.statement.discardRemaining
import io.ktor.http.Url
import io.ktor.http.isSuccess
import io.ktor.utils.io.ByteReadChannel
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope
@@ -105,14 +103,10 @@ class KamelConfigProvider @Inject constructor(
}
takeFrom(resourceConfig.requestData)
url(data)
expectSuccess = true
}
if (response.status.isSuccess()) {
val bytes = response.bodyAsChannel()
send(Resource.Success(bytes))
} else {
response.discardRemaining()
send(Resource.Failure(HttpException(response.status)))
}
val bytes = response.bodyAsChannel()
send(Resource.Success(bytes))
}
}
}

View File

@@ -8,9 +8,9 @@ package ca.gosyer.jui.ui.util.compose
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.toComposeImageBitmap
import ca.gosyer.jui.core.io.asSuccess
import ca.gosyer.jui.data.server.Http
import io.ktor.client.call.body
import io.ktor.client.plugins.expectSuccess
import io.ktor.client.request.HttpRequestBuilder
import io.ktor.client.request.get
import io.ktor.client.statement.HttpResponse
@@ -25,7 +25,10 @@ fun imageFromFile(file: Path): ImageBitmap {
}
suspend fun imageFromUrl(client: Http, url: String, block: HttpRequestBuilder.() -> Unit): ImageBitmap {
return client.get(url, block).asSuccess().toImageBitmap()
return client.get(url) {
expectSuccess = true
block()
}.toImageBitmap()
}
actual suspend fun HttpResponse.toImageBitmap(): ImageBitmap {