diff --git a/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoDto.kt b/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoDto.kt new file mode 100644 index 000000000..6a0a492de --- /dev/null +++ b/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoDto.kt @@ -0,0 +1,27 @@ +package mihon.domain.extensionrepo.service + +import kotlinx.serialization.Serializable +import mihon.domain.extensionrepo.model.ExtensionRepo + +@Serializable +data class ExtensionRepoMetaDto( + val meta: ExtensionRepoDto, +) + +@Serializable +data class ExtensionRepoDto( + val name: String, + val shortName: String?, + val website: String, + val signingKeyFingerprint: String, +) + +fun ExtensionRepoMetaDto.toExtensionRepo(baseUrl: String): ExtensionRepo { + return ExtensionRepo( + baseUrl = baseUrl, + name = meta.name, + shortName = meta.shortName, + website = meta.website, + signingKeyFingerprint = meta.signingKeyFingerprint, + ) +} diff --git a/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoService.kt b/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoService.kt index ca061304e..a8522ac40 100644 --- a/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoService.kt +++ b/domain/src/main/java/mihon/domain/extensionrepo/service/ExtensionRepoService.kt @@ -2,16 +2,14 @@ package mihon.domain.extensionrepo.service import androidx.core.net.toUri import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.HttpException import eu.kanade.tachiyomi.network.awaitSuccess import eu.kanade.tachiyomi.network.parseAs import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive +import logcat.LogPriority import mihon.domain.extensionrepo.model.ExtensionRepo import okhttp3.OkHttpClient import tachiyomi.core.common.util.lang.withIOContext +import tachiyomi.core.common.util.system.logcat import uy.kohesive.injekt.injectLazy class ExtensionRepoService( @@ -20,6 +18,7 @@ class ExtensionRepoService( private val json: Json by injectLazy() + @Suppress("TooGenericExceptionCaught") suspend fun fetchRepoDetails( repo: String, ): ExtensionRepo? { @@ -27,31 +26,16 @@ class ExtensionRepoService( val url = "$repo/repo.json".toUri() try { - val response = with(json) { + with(json) { client.newCall(GET(url.toString())) .awaitSuccess() - .parseAs() + .parseAs() + .toExtensionRepo(baseUrl = repo) } - response["meta"] - ?.jsonObject - ?.let { jsonToExtensionRepo(baseUrl = repo, it) } - } catch (_: HttpException) { + } catch (e: Exception) { + logcat(LogPriority.ERROR, e) { "Failed to fetch repo details" } null } } } - - private fun jsonToExtensionRepo(baseUrl: String, obj: JsonObject): ExtensionRepo? { - return try { - ExtensionRepo( - baseUrl = baseUrl, - name = obj["name"]!!.jsonPrimitive.content, - shortName = obj["shortName"]?.jsonPrimitive?.content, - website = obj["website"]!!.jsonPrimitive.content, - signingKeyFingerprint = obj["signingKeyFingerprint"]!!.jsonPrimitive.content, - ) - } catch (_: NullPointerException) { - null - } - } }