commonMain.app.moviebase.tmdb.core.TmdbInstantSerializer.kt Maven / Gradle / Ivy
package app.moviebase.tmdb.core
import kotlinx.datetime.Instant
import kotlinx.datetime.toInstant
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
/**
* Custom serializer for handle the TMDB pattern: 2023-03-05 10:38:01 UTC
*/
internal class TmdbInstantSerializer : KSerializer {
override val descriptor: SerialDescriptor =
PrimitiveSerialDescriptor("Instant", PrimitiveKind.STRING)
override fun deserialize(decoder: Decoder): Instant {
val string = decoder.decodeString()
val splits = string.split(" ")
val isoString = "${splits[0]}T${splits[1]}Z"
return isoString.toInstant()
}
override fun serialize(encoder: Encoder, value: Instant) {
encoder.encodeString(value.toString())
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy