mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-06-03 00:15:27 +00:00
34 lines
922 B
Kotlin
34 lines
922 B
Kotlin
|
package com.github.insanusmokrassar.TelegramBotAPI.utils
|
||
|
|
||
|
import kotlinx.serialization.*
|
||
|
import org.w3c.dom.get
|
||
|
import kotlin.browser.window
|
||
|
|
||
|
private val mimesCache = mutableMapOf<String, MimeType>()
|
||
|
|
||
|
@Serializable(MimeTypeSerializer::class)
|
||
|
actual class MimeType(
|
||
|
actual val raw: String
|
||
|
) {
|
||
|
@Transient
|
||
|
val jsMimeType = window.navigator.mimeTypes[raw]
|
||
|
|
||
|
override fun toString(): String = raw
|
||
|
}
|
||
|
|
||
|
@Serializer(MimeType::class)
|
||
|
internal actual object MimeTypeSerializer : KSerializer<MimeType> {
|
||
|
override val descriptor: SerialDescriptor = PrimitiveDescriptor("mimeType", PrimitiveKind.STRING)
|
||
|
|
||
|
override fun deserialize(decoder: Decoder): MimeType {
|
||
|
val mimeType = decoder.decodeString()
|
||
|
return mimesCache.getOrPut(mimeType) {
|
||
|
MimeType(mimeType)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override fun serialize(encoder: Encoder, value: MimeType) {
|
||
|
encoder.encodeString(value.raw)
|
||
|
}
|
||
|
}
|