add mime type working

This commit is contained in:
2020-08-17 22:50:13 +06:00
parent ae51e728d4
commit a681f28308
7 changed files with 75 additions and 5 deletions
core
api
src
commonMain
kotlin
com
insanusmokrassar
postssystem
core
content
exposed
src
main
kotlin
com
insanusmokrassar
postssystem
core
gradle.properties
utils/common
build.gradle
src
commonMain
kotlin
com
insanusmokrassar
postssystem
utils
jsMain
kotlin
com
insanusmokrassar
postssystem
utils
jvmMain
kotlin
com
insanusmokrassar
postssystem
utils

@ -55,6 +55,8 @@ kotlin {
implementation kotlin('stdlib-jdk8')
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlin_serialisation_runtime_version"
api "javax.activation:activation:$javax_activation_version"
}
}
jvmTest {

@ -0,0 +1,30 @@
package com.insanusmokrassar.postssystem.utils.common
import kotlinx.serialization.*
private val mimesCache = mutableMapOf<String, MimeType>()
@Serializable(MimeTypeSerializer::class)
expect class MimeType {
val raw: String
}
fun mimeType(raw: String) = mimesCache.getOrPut(raw) {
parseMimeType(raw)
}
internal expect fun parseMimeType(raw: String): MimeType
@Serializer(MimeType::class)
internal object MimeTypeSerializer : KSerializer<MimeType> {
override val descriptor: SerialDescriptor = PrimitiveDescriptor("mimeType", PrimitiveKind.STRING)
override fun deserialize(decoder: Decoder): MimeType {
val mimeType = decoder.decodeString()
return mimeType(mimeType)
}
override fun serialize(encoder: Encoder, value: MimeType) {
encoder.encodeString(value.raw)
}
}

@ -0,0 +1,19 @@
package com.insanusmokrassar.postssystem.utils.common
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
}
actual fun parseMimeType(raw: String) = MimeType(raw)

@ -0,0 +1,13 @@
package com.insanusmokrassar.postssystem.utils.common
import kotlinx.serialization.*
private val mimesCache = mutableMapOf<String, MimeType>()
@Serializable(MimeTypeSerializer::class)
actual class MimeType(
actual val raw: String
) : javax.activation.MimeType(raw)
actual fun parseMimeType(raw: String): MimeType = MimeType(raw)