diff --git a/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt b/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt index 423e357..5e6ff9b 100644 --- a/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt +++ b/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt @@ -19,73 +19,41 @@ import kotlinx.serialization.json.int import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive -// import uy.kohesive.injekt.injectLazy -internal class ExtensionGithubApi { +object ExtensionGithubApi { + const val BASE_URL = "https://raw.githubusercontent.com" + const val REPO_URL_PREFIX = "$BASE_URL/tachiyomiorg/tachiyomi-extensions/repo" -// private val preferences: PreferencesHelper by injectLazy() + private fun parseResponse(json: JsonArray): List { + return json + .filter { element -> + val versionName = element.jsonObject["version"]!!.jsonPrimitive.content + val libVersion = versionName.substringBeforeLast('.').toDouble() + libVersion >= ExtensionLoader.LIB_VERSION_MIN && libVersion <= ExtensionLoader.LIB_VERSION_MAX + } + .map { element -> + val name = element.jsonObject["name"]!!.jsonPrimitive.content.substringAfter("Tachiyomi: ") + val pkgName = element.jsonObject["pkg"]!!.jsonPrimitive.content + val apkName = element.jsonObject["apk"]!!.jsonPrimitive.content + val versionName = element.jsonObject["version"]!!.jsonPrimitive.content + val versionCode = element.jsonObject["code"]!!.jsonPrimitive.int + val lang = element.jsonObject["lang"]!!.jsonPrimitive.content + val nsfw = element.jsonObject["nsfw"]!!.jsonPrimitive.int == 1 + val icon = "$REPO_URL_PREFIX/icon/${apkName.replace(".apk", ".png")}" - suspend fun findExtensions(): List { + Extension.Available(name, pkgName, versionName, versionCode, lang, nsfw, apkName, icon) + } + } + + fun findExtensions(): List { val service: ExtensionGithubService = ExtensionGithubService.create() val response = service.getRepo() return parseResponse(response) } -// suspend fun checkForUpdates(): List { -// val extensions = fin dExtensions() -// -// // preferences.lastExtCheck().set(Date().time) -// -// val installedExtensions = ExtensionLoader.loadExtensions(context) -// .filterIsInstance() -// .map { it.extension } -// -// val extensionsWithUpdate = mutableListOf() -// for (installedExt in installedExtensions) { -// val pkgName = installedExt.pkgName -// val availableExt = extensions.find { it.pkgName == pkgName } ?: continue -// -// val hasUpdate = availableExt.versionCode > installedExt.versionCode -// if (hasUpdate) { -// extensionsWithUpdate.add(installedExt) -// } -// } -// -// return extensionsWithUpdate -// } - - private fun parseResponse(json: JsonArray): List { - return json - .filter { element -> - val versionName = element.jsonObject["version"]!!.jsonPrimitive.content - val libVersion = versionName.substringBeforeLast('.').toDouble() - libVersion >= ExtensionLoader.LIB_VERSION_MIN && libVersion <= ExtensionLoader.LIB_VERSION_MAX - } - .map { element -> - val name = element.jsonObject["name"]!!.jsonPrimitive.content.substringAfter("Tachiyomi: ") - val pkgName = element.jsonObject["pkg"]!!.jsonPrimitive.content - val apkName = element.jsonObject["apk"]!!.jsonPrimitive.content - val versionName = element.jsonObject["version"]!!.jsonPrimitive.content - val versionCode = element.jsonObject["code"]!!.jsonPrimitive.int - val lang = element.jsonObject["lang"]!!.jsonPrimitive.content - val nsfw = element.jsonObject["nsfw"]!!.jsonPrimitive.int == 1 - val icon = "$REPO_URL_PREFIX/icon/${apkName.replace(".apk", ".png")}" - - Extension.Available(name, pkgName, versionName, versionCode, lang, nsfw, apkName, icon) - } - } - - fun getApkUrl(extension: Extension.Available): String { - return "$REPO_URL_PREFIX/apk/${extension.apkName}" - } - fun getApkUrl(extension: ExtensionDataClass): String { return "$REPO_URL_PREFIX/apk/${extension.apkName}" } - companion object { - const val BASE_URL = "https://raw.githubusercontent.com" - const val REPO_URL_PREFIX = "$BASE_URL/tachiyomiorg/tachiyomi-extensions/repo" - } } diff --git a/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubService.kt b/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubService.kt index 3428645..c1169d4 100644 --- a/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubService.kt +++ b/server/src/main/kotlin/eu/kanade/tachiyomi/extension/api/ExtensionGithubService.kt @@ -10,7 +10,6 @@ import retrofit2.Retrofit import retrofit2.http.GET import uy.kohesive.injekt.injectLazy -// import uy.kohesive.injekt.injectLazy /** * Used to get the extension repo listing from GitHub. @@ -44,5 +43,5 @@ interface ExtensionGithubService { } @GET("${ExtensionGithubApi.REPO_URL_PREFIX}/index.json.gz") - suspend fun getRepo(): JsonArray + fun getRepo(): JsonArray } diff --git a/server/src/main/kotlin/ir/armor/tachidesk/impl/Extension.kt b/server/src/main/kotlin/ir/armor/tachidesk/impl/Extension.kt index bc46788..5312e4e 100644 --- a/server/src/main/kotlin/ir/armor/tachidesk/impl/Extension.kt +++ b/server/src/main/kotlin/ir/armor/tachidesk/impl/Extension.kt @@ -94,8 +94,7 @@ fun installExtension(pkgName: String): Int { val jarPath = "${applicationDirs.extensionsRoot}/$fileNameWithoutType.jar" if (!File(jarPath).exists()) { runBlocking { - val api = ExtensionGithubApi() - val apkToDownload = api.getApkUrl(extensionRecord) + val apkToDownload = ExtensionGithubApi.getApkUrl(extensionRecord) val apkFilePath = "$dirPathWithoutType.apk" val jarFilePath = "$dirPathWithoutType.jar" diff --git a/server/src/main/kotlin/ir/armor/tachidesk/impl/ExtensionsList.kt b/server/src/main/kotlin/ir/armor/tachidesk/impl/ExtensionsList.kt index 519b023..aea8856 100644 --- a/server/src/main/kotlin/ir/armor/tachidesk/impl/ExtensionsList.kt +++ b/server/src/main/kotlin/ir/armor/tachidesk/impl/ExtensionsList.kt @@ -37,7 +37,7 @@ fun getExtensionList(): List { logger.debug("Getting extensions list from the internet") ExtensionListData.lastUpdateCheck = System.currentTimeMillis() runBlocking { - val foundExtensions = ExtensionGithubApi().findExtensions() + val foundExtensions = ExtensionGithubApi.findExtensions() updateExtensionDatabase(foundExtensions) } } else {