From 3f4c0306a82a4392ad8d0b78330a5cedaa6f06e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Bobin=CC=81ski?= <> Date: Wed, 13 Nov 2024 21:45:53 +0100 Subject: [PATCH] fix handling backend errors --- src/main/kotlin/net/bobinski/backend/AnalysisEndpoint.kt | 2 +- src/main/kotlin/net/bobinski/source/Backend.kt | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/net/bobinski/backend/AnalysisEndpoint.kt b/src/main/kotlin/net/bobinski/backend/AnalysisEndpoint.kt index 48b5eec..bac692e 100644 --- a/src/main/kotlin/net/bobinski/backend/AnalysisEndpoint.kt +++ b/src/main/kotlin/net/bobinski/backend/AnalysisEndpoint.kt @@ -21,7 +21,7 @@ object AnalysisEndpoint { suspend fun forStock(symbol: String): Analysis { val backendData = getLock(symbol).withLock { val info = Backend.getInfo(symbol) - if (info.name == null) throw IllegalArgumentException("Unknown symbol: $symbol") + if (info?.name == null) throw IllegalArgumentException("Unknown symbol: $symbol") var lacking = false var history = Backend.getHistory(symbol, Backend.Period._5y) diff --git a/src/main/kotlin/net/bobinski/source/Backend.kt b/src/main/kotlin/net/bobinski/source/Backend.kt index 32eaccf..c6b4093 100644 --- a/src/main/kotlin/net/bobinski/source/Backend.kt +++ b/src/main/kotlin/net/bobinski/source/Backend.kt @@ -7,6 +7,7 @@ import io.ktor.client.plugins.cache.HttpCache import io.ktor.client.plugins.cache.storage.FileStorage import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.client.request.get +import io.ktor.http.isSuccess import io.ktor.serialization.kotlinx.json.json import net.bobinski.Config import net.bobinski.data.BasicInfo @@ -29,13 +30,13 @@ object Backend { suspend fun getHistory(symbol: String, period: Period): Collection { return client .get("${Config.backendUrl}/history/$symbol/${period.value}") - .body() + .run { if (status.isSuccess()) body() else emptySet() } } - suspend fun getInfo(symbol: String): BasicInfo { + suspend fun getInfo(symbol: String): BasicInfo? { return client .get("${Config.backendUrl}/info/$symbol") - .body() + .run { if (status.isSuccess()) body() else null } } enum class Period(val value: String) {