diff --git a/CHANGELOG.md b/CHANGELOG.md index 717f4df5a99..f398f836d57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.9.22 +* `Ktor`: + * `Server`: + * Now `createKtorServer` fun is fully customizable + ## 0.9.21 * `Repos`: 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 59ff509aecf..51948300ba2 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 @@ -3,6 +3,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.cio.CIO +import io.ktor.server.cio.CIOApplicationEngine import io.ktor.server.engine.* import kotlin.random.Random @@ -10,17 +11,21 @@ fun , host: String = "localhost", port: Int = Random.nextInt(1024, 65535), + additionalEngineEnvironmentConfigurator: ApplicationEngineEnvironmentBuilder.() -> Unit = {}, + additionalConfigurationConfigurator: TConfiguration.() -> Unit = {}, block: Application.() -> Unit -): TEngine { - val env = applicationEngineEnvironment { +): TEngine = embeddedServer( + engine, + applicationEngineEnvironment { module(block) connector { - this@connector.host = host - this@connector.port = port + this.host = host + this.port = port } - } - return embeddedServer(engine, env) -} + additionalEngineEnvironmentConfigurator() + }, + additionalConfigurationConfigurator +) /** * Create server with [CIO] server engine without starting of it @@ -30,18 +35,31 @@ fun Unit = {}, + additionalConfigurationConfigurator: CIOApplicationEngine.Configuration.() -> Unit = {}, block: Application.() -> Unit -): ApplicationEngine = createKtorServer(CIO, host, port, block) +): CIOApplicationEngine = createKtorServer( + CIO, + host, + port, + additionalEngineEnvironmentConfigurator, + additionalConfigurationConfigurator, + block +) fun createKtorServer( engine: ApplicationEngineFactory, host: String = "localhost", port: Int = Random.nextInt(1024, 65535), + additionalEngineEnvironmentConfigurator: ApplicationEngineEnvironmentBuilder.() -> Unit = {}, + additionalConfigurationConfigurator: TConfiguration.() -> Unit = {}, configurators: List ): TEngine = createKtorServer( engine, host, - port + port, + additionalEngineEnvironmentConfigurator, + additionalConfigurationConfigurator ) { configurators.forEach { it.apply { configure() } } } @@ -54,5 +72,7 @@ fun -): ApplicationEngine = createKtorServer(CIO, host, port, configurators) + configurators: List, + additionalEngineEnvironmentConfigurator: ApplicationEngineEnvironmentBuilder.() -> Unit = {}, + additionalConfigurationConfigurator: CIOApplicationEngine.Configuration.() -> Unit = {}, +): ApplicationEngine = createKtorServer(CIO, host, port, additionalEngineEnvironmentConfigurator, additionalConfigurationConfigurator, configurators)