Skip to content

Commit

Permalink
new properties: connectionTimeout, connectionRequestTimeout and socke…
Browse files Browse the repository at this point in the history
…tTimeout
  • Loading branch information
MikeSafonov committed Mar 6, 2019
1 parent fa371f0 commit ec54879
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 6 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,15 @@ locations:

<dt>telegram.bot.proxyPort</dt>
<dd>http proxy port</dd>

<dt>telegram.bot.connectionTimeout</dt>
<dd>timeout in milliseconds until a connection is established</dd>

<dt>telegram.bot.connectionRequestTimeout</dt>
<dd>timeout in milliseconds used when requesting a connection</dd>

<dt>telegram.bot.socketTimeout</dt>
<dd>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)</dd>
</dl>


Expand Down
3 changes: 3 additions & 0 deletions examples/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ spring.jpa.open-in-view=false
telegram.bot.token= <telegram bot secret token>
telegram.bot.name= <telegram bot name >
telegram.bot.adminId= <telegram bot chat id>
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=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 : ")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ec54879

Please sign in to comment.