From 4c78c29776fdd482e13fc445b68ad7fe091b4def Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Wed, 27 Mar 2024 12:08:29 -0600 Subject: [wallet] WIP: observability events bug 0008509 --- .../java/net/taler/wallet/backend/ApiResponse.kt | 2 + .../java/net/taler/wallet/backend/InitResponse.kt | 43 ++++++++++++++++++++++ .../net/taler/wallet/backend/WalletBackendApi.kt | 8 ++++ 3 files changed, 53 insertions(+) (limited to 'wallet/src/main/java/net/taler/wallet/backend') diff --git a/wallet/src/main/java/net/taler/wallet/backend/ApiResponse.kt b/wallet/src/main/java/net/taler/wallet/backend/ApiResponse.kt index 46eb2f0..def4668 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/ApiResponse.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/ApiResponse.kt @@ -19,6 +19,7 @@ package net.taler.wallet.backend import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonObject +import net.taler.wallet.events.ObservabilityEvent @Serializable sealed class ApiMessage { @@ -35,6 +36,7 @@ sealed class ApiMessage { data class NotificationPayload( val type: String, val id: String? = null, + val event: ObservabilityEvent? = null, ) @Serializable diff --git a/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt b/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt index e9f7fcd..7fe1a6b 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt @@ -17,12 +17,55 @@ package net.taler.wallet.backend import kotlinx.serialization.Serializable +import net.taler.wallet.exchanges.BuiltinExchange @Serializable data class InitResponse( val versionInfo: WalletCoreVersion, ) +@Serializable +data class WalletRunConfig( + val builtin: Builtin? = Builtin(), + val testing: Testing? = Testing(), + val features: Features? = Features(), +) { + /** + * Initialization values useful for a complete startup. + * + * These are values may be overridden by different wallets + */ + @Serializable + data class Builtin( + val exchanges: List = emptyList(), + ) + + /** + * Unsafe options which it should only be used to create + * testing environment. + */ + @Serializable + data class Testing( + /** + * Allow withdrawal of denominations even though they are about to expire. + */ + val denomselAllowLate: Boolean = false, + val devModeActive: Boolean = false, + val insecureTrustExchange: Boolean = false, + val preventThrottling: Boolean = false, + val skipDefaults: Boolean = false, + val emitObservabilityEvents: Boolean? = false, + ) + + /** + * Configurations values that may be safe to show to the user + */ + @Serializable + data class Features( + val allowHttp: Boolean = false, + ) +} + fun interface VersionReceiver { fun onVersionReceived(versionInfo: WalletCoreVersion) } diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt index 4e179bb..0619a4e 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt @@ -23,11 +23,13 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.KSerializer +import kotlinx.serialization.encodeToString import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.decodeFromJsonElement import net.taler.wallet.backend.TalerErrorCode.NONE import org.json.JSONObject import java.io.File +import net.taler.wallet.backend.WalletRunConfig.* private const val WALLET_DB = "talerwalletdb.sqlite3" @@ -54,9 +56,15 @@ class WalletBackendApi( } else { "${app.filesDir}/${WALLET_DB}" } + + val config = WalletRunConfig(testing = Testing( + emitObservabilityEvents = true, + )) + request("init", InitResponse.serializer()) { put("persistentStoragePath", db) put("logLevel", "INFO") + put("config", JSONObject(BackendManager.json.encodeToString(config))) }.onSuccess { response -> versionReceiver.onVersionReceived(response.versionInfo) }.onError { error -> -- cgit v1.2.3