From 7c693fb5e893b8e9768bcb72b902dc414d7c2796 Mon Sep 17 00:00:00 2001 From: zt64 Date: Mon, 29 Aug 2022 17:55:36 -0400 Subject: [PATCH] Inject http client via Koin --- .../aliucord/manager/ManagerApplication.kt | 2 +- .../com/aliucord/manager/di/AppModule.kt | 14 ----------- .../com/aliucord/manager/di/HttpModule.kt | 25 +++++++++++++++++++ .../manager/network/service/GithubService.kt | 12 +-------- 4 files changed, 27 insertions(+), 26 deletions(-) delete mode 100644 app/src/main/kotlin/com/aliucord/manager/di/AppModule.kt create mode 100644 app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt diff --git a/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt b/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt index 169283d..de091f4 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ManagerApplication.kt @@ -11,7 +11,7 @@ class ManagerApplication : Application() { startKoin { androidContext(this@ManagerApplication) - modules(appModule, serviceModule, repositoryModule, viewModelModule, managerModule) + modules(httpModule, serviceModule, repositoryModule, viewModelModule, managerModule) } } } diff --git a/app/src/main/kotlin/com/aliucord/manager/di/AppModule.kt b/app/src/main/kotlin/com/aliucord/manager/di/AppModule.kt deleted file mode 100644 index 338f4da..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/di/AppModule.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.aliucord.manager.di - -import kotlinx.serialization.json.Json -import org.koin.core.module.dsl.singleOf -import org.koin.dsl.module - -val appModule = module { - fun provideJson(): Json = Json { - ignoreUnknownKeys = true - isLenient = true - } - - singleOf(::provideJson) -} diff --git a/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt b/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt new file mode 100644 index 0000000..6afe665 --- /dev/null +++ b/app/src/main/kotlin/com/aliucord/manager/di/HttpModule.kt @@ -0,0 +1,25 @@ +package com.aliucord.manager.di + +import io.ktor.client.* +import io.ktor.client.engine.cio.* +import io.ktor.client.plugins.contentnegotiation.* +import io.ktor.serialization.kotlinx.json.* +import kotlinx.serialization.json.Json +import org.koin.core.module.dsl.singleOf +import org.koin.dsl.module + +val httpModule = module { + fun provideJson() = Json { + ignoreUnknownKeys = true + isLenient = true + } + + fun provideHttpClient(json: Json) = HttpClient(CIO) { + install(ContentNegotiation) { + json(json) + } + } + + singleOf(::provideJson) + singleOf(::provideHttpClient) +} 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 7915f70..89da886 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 @@ -4,24 +4,14 @@ import com.aliucord.manager.network.dto.Commit import com.aliucord.manager.network.dto.GithubUser import io.ktor.client.* import io.ktor.client.call.* -import io.ktor.client.engine.cio.* -import io.ktor.client.plugins.contentnegotiation.* import io.ktor.client.request.* import io.ktor.client.statement.* -import io.ktor.serialization.kotlinx.json.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import kotlinx.serialization.json.Json class GithubService( - private val json: Json + private val httpClient: HttpClient ) { - private val httpClient = HttpClient(CIO) { - install(ContentNegotiation) { - json(json) - } - } - suspend fun getCommits(page: Int): List = withContext(Dispatchers.IO) { httpClient.get(commitsUrl) { parameter("page", page)