diff --git a/README.md b/README.md
index 5e23283..b991909 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,15 @@ locations:
telegram.bot.proxyPort
http proxy port
+
+ telegram.bot.connectionTimeout
+ timeout in milliseconds until a connection is established
+
+ telegram.bot.connectionRequestTimeout
+ timeout in milliseconds used when requesting a connection
+
+ telegram.bot.socketTimeout
+ the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets)
diff --git a/examples/application.properties b/examples/application.properties
index 2d0e2ed..3894a5b 100644
--- a/examples/application.properties
+++ b/examples/application.properties
@@ -48,6 +48,9 @@ spring.jpa.open-in-view=false
telegram.bot.token=
telegram.bot.name=
telegram.bot.adminId=
+telegram.bot.connectionTimeout=1000
+telegram.bot.connectionRequestTimeout=1000
+telegram.bot.socketTimeout=1000
# leave it blank if you dont want to use http proxy
telegram.bot.proxyHost=
telegram.bot.proxyPort=
diff --git a/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/ApplicationConfiguration.kt b/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/ApplicationConfiguration.kt
index c85d4f8..f0bd5d8 100644
--- a/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/ApplicationConfiguration.kt
+++ b/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/ApplicationConfiguration.kt
@@ -4,6 +4,8 @@ import com.github.mikesafonov.jira.telegram.service.destination.DefaultDestinati
import com.github.mikesafonov.jira.telegram.service.destination.DestinationDetectorService
import com.github.mikesafonov.jira.telegram.service.parameters.DefaultParametersBuilderService
import com.github.mikesafonov.jira.telegram.service.parameters.ParametersBuilderService
+import org.apache.http.HttpHost
+import org.apache.http.client.config.RequestConfig
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.annotation.Bean
@@ -20,28 +22,34 @@ class ApplicationConfiguration {
@Bean
fun botOptions(botProperties: BotProperties): DefaultBotOptions {
val botOptions = DefaultBotOptions()
+ val requestConfigBuilder = RequestConfig.custom()
+ .setSocketTimeout(botProperties.socketTimeout)
+ .setConnectionRequestTimeout(botProperties.connectionRequestTimeout)
+ .setConnectTimeout(botProperties.connectionTimeout)
if (botProperties.isProxy) {
- botOptions.proxyPort = botProperties.proxyPort ?: 0
- botOptions.proxyHost = botProperties.proxyHost
- botOptions.proxyType = DefaultBotOptions.ProxyType.HTTP
+ val proxy = HttpHost(botProperties.proxyHost, botProperties.proxyPort!!)
+ botOptions.requestConfig = requestConfigBuilder.setProxy(proxy).build()
+ } else {
+ botOptions.requestConfig = requestConfigBuilder.build()
}
return botOptions
}
+
@Bean
@ConditionalOnMissingBean(DestinationDetectorService::class)
- fun defaultDestinationDetectorService(applicationProperties: ApplicationProperties) : DefaultDestinationDetectorService {
+ fun defaultDestinationDetectorService(applicationProperties: ApplicationProperties): DefaultDestinationDetectorService {
return DefaultDestinationDetectorService(applicationProperties)
}
@Bean
@ConditionalOnMissingBean(ParametersBuilderService::class)
- fun defaultParametersBuilderService(applicationProperties: ApplicationProperties) : DefaultParametersBuilderService {
+ fun defaultParametersBuilderService(applicationProperties: ApplicationProperties): DefaultParametersBuilderService {
return DefaultParametersBuilderService(applicationProperties)
}
@Bean
- fun logRequestFilter(@Value("\${request.logging.payload.length}") payloadLength : Int) : CommonsRequestLoggingFilter {
+ fun logRequestFilter(@Value("\${request.logging.payload.length}") payloadLength: Int): CommonsRequestLoggingFilter {
val filter = CommonsRequestLoggingFilter()
filter.setIncludePayload(true)
filter.setAfterMessagePrefix("REQUEST DATA : ")
diff --git a/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/BotProperties.kt b/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/BotProperties.kt
index ffe29a0..422cb34 100644
--- a/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/BotProperties.kt
+++ b/src/main/kotlin/com/github/mikesafonov/jira/telegram/config/BotProperties.kt
@@ -32,6 +32,21 @@ class BotProperties {
*/
var proxyPort: Int? = null
+ /**
+ * timeout in milliseconds until a connection is established
+ */
+ var connectionTimeout: Int = -1
+
+ /**
+ * timeout in milliseconds used when requesting a connection
+ */
+ var connectionRequestTimeout: Int = -1
+ /**
+ * the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently,
+ * a maximum period inactivity between two consecutive data packets)
+ */
+ var socketTimeout: Int = -1
+
val isProxy: Boolean
get() {
return proxyHost != null && proxyPort != null