From 8364020671d582ea5456a46a0bf82ae042d752ef Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 27 Apr 2022 14:39:21 +0600 Subject: [PATCH] migration onto new ktor and other dependencies --- build.gradle | 1 + .../dev/inmo/micro_utils/common/Either.kt | 7 --- .../inmo/micro_utils/common/DiffUtilsTests.kt | 19 +++++--- .../coroutines/compose/FlowToState.kt | 1 + gradle/libs.versions.toml | 2 + .../ktor/client/FlowsWebsockets.kt | 6 +-- .../ktor/client/StandardHttpClientGetPost.kt | 17 ++++--- .../ktor/client/ActualTemporalUpload.kt | 7 +-- ktor/server/build.gradle | 3 +- .../micro_utils/ktor/server/FlowsWebsocket.kt | 14 +++--- .../ktor/server/ServerRoutingShortcuts.kt | 44 ++++++++++--------- .../micro_utils/ktor/server/StartServer.kt | 2 +- .../TemporalFilesRoutingConfigurator.kt | 10 ++--- .../ApplicationCachingHeadersConfigurator.kt | 9 ++-- .../ApplicationRoutingConfigurator.kt | 9 ++-- .../ApplicationSessionsConfigurator.kt | 9 ++-- .../KtorApplicationConfigurator.kt | 2 +- .../configurators/StatusPagesConfigurator.kt | 9 ++-- .../generator/src/main/kotlin/Main.kt | 5 ++- .../micro_utils/mime_types/MimeTypeTools.kt | 4 +- .../pagination/ServerPaginationHelpers.kt | 2 +- .../server/crud/KtorReadStandardCrudRepo.kt | 6 +-- .../ktor/server/crud/KtorStandardCrudRepo.kt | 4 +- .../server/crud/KtorWriteStandardCrudRepo.kt | 5 +-- .../key_value/KtorStandartKeyValueRepo.kt | 6 +-- .../key_value/KtorStandartReadKeyValueRepo.kt | 6 +-- .../KtorStandartWriteKeyValueRepo.kt | 4 +- .../ConfigureOneToManyKeyValueRepoRoutes.kt | 6 +-- ...onfigureOneToManyReadKeyValueRepoRoutes.kt | 7 ++- ...nfigureOneToManyWriteKeyValueRepoRoutes.kt | 5 +-- settings.gradle | 6 +++ 31 files changed, 127 insertions(+), 110 deletions(-) diff --git a/build.gradle b/build.gradle index 38310db4281..714b2f1f80c 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,7 @@ allprojects { mavenLocal() mavenCentral() google() + maven { url "https://maven.pkg.jetbrains.space/public/p/compose/dev" } } // temporal crutch until legacy tests will be stabled or legacy target will be removed diff --git a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/Either.kt b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/Either.kt index 682f3c9c4f7..595967582d1 100644 --- a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/Either.kt +++ b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/Either.kt @@ -27,13 +27,6 @@ sealed interface Either { @Deprecated("Use optionalT2 instead", ReplaceWith("optionalT2")) val t2: T2? get() = optionalT2.dataOrNull() - - companion object { - fun serializer( - t1Serializer: KSerializer, - t2Serializer: KSerializer, - ): KSerializer> = EitherSerializer(t1Serializer, t2Serializer) - } } class EitherSerializer( diff --git a/common/src/commonTest/kotlin/dev/inmo/micro_utils/common/DiffUtilsTests.kt b/common/src/commonTest/kotlin/dev/inmo/micro_utils/common/DiffUtilsTests.kt index 251c750026b..96916e4d175 100644 --- a/common/src/commonTest/kotlin/dev/inmo/micro_utils/common/DiffUtilsTests.kt +++ b/common/src/commonTest/kotlin/dev/inmo/micro_utils/common/DiffUtilsTests.kt @@ -32,7 +32,7 @@ class DiffUtilsTests { val withIndex = oldList.withIndex() for (count in 1 .. (floor(oldList.size.toFloat() / 2).toInt())) { - for ((i, v) in withIndex) { + for ((i, _) in withIndex) { if (i + count > oldList.lastIndex) { continue } @@ -55,7 +55,7 @@ class DiffUtilsTests { val withIndex = oldList.withIndex() for (step in oldList.indices) { - for ((i, v) in withIndex) { + for ((i, _) in withIndex) { val mutable = oldList.toMutableList() val changes = ( if (step == 0) i until oldList.size else (i until oldList.size step step) @@ -104,7 +104,7 @@ class DiffUtilsTests { val withIndex = oldList.withIndex() for (count in 1 .. (floor(oldList.size.toFloat() / 2).toInt())) { - for ((i, v) in withIndex) { + for ((i, _) in withIndex) { if (i + count > oldList.lastIndex) { continue } @@ -129,15 +129,20 @@ class DiffUtilsTests { val withIndex = oldList.withIndex() for (step in oldList.indices) { - for ((i, v) in withIndex) { + for ((i, _) in withIndex) { val mutable = oldList.toMutableList() - val changes = ( - if (step == 0) i until oldList.size else (i until oldList.size step step) - ).map { index -> + + val newList = if (step == 0) { + i until oldList.size + } else { + i until oldList.size step step + } + newList.forEach { index -> IndexedValue(index, mutable[index]) to IndexedValue(index, "changed$index").also { mutable[index] = it.value } } + val mutableOldList = oldList.toMutableList() mutableOldList.applyDiff(mutable) assertEquals( diff --git a/coroutines/compose/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/compose/FlowToState.kt b/coroutines/compose/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/compose/FlowToState.kt index 22c1b7be83a..7c6d856b22d 100644 --- a/coroutines/compose/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/compose/FlowToState.kt +++ b/coroutines/compose/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/compose/FlowToState.kt @@ -16,6 +16,7 @@ fun Flow.toMutableState( return state } +@Suppress("NOTHING_TO_INLINE") inline fun StateFlow.toMutableState( scope: CoroutineScope ): MutableState = toMutableState(value, scope) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fb6f4318a75..8a12bd46d70 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -46,6 +46,8 @@ ktor-server = { module = "io.ktor:ktor-server", version.ref = "ktor" } ktor-server-cio = { module = "io.ktor:ktor-server-cio", version.ref = "ktor" } ktor-server-host-common = { module = "io.ktor:ktor-server-host-common", version.ref = "ktor" } ktor-websockets = { module = "io.ktor:ktor-websockets", version.ref = "ktor" } +ktor-server-websockets = { module = "io.ktor:ktor-server-websockets", version.ref = "ktor" } +ktor-server-statusPages = { module = "io.ktor:ktor-server-status-pages", version.ref = "ktor" } klock = { module = "com.soywiz.korlibs.klock:klock", version.ref = "klock" } diff --git a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/FlowsWebsockets.kt b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/FlowsWebsockets.kt index 048c92dae3d..599bb3b366d 100644 --- a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/FlowsWebsockets.kt +++ b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/FlowsWebsockets.kt @@ -3,10 +3,10 @@ package dev.inmo.micro_utils.ktor.client import dev.inmo.micro_utils.coroutines.safely import dev.inmo.micro_utils.ktor.common.* import io.ktor.client.HttpClient -import io.ktor.client.features.websocket.ws +import io.ktor.client.plugins.websocket.ws import io.ktor.client.request.HttpRequestBuilder -import io.ktor.http.cio.websocket.Frame -import io.ktor.http.cio.websocket.readBytes +import io.ktor.websocket.Frame +import io.ktor.websocket.readBytes import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.serialization.DeserializationStrategy diff --git a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt index c7922e312ac..69a0f37e4cd 100644 --- a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt +++ b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/StandardHttpClientGetPost.kt @@ -6,6 +6,7 @@ import dev.inmo.micro_utils.ktor.common.* import io.ktor.client.HttpClient import io.ktor.client.request.* import io.ktor.client.request.forms.* +import io.ktor.client.statement.readBytes import io.ktor.http.* import io.ktor.utils.io.core.ByteReadPacket import kotlinx.serialization.* @@ -103,10 +104,10 @@ suspend fun HttpClient.uniget( url: String, resultDeserializer: DeserializationStrategy, serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat -) = get( +) = get( url ).let { - serialFormat.decodeDefault(resultDeserializer, it) + serialFormat.decodeDefault(resultDeserializer, it.readBytes()) } @@ -123,10 +124,12 @@ suspend fun HttpClient.unipost( bodyInfo: BodyPair, resultDeserializer: DeserializationStrategy, serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat -) = post(url) { - body = serialFormat.encodeDefault(bodyInfo.first, bodyInfo.second) +) = post(url) { + setBody( + serialFormat.encodeDefault(bodyInfo.first, bodyInfo.second) + ) }.let { - serialFormat.decodeDefault(resultDeserializer, it) + serialFormat.decodeDefault(resultDeserializer, it.readBytes()) } suspend fun HttpClient.unimultipart( @@ -139,7 +142,7 @@ suspend fun HttpClient.unimultipart( dataHeadersBuilder: HeadersBuilder.() -> Unit = {}, requestBuilder: HttpRequestBuilder.() -> Unit = {}, serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat -): ResultType = submitFormWithBinaryData( +): ResultType = submitFormWithBinaryData( url, formData = formData { append( @@ -155,7 +158,7 @@ suspend fun HttpClient.unimultipart( } ) { requestBuilder() -}.let { serialFormat.decodeDefault(resultDeserializer, it) } +}.let { serialFormat.decodeDefault(resultDeserializer, it.readBytes()) } suspend fun HttpClient.unimultipart( url: String, diff --git a/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt b/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt index f7fbdf9c727..0dcd0dde1f4 100644 --- a/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt +++ b/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt @@ -4,9 +4,10 @@ import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.common.filename import dev.inmo.micro_utils.ktor.common.TemporalFileId import io.ktor.client.HttpClient -import io.ktor.client.features.onUpload +import io.ktor.client.plugins.onUpload import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData +import io.ktor.client.statement.bodyAsText import io.ktor.http.Headers import io.ktor.http.HttpHeaders import java.net.URLConnection @@ -20,7 +21,7 @@ actual suspend fun HttpClient.tempUpload( onUpload: (Long, Long) -> Unit ): TemporalFileId { val inputProvider = file.inputProvider() - val fileId = submitFormWithBinaryData( + val fileId = submitFormWithBinaryData( fullTempUploadDraftPath, formData = formData { append( @@ -34,6 +35,6 @@ actual suspend fun HttpClient.tempUpload( } ) { onUpload(onUpload) - } + }.bodyAsText() return TemporalFileId(fileId) } diff --git a/ktor/server/build.gradle b/ktor/server/build.gradle index ecf783c0bb2..f42b279e88f 100644 --- a/ktor/server/build.gradle +++ b/ktor/server/build.gradle @@ -19,7 +19,8 @@ kotlin { api libs.ktor.server api libs.ktor.server.cio api libs.ktor.server.host.common - api libs.ktor.websockets + api libs.ktor.server.websockets + api libs.ktor.server.statusPages } } } diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/FlowsWebsocket.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/FlowsWebsocket.kt index 01aaaf2952f..973c47bb418 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/FlowsWebsocket.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/FlowsWebsocket.kt @@ -2,13 +2,13 @@ package dev.inmo.micro_utils.ktor.server import dev.inmo.micro_utils.coroutines.safely import dev.inmo.micro_utils.ktor.common.* -import io.ktor.application.featureOrNull -import io.ktor.application.install import io.ktor.http.URLProtocol -import io.ktor.http.cio.websocket.* -import io.ktor.routing.Route -import io.ktor.routing.application -import io.ktor.websocket.* +import io.ktor.server.application.install +import io.ktor.server.application.pluginOrNull +import io.ktor.server.routing.Route +import io.ktor.server.routing.application +import io.ktor.server.websocket.* +import io.ktor.websocket.send import kotlinx.coroutines.flow.Flow import kotlinx.serialization.SerializationStrategy @@ -19,7 +19,7 @@ fun Route.includeWebsocketHandling( converter: suspend WebSocketServerSession.(T) -> StandardKtorSerialInputData? ) { application.apply { - featureOrNull(io.ktor.websocket.WebSockets) ?: install(io.ktor.websocket.WebSockets) + pluginOrNull(WebSockets) ?: install(WebSockets) } webSocket(suburl, protocol.name) { safely { diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/ServerRoutingShortcuts.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/ServerRoutingShortcuts.kt index a31acf31ea8..e0adaaeb0fc 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/ServerRoutingShortcuts.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/ServerRoutingShortcuts.kt @@ -3,25 +3,23 @@ package dev.inmo.micro_utils.ktor.server import dev.inmo.micro_utils.common.* import dev.inmo.micro_utils.coroutines.safely import dev.inmo.micro_utils.ktor.common.* -import io.ktor.application.ApplicationCall -import io.ktor.application.call import io.ktor.http.* -import io.ktor.http.content.PartData -import io.ktor.http.content.forEachPart -import io.ktor.request.receive -import io.ktor.request.receiveMultipart -import io.ktor.response.respond -import io.ktor.response.respondBytes -import io.ktor.routing.Route -import io.ktor.util.asStream -import io.ktor.util.cio.writeChannel +import io.ktor.http.content.* +import io.ktor.server.application.ApplicationCall +import io.ktor.server.application.call +import io.ktor.server.request.receive +import io.ktor.server.request.receiveMultipart +import io.ktor.server.response.respond +import io.ktor.server.response.respondBytes +import io.ktor.server.routing.Route +import io.ktor.server.websocket.WebSocketServerSession import io.ktor.util.pipeline.PipelineContext -import io.ktor.utils.io.core.* -import io.ktor.websocket.WebSocketServerSession +import io.ktor.utils.io.core.Input +import io.ktor.utils.io.core.use +import io.ktor.utils.io.streams.asInput import kotlinx.coroutines.flow.Flow -import kotlinx.serialization.* -import java.io.File -import java.io.File.createTempFile +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.SerializationStrategy class UnifiedRouter( val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat, @@ -134,7 +132,7 @@ suspend fun ApplicationCall.uniloadMultipart( is PartData.FormItem -> onFormItem(it) is PartData.FileItem -> { when (it.name) { - "bytes" -> resultInput = it.provider() + "bytes" -> resultInput = it.streamProvider().asInput() else -> onCustomFileItem(it) } } @@ -156,7 +154,7 @@ suspend fun ApplicationCall.uniloadMultipart( onFormItem, { if (it.name == "data") { - data = standardKtorSerialFormat.decodeDefault(deserializer, it.provider().readBytes()).optional + data = standardKtorSerialFormat.decodeDefault(deserializer, it.streamProvider().readBytes()).optional } else { onCustomFileItem(it) } @@ -197,11 +195,13 @@ suspend fun ApplicationCall.uniloadMultipartFile( ".${name.extension}" ).apply { outputStream().use { fileStream -> - it.provider().asStream().copyTo(fileStream) + it.streamProvider().use { + it.copyTo(fileStream) + } } } } - "data" -> data = standardKtorSerialFormat.decodeDefault(deserializer, it.provider().readBytes()).optional + "data" -> data = standardKtorSerialFormat.decodeDefault(deserializer, it.streamProvider().readBytes()).optional else -> onCustomFileItem(it) } } @@ -239,7 +239,9 @@ suspend fun ApplicationCall.uniloadMultipartFile( ".${name.extension}" ).apply { outputStream().use { fileStream -> - it.provider().asStream().copyTo(fileStream) + it.streamProvider().use { + it.copyTo(fileStream) + } } } } else { diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/StartServer.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/StartServer.kt index 51948300ba2..821403521f6 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/StartServer.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/StartServer.kt @@ -1,7 +1,7 @@ package dev.inmo.micro_utils.ktor.server import dev.inmo.micro_utils.ktor.server.configurators.KtorApplicationConfigurator -import io.ktor.application.Application +import io.ktor.server.application.Application import io.ktor.server.cio.CIO import io.ktor.server.cio.CIOApplicationEngine import io.ktor.server.engine.* diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/TemporalFilesRoutingConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/TemporalFilesRoutingConfigurator.kt index 9d33c127cbf..e5f2fa6c36e 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/TemporalFilesRoutingConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/TemporalFilesRoutingConfigurator.kt @@ -7,14 +7,14 @@ import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.micro_utils.ktor.common.DefaultTemporalFilesSubPath import dev.inmo.micro_utils.ktor.common.TemporalFileId import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator -import io.ktor.application.call import io.ktor.http.HttpStatusCode import io.ktor.http.content.PartData import io.ktor.http.content.streamProvider -import io.ktor.request.receiveMultipart -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.post +import io.ktor.server.application.call +import io.ktor.server.request.receiveMultipart +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.post import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import kotlinx.coroutines.sync.Mutex diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt index eaf14f1f637..1cabb3710ec 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt @@ -1,14 +1,15 @@ package dev.inmo.micro_utils.ktor.server.configurators -import io.ktor.application.Application -import io.ktor.application.install -import io.ktor.features.CachingHeaders +import io.ktor.server.application.Application +import io.ktor.server.application.install +import io.ktor.server.plugins.cachingheaders.CachingHeaders +import io.ktor.server.plugins.cachingheaders.CachingHeadersConfig import kotlinx.serialization.Contextual data class ApplicationCachingHeadersConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - fun interface Element { operator fun CachingHeaders.Configuration.invoke() } + fun interface Element { operator fun CachingHeadersConfig.invoke() } override fun Application.configure() { install(CachingHeaders) { diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt index 2550dcb813b..3c008d79b87 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt @@ -1,8 +1,9 @@ package dev.inmo.micro_utils.ktor.server.configurators -import io.ktor.application.* -import io.ktor.routing.Route -import io.ktor.routing.Routing +import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator.Element +import io.ktor.server.application.* +import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import kotlinx.serialization.Contextual import kotlinx.serialization.Serializable @@ -18,7 +19,7 @@ class ApplicationRoutingConfigurator( } override fun Application.configure() { - featureOrNull(Routing) ?.apply { + pluginOrNull(Routing) ?.apply { rootInstaller.apply { invoke() } } ?: install(Routing) { rootInstaller.apply { invoke() } diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt index 4ed2d16b009..38d7b1a31b9 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt @@ -1,14 +1,15 @@ package dev.inmo.micro_utils.ktor.server.configurators -import io.ktor.application.Application -import io.ktor.application.install -import io.ktor.sessions.Sessions +import io.ktor.server.application.Application +import io.ktor.server.application.install +import io.ktor.server.sessions.Sessions +import io.ktor.server.sessions.SessionsConfig import kotlinx.serialization.Contextual class ApplicationSessionsConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - fun interface Element { operator fun Sessions.Configuration.invoke() } + fun interface Element { operator fun SessionsConfig.invoke() } override fun Application.configure() { install(Sessions) { diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/KtorApplicationConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/KtorApplicationConfigurator.kt index dcc877c8fa8..424be129bdc 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/KtorApplicationConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/KtorApplicationConfigurator.kt @@ -1,6 +1,6 @@ package dev.inmo.micro_utils.ktor.server.configurators -import io.ktor.application.Application +import io.ktor.server.application.Application interface KtorApplicationConfigurator { fun Application.configure() diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt index 7e25ba1482b..b880d433d0d 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt @@ -1,14 +1,15 @@ package dev.inmo.micro_utils.ktor.server.configurators -import io.ktor.application.Application -import io.ktor.application.install -import io.ktor.features.StatusPages +import io.ktor.server.application.Application +import io.ktor.server.application.install +import io.ktor.server.plugins.statuspages.StatusPages +import io.ktor.server.plugins.statuspages.StatusPagesConfig import kotlinx.serialization.Contextual class StatusPagesConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - fun interface Element { operator fun StatusPages.Configuration.invoke() } + fun interface Element { operator fun StatusPagesConfig.invoke() } override fun Application.configure() { install(StatusPages) { diff --git a/language_codes/generator/src/main/kotlin/Main.kt b/language_codes/generator/src/main/kotlin/Main.kt index 7e368fcdf66..e4fa658ec7a 100644 --- a/language_codes/generator/src/main/kotlin/Main.kt +++ b/language_codes/generator/src/main/kotlin/Main.kt @@ -1,5 +1,6 @@ import io.ktor.client.HttpClient import io.ktor.client.request.get +import io.ktor.client.statement.bodyAsText import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.ListSerializer @@ -164,7 +165,7 @@ suspend fun main(vararg args: String) { val ietfLanguageCodes = json.decodeFromString( ListSerializer(LanguageCode.serializer()), - client.get(ietfLanguageCodesLink) + client.get(ietfLanguageCodesLink).bodyAsText() ).map { it.copy( title = it.title @@ -175,7 +176,7 @@ suspend fun main(vararg args: String) { } val ietfLanguageCodesWithTagsMap = json.decodeFromString( ListSerializer(LanguageCodeWithTag.serializer()), - client.get(ietfLanguageCodesAdditionalTagsLink) + client.get(ietfLanguageCodesAdditionalTagsLink).bodyAsText() ).filter { it.withSubtag != it.tag }.groupBy { it.tag } val tags = ietfLanguageCodes.map { diff --git a/mime_types/src/commonMain/kotlin/dev/inmo/micro_utils/mime_types/MimeTypeTools.kt b/mime_types/src/commonMain/kotlin/dev/inmo/micro_utils/mime_types/MimeTypeTools.kt index dd285d2f834..a23a7df9304 100644 --- a/mime_types/src/commonMain/kotlin/dev/inmo/micro_utils/mime_types/MimeTypeTools.kt +++ b/mime_types/src/commonMain/kotlin/dev/inmo/micro_utils/mime_types/MimeTypeTools.kt @@ -1,7 +1,6 @@ package dev.inmo.micro_utils.mime_types -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializer +import kotlinx.serialization.* import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder @@ -16,6 +15,7 @@ fun mimeType(raw: String) = mimesCache.getOrPut(raw) { internal fun parseMimeType(raw: String): MimeType = CustomMimeType(raw) +@Suppress("OPT_IN_USAGE") @Serializer(MimeType::class) object MimeTypeSerializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("mimeType", PrimitiveKind.STRING) diff --git a/pagination/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/pagination/ServerPaginationHelpers.kt b/pagination/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/pagination/ServerPaginationHelpers.kt index 7c68d913a5a..c89a972ff58 100644 --- a/pagination/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/pagination/ServerPaginationHelpers.kt +++ b/pagination/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/pagination/ServerPaginationHelpers.kt @@ -1,7 +1,7 @@ package dev.inmo.micro_utils.pagination -import io.ktor.application.ApplicationCall import io.ktor.http.Parameters +import io.ktor.server.application.ApplicationCall val Parameters.extractPagination: Pagination get() = SimplePagination( diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadStandardCrudRepo.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadStandardCrudRepo.kt index 82cba432cd2..75053535d03 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadStandardCrudRepo.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadStandardCrudRepo.kt @@ -7,10 +7,10 @@ import dev.inmo.micro_utils.pagination.PaginationResult import dev.inmo.micro_utils.pagination.extractPagination import dev.inmo.micro_utils.repos.ReadStandardCRUDRepo import dev.inmo.micro_utils.repos.ktor.common.crud.* -import io.ktor.application.call import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.get +import io.ktor.server.application.call +import io.ktor.server.routing.Route +import io.ktor.server.routing.get import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.serializer diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorStandardCrudRepo.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorStandardCrudRepo.kt index 08685719ec8..d3fd8832d05 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorStandardCrudRepo.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorStandardCrudRepo.kt @@ -6,8 +6,8 @@ import dev.inmo.micro_utils.ktor.server.UnifiedRouter import dev.inmo.micro_utils.ktor.server.standardKtorSerialFormatContentType import dev.inmo.micro_utils.repos.StandardCRUDRepo import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.route +import io.ktor.server.routing.Route +import io.ktor.server.routing.route import kotlinx.serialization.KSerializer fun Route.configureStandardCrudRepoRoutes( diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteStandardCrudRepo.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteStandardCrudRepo.kt index 79f04e84945..f993ab22292 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteStandardCrudRepo.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteStandardCrudRepo.kt @@ -5,10 +5,9 @@ import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat import dev.inmo.micro_utils.ktor.server.* import dev.inmo.micro_utils.repos.WriteStandardCRUDRepo import dev.inmo.micro_utils.repos.ktor.common.crud.* -import io.ktor.application.call import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.post +import io.ktor.server.routing.Route +import io.ktor.server.routing.post import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.* diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartKeyValueRepo.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartKeyValueRepo.kt index d2cc8f19f04..0ed4f5d1a68 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartKeyValueRepo.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartKeyValueRepo.kt @@ -6,8 +6,8 @@ import dev.inmo.micro_utils.ktor.server.UnifiedRouter import dev.inmo.micro_utils.ktor.server.standardKtorSerialFormatContentType import dev.inmo.micro_utils.repos.StandardKeyValueRepo import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.route +import io.ktor.server.routing.Route +import io.ktor.server.routing.route import kotlinx.serialization.KSerializer fun Route.configureStandardKeyValueRepoRoutes( @@ -43,4 +43,4 @@ fun Route.configureStandartKeyValueRepoRoutes( valueNullableSerializer: KSerializer, serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat, serialFormatContentType: ContentType = standardKtorSerialFormatContentType -) = configureStandardKeyValueRepoRoutes(baseSubpart, originalRepo, keySerializer, valueSerializer, valueNullableSerializer, UnifiedRouter(serialFormat, serialFormatContentType)) \ No newline at end of file +) = configureStandardKeyValueRepoRoutes(baseSubpart, originalRepo, keySerializer, valueSerializer, valueNullableSerializer, UnifiedRouter(serialFormat, serialFormatContentType)) diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartReadKeyValueRepo.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartReadKeyValueRepo.kt index fd5511914e9..843b935fe18 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartReadKeyValueRepo.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartReadKeyValueRepo.kt @@ -8,10 +8,10 @@ import dev.inmo.micro_utils.pagination.extractPagination import dev.inmo.micro_utils.repos.ReadStandardKeyValueRepo import dev.inmo.micro_utils.repos.ktor.common.key_value.* import dev.inmo.micro_utils.repos.ktor.common.valueParameterName -import io.ktor.application.call import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.get +import io.ktor.server.application.call +import io.ktor.server.routing.Route +import io.ktor.server.routing.get import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.serializer diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartWriteKeyValueRepo.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartWriteKeyValueRepo.kt index 56b6e18f413..85179e81771 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartWriteKeyValueRepo.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key_value/KtorStandartWriteKeyValueRepo.kt @@ -6,8 +6,8 @@ import dev.inmo.micro_utils.ktor.server.* import dev.inmo.micro_utils.repos.WriteStandardKeyValueRepo import dev.inmo.micro_utils.repos.ktor.common.key_value.* import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.post +import io.ktor.server.routing.Route +import io.ktor.server.routing.post import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.* diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyKeyValueRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyKeyValueRepoRoutes.kt index 23a16dba545..4f2c694c25d 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyKeyValueRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyKeyValueRepoRoutes.kt @@ -6,8 +6,8 @@ import dev.inmo.micro_utils.ktor.server.UnifiedRouter import dev.inmo.micro_utils.ktor.server.standardKtorSerialFormatContentType import dev.inmo.micro_utils.repos.OneToManyKeyValueRepo import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.route +import io.ktor.server.routing.Route +import io.ktor.server.routing.route import kotlinx.serialization.KSerializer fun Route.configureOneToManyKeyValueRepoRoutes( @@ -32,4 +32,4 @@ fun Route.configureOneToManyKeyValueRepoRoutes( serialFormatContentType: ContentType = standardKtorSerialFormatContentType ) = configureOneToManyKeyValueRepoRoutes( baseSubpart, originalRepo, keySerializer, valueSerializer, UnifiedRouter(serialFormat, serialFormatContentType) -) \ No newline at end of file +) diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyReadKeyValueRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyReadKeyValueRepoRoutes.kt index df0743a1d09..c0795d2280b 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyReadKeyValueRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyReadKeyValueRepoRoutes.kt @@ -6,15 +6,14 @@ import dev.inmo.micro_utils.ktor.server.* import dev.inmo.micro_utils.pagination.PaginationResult import dev.inmo.micro_utils.pagination.extractPagination import dev.inmo.micro_utils.repos.ReadOneToManyKeyValueRepo -import dev.inmo.micro_utils.repos.ktor.common.* import dev.inmo.micro_utils.repos.ktor.common.keyParameterName import dev.inmo.micro_utils.repos.ktor.common.one_to_many.* import dev.inmo.micro_utils.repos.ktor.common.valueParameterName import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName -import io.ktor.application.call import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.get +import io.ktor.server.application.call +import io.ktor.server.routing.Route +import io.ktor.server.routing.get import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.serializer diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyWriteKeyValueRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyWriteKeyValueRepoRoutes.kt index 2ef6ee6c450..dbef2f3e416 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyWriteKeyValueRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/one_to_many/ConfigureOneToManyWriteKeyValueRepoRoutes.kt @@ -5,10 +5,9 @@ import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat import dev.inmo.micro_utils.ktor.server.* import dev.inmo.micro_utils.repos.WriteOneToManyKeyValueRepo import dev.inmo.micro_utils.repos.ktor.common.one_to_many.* -import io.ktor.application.call import io.ktor.http.ContentType -import io.ktor.routing.Route -import io.ktor.routing.post +import io.ktor.server.routing.Route +import io.ktor.server.routing.post import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.* diff --git a/settings.gradle b/settings.gradle index d7471ac4ccc..6a599f4b73f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,9 @@ +pluginManagement { + repositories { + gradlePluginPortal() + } +} + rootProject.name='micro_utils' String[] includes = [