summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine A <>2024-02-20 13:47:38 +0100
committerAntoine A <>2024-02-20 13:47:38 +0100
commitd87355ed5f7876dee4534ca9a7e8af3cb429bc2f (patch)
tree58bf6eb531821e2b706e3c80da9fdfcfa2e1c948
parent59c7655c0a8b020733a02b5993a24eb5518d9382 (diff)
downloadlibeufin-d87355ed5f7876dee4534ca9a7e8af3cb429bc2f.tar.gz
libeufin-d87355ed5f7876dee4534ca9a7e8af3cb429bc2f.tar.bz2
libeufin-d87355ed5f7876dee4534ca9a7e8af3cb429bc2f.zip
Use default currency specification if missing
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/Config.kt12
1 files changed, 10 insertions, 2 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
index cba29656..8bceb104 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
@@ -154,7 +154,16 @@ fun String.notEmptyOrNull(): String? = if (isEmpty()) null else this
fun TalerConfig.currencySpecificationFor(currency: String): CurrencySpecification
= sections.find {
it.startsWith("CURRENCY-") && requireBoolean(it, "enabled") && requireString(it, "code") == currency
- }?.let { loadCurrencySpecification(it) } ?: throw TalerConfigError.generic("missing currency specification for $currency")
+ }?.let { loadCurrencySpecification(it) } ?: run {
+ logger.warn("Missing currency specification for $currency, using sane defaults")
+ CurrencySpecification(
+ name = currency,
+ num_fractional_input_digits = 2,
+ num_fractional_normal_digits = 2,
+ num_fractional_trailing_zero_digits = 2,
+ alt_unit_names = mapOf("0" to currency)
+ )
+ }
private fun TalerConfig.loadCurrencySpecification(section: String): CurrencySpecification {
return CurrencySpecification(
@@ -165,7 +174,6 @@ private fun TalerConfig.loadCurrencySpecification(section: String): CurrencySpec
alt_unit_names = Json.decodeFromString(requireString(section, "alt_unit_names"))
)
}
-
private fun TalerConfig.amount(section: String, option: String, currency: String): TalerAmount? {
val raw = lookupString(section, option) ?: return null
val amount = try {