58 lines
2.5 KiB
Java
58 lines
2.5 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.dto.SlackSectionMessageBlock;
|
|
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"));
|
|
}
|
|
SlackMessageDTO slackMessageDTO = sender.ofBlockMessageBased();
|
|
dto.getBlocks().forEach(slackMessageDTO::addBlock);
|
|
slackMessageDTO.addBlock(SlackBaseMessageBlock.ofDivider());
|
|
|
|
return sender.sendMessage(slackMessageDTO)
|
|
.doOnNext(e -> log.info("[sendBlockMessageToSlack] slackMessageDTO: {}",
|
|
ObjectMapperFactory.writeAsString(slackMessageDTO)))
|
|
.then(Mono.just(APIResponse.success(dto)));
|
|
}
|
|
}
|