This commit is contained in:
2024-02-27 22:09:30 +03:00
parent bfa3231823
commit 38a3141d43
479 changed files with 36348 additions and 10142 deletions

1
providers/common/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
build

View 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())
}

View File

@@ -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 }

View File

@@ -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