diff --git a/sdk/src/main/java/com/oursky/authgear/AuthenticatorKind.kt b/sdk/src/main/java/com/oursky/authgear/AuthenticatorKind.kt index 43e5656c..818f5987 100644 --- a/sdk/src/main/java/com/oursky/authgear/AuthenticatorKind.kt +++ b/sdk/src/main/java/com/oursky/authgear/AuthenticatorKind.kt @@ -1,12 +1,39 @@ package com.oursky.authgear -import kotlinx.serialization.SerialName +import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.descriptors.PrimitiveKind -@Serializable +@Serializable(with = AuthenticatorKindSerializer::class) enum class AuthenticatorKind { - @SerialName("primary") PRIMARY, - @SerialName("secondary") - SECONDARY + SECONDARY, + UNKNOWN +} + +object AuthenticatorKindSerializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("AuthenticatorKind", PrimitiveKind.STRING) + + override fun deserialize(decoder: Decoder): AuthenticatorKind { + val value = decoder.decodeString() + return when (value) { + "primary" -> AuthenticatorKind.PRIMARY + "secondary" -> AuthenticatorKind.SECONDARY + else -> AuthenticatorKind.UNKNOWN + } + } + + override fun serialize(encoder: Encoder, value: AuthenticatorKind) { + val stringValue = when (value) { + AuthenticatorKind.PRIMARY -> "primary" + AuthenticatorKind.SECONDARY -> "secondary" + AuthenticatorKind.UNKNOWN -> "unknown" + } + encoder.encodeString(stringValue) + } } diff --git a/sdk/src/main/java/com/oursky/authgear/AuthenticatorType.kt b/sdk/src/main/java/com/oursky/authgear/AuthenticatorType.kt index acce0d27..89eae413 100644 --- a/sdk/src/main/java/com/oursky/authgear/AuthenticatorType.kt +++ b/sdk/src/main/java/com/oursky/authgear/AuthenticatorType.kt @@ -1,16 +1,48 @@ package com.oursky.authgear -import kotlinx.serialization.SerialName +import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.descriptors.PrimitiveKind -@Serializable +@Serializable(with = AuthenticatorTypeSerializer::class) enum class AuthenticatorType { - @SerialName("password") PASSWORD, - @SerialName("oob_otp_email") OOB_OTP_EMAIL, - @SerialName("oob_otp_sms") OOB_OTP_SMS, - @SerialName("totp") - TOTP + TOTP, + PASSKEY, + UNKNOWN +} + +object AuthenticatorTypeSerializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("AuthenticatorType", PrimitiveKind.STRING) + + override fun deserialize(decoder: Decoder): AuthenticatorType { + val value = decoder.decodeString() + return when (value) { + "password" -> AuthenticatorType.PASSWORD + "oob_otp_email" -> AuthenticatorType.OOB_OTP_EMAIL + "oob_otp_sms" -> AuthenticatorType.OOB_OTP_SMS + "totp" -> AuthenticatorType.TOTP + "passkey" -> AuthenticatorType.PASSKEY + else -> AuthenticatorType.UNKNOWN + } + } + + override fun serialize(encoder: Encoder, value: AuthenticatorType) { + val stringValue = when (value) { + AuthenticatorType.PASSWORD -> "password" + AuthenticatorType.OOB_OTP_EMAIL -> "oob_otp_email" + AuthenticatorType.OOB_OTP_SMS -> "oob_otp_sms" + AuthenticatorType.TOTP -> "totp" + AuthenticatorType.PASSKEY -> "passkey" + AuthenticatorType.UNKNOWN -> "unknown" + } + encoder.encodeString(stringValue) + } }