Remove usage of retrofit in similar manga pull
This commit is contained in:
parent
e78197ab48
commit
8e659f3355
@ -1,45 +0,0 @@
|
|||||||
package exh.md.similar
|
|
||||||
|
|
||||||
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
|
||||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
|
||||||
import kotlinx.serialization.json.Json
|
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
|
||||||
import okhttp3.ResponseBody
|
|
||||||
import retrofit2.Call
|
|
||||||
import retrofit2.Retrofit
|
|
||||||
import retrofit2.http.GET
|
|
||||||
import retrofit2.http.Streaming
|
|
||||||
import uy.kohesive.injekt.injectLazy
|
|
||||||
|
|
||||||
interface SimilarHttpService {
|
|
||||||
companion object {
|
|
||||||
private val client by lazy {
|
|
||||||
val network: NetworkHelper by injectLazy()
|
|
||||||
network.client.newBuilder()
|
|
||||||
// unzip interceptor which will add the correct headers
|
|
||||||
.addNetworkInterceptor { chain ->
|
|
||||||
val originalResponse = chain.proceed(chain.request())
|
|
||||||
originalResponse.newBuilder()
|
|
||||||
.header("Content-Encoding", "gzip")
|
|
||||||
.header("Content-Type", "application/json")
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun create(): SimilarHttpService {
|
|
||||||
// actual builder, which will parse the underlying json file
|
|
||||||
val adapter = Retrofit.Builder()
|
|
||||||
.baseUrl("https://raw.githubusercontent.com")
|
|
||||||
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
|
|
||||||
.client(client)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
return adapter.create(SimilarHttpService::class.java)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Streaming
|
|
||||||
@GET("/goldbattle/MangadexRecomendations/master/output/mangas_compressed.json.gz")
|
|
||||||
fun getSimilarResults(): Call<ResponseBody>
|
|
||||||
}
|
|
@ -15,6 +15,9 @@ import eu.kanade.tachiyomi.R
|
|||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||||
|
import eu.kanade.tachiyomi.network.await
|
||||||
import eu.kanade.tachiyomi.util.system.isServiceRunning
|
import eu.kanade.tachiyomi.util.system.isServiceRunning
|
||||||
import eu.kanade.tachiyomi.util.system.notificationManager
|
import eu.kanade.tachiyomi.util.system.notificationManager
|
||||||
import exh.md.similar.sql.models.MangaSimilarImpl
|
import exh.md.similar.sql.models.MangaSimilarImpl
|
||||||
@ -29,7 +32,6 @@ import kotlinx.coroutines.withContext
|
|||||||
import okio.buffer
|
import okio.buffer
|
||||||
import okio.sink
|
import okio.sink
|
||||||
import okio.source
|
import okio.source
|
||||||
import retrofit2.awaitResponse
|
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -39,6 +41,19 @@ class SimilarUpdateService(
|
|||||||
val db: DatabaseHelper = Injekt.get()
|
val db: DatabaseHelper = Injekt.get()
|
||||||
) : Service() {
|
) : Service() {
|
||||||
|
|
||||||
|
private val client by lazy {
|
||||||
|
Injekt.get<NetworkHelper>().client.newBuilder()
|
||||||
|
// unzip interceptor which will add the correct headers
|
||||||
|
.addNetworkInterceptor { chain ->
|
||||||
|
val originalResponse = chain.proceed(chain.request())
|
||||||
|
originalResponse.newBuilder()
|
||||||
|
.header("Content-Encoding", "gzip")
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wake lock that will be held until the service is destroyed.
|
* Wake lock that will be held until the service is destroyed.
|
||||||
*/
|
*/
|
||||||
@ -135,7 +150,9 @@ class SimilarUpdateService(
|
|||||||
* Method that updates the similar database for manga
|
* Method that updates the similar database for manga
|
||||||
*/
|
*/
|
||||||
private suspend fun updateSimilar() = withContext(Dispatchers.IO) {
|
private suspend fun updateSimilar() = withContext(Dispatchers.IO) {
|
||||||
val response = SimilarHttpService.create().getSimilarResults().awaitResponse()
|
val response = client
|
||||||
|
.newCall(GET(similarUrl))
|
||||||
|
.await()
|
||||||
if (!response.isSuccessful) {
|
if (!response.isSuccessful) {
|
||||||
throw Exception("Error trying to download similar file")
|
throw Exception("Error trying to download similar file")
|
||||||
}
|
}
|
||||||
@ -143,7 +160,7 @@ class SimilarUpdateService(
|
|||||||
val buffer = withContext(Dispatchers.IO) { destinationFile.sink().buffer() }
|
val buffer = withContext(Dispatchers.IO) { destinationFile.sink().buffer() }
|
||||||
|
|
||||||
// write json to file
|
// write json to file
|
||||||
response.body()?.byteStream()?.source()?.use { input ->
|
response.body?.byteStream()?.source()?.use { input ->
|
||||||
buffer.use { output ->
|
buffer.use { output ->
|
||||||
output.writeAll(input)
|
output.writeAll(input)
|
||||||
}
|
}
|
||||||
@ -288,6 +305,7 @@ class SimilarUpdateService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
private const val similarUrl = "https://raw.githubusercontent.com/goldbattle/MangadexRecomendations/master/output/mangas_compressed.json.gz"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status of the service.
|
* Returns the status of the service.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user