63 lines
2.6 KiB
Java
63 lines
2.6 KiB
Java
package com.myoa.engineering.crawl.ppomppu.sender.controller;
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import com.myoa.engineering.crawl.ppomppu.sender.dto.SlackBaseMessageBlock;
|
|
import com.myoa.engineering.crawl.ppomppu.sender.dto.SlackMessageDTO;
|
|
import com.myoa.engineering.crawl.ppomppu.sender.infrastructure.client.MongeShoppingBotSlackMessageSender;
|
|
import com.myoa.engineering.crawl.ppomppu.support.dto.APIResponse;
|
|
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.util.ObjectMapperFactory;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import reactor.core.publisher.Mono;
|
|
|
|
/**
|
|
* MessageSenderAPIController
|
|
* @author Shin Woo-jin (woo-jin.shin@linecorp.com)
|
|
* @since 2021-11-21
|
|
*
|
|
*/
|
|
@Slf4j
|
|
@RestController
|
|
@RequestMapping("/api/v1")
|
|
public class MessageSenderAPIController {
|
|
|
|
private final MongeShoppingBotSlackMessageSender sender;
|
|
|
|
public MessageSenderAPIController(MongeShoppingBotSlackMessageSender sender) {
|
|
this.sender = sender;
|
|
}
|
|
|
|
@PostMapping("/messages/sendSimpleMessage/messengers/slack")
|
|
public Mono<APIResponse<SimpleMessageDTO>> sendSimpleMessageToSlack(@RequestBody SimpleMessageDTO dto) {
|
|
return sender.sendMessage(sender.ofMessage(dto.getBody()))
|
|
.then(Mono.just(APIResponse.success(dto)));
|
|
}
|
|
|
|
@PostMapping("/messages/sendBlockMessage/messengers/slack")
|
|
public Mono<APIResponse<BlockMessageDTO>> sendBlockMessageToSlack(@RequestBody BlockMessageDTO dto) {
|
|
if (dto.getBlocks().isEmpty()) {
|
|
return Mono.just(APIResponse.fail(dto, "empty blocks"));
|
|
}
|
|
|
|
|
|
return sender.sendMessage(buildSlackMessageDTO(dto))
|
|
// .doOnNext(e -> log.info("[sendBlockMessageToSlack] slackMessageDTO: {}",
|
|
// ObjectMapperFactory.writeAsString(buildSlackMessageDTO(dto))))
|
|
.then(Mono.just(APIResponse.success(dto)));
|
|
}
|
|
|
|
private SlackMessageDTO buildSlackMessageDTO(BlockMessageDTO dto) {
|
|
SlackMessageDTO slackMessageDTO = sender.ofBlockMessageBased();
|
|
slackMessageDTO.addSectionBlock(dto.getTitle());
|
|
dto.getBlocks().forEach(slackMessageDTO::addSectionBlock);
|
|
slackMessageDTO.addBlock(SlackBaseMessageBlock.ofDivider());
|
|
return slackMessageDTO;
|
|
}
|
|
}
|