MattermostClientConfiguration.java

package com.tdmconsult.ete.configuration;

import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.DefaultUriBuilderFactory;

@Configuration
@EnableConfigurationProperties(MattermostProperties.class)
public class MattermostClientConfiguration {

    @Bean(name = "mattermostRestTemplate")
    public RestTemplate mattermostRestTemplate(
            final RestTemplateBuilder builder,
            final MattermostProperties properties) {

        final var fullWebhookUrl = "%s/hooks/%s".formatted(
                properties.baseurl(),
                properties.token());

        return builder
                .uriTemplateHandler(new DefaultUriBuilderFactory(fullWebhookUrl))
                .connectTimeout(properties.connectTimeout())
                .readTimeout(properties.readTimeout())
                .build();
    }
}