From 7bcf2c897c7fcf9426b049838e46aa58320248bd Mon Sep 17 00:00:00 2001 From: Redume Date: Tue, 30 Apr 2024 18:52:04 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=20impl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/network/api/FiatCurrencyServer.kt | 7 +++++ .../network/impl/FiatCurrencyServerImpl.kt | 31 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/kotlin/su/redume/core/network/api/FiatCurrencyServer.kt create mode 100644 src/main/kotlin/su/redume/core/network/impl/FiatCurrencyServerImpl.kt diff --git a/src/main/kotlin/su/redume/core/network/api/FiatCurrencyServer.kt b/src/main/kotlin/su/redume/core/network/api/FiatCurrencyServer.kt new file mode 100644 index 0000000..df31c5e --- /dev/null +++ b/src/main/kotlin/su/redume/core/network/api/FiatCurrencyServer.kt @@ -0,0 +1,7 @@ +package su.redume.core.network.api + +import su.redume.core.network.model.CurrencyDto + +interface FiatCurrencyServer { + suspend fun currency(): List +} \ No newline at end of file diff --git a/src/main/kotlin/su/redume/core/network/impl/FiatCurrencyServerImpl.kt b/src/main/kotlin/su/redume/core/network/impl/FiatCurrencyServerImpl.kt new file mode 100644 index 0000000..0b9a167 --- /dev/null +++ b/src/main/kotlin/su/redume/core/network/impl/FiatCurrencyServerImpl.kt @@ -0,0 +1,31 @@ +package su.redume.core.network.impl + +import io.ktor.client.* +import io.ktor.client.call.* +import io.ktor.serialization.kotlinx.json.json +import kotlinx.serialization.json.Json +import io.ktor.client.plugins.defaultRequest +import io.ktor.http.* +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.client.request.* +import javax.inject.Inject +import su.redume.core.network.api.FiatCurrencyServer +import su.redume.core.network.model.CurrencyDto + +class FiatCurrencyServerImpl @Inject constructor() : FiatCurrencyServer { + private val httpClient = HttpClient { + install(ContentNegotiation) { + json( + Json { + ignoreUnknownKeys = true + } + ) + } + defaultRequest { + contentType(ContentType.Application.Json) + url("https://duckduckgo.com/js/spice/currency/1/") + } + } + + override suspend fun currency(value: String, pair: String): List = httpClient.get("$value/$pair").body() +} \ No newline at end of file