70 lines
3.4 KiB
Java
70 lines
3.4 KiB
Java
package com.myoa.engineering.crawl.ppomppu.processor.infrastructure.client;
|
|
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
import org.springframework.web.reactive.function.client.WebClientRequestException;
|
|
|
|
import com.myoa.engineering.crawl.ppomppu.processor.dto.constant.WebClientPropertiesUnitName;
|
|
import com.myoa.engineering.crawl.ppomppu.support.dto.BlockMessageDTO;
|
|
import com.myoa.engineering.crawl.ppomppu.support.dto.SimpleMessageDTO;
|
|
import com.myoa.engineering.crawl.ppomppu.support.webclient.factory.WebClientFilterFactory;
|
|
import com.myoa.engineering.crawl.ppomppu.support.webclient.factory.WebFluxExchangeStragiesFactory;
|
|
import com.myoa.engineering.crawl.ppomppu.support.webclient.properties.WebClientProperties;
|
|
import com.myoa.engineering.crawl.ppomppu.support.webclient.properties.WebClientProperties.WebClientPropertiesUnit;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import reactor.core.publisher.Mono;
|
|
import reactor.core.scheduler.Schedulers;
|
|
|
|
/**
|
|
* PpomppuNotifierSenderAPIClient
|
|
*
|
|
* @author Shin Woo-jin (woo-jin.shin@linecorp.com)
|
|
* @since 2021-11-17
|
|
*/
|
|
@Slf4j
|
|
@Component
|
|
public class MessageSenderAPIClient {
|
|
|
|
private final WebClient webClient;
|
|
|
|
public MessageSenderAPIClient(WebClientProperties webClientProperties) {
|
|
WebClientPropertiesUnit webClientPropertiesUnit =
|
|
webClientProperties.find(WebClientPropertiesUnitName.PPOMPPU_NOTIFIER_SENDER_API.getUnitName());
|
|
this.webClient = WebClient.builder()
|
|
.baseUrl(webClientPropertiesUnit.getBaseUrl())
|
|
.exchangeStrategies(WebFluxExchangeStragiesFactory.ofDefault())
|
|
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
|
|
// .filter(WebClientFilterFactory.logRequest())
|
|
// .filter(WebClientFilterFactory.logResponse())
|
|
.build();
|
|
}
|
|
|
|
public Mono<String> sendSimpleMessageToSlack(SimpleMessageDTO dto) {
|
|
return webClient.post()
|
|
.uri("/api/v1/messages/sendSimpleMessage/messengers/slack")
|
|
.bodyValue(dto)
|
|
.exchangeToMono(e -> e.bodyToMono(new ParameterizedTypeReference<String>() {}))
|
|
.publishOn(Schedulers.boundedElastic())
|
|
.onErrorResume(WebClientRequestException.class, t -> {
|
|
log.info("Exception occured, ignoring. : {}", t.getClass().getSimpleName());
|
|
return Mono.empty();
|
|
});
|
|
}
|
|
|
|
|
|
public Mono<String> sendBlockMessageToSlack(BlockMessageDTO dto) {
|
|
return webClient.post()
|
|
.uri("/api/v1/messages/sendBlockMessage/messengers/slack")
|
|
.bodyValue(dto)
|
|
.exchangeToMono(e -> e.bodyToMono(new ParameterizedTypeReference<String>() {}))
|
|
.publishOn(Schedulers.boundedElastic())
|
|
.onErrorResume(WebClientRequestException.class, t -> {
|
|
log.info("Exception occured, ignoring. : {}", t.getClass().getSimpleName());
|
|
return Mono.empty();
|
|
});
|
|
}
|
|
} |