Migrate OkHttp to Ktor
This commit is contained in:
@@ -44,7 +44,7 @@ dependencies {
|
||||
implementation(libs.androidx.appcompat)
|
||||
implementation(libs.androidx.work)
|
||||
|
||||
implementation(libs.okhttp)
|
||||
implementation(libs.bundles.ktor)
|
||||
|
||||
implementation(project(":core:ktx"))
|
||||
implementation(project(":core:i18n"))
|
||||
|
||||
@@ -2,28 +2,30 @@ package de.mm20.launcher2.currencies
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.work.Worker
|
||||
import androidx.work.CoroutineWorker
|
||||
import androidx.work.WorkerParameters
|
||||
import de.mm20.launcher2.crashreporter.CrashReporter
|
||||
import de.mm20.launcher2.database.AppDatabase
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.request.url
|
||||
import io.ktor.client.statement.bodyAsChannel
|
||||
import io.ktor.utils.io.jvm.javaio.toInputStream
|
||||
import org.w3c.dom.Element
|
||||
import java.text.SimpleDateFormat
|
||||
import javax.xml.parsers.DocumentBuilderFactory
|
||||
|
||||
class ExchangeRateWorker(val context: Context, params: WorkerParameters) : Worker(context, params) {
|
||||
override fun doWork(): Result {
|
||||
class ExchangeRateWorker(val context: Context, params: WorkerParameters) :
|
||||
CoroutineWorker(context, params) {
|
||||
override suspend fun doWork(): Result {
|
||||
Log.d("MM20", "Updating currency exchange rates")
|
||||
val httpClient = OkHttpClient()
|
||||
val request = Request.Builder()
|
||||
.url("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml")
|
||||
.get()
|
||||
.build()
|
||||
val httpClient = HttpClient()
|
||||
try {
|
||||
val response = httpClient.newCall(request).execute()
|
||||
val document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(response.body?.byteStream()
|
||||
?: return Result.retry())
|
||||
val response = httpClient.get {
|
||||
url("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml")
|
||||
}
|
||||
val document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
|
||||
.parse(response.bodyAsChannel().toInputStream())
|
||||
val cubes = document.getElementsByTagName("Cube")
|
||||
val values = mutableListOf<Pair<String, Double>>()
|
||||
var timestamp = System.currentTimeMillis()
|
||||
@@ -41,9 +43,9 @@ class ExchangeRateWorker(val context: Context, params: WorkerParameters) : Worke
|
||||
}
|
||||
val currencies = values.map {
|
||||
Currency(
|
||||
symbol = it.first,
|
||||
value = it.second,
|
||||
lastUpdate = timestamp
|
||||
symbol = it.first,
|
||||
value = it.second,
|
||||
lastUpdate = timestamp
|
||||
).toDatabaseEntity()
|
||||
}
|
||||
AppDatabase.getInstance(context).currencyDao().insertAll(currencies)
|
||||
|
||||
Reference in New Issue
Block a user