All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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