From 7c7313ca1a282998ef520fb70b2391afd23fd44a Mon Sep 17 00:00:00 2001 From: Diamond <33725716+DiamondMiner88@users.noreply.github.com> Date: Sat, 17 Sep 2022 12:51:08 -0700 Subject: [PATCH] refactor: move parsing Version to GithubService --- .../kotlin/com/aliucord/manager/di/HttpModule.kt | 1 - .../manager/domain/repository/GithubRepository.kt | 3 +-- .../manager/network/service/GithubService.kt | 14 +++++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt b/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt index 6afe665..d7d4d7d 100644 --- a/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt +++ b/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt @@ -11,7 +11,6 @@ import org.koin.dsl.module val httpModule = module { fun provideJson() = Json { ignoreUnknownKeys = true - isLenient = true } fun provideHttpClient(json: Json) = HttpClient(CIO) { diff --git a/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt b/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt index adda499..f0fdd89 100644 --- a/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt +++ b/app/src/main/kotlin/com/aliucord/manager/domain/repository/GithubRepository.kt @@ -7,7 +7,6 @@ import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json class GithubRepository( - private val json: Json, private val service: GithubService ) { suspend fun getCommits(page: Int) = service.getCommits(page) @@ -15,5 +14,5 @@ class GithubRepository( suspend fun getContributors() = service.getContributors() .sortedByDescending(GithubUser::contributions) - suspend fun getVersion() = json.decodeFromString(service.getVersion()) + suspend fun getVersion() = service.getVersion() } diff --git a/app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt b/app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt index 27eeb09..f6115a6 100644 --- a/app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt +++ b/app/src/main/kotlin/com/aliucord/manager/network/service/GithubService.kt @@ -1,16 +1,18 @@ package com.aliucord.manager.network.service -import com.aliucord.manager.network.dto.Commit -import com.aliucord.manager.network.dto.GithubUser +import com.aliucord.manager.network.dto.* import io.ktor.client.* import io.ktor.client.call.* import io.ktor.client.request.* import io.ktor.client.statement.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json class GithubService( - private val httpClient: HttpClient + private val httpClient: HttpClient, + private val json: Json, ) { suspend fun getCommits(page: Int): List = withContext(Dispatchers.IO) { httpClient.get(COMMITS_URL) { @@ -18,8 +20,10 @@ class GithubService( }.body() } - suspend fun getVersion(): String = withContext(Dispatchers.IO) { - httpClient.get(DATA_URL).bodyAsText() + suspend fun getVersion(): Version = withContext(Dispatchers.IO) { + // Return content type is plain text so manually decoding + val res = httpClient.get(DATA_URL).bodyAsText() + json.decodeFromString(res) } suspend fun getContributors(): List = withContext(Dispatchers.IO) {