diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c76d1b5cd..2ec8782ae0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,10 @@ * Now `LeftChatMamber` is a `CommonEvent` +### 0.20.4 + +* Now `setWebhook` supports setting up of path for listening + ## 0.19.0 ImplicitReflection removing * Total rework of serialization for requests. Now all `SimpleRequest` children have: diff --git a/build.gradle b/build.gradle index 64462c4baa..d15f48af65 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ plugins { id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" } -project.version = "0.20.3" +project.version = "0.20.4" project.group = "com.github.insanusmokrassar" apply from: "publish.gradle" diff --git a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Webhooks.kt b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Webhooks.kt index e10e4c9347..6d985c0558 100644 --- a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Webhooks.kt +++ b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Webhooks.kt @@ -23,12 +23,12 @@ import kotlinx.serialization.json.Json import java.util.concurrent.Executors import java.util.concurrent.TimeUnit - /** * Reverse proxy webhook. * * @param url URL of webhook WITHOUT including of [port] * @param port port which will be listen by bot + * @param listenAddress address to listen by bot * @param certificate [com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile] or [com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId] * which will be used by telegram to send encrypted messages * @param scope Scope which will be used for @@ -37,6 +37,7 @@ suspend fun RequestsExecutor.setWebhook( url: String, port: Int, engineFactory: ApplicationEngineFactory<*, *>, + listenAddress: String = "/", certificate: InputFile? = null, privateKeyConfig: WebhookPrivateKeyConfig? = null, scope: CoroutineScope = CoroutineScope(Executors.newFixedThreadPool(4).asCoroutineDispatcher()), @@ -70,7 +71,7 @@ suspend fun RequestsExecutor.setWebhook( module { routing { - post { + post(listenAddress) { val deserialized = call.receiveText() val update = Json.nonstrict.parse( RawUpdate.serializer(), @@ -136,6 +137,29 @@ suspend fun RequestsExecutor.setWebhook( } } +suspend fun RequestsExecutor.setWebhook( + url: String, + port: Int, + engineFactory: ApplicationEngineFactory<*, *>, + certificate: InputFile? = null, + privateKeyConfig: WebhookPrivateKeyConfig? = null, + scope: CoroutineScope = CoroutineScope(Executors.newFixedThreadPool(4).asCoroutineDispatcher()), + allowedUpdates: List? = null, + maxAllowedConnections: Int? = null, + block: UpdateReceiver +) = setWebhook( + url, + port, + engineFactory, + "/", + certificate, + privateKeyConfig, + scope, + allowedUpdates, + maxAllowedConnections, + block +) + suspend fun RequestsExecutor.setWebhook( url: String, port: Int, @@ -144,11 +168,13 @@ suspend fun RequestsExecutor.setWebhook( certificate: InputFile? = null, privateKeyConfig: WebhookPrivateKeyConfig? = null, scope: CoroutineScope = CoroutineScope(Executors.newFixedThreadPool(4).asCoroutineDispatcher()), - maxAllowedConnections: Int? = null + maxAllowedConnections: Int? = null, + listenAddress: String = "/" ): Job = setWebhook( url, port, engineFactory, + listenAddress, certificate, privateKeyConfig, scope,