diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-03-02 20:57:29 -0600 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2023-03-07 15:06:13 -0300 |
commit | 2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff (patch) | |
tree | 55330e92c83dff4d3d2588f2a24f9fd4061cd5c1 | |
parent | 271fceac1ed7245fbbd2b41cb595080f0e0afb93 (diff) | |
download | taler-android-2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff.tar.gz taler-android-2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff.tar.bz2 taler-android-2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff.zip |
[wallet] Implemented JSON serializer for TalerErrorCode
bug 0007606
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt index 22dcba9..37bf91e 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt @@ -26,6 +26,9 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.json.JsonDecoder import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.buildJsonObject import kotlinx.serialization.json.jsonPrimitive @Serializable @@ -53,7 +56,7 @@ sealed class WalletResponse<T> { } } -@Serializable(with = TalerErrorInfoDeserializer::class) +@Serializable(with = TalerErrorInfoSerializer::class) data class TalerErrorInfo( // Numeric error code defined defined in the // GANA gnu-taler-error-codes registry. @@ -81,7 +84,7 @@ data class TalerErrorInfo( extra[key]?.jsonPrimitive?.content } -class TalerErrorInfoDeserializer : KSerializer<TalerErrorInfo> { +class TalerErrorInfoSerializer : KSerializer<TalerErrorInfo> { private val stringToJsonElementSerializer = MapSerializer(String.serializer(), JsonElement.serializer()) override val descriptor: SerialDescriptor @@ -110,6 +113,11 @@ class TalerErrorInfoDeserializer : KSerializer<TalerErrorInfo> { } override fun serialize(encoder: Encoder, value: TalerErrorInfo) { - error("not supported") + encoder.encodeSerializableValue(JsonObject.serializer(), buildJsonObject { + put("code", JsonPrimitive(value.code.code)) + put("hint", JsonPrimitive(value.hint)) + put("message", JsonPrimitive(value.message)) + value.extra.forEach { (key, value) -> put(key, value) } + }) } } |