From a28448c3c16ac867a1fbcf6506d40703637ebecd Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 16 Aug 2024 19:10:49 +0600 Subject: [PATCH] start migration onto new dependencies --- common/build.gradle | 1 + .../dev/inmo/micro_utils/common/MPPFile.kt | 20 +++++++++++++++++++ .../dev/inmo/micro_utils/common/JSMPPFile.kt | 1 + gradle/libs.versions.toml | 7 +++++-- .../micro_utils/ktor/client/TemporalUpload.kt | 3 ++- .../inmo/micro_utils/ktor/client/UniUpload.kt | 9 +++++---- .../ktor/client/ActualTemporalUpload.kt | 9 ++++++--- .../ktor/client/ActualUniUpload.kt | 5 +++-- .../ktor/client/ActualTemporalUpload.kt | 3 ++- .../ktor/client/ActualUniUpload.kt | 7 +++---- .../kotlin/ActualTemporalUpload.kt | 3 ++- .../linuxArm64Main/kotlin/ActualUniUpload.kt | 7 +++---- .../kotlin/ActualTemporalUpload.kt | 3 ++- .../linuxX64Main/kotlin/ActualUniUpload.kt | 7 +++---- .../kotlin/ActualTemporalUpload.kt | 3 ++- .../mingwX64Main/kotlin/ActualUniUpload.kt | 7 +++---- .../ktor/common/CreateTempFileFromInput.kt | 11 +++++----- .../ktor/server/DownloadFileItem.kt | 15 +++++++------- .../ktor/server/NewFlowsWebsocket.kt | 6 +++--- .../micro_utils/ktor/server/StartServer.kt | 10 +++++----- .../TemporalFilesRoutingConfigurator.kt | 4 ++-- .../ApplicationRoutingConfigurator.kt | 4 ++-- .../ktor/server/crud/KtorCRUDRepoRoutes.kt | 8 ++++---- .../server/crud/KtorReadCRUDRepoRoutes.kt | 8 ++++---- .../server/crud/KtorWriteCRUDRepoRoutes.kt | 4 ++-- .../key/value/KtorKeyValueRepoRoutes.kt | 8 ++++---- .../key/value/KtorReadKeyValueRepoRoutes.kt | 8 ++++---- .../key/value/KtorWriteKeyValueRepoRoutes.kt | 4 ++-- .../key/values/KtorKeyValuesRepoRoutes.kt | 8 ++++---- .../key/values/KtorReadKeyValuesRepoRoutes.kt | 8 ++++---- .../values/KtorWriteKeyValuesRepoRoutes.kt | 4 ++-- 31 files changed, 118 insertions(+), 87 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index eea0236fc9a..a718307d212 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -11,6 +11,7 @@ kotlin { commonMain { dependencies { api libs.klock + api libs.kt.io } } jvmMain { diff --git a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt index 7aef8ed8c9a..9dc4c237e4b 100644 --- a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt +++ b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/MPPFile.kt @@ -1,5 +1,11 @@ package dev.inmo.micro_utils.common +import kotlinx.io.Buffer +import kotlinx.io.Source +import kotlinx.io.buffered +import kotlinx.io.files.Path +import kotlinx.io.files.SystemFileSystem +import kotlinx.io.readByteArray import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline @@ -32,3 +38,17 @@ expect val MPPFile.bytesAllocator: SuspendByteArrayAllocator fun MPPFile.bytesSync() = bytesAllocatorSync() suspend fun MPPFile.bytes() = bytesAllocator() +val Path.filename: FileName + get() = FileName(name) +val Path.filesize: Long + get() = SystemFileSystem.metadataOrNull(this) ?.size ?.takeIf { it > -1 } ?: error("Path $filename does not exists or is folder") +val Path.bytesAllocatorSync: ByteArrayAllocator + get() = { + source().buffered().readByteArray() + } +val Path.bytesAllocator: SuspendByteArrayAllocator + get() = { + bytesAllocatorSync() + } + +fun Path.source(): Source = SystemFileSystem.source(this).buffered() diff --git a/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt b/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt index 7e3d865bfb6..478e722e143 100644 --- a/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt +++ b/common/src/jsMain/kotlin/dev/inmo/micro_utils/common/JSMPPFile.kt @@ -1,5 +1,6 @@ package dev.inmo.micro_utils.common +import kotlinx.io.files.Path import org.khronos.webgl.ArrayBuffer import org.w3c.dom.ErrorEvent import org.w3c.files.* diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 05da6f4b6b2..1ccddbc3b8a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,6 +4,8 @@ kt = "2.0.10" kt-serialization = "1.7.1" kt-coroutines = "1.8.1" +kt-io = "0.5.2" + kslog = "1.3.5" jb-compose = "1.7.0-alpha02" @@ -15,11 +17,11 @@ sqlite = "3.46.0.1" korlibs = "5.4.0" uuid = "0.8.4" -ktor = "2.3.11" +ktor = "3.0.0-beta-2" gh-release = "2.5.2" -koin = "3.5.6" +koin = "4.0.0-RC1" okio = "3.9.0" @@ -56,6 +58,7 @@ kt-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-and kt-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kt-coroutines" } kt-coroutines-debug = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-debug", version.ref = "kt-coroutines" } +kt-io = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kt-io" } ktor-io = { module = "io.ktor:ktor-io", version.ref = "ktor" } ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } diff --git a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/TemporalUpload.kt b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/TemporalUpload.kt index ab0d0de9ab7..d23a292d54f 100644 --- a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/TemporalUpload.kt +++ b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/TemporalUpload.kt @@ -3,9 +3,10 @@ package dev.inmo.micro_utils.ktor.client import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.ktor.common.* import io.ktor.client.HttpClient +import io.ktor.client.content.* expect suspend fun HttpClient.tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback = { _, _ -> } + onUpload: ProgressListener = ProgressListener { _, _ -> } ): TemporalFileId diff --git a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/UniUpload.kt b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/UniUpload.kt index 38f6cc8aea0..ad8fd0e3a19 100644 --- a/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/UniUpload.kt +++ b/ktor/client/src/commonMain/kotlin/dev/inmo/micro_utils/ktor/client/UniUpload.kt @@ -4,6 +4,7 @@ import dev.inmo.micro_utils.common.FileName import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.ktor.common.LambdaInputProvider import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.http.Headers import io.ktor.utils.io.core.Input import kotlinx.serialization.DeserializationStrategy @@ -31,7 +32,7 @@ expect suspend fun HttpClient.uniUpload( resultDeserializer: DeserializationStrategy, headers: Headers = Headers.Empty, stringFormat: StringFormat = Json, - onUpload: OnUploadCallback = { _, _ -> } + onUpload: ProgressListener = ProgressListener { _, _ -> } ): T? /** @@ -46,7 +47,7 @@ suspend fun HttpClient.uniUpload( additionalData: Map = emptyMap(), headers: Headers = Headers.Empty, stringFormat: StringFormat = Json, - onUpload: OnUploadCallback = { _, _ -> } + onUpload: ProgressListener = ProgressListener { _, _ -> } ): T? = uniUpload( url, additionalData + ("bytes" to file), @@ -68,7 +69,7 @@ suspend fun HttpClient.uniUpload( additionalData: Map = emptyMap(), headers: Headers = Headers.Empty, stringFormat: StringFormat = Json, - onUpload: OnUploadCallback = { _, _ -> } + onUpload: ProgressListener = ProgressListener { _, _ -> } ): T? = uniUpload( url, additionalData + ("bytes" to info), @@ -93,7 +94,7 @@ suspend fun HttpClient.uniUpload( additionalData: Map = emptyMap(), headers: Headers = Headers.Empty, stringFormat: StringFormat = Json, - onUpload: OnUploadCallback = { _, _ -> } + onUpload: ProgressListener = ProgressListener { _, _ -> } ): T? = uniUpload( url, UniUploadFileInfo(fileName, mimeType, inputAllocator), diff --git a/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt b/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt index 35a9f89a6eb..f36e84b89b0 100644 --- a/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt +++ b/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualTemporalUpload.kt @@ -5,16 +5,19 @@ import dev.inmo.micro_utils.coroutines.LinkedSupervisorJob import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.micro_utils.ktor.common.TemporalFileId import io.ktor.client.HttpClient +import io.ktor.client.content.* import kotlinx.coroutines.* +import kotlinx.io.files.SystemFileSystem import org.w3c.dom.mediasource.ENDED import org.w3c.dom.mediasource.ReadyState +import org.w3c.files.File import org.w3c.xhr.* import org.w3c.xhr.XMLHttpRequest.Companion.DONE suspend fun tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback + onUpload: ProgressListener ): TemporalFileId { val formData = FormData() val answer = CompletableDeferred(currentCoroutineContext().job) @@ -28,7 +31,7 @@ suspend fun tempUpload( val request = XMLHttpRequest() request.responseType = XMLHttpRequestResponseType.TEXT request.upload.onprogress = { - subscope.launchSafelyWithoutExceptions { onUpload(it.loaded.toLong(), it.total.toLong()) } + subscope.launchSafelyWithoutExceptions { onUpload.onProgress(it.loaded.toLong(), it.total.toLong()) } } request.onload = { if (request.status == 200.toShort()) { @@ -60,5 +63,5 @@ suspend fun tempUpload( actual suspend fun HttpClient.tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback + onUpload: ProgressListener ): TemporalFileId = dev.inmo.micro_utils.ktor.client.tempUpload(fullTempUploadDraftPath, file, onUpload) diff --git a/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt b/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt index 92bd078fb47..13c27748a2c 100644 --- a/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt +++ b/ktor/client/src/jsMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt @@ -5,6 +5,7 @@ import dev.inmo.micro_utils.common.Progress import dev.inmo.micro_utils.coroutines.LinkedSupervisorJob import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.http.Headers import io.ktor.utils.io.core.readBytes import kotlinx.coroutines.CompletableDeferred @@ -36,7 +37,7 @@ actual suspend fun HttpClient.uniUpload( resultDeserializer: DeserializationStrategy, headers: Headers, stringFormat: StringFormat, - onUpload: OnUploadCallback + onUpload: ProgressListener ): T? { val formData = FormData() val answer = CompletableDeferred(currentCoroutineContext().job) @@ -66,7 +67,7 @@ actual suspend fun HttpClient.uniUpload( } request.responseType = XMLHttpRequestResponseType.TEXT request.upload.onprogress = { - subscope.launchSafelyWithoutExceptions { onUpload(it.loaded.toLong(), it.total.toLong()) } + subscope.launchSafelyWithoutExceptions { onUpload.onProgress(it.loaded.toLong(), it.total.toLong()) } } request.onload = { if (request.status == 200.toShort()) { 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 3341ef88b83..b55791da76f 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,6 +4,7 @@ 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.content.* import io.ktor.client.plugins.onUpload import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData @@ -18,7 +19,7 @@ internal val MPPFile.mimeType: String actual suspend fun HttpClient.tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback + onUpload: ProgressListener ): TemporalFileId { val inputProvider = file.inputProvider() val fileId = submitFormWithBinaryData( diff --git a/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt b/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt index 085e59f179a..bdfb6ae707f 100644 --- a/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt +++ b/ktor/client/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/client/ActualUniUpload.kt @@ -2,6 +2,7 @@ package dev.inmo.micro_utils.ktor.client import dev.inmo.micro_utils.common.Progress import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.engine.mergeHeaders import io.ktor.client.plugins.onUpload import io.ktor.client.request.HttpRequestBuilder @@ -39,7 +40,7 @@ actual suspend fun HttpClient.uniUpload( resultDeserializer: DeserializationStrategy, headers: Headers, stringFormat: StringFormat, - onUpload: OnUploadCallback + onUpload: ProgressListener ): T? { val withBinary = data.values.any { it is File || it is UniUploadFileInfo } @@ -75,9 +76,7 @@ actual suspend fun HttpClient.uniUpload( headers { appendAll(headers) } - onUpload { bytesSentTotal, contentLength -> - onUpload(bytesSentTotal, contentLength) - } + onUpload(onUpload) } val response = if (withBinary) { diff --git a/ktor/client/src/linuxArm64Main/kotlin/ActualTemporalUpload.kt b/ktor/client/src/linuxArm64Main/kotlin/ActualTemporalUpload.kt index 8dc14e5f7c0..59771977727 100644 --- a/ktor/client/src/linuxArm64Main/kotlin/ActualTemporalUpload.kt +++ b/ktor/client/src/linuxArm64Main/kotlin/ActualTemporalUpload.kt @@ -5,6 +5,7 @@ import dev.inmo.micro_utils.common.filename import dev.inmo.micro_utils.ktor.common.TemporalFileId import dev.inmo.micro_utils.mime_types.getMimeTypeOrAny import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.plugins.onUpload import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData @@ -18,7 +19,7 @@ internal val MPPFile.mimeType: String actual suspend fun HttpClient.tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback + onUpload: ProgressListener ): TemporalFileId { val inputProvider = file.inputProvider() val fileId = submitFormWithBinaryData( diff --git a/ktor/client/src/linuxArm64Main/kotlin/ActualUniUpload.kt b/ktor/client/src/linuxArm64Main/kotlin/ActualUniUpload.kt index 4da3d874f80..556d0845b1b 100644 --- a/ktor/client/src/linuxArm64Main/kotlin/ActualUniUpload.kt +++ b/ktor/client/src/linuxArm64Main/kotlin/ActualUniUpload.kt @@ -3,6 +3,7 @@ package dev.inmo.micro_utils.ktor.client import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.common.Progress import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.engine.mergeHeaders import io.ktor.client.plugins.onUpload import io.ktor.client.request.HttpRequestBuilder @@ -39,7 +40,7 @@ actual suspend fun HttpClient.uniUpload( resultDeserializer: DeserializationStrategy, headers: Headers, stringFormat: StringFormat, - onUpload: OnUploadCallback + onUpload: ProgressListener ): T? { val withBinary = data.values.any { it is MPPFile || it is UniUploadFileInfo } @@ -75,9 +76,7 @@ actual suspend fun HttpClient.uniUpload( headers { appendAll(headers) } - onUpload { bytesSentTotal, contentLength -> - onUpload(bytesSentTotal, contentLength) - } + onUpload(onUpload) } val response = if (withBinary) { diff --git a/ktor/client/src/linuxX64Main/kotlin/ActualTemporalUpload.kt b/ktor/client/src/linuxX64Main/kotlin/ActualTemporalUpload.kt index 8dc14e5f7c0..59771977727 100644 --- a/ktor/client/src/linuxX64Main/kotlin/ActualTemporalUpload.kt +++ b/ktor/client/src/linuxX64Main/kotlin/ActualTemporalUpload.kt @@ -5,6 +5,7 @@ import dev.inmo.micro_utils.common.filename import dev.inmo.micro_utils.ktor.common.TemporalFileId import dev.inmo.micro_utils.mime_types.getMimeTypeOrAny import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.plugins.onUpload import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData @@ -18,7 +19,7 @@ internal val MPPFile.mimeType: String actual suspend fun HttpClient.tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback + onUpload: ProgressListener ): TemporalFileId { val inputProvider = file.inputProvider() val fileId = submitFormWithBinaryData( diff --git a/ktor/client/src/linuxX64Main/kotlin/ActualUniUpload.kt b/ktor/client/src/linuxX64Main/kotlin/ActualUniUpload.kt index 4da3d874f80..556d0845b1b 100644 --- a/ktor/client/src/linuxX64Main/kotlin/ActualUniUpload.kt +++ b/ktor/client/src/linuxX64Main/kotlin/ActualUniUpload.kt @@ -3,6 +3,7 @@ package dev.inmo.micro_utils.ktor.client import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.common.Progress import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.engine.mergeHeaders import io.ktor.client.plugins.onUpload import io.ktor.client.request.HttpRequestBuilder @@ -39,7 +40,7 @@ actual suspend fun HttpClient.uniUpload( resultDeserializer: DeserializationStrategy, headers: Headers, stringFormat: StringFormat, - onUpload: OnUploadCallback + onUpload: ProgressListener ): T? { val withBinary = data.values.any { it is MPPFile || it is UniUploadFileInfo } @@ -75,9 +76,7 @@ actual suspend fun HttpClient.uniUpload( headers { appendAll(headers) } - onUpload { bytesSentTotal, contentLength -> - onUpload(bytesSentTotal, contentLength) - } + onUpload(onUpload) } val response = if (withBinary) { diff --git a/ktor/client/src/mingwX64Main/kotlin/ActualTemporalUpload.kt b/ktor/client/src/mingwX64Main/kotlin/ActualTemporalUpload.kt index 8dc14e5f7c0..59771977727 100644 --- a/ktor/client/src/mingwX64Main/kotlin/ActualTemporalUpload.kt +++ b/ktor/client/src/mingwX64Main/kotlin/ActualTemporalUpload.kt @@ -5,6 +5,7 @@ import dev.inmo.micro_utils.common.filename import dev.inmo.micro_utils.ktor.common.TemporalFileId import dev.inmo.micro_utils.mime_types.getMimeTypeOrAny import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.plugins.onUpload import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData @@ -18,7 +19,7 @@ internal val MPPFile.mimeType: String actual suspend fun HttpClient.tempUpload( fullTempUploadDraftPath: String, file: MPPFile, - onUpload: OnUploadCallback + onUpload: ProgressListener ): TemporalFileId { val inputProvider = file.inputProvider() val fileId = submitFormWithBinaryData( diff --git a/ktor/client/src/mingwX64Main/kotlin/ActualUniUpload.kt b/ktor/client/src/mingwX64Main/kotlin/ActualUniUpload.kt index 4da3d874f80..556d0845b1b 100644 --- a/ktor/client/src/mingwX64Main/kotlin/ActualUniUpload.kt +++ b/ktor/client/src/mingwX64Main/kotlin/ActualUniUpload.kt @@ -3,6 +3,7 @@ package dev.inmo.micro_utils.ktor.client import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.common.Progress import io.ktor.client.HttpClient +import io.ktor.client.content.* import io.ktor.client.engine.mergeHeaders import io.ktor.client.plugins.onUpload import io.ktor.client.request.HttpRequestBuilder @@ -39,7 +40,7 @@ actual suspend fun HttpClient.uniUpload( resultDeserializer: DeserializationStrategy, headers: Headers, stringFormat: StringFormat, - onUpload: OnUploadCallback + onUpload: ProgressListener ): T? { val withBinary = data.values.any { it is MPPFile || it is UniUploadFileInfo } @@ -75,9 +76,7 @@ actual suspend fun HttpClient.uniUpload( headers { appendAll(headers) } - onUpload { bytesSentTotal, contentLength -> - onUpload(bytesSentTotal, contentLength) - } + onUpload(onUpload) } val response = if (withBinary) { diff --git a/ktor/common/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/common/CreateTempFileFromInput.kt b/ktor/common/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/common/CreateTempFileFromInput.kt index 5c7b97f888f..3ec4ee47bff 100644 --- a/ktor/common/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/common/CreateTempFileFromInput.kt +++ b/ktor/common/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/common/CreateTempFileFromInput.kt @@ -1,11 +1,10 @@ package dev.inmo.micro_utils.ktor.common -import io.ktor.utils.io.core.Input -import io.ktor.utils.io.core.copyTo -import io.ktor.utils.io.streams.asOutput +import io.ktor.utils.io.core.* +import kotlinx.io.asSink import java.io.File -import java.io.InputStream import java.util.UUID +import kotlin.io.use fun Input.downloadToTempFile( fileName: String = UUID.randomUUID().toString(), @@ -16,8 +15,8 @@ fun Input.downloadToTempFile( fileExtension, folder ).apply { - outputStream().use { - copyTo(it.asOutput()) + outputStream().use { output -> + this@downloadToTempFile.transferTo(output.asSink()) } deleteOnExit() } diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/DownloadFileItem.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/DownloadFileItem.kt index 998fef99797..2abdddd2e0c 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/DownloadFileItem.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/DownloadFileItem.kt @@ -4,14 +4,15 @@ import com.benasher44.uuid.uuid4 import io.ktor.http.content.PartData import io.ktor.utils.io.copyTo import io.ktor.utils.io.core.copyTo -import io.ktor.utils.io.jvm.javaio.copyTo -import io.ktor.utils.io.streams.asOutput +import io.ktor.utils.io.jvm.javaio.* +import io.ktor.utils.io.streams.* +import kotlinx.io.asSink import java.io.File fun PartData.FileItem.download(target: File) { - provider().use { input -> - target.outputStream().asOutput().use { - input.copyTo(it) + provider().toInputStream().asInput().use { input -> + target.outputStream().use { output -> + input.transferTo(output.asSink()) } } } @@ -26,8 +27,8 @@ fun PartData.FileItem.downloadToTemporalFile(): File { fun PartData.BinaryItem.download(target: File) { provider().use { input -> - target.outputStream().use { - input.copyTo(it.asOutput()) + target.outputStream().use { output -> + input.transferTo(output.asSink()) } } } diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/NewFlowsWebsocket.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/NewFlowsWebsocket.kt index fa2822c39c1..e51cb579fb3 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/NewFlowsWebsocket.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/NewFlowsWebsocket.kt @@ -5,14 +5,14 @@ import dev.inmo.micro_utils.ktor.common.* import io.ktor.http.URLProtocol 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.routing.Routing +import io.ktor.server.routing.* import io.ktor.server.websocket.* import io.ktor.websocket.send import kotlinx.coroutines.flow.Flow import kotlinx.serialization.SerializationStrategy -inline fun Route.includeWebsocketHandling( +inline fun Routing.includeWebsocketHandling( suburl: String, flow: Flow, protocol: URLProtocol? = null, 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 821403521f6..f5d8fc35add 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 @@ -11,12 +11,12 @@ fun , host: String = "localhost", port: Int = Random.nextInt(1024, 65535), - additionalEngineEnvironmentConfigurator: ApplicationEngineEnvironmentBuilder.() -> Unit = {}, + additionalEngineEnvironmentConfigurator: ApplicationEnvironmentBuilder.() -> Unit = {}, additionalConfigurationConfigurator: TConfiguration.() -> Unit = {}, block: Application.() -> Unit ): TEngine = embeddedServer( engine, - applicationEngineEnvironment { + applicationEnvironment { module(block) connector { this.host = host @@ -35,7 +35,7 @@ fun Unit = {}, + additionalEngineEnvironmentConfigurator: ApplicationEnvironmentBuilder.() -> Unit = {}, additionalConfigurationConfigurator: CIOApplicationEngine.Configuration.() -> Unit = {}, block: Application.() -> Unit ): CIOApplicationEngine = createKtorServer( @@ -51,7 +51,7 @@ fun , host: String = "localhost", port: Int = Random.nextInt(1024, 65535), - additionalEngineEnvironmentConfigurator: ApplicationEngineEnvironmentBuilder.() -> Unit = {}, + additionalEngineEnvironmentConfigurator: ApplicationEnvironmentBuilder.() -> Unit = {}, additionalConfigurationConfigurator: TConfiguration.() -> Unit = {}, configurators: List ): TEngine = createKtorServer( @@ -73,6 +73,6 @@ fun createKtorServer( host: String = "localhost", port: Int = Random.nextInt(1024, 65535), configurators: List, - additionalEngineEnvironmentConfigurator: ApplicationEngineEnvironmentBuilder.() -> Unit = {}, + additionalEngineEnvironmentConfigurator: ApplicationEnvironmentBuilder.() -> Unit = {}, additionalConfigurationConfigurator: CIOApplicationEngine.Configuration.() -> Unit = {}, ): ApplicationEngine = createKtorServer(CIO, host, port, additionalEngineEnvironmentConfigurator, additionalConfigurationConfigurator, configurators) 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 dd45d06741a..2c5489e3545 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 @@ -14,7 +14,7 @@ import io.ktor.server.application.call import io.ktor.server.request.receiveMultipart import io.ktor.server.response.respond import io.ktor.server.response.respondText -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.post import kotlinx.coroutines.* import kotlinx.coroutines.flow.* @@ -77,7 +77,7 @@ class TemporalFilesRoutingConfigurator( private val filesFlow = MutableSharedFlow() val utilizerJob = temporalFilesUtilizer.start(temporalFilesMap, temporalFilesMutex, filesFlow.asSharedFlow()) - override fun Route.invoke() { + override fun Routing.invoke() { post(subpath) { val multipart = call.receiveMultipart() 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 3c008d79b87..a583c9fca88 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 @@ -2,7 +2,7 @@ package dev.inmo.micro_utils.ktor.server.configurators 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 io.ktor.server.routing.Routing import kotlinx.serialization.Contextual import kotlinx.serialization.Serializable @@ -11,7 +11,7 @@ import kotlinx.serialization.Serializable class ApplicationRoutingConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - fun interface Element { operator fun Route.invoke() } + fun interface Element { operator fun Routing.invoke() } private val rootInstaller = Element { elements.forEach { it.apply { invoke() } diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorCRUDRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorCRUDRepoRoutes.kt index f7d950229bd..dbc14399fae 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorCRUDRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorCRUDRepoRoutes.kt @@ -2,10 +2,10 @@ package dev.inmo.micro_utils.repos.ktor.server.crud import dev.inmo.micro_utils.ktor.common.* import dev.inmo.micro_utils.repos.CRUDRepo -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import kotlinx.serialization.* -inline fun Route.configureCRUDRepoRoutes( +inline fun Routing.configureCRUDRepoRoutes( originalRepo: CRUDRepo, noinline idDeserializer: suspend (String) -> IdType ) { @@ -13,7 +13,7 @@ inline fun Route.configureCRUDRepoRoutes( +inline fun Routing.configureCRUDRepoRoutes( originalRepo: CRUDRepo, idsSerializer: KSerializer, serialFormat: StringFormat @@ -21,7 +21,7 @@ inline fun Route.configureCRUDRepoRoutes( +inline fun Routing.configureCRUDRepoRoutes( originalRepo: CRUDRepo, idsSerializer: KSerializer, serialFormat: BinaryFormat diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadCRUDRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadCRUDRepoRoutes.kt index 7b295deefae..79b3dc87652 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadCRUDRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorReadCRUDRepoRoutes.kt @@ -11,11 +11,11 @@ import dev.inmo.micro_utils.repos.ktor.common.idParameterName import io.ktor.http.HttpStatusCode import io.ktor.server.application.call import io.ktor.server.response.respond -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.get import kotlinx.serialization.* -inline fun Route.configureReadCRUDRepoRoutes( +inline fun Routing.configureReadCRUDRepoRoutes( originalRepo: ReadCRUDRepo, noinline idDeserializer: suspend (String) -> IdType ) { @@ -65,7 +65,7 @@ inline fun Route.configureReadCRUDRepoRoute } } -inline fun Route.configureReadCRUDRepoRoutes( +inline fun Routing.configureReadCRUDRepoRoutes( originalRepo: ReadCRUDRepo, idsSerializer: KSerializer, serialFormat: StringFormat @@ -73,7 +73,7 @@ inline fun Route.configureReadCRUDRepoRoute serialFormat.decodeFromString(idsSerializer, it) } -inline fun Route.configureReadCRUDRepoRoutes( +inline fun Routing.configureReadCRUDRepoRoutes( originalRepo: ReadCRUDRepo, idsSerializer: KSerializer, serialFormat: BinaryFormat diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt index 368f928d141..7d297850f7d 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/crud/KtorWriteCRUDRepoRoutes.kt @@ -7,10 +7,10 @@ import io.ktor.http.HttpStatusCode import io.ktor.server.application.call import io.ktor.server.request.receive import io.ktor.server.response.respond -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.post -inline fun Route.configureWriteCRUDRepoRoutes( +inline fun Routing.configureWriteCRUDRepoRoutes( originalRepo: WriteCRUDRepo ) { includeWebsocketHandling( diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorKeyValueRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorKeyValueRepoRoutes.kt index 1ff64d93a00..59ad0d31660 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorKeyValueRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorKeyValueRepoRoutes.kt @@ -3,10 +3,10 @@ package dev.inmo.micro_utils.repos.ktor.server.key.value import dev.inmo.micro_utils.ktor.common.* import dev.inmo.micro_utils.repos.KeyValueRepo import io.ktor.http.* -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import kotlinx.serialization.* -inline fun Route.configureKeyValueRepoRoutes ( +inline fun Routing.configureKeyValueRepoRoutes ( originalRepo: KeyValueRepo, noinline idDeserializer: suspend (String) -> Key, noinline valueDeserializer: suspend (String) -> Value @@ -15,7 +15,7 @@ inline fun Route.configureKeyValueRepoR configureWriteKeyValueRepoRoutes(originalRepo) } -inline fun Route.configureKeyValueRepoRoutes( +inline fun Routing.configureKeyValueRepoRoutes( originalRepo: KeyValueRepo, idsSerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, @@ -30,7 +30,7 @@ inline fun Route.configureKeyValueRepoR } ) -inline fun Route.configureKeyValueRepoRoutes( +inline fun Routing.configureKeyValueRepoRoutes( originalRepo: KeyValueRepo, idsSerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorReadKeyValueRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorReadKeyValueRepoRoutes.kt index 418d87cae7e..ffab7f81624 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorReadKeyValueRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorReadKeyValueRepoRoutes.kt @@ -14,14 +14,14 @@ import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName import io.ktor.http.* import io.ktor.server.application.call import io.ktor.server.response.respond -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.get import io.ktor.util.InternalAPI import io.ktor.util.reflect.typeInfo import kotlinx.serialization.* @OptIn(InternalAPI::class) -inline fun Route.configureReadKeyValueRepoRoutes ( +inline fun Routing.configureReadKeyValueRepoRoutes ( originalRepo: ReadKeyValueRepo, noinline idDeserializer: suspend (String) -> Key, noinline valueDeserializer: suspend (String) -> Value @@ -79,7 +79,7 @@ inline fun Route.configureReadKeyValueRepoRoutes ( } } -inline fun Route.configureReadKeyValueRepoRoutes( +inline fun Routing.configureReadKeyValueRepoRoutes( originalRepo: ReadKeyValueRepo, idsSerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, @@ -94,7 +94,7 @@ inline fun Route.configureReadKeyValueRepoRoutes( } ) -inline fun Route.configureReadKeyValueRepoRoutes( +inline fun Routing.configureReadKeyValueRepoRoutes( originalRepo: ReadKeyValueRepo, idsSerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorWriteKeyValueRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorWriteKeyValueRepoRoutes.kt index 78e39e8ff66..c3bc47e0240 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorWriteKeyValueRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/value/KtorWriteKeyValueRepoRoutes.kt @@ -7,11 +7,11 @@ import io.ktor.http.HttpStatusCode import io.ktor.server.application.call import io.ktor.server.request.receive import io.ktor.server.response.respond -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.post import io.ktor.util.reflect.typeInfo -inline fun Route.configureWriteKeyValueRepoRoutes ( +inline fun Routing.configureWriteKeyValueRepoRoutes ( originalRepo: WriteKeyValueRepo ) { includeWebsocketHandling( diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorKeyValuesRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorKeyValuesRepoRoutes.kt index 541ca5fd7ce..56fe0821c37 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorKeyValuesRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorKeyValuesRepoRoutes.kt @@ -3,10 +3,10 @@ package dev.inmo.micro_utils.repos.ktor.server.key.values import dev.inmo.micro_utils.ktor.common.* import dev.inmo.micro_utils.repos.* import io.ktor.http.* -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import kotlinx.serialization.* -inline fun Route.configureKeyValuesRepoRoutes ( +inline fun Routing.configureKeyValuesRepoRoutes ( originalRepo: KeyValuesRepo, noinline keyDeserializer: suspend (String) -> Key, noinline valueDeserializer: suspend (String) -> Value @@ -15,7 +15,7 @@ inline fun Route.configureKeyValuesRepo configureWriteKeyValuesRepoRoutes(originalRepo) } -inline fun Route.configureKeyValuesRepoRoutes( +inline fun Routing.configureKeyValuesRepoRoutes( originalRepo: KeyValuesRepo, keySerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, @@ -30,7 +30,7 @@ inline fun Route.configureKeyValuesRepo } ) -inline fun Route.configureKeyValuesRepoRoutes( +inline fun Routing.configureKeyValuesRepoRoutes( originalRepo: KeyValuesRepo, keySerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorReadKeyValuesRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorReadKeyValuesRepoRoutes.kt index 0953465cd60..7921f24d817 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorReadKeyValuesRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorReadKeyValuesRepoRoutes.kt @@ -12,14 +12,14 @@ import dev.inmo.micro_utils.repos.ktor.common.one_to_many.* import io.ktor.http.* import io.ktor.server.application.call import io.ktor.server.response.respond -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.get import io.ktor.util.InternalAPI import io.ktor.util.reflect.typeInfo import kotlinx.serialization.* @OptIn(InternalAPI::class) -inline fun Route.configureReadKeyValuesRepoRoutes ( +inline fun Routing.configureReadKeyValuesRepoRoutes ( originalRepo: ReadKeyValuesRepo, noinline keyDeserializer: suspend (String) -> Key, noinline valueDeserializer: suspend (String) -> Value @@ -76,7 +76,7 @@ inline fun Route.configureReadKeyValuesRepoRoutes ( } } -inline fun Route.configureReadKeyValuesRepoRoutes( +inline fun Routing.configureReadKeyValuesRepoRoutes( originalRepo: ReadKeyValuesRepo, keySerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, @@ -91,7 +91,7 @@ inline fun Route.configureReadKeyValuesRepoRoutes( } ) -inline fun Route.configureReadKeyValuesRepoRoutes( +inline fun Routing.configureReadKeyValuesRepoRoutes( originalRepo: ReadKeyValuesRepo, keySerializer: DeserializationStrategy, valueSerializer: DeserializationStrategy, diff --git a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorWriteKeyValuesRepoRoutes.kt b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorWriteKeyValuesRepoRoutes.kt index 3f78ca0a7be..73c4d142eb4 100644 --- a/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorWriteKeyValuesRepoRoutes.kt +++ b/repos/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/ktor/server/key/values/KtorWriteKeyValuesRepoRoutes.kt @@ -7,11 +7,11 @@ import io.ktor.http.HttpStatusCode import io.ktor.server.application.call import io.ktor.server.request.receive import io.ktor.server.response.respond -import io.ktor.server.routing.Route +import io.ktor.server.routing.Routing import io.ktor.server.routing.post import io.ktor.util.reflect.typeInfo -inline fun Route.configureWriteKeyValuesRepoRoutes ( +inline fun Routing.configureWriteKeyValuesRepoRoutes ( originalRepo: WriteKeyValuesRepo ) { includeWebsocketHandling(