mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-12-23 18:41:48 +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.database.models.Track
|
||||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||||
import eu.kanade.tachiyomi.network.await
|
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.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import okhttp3.MediaType
|
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
@ -44,7 +43,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
|||||||
"query" to addToLibraryQuery(),
|
"query" to addToLibraryQuery(),
|
||||||
"variables" to variables
|
"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 request = Request.Builder().url(apiUrl).post(body).build()
|
||||||
|
|
||||||
val netResponse = authClient.newCall(request).execute()
|
val netResponse = authClient.newCall(request).execute()
|
||||||
@ -74,7 +73,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
|||||||
"query" to updateInLibraryQuery(),
|
"query" to updateInLibraryQuery(),
|
||||||
"variables" to variables
|
"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 request = Request.Builder().url(apiUrl).post(body).build()
|
||||||
val response = authClient.newCall(request).await()
|
val response = authClient.newCall(request).await()
|
||||||
|
|
||||||
@ -91,7 +90,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
|||||||
"query" to searchQuery(),
|
"query" to searchQuery(),
|
||||||
"variables" to variables
|
"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 request = Request.Builder().url(apiUrl).post(body).build()
|
||||||
val netResponse = authClient.newCall(request).await()
|
val netResponse = authClient.newCall(request).await()
|
||||||
val response = responseToJson(netResponse)
|
val response = responseToJson(netResponse)
|
||||||
@ -112,7 +111,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
|||||||
"query" to findLibraryMangaQuery(),
|
"query" to findLibraryMangaQuery(),
|
||||||
"variables" to variables
|
"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 request = Request.Builder().url(apiUrl).post(body).build()
|
||||||
val result = authClient.newCall(request).await()
|
val result = authClient.newCall(request).await()
|
||||||
|
|
||||||
@ -146,7 +145,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
|||||||
"variables" to variables
|
"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 request = Request.Builder().url(apiUrl).post(body).build()
|
||||||
val result = authClient.newCall(request).await()
|
val result = authClient.newCall(request).await()
|
||||||
return@withContext true
|
return@withContext true
|
||||||
@ -171,7 +170,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
|
|||||||
val payload = jsonObject(
|
val payload = jsonObject(
|
||||||
"query" to currentUserQuery()
|
"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 request = Request.Builder().url(apiUrl).post(body).build()
|
||||||
val netResponse = authClient.newCall(request).await()
|
val netResponse = authClient.newCall(request).await()
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import kotlinx.serialization.decodeFromString
|
|||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.Call
|
import okhttp3.Call
|
||||||
import okhttp3.Callback
|
import okhttp3.Callback
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
@ -14,14 +14,13 @@ import rx.Producer
|
|||||||
import rx.Subscription
|
import rx.Subscription
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.fullType
|
import uy.kohesive.injekt.api.fullType
|
||||||
import java.io.BufferedReader
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStreamReader
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
import java.util.zip.GZIPInputStream
|
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlin.coroutines.resumeWithException
|
import kotlin.coroutines.resumeWithException
|
||||||
|
|
||||||
|
val jsonMime = "application/json; charset=utf-8".toMediaType()
|
||||||
|
|
||||||
fun Call.asObservable(): Observable<Response> {
|
fun Call.asObservable(): Observable<Response> {
|
||||||
return Observable.unsafeCreate { subscriber ->
|
return Observable.unsafeCreate { subscriber ->
|
||||||
// Since Call is a one-shot type, clone it for each new subscriber.
|
// Since Call is a one-shot type, clone it for each new subscriber.
|
||||||
@ -65,6 +64,11 @@ suspend fun Call.await(): Response {
|
|||||||
enqueue(
|
enqueue(
|
||||||
object : Callback {
|
object : Callback {
|
||||||
override fun onResponse(call: Call, response: Response) {
|
override fun onResponse(call: Call, response: Response) {
|
||||||
|
if (!response.isSuccessful) {
|
||||||
|
continuation.resumeWithException(Exception("HTTP error ${response.code}"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
continuation.resume(response)
|
continuation.resume(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,25 +121,3 @@ inline fun <reified T> Response.parseAs(): T {
|
|||||||
return json.decodeFromString(responseBody)
|
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