0.6.0
This commit is contained in:
1
providers/common/.gitignore
vendored
Normal file
1
providers/common/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
build
|
||||
19
providers/common/build.gradle.kts
Normal file
19
providers/common/build.gradle.kts
Normal file
@@ -0,0 +1,19 @@
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.jvm)
|
||||
alias(libs.plugins.android.lint)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(libs.kotlin.coroutines)
|
||||
implementation(libs.kotlin.datetime)
|
||||
|
||||
implementation(libs.ktor.http)
|
||||
implementation(libs.ktor.serialization.json)
|
||||
|
||||
detektPlugins(libs.detekt.compose)
|
||||
detektPlugins(libs.detekt.formatting)
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvmToolchain(libs.versions.jvm.get().toInt())
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package it.hamy.extensions
|
||||
|
||||
import kotlinx.coroutines.CancellationException
|
||||
|
||||
inline fun <T> runCatchingCancellable(block: () -> T) =
|
||||
runCatching(block).takeIf { it.exceptionOrNull() !is CancellationException }
|
||||
@@ -0,0 +1,26 @@
|
||||
package it.hamy.extensions
|
||||
|
||||
import io.ktor.http.Url
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
object UrlSerializer : KSerializer<Url> {
|
||||
override val descriptor = PrimitiveSerialDescriptor("Url", PrimitiveKind.STRING)
|
||||
override fun deserialize(decoder: Decoder) = Url(decoder.decodeString())
|
||||
override fun serialize(encoder: Encoder, value: Url) = encoder.encodeString(value.toString())
|
||||
}
|
||||
|
||||
typealias SerializableUrl = @Serializable(with = UrlSerializer::class) Url
|
||||
|
||||
object Iso8601DateSerializer : KSerializer<LocalDateTime> {
|
||||
override val descriptor = PrimitiveSerialDescriptor("Iso8601LocalDateTime", PrimitiveKind.STRING)
|
||||
override fun deserialize(decoder: Decoder) = LocalDateTime.parse(decoder.decodeString().removeSuffix("Z"))
|
||||
override fun serialize(encoder: Encoder, value: LocalDateTime) = encoder.encodeString(value.toString())
|
||||
}
|
||||
|
||||
typealias SerializableIso8601Date = @Serializable(with = Iso8601DateSerializer::class) LocalDateTime
|
||||
Reference in New Issue
Block a user