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