add mime type working
This commit is contained in:
core
api
src
commonMain
kotlin
com
insanusmokrassar
postssystem
core
content
exposed
src
main
kotlin
com
insanusmokrassar
postssystem
core
exposed
content
utils/common
build.gradle
src
commonMain
kotlin
com
insanusmokrassar
postssystem
utils
common
jsMain
kotlin
com
insanusmokrassar
postssystem
utils
common
jvmMain
kotlin
com
insanusmokrassar
postssystem
utils
common
@ -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 {
|
||||
|
30
utils/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/utils/common/MimeType.kt
Normal file
30
utils/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/utils/common/MimeType.kt
Normal file
@ -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)
|
||||
}
|
||||
}
|
19
utils/common/src/jsMain/kotlin/com/insanusmokrassar/postssystem/utils/common/MimeType.kt
Normal file
19
utils/common/src/jsMain/kotlin/com/insanusmokrassar/postssystem/utils/common/MimeType.kt
Normal file
@ -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)
|
13
utils/common/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/utils/common/MimeType.kt
Normal file
13
utils/common/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/utils/common/MimeType.kt
Normal file
@ -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)
|
||||
|
Reference in New Issue
Block a user