commonMain.dev.inmo.micro_utils.serialization.base64.Base64Serializer.kt Maven / Gradle / Ivy
package dev.inmo.micro_utils.serialization.base64
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
open class Base64Serializer(
private val converterFrom: (T) -> String,
private val converterTo: (String) -> T,
) : KSerializer {
override val descriptor: SerialDescriptor = Base64BytesToFromStringSerializer.descriptor
override fun deserialize(decoder: Decoder): T = converterTo(Base64BytesToFromStringSerializer.deserialize(decoder).decodeToString())
override fun serialize(encoder: Encoder, value: T) = Base64BytesToFromStringSerializer.serialize(encoder, converterFrom(value).encodeToByteArray())
}
object Base64StringSerializer : Base64Serializer({ it }, { it })
object Base64ByteArraySerializer : Base64Serializer({ it.decodeToString() }, { it.encodeToByteArray() })
© 2015 - 2025 Weber Informatics LLC | Privacy Policy