mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-11-09 05:05:22 +01:00
Making OkHttpExtensions in line with upstream
Co-Authored-By: arkon <4098258+arkon@users.noreply.github.com>
This commit is contained in:
parent
221bb58c8c
commit
8e7143e8b4
@ -15,10 +15,9 @@ import com.google.gson.JsonParser
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.network.await
|
||||
import eu.kanade.tachiyomi.network.jsonType
|
||||
import eu.kanade.tachiyomi.network.jsonMime
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
@ -44,7 +43,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
||||
"query" to addToLibraryQuery(),
|
||||
"variables" to variables
|
||||
)
|
||||
val body = payload.toString().toRequestBody(MediaType.jsonType())
|
||||
val body = payload.toString().toRequestBody(jsonMime)
|
||||
val request = Request.Builder().url(apiUrl).post(body).build()
|
||||
|
||||
val netResponse = authClient.newCall(request).execute()
|
||||
@ -74,7 +73,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
||||
"query" to updateInLibraryQuery(),
|
||||
"variables" to variables
|
||||
)
|
||||
val body = payload.toString().toRequestBody(MediaType.jsonType())
|
||||
val body = payload.toString().toRequestBody(jsonMime)
|
||||
val request = Request.Builder().url(apiUrl).post(body).build()
|
||||
val response = authClient.newCall(request).await()
|
||||
|
||||
@ -91,7 +90,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
||||
"query" to searchQuery(),
|
||||
"variables" to variables
|
||||
)
|
||||
val body = payload.toString().toRequestBody(MediaType.jsonType())
|
||||
val body = payload.toString().toRequestBody(jsonMime)
|
||||
val request = Request.Builder().url(apiUrl).post(body).build()
|
||||
val netResponse = authClient.newCall(request).await()
|
||||
val response = responseToJson(netResponse)
|
||||
@ -112,7 +111,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
||||
"query" to findLibraryMangaQuery(),
|
||||
"variables" to variables
|
||||
)
|
||||
val body = payload.toString().toRequestBody(MediaType.jsonType())
|
||||
val body = payload.toString().toRequestBody(jsonMime)
|
||||
val request = Request.Builder().url(apiUrl).post(body).build()
|
||||
val result = authClient.newCall(request).await()
|
||||
|
||||
@ -146,7 +145,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
||||
"variables" to variables
|
||||
)
|
||||
|
||||
val body = payload.toString().toRequestBody(MediaType.jsonType())
|
||||
val body = payload.toString().toRequestBody(jsonMime)
|
||||
val request = Request.Builder().url(apiUrl).post(body).build()
|
||||
val result = authClient.newCall(request).await()
|
||||
return@withContext true
|
||||
@ -171,7 +170,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
||||
val payload = jsonObject(
|
||||
"query" to currentUserQuery()
|
||||
)
|
||||
val body = payload.toString().toRequestBody(MediaType.jsonType())
|
||||
val body = payload.toString().toRequestBody(jsonMime)
|
||||
val request = Request.Builder().url(apiUrl).post(body).build()
|
||||
val netResponse = authClient.newCall(request).await()
|
||||
|
||||
|
@ -5,7 +5,7 @@ import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.Call
|
||||
import okhttp3.Callback
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
@ -14,14 +14,13 @@ import rx.Producer
|
||||
import rx.Subscription
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.fullType
|
||||
import java.io.BufferedReader
|
||||
import java.io.IOException
|
||||
import java.io.InputStreamReader
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import java.util.zip.GZIPInputStream
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.resumeWithException
|
||||
|
||||
val jsonMime = "application/json; charset=utf-8".toMediaType()
|
||||
|
||||
fun Call.asObservable(): Observable<Response> {
|
||||
return Observable.unsafeCreate { subscriber ->
|
||||
// Since Call is a one-shot type, clone it for each new subscriber.
|
||||
@ -65,6 +64,11 @@ suspend fun Call.await(): Response {
|
||||
enqueue(
|
||||
object : Callback {
|
||||
override fun onResponse(call: Call, response: Response) {
|
||||
if (!response.isSuccessful) {
|
||||
continuation.resumeWithException(Exception("HTTP error ${response.code}"))
|
||||
return
|
||||
}
|
||||
|
||||
continuation.resume(response)
|
||||
}
|
||||
|
||||
@ -117,25 +121,3 @@ inline fun <reified T> Response.parseAs(): T {
|
||||
return json.decodeFromString(responseBody)
|
||||
}
|
||||
}
|
||||
|
||||
fun MediaType.Companion.jsonType(): MediaType = "application/json; charset=utf-8".toMediaTypeOrNull()!!
|
||||
|
||||
fun Response.consumeBody(): String? {
|
||||
use {
|
||||
if (it.code != 200) throw Exception("HTTP error ${it.code}")
|
||||
return it.body?.string()
|
||||
}
|
||||
}
|
||||
|
||||
fun Response.consumeXmlBody(): String? {
|
||||
use { res ->
|
||||
if (res.code != 200) throw Exception("Export list error")
|
||||
BufferedReader(InputStreamReader(GZIPInputStream(res.body?.source()?.inputStream()))).use { reader ->
|
||||
val sb = StringBuilder()
|
||||
reader.forEachLine { line ->
|
||||
sb.append(line)
|
||||
}
|
||||
return sb.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user