aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine A <>2024-01-31 11:09:08 +0100
committerAntoine A <>2024-01-31 11:09:08 +0100
commit1f1c99b56623000c61b5b735604683ffe911e31b (patch)
tree1ee9bd21e355bffb6cc285e32dcfadfe3a92802b
parentaf6b09f31537d016b45b3486e2cc815cb78e5db5 (diff)
downloadlibeufin-1f1c99b56623000c61b5b735604683ffe911e31b.tar.gz
libeufin-1f1c99b56623000c61b5b735604683ffe911e31b.tar.bz2
libeufin-1f1c99b56623000c61b5b735604683ffe911e31b.zip
Code cleanup
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/Config.kt6
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt4
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt8
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt4
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt16
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt18
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt8
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt32
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt6
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt16
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt14
-rw-r--r--common/src/main/kotlin/Client.kt2
-rw-r--r--common/src/main/kotlin/TalerConfig.kt6
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/KeyFiles.kt6
-rw-r--r--testbench/src/test/kotlin/IntegrationTest.kt2
15 files changed, 73 insertions, 75 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
index 0ad5590a..0548758c 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
@@ -66,9 +66,9 @@ data class ConversionRate (
val cashout_min_amount: TalerAmount,
)
-sealed class ServerConfig {
- data class Unix(val path: String, val mode: Int): ServerConfig()
- data class Tcp(val port: Int): ServerConfig()
+sealed interface ServerConfig {
+ data class Unix(val path: String, val mode: Int): ServerConfig
+ data class Tcp(val port: Int): ServerConfig
}
fun talerConfig(configPath: Path?): TalerConfig = BANK_CONFIG_SOURCE.fromFile(configPath)
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt b/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
index 389ebc8b..77a67274 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
@@ -72,7 +72,7 @@ class Base32Crockford32B {
return encoded()
}
- override fun equals(other: Any?) = (other is Base32Crockford32B) && Arrays.equals(raw, other.raw)
+ override fun equals(other: Any?) = (other is Base32Crockford32B) && raw.contentEquals(other.raw)
internal object Serializer : KSerializer<Base32Crockford32B> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Base32Crockford32B", PrimitiveKind.STRING)
@@ -125,7 +125,7 @@ class Base32Crockford64B {
return encoded()
}
- override fun equals(other: Any?) = (other is Base32Crockford64B) && Arrays.equals(raw, other.raw)
+ override fun equals(other: Any?) = (other is Base32Crockford64B) && raw.contentEquals(other.raw)
internal object Serializer : KSerializer<Base32Crockford64B> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Base32Crockford64B", PrimitiveKind.STRING)
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt b/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
index 1d7c5efa..0464e1a7 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
@@ -82,7 +82,7 @@ enum class Operation {
@Serializable(with = Option.Serializer::class)
sealed class Option<out T> {
- object None : Option<Nothing>()
+ data object None : Option<Nothing>()
data class Some<T>(val value: T) : Option<T>()
fun get(): T? {
@@ -209,7 +209,7 @@ data class TokenRequest(
)
@Serializable
-sealed class MonitorResponse {
+sealed interface MonitorResponse {
abstract val talerInCount: Long
abstract val talerInVolume: TalerAmount
abstract val talerOutCount: Long
@@ -223,7 +223,7 @@ data class MonitorNoConversion(
override val talerInVolume: TalerAmount,
override val talerOutCount: Long,
override val talerOutVolume: TalerAmount
-) : MonitorResponse()
+) : MonitorResponse
@Serializable
@SerialName("with-conversions")
@@ -238,7 +238,7 @@ data class MonitorWithConversion(
override val talerInVolume: TalerAmount,
override val talerOutCount: Long,
override val talerOutVolume: TalerAmount
-) : MonitorResponse()
+) : MonitorResponse
/**
* Convenience type to get bank account information
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt b/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
index b7b5befe..93baecc5 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
@@ -87,9 +87,7 @@ fun Route.auth(db: Database, scope: TokenScope, allowAdmin: Boolean = false, req
intercept(callback) {
val authLogin = context.authenticateBankRequest(db, scope)
if (requireAdmin && authLogin != "admin") {
- if (authLogin != "admin") {
- throw unauthorized("Only administrator allowed")
- }
+ throw unauthorized("Only administrator allowed")
} else {
val hasRight = authLogin == username || (allowAdmin && authLogin == "admin");
if (!hasRight) {
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
index cfd65156..4261a53c 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
@@ -209,14 +209,14 @@ class AccountDAO(private val db: Database) {
}
/** Result status of customer account patch */
- sealed class AccountPatchResult {
- data object UnknownAccount: AccountPatchResult()
- data object NonAdminName: AccountPatchResult()
- data object NonAdminCashout: AccountPatchResult()
- data object NonAdminDebtLimit: AccountPatchResult()
- data object MissingTanInfo: AccountPatchResult()
- data class TanRequired(val channel: TanChannel?, val info: String?): AccountPatchResult()
- data object Success: AccountPatchResult()
+ sealed interface AccountPatchResult {
+ data object UnknownAccount: AccountPatchResult
+ data object NonAdminName: AccountPatchResult
+ data object NonAdminCashout: AccountPatchResult
+ data object NonAdminDebtLimit: AccountPatchResult
+ data object MissingTanInfo: AccountPatchResult
+ data class TanRequired(val channel: TanChannel?, val info: String?): AccountPatchResult
+ data object Success: AccountPatchResult
}
/** Change account [login] informations */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
index 25e6ed61..2033e101 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
@@ -28,15 +28,15 @@ import tech.libeufin.bank.*
/** Data access logic for cashout operations */
class CashoutDAO(private val db: Database) {
/** Result of cashout operation creation */
- sealed class CashoutCreationResult {
- data class Success(val id: Long): CashoutCreationResult()
- object BadConversion: CashoutCreationResult()
- object AccountNotFound: CashoutCreationResult()
- object AccountIsExchange: CashoutCreationResult()
- object BalanceInsufficient: CashoutCreationResult()
- object RequestUidReuse: CashoutCreationResult()
- object NoCashoutPayto: CashoutCreationResult()
- object TanRequired: CashoutCreationResult()
+ sealed interface CashoutCreationResult {
+ data class Success(val id: Long): CashoutCreationResult
+ data object BadConversion: CashoutCreationResult
+ data object AccountNotFound: CashoutCreationResult
+ data object AccountIsExchange: CashoutCreationResult
+ data object BalanceInsufficient: CashoutCreationResult
+ data object RequestUidReuse: CashoutCreationResult
+ data object NoCashoutPayto: CashoutCreationResult
+ data object TanRequired: CashoutCreationResult
}
/** Create a new cashout operation */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt
index fc46b91e..bb311eba 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt
@@ -100,10 +100,10 @@ class ConversionDAO(private val db: Database) {
}
/** Result of conversions operations */
- sealed class ConversionResult {
- data class Success(val converted: TalerAmount): ConversionResult()
- object ToSmall: ConversionResult()
- object MissingConfig: ConversionResult()
+ sealed interface ConversionResult {
+ data class Success(val converted: TalerAmount): ConversionResult
+ data object ToSmall: ConversionResult
+ data object MissingConfig: ConversionResult
}
/** Perform [direction] conversion of [amount] using in-db [function] */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt
index 474205bc..8d1ddee9 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt
@@ -85,15 +85,15 @@ class ExchangeDAO(private val db: Database) {
}
/** Result of taler transfer transaction creation */
- sealed class TransferResult {
+ sealed interface TransferResult {
/** Transaction [id] and wire transfer [timestamp] */
- data class Success(val id: Long, val timestamp: TalerProtocolTimestamp): TransferResult()
- object NotAnExchange: TransferResult()
- object UnknownExchange: TransferResult()
- object UnknownCreditor: TransferResult()
- object BothPartyAreExchange: TransferResult()
- object BalanceInsufficient: TransferResult()
- object ReserveUidReuse: TransferResult()
+ data class Success(val id: Long, val timestamp: TalerProtocolTimestamp): TransferResult
+ data object NotAnExchange: TransferResult
+ data object UnknownExchange: TransferResult
+ data object UnknownCreditor: TransferResult
+ data object BothPartyAreExchange: TransferResult
+ data object BalanceInsufficient: TransferResult
+ data object ReserveUidReuse: TransferResult
}
/** Perform a Taler transfer */
@@ -150,15 +150,15 @@ class ExchangeDAO(private val db: Database) {
}
/** Result of taler add incoming transaction creation */
- sealed class AddIncomingResult {
+ sealed interface AddIncomingResult {
/** Transaction [id] and wire transfer [timestamp] */
- data class Success(val id: Long, val timestamp: TalerProtocolTimestamp): AddIncomingResult()
- object NotAnExchange: AddIncomingResult()
- object UnknownExchange: AddIncomingResult()
- object UnknownDebtor: AddIncomingResult()
- object BothPartyAreExchange: AddIncomingResult()
- object ReservePubReuse: AddIncomingResult()
- object BalanceInsufficient: AddIncomingResult()
+ data class Success(val id: Long, val timestamp: TalerProtocolTimestamp): AddIncomingResult
+ data object NotAnExchange: AddIncomingResult
+ data object UnknownExchange: AddIncomingResult
+ data object UnknownDebtor: AddIncomingResult
+ data object BothPartyAreExchange: AddIncomingResult
+ data object ReservePubReuse: AddIncomingResult
+ data object BalanceInsufficient: AddIncomingResult
}
/** Add a new taler incoming transaction */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt
index 3594b188..d36045d0 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt
@@ -56,9 +56,9 @@ class TanDAO(private val db: Database) {
}
/** Result of TAN challenge transmission */
- sealed class TanSendResult {
- data class Success(val tanInfo: String, val tanChannel: TanChannel, val tanCode: String?): TanSendResult()
- object NotFound: TanSendResult()
+ sealed interface TanSendResult {
+ data class Success(val tanInfo: String, val tanChannel: TanChannel, val tanCode: String?): TanSendResult
+ data object NotFound: TanSendResult
}
/** Request TAN challenge transmission */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
index 1b996f5a..6dd9d364 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
@@ -31,14 +31,14 @@ private val logger: Logger = LoggerFactory.getLogger("libeufin-bank-tx-dao")
/** Data access logic for transactions */
class TransactionDAO(private val db: Database) {
/** Result status of bank transaction creation .*/
- sealed class BankTransactionResult {
- data class Success(val id: Long): BankTransactionResult()
- object UnknownCreditor: BankTransactionResult()
- object AdminCreditor: BankTransactionResult()
- object UnknownDebtor: BankTransactionResult()
- object BothPartySame: BankTransactionResult()
- object BalanceInsufficient: BankTransactionResult()
- object TanRequired: BankTransactionResult()
+ sealed interface BankTransactionResult {
+ data class Success(val id: Long): BankTransactionResult
+ data object UnknownCreditor: BankTransactionResult
+ data object AdminCreditor: BankTransactionResult
+ data object UnknownDebtor: BankTransactionResult
+ data object BothPartySame: BankTransactionResult
+ data object BalanceInsufficient: BankTransactionResult
+ data object TanRequired: BankTransactionResult
}
/** Create a new transaction */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
index 72b92490..1280e79f 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
@@ -90,13 +90,13 @@ class WithdrawalDAO(private val db: Database) {
}
/** Result withdrawal operation selection */
- sealed class WithdrawalSelectionResult {
- data class Success(val status: WithdrawalStatus): WithdrawalSelectionResult()
- data object UnknownOperation: WithdrawalSelectionResult()
- data object AlreadySelected: WithdrawalSelectionResult()
- data object RequestPubReuse: WithdrawalSelectionResult()
- data object UnknownAccount: WithdrawalSelectionResult()
- data object AccountIsNotExchange: WithdrawalSelectionResult()
+ sealed interface WithdrawalSelectionResult {
+ data class Success(val status: WithdrawalStatus): WithdrawalSelectionResult
+ data object UnknownOperation: WithdrawalSelectionResult
+ data object AlreadySelected: WithdrawalSelectionResult
+ data object RequestPubReuse: WithdrawalSelectionResult
+ data object UnknownAccount: WithdrawalSelectionResult
+ data object AccountIsNotExchange: WithdrawalSelectionResult
}
/** Set details ([exchangePayto] & [reservePub]) for withdrawal operation [uuid] */
diff --git a/common/src/main/kotlin/Client.kt b/common/src/main/kotlin/Client.kt
index b65f59db..785e3f32 100644
--- a/common/src/main/kotlin/Client.kt
+++ b/common/src/main/kotlin/Client.kt
@@ -40,7 +40,7 @@ class JsonBuilder(from: JsonObject) {
infix inline fun <reified T> String.to(v: T) {
val json = Json.encodeToJsonElement(kotlinx.serialization.serializer<T>(), v);
- content.put(this, json)
+ content[this] = json
}
}
diff --git a/common/src/main/kotlin/TalerConfig.kt b/common/src/main/kotlin/TalerConfig.kt
index 26fd4c5f..98733268 100644
--- a/common/src/main/kotlin/TalerConfig.kt
+++ b/common/src/main/kotlin/TalerConfig.kt
@@ -133,9 +133,9 @@ class TalerConfig internal constructor(
val content = try {
file.readText()
} catch (e: Exception) {
- when {
- e is NoSuchFileException -> throw Exception("Could not read config at '$file': no such file")
- e is AccessDeniedException -> throw Exception("Could not read config at '$file': permission denied")
+ when (e) {
+ is NoSuchFileException -> throw Exception("Could not read config at '$file': no such file")
+ is AccessDeniedException -> throw Exception("Could not read config at '$file': permission denied")
else -> throw Exception("Could not read config at '$file'", e)
}
}
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/KeyFiles.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/KeyFiles.kt
index 602b586e..540257fa 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/KeyFiles.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/KeyFiles.kt
@@ -155,9 +155,9 @@ private inline fun <reified T> loadJsonFile(path: Path, name: String): T? {
val content = try {
path.readText()
} catch (e: Exception) {
- when {
- e is NoSuchFileException -> return null
- e is AccessDeniedException -> throw Exception("Could not read $name at '$path': permission denied")
+ when (e) {
+ is NoSuchFileException -> return null
+ is AccessDeniedException -> throw Exception("Could not read $name at '$path': permission denied")
else -> throw Exception("Could not read $name at '$path'", e)
}
}
diff --git a/testbench/src/test/kotlin/IntegrationTest.kt b/testbench/src/test/kotlin/IntegrationTest.kt
index 1150adb1..a66df71c 100644
--- a/testbench/src/test/kotlin/IntegrationTest.kt
+++ b/testbench/src/test/kotlin/IntegrationTest.kt
@@ -304,7 +304,7 @@ class IntegrationTest {
}.assertOkJson<IncomingHistory> {
val tx = it.incoming_transactions.first()
assertEquals(converted, tx.amount)
- assert(Arrays.equals(reservePub, tx.reserve_pub.raw))
+ assert(reservePub.contentEquals(tx.reserve_pub.raw))
}
}