libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit d87355ed5f7876dee4534ca9a7e8af3cb429bc2f
parent 59c7655c0a8b020733a02b5993a24eb5518d9382
Author: Antoine A <>
Date:   Tue, 20 Feb 2024 13:47:38 +0100

Use default currency specification if missing

Diffstat:
Mbank/src/main/kotlin/tech/libeufin/bank/Config.kt | 12++++++++++--
1 file 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 @@ -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 {