diff --git a/src/main/java/clap/server/adapter/outbound/api/ObjectBlockService.java b/src/main/java/clap/server/adapter/outbound/api/KakaoWorkBlockBuilder.java similarity index 91% rename from src/main/java/clap/server/adapter/outbound/api/ObjectBlockService.java rename to src/main/java/clap/server/adapter/outbound/api/KakaoWorkBlockBuilder.java index 9c8451f4..cb3aeeb4 100644 --- a/src/main/java/clap/server/adapter/outbound/api/ObjectBlockService.java +++ b/src/main/java/clap/server/adapter/outbound/api/KakaoWorkBlockBuilder.java @@ -1,24 +1,41 @@ package clap.server.adapter.outbound.api; import clap.server.adapter.outbound.api.dto.SendWebhookRequest; -import clap.server.adapter.outbound.persistense.repository.notification.NotificationRepository; -import clap.server.application.port.outbound.webhook.MakeObjectBlockPort; -import clap.server.common.annotation.architecture.PersistenceAdapter; +import clap.server.adapter.outbound.persistense.entity.notification.constant.NotificationType; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; import java.util.Map; -@PersistenceAdapter +@Component @RequiredArgsConstructor -public class ObjectBlockService implements MakeObjectBlockPort { +public class KakaoWorkBlockBuilder { private final ObjectMapper objectMapper; - private final NotificationRepository notificationRepository; - @Override - public String makeTaskRequestBlock(SendWebhookRequest request) { + public String makeObjectBlock(SendWebhookRequest request){ + String payload; + if (request.notificationType() == NotificationType.TASK_REQUESTED) { + payload = makeTaskRequestBlock(request); + } + else if (request.notificationType() == NotificationType.PROCESSOR_ASSIGNED) { + payload = makeNewProcessorBlock(request); + } + else if (request.notificationType() == NotificationType.PROCESSOR_CHANGED) { + payload = makeProcessorChangeBlock(request); + } + else if (request.notificationType() == NotificationType.STATUS_SWITCHED) { + payload = makeTaskStatusBlock(request); + } + else { + payload = makeCommentBlock(request); + } + return payload; + } + + private String makeTaskRequestBlock(SendWebhookRequest request) { // Blocks 데이터 생성 Object[] blocks = new Object[]{ // Header 블록 @@ -90,8 +107,7 @@ public String makeTaskRequestBlock(SendWebhookRequest request) { return payload; } - @Override - public String makeNewProcessorBlock(SendWebhookRequest request) { + private String makeNewProcessorBlock(SendWebhookRequest request) { Object[] blocks = new Object[]{ Map.of( "type", "header", @@ -157,8 +173,7 @@ public String makeNewProcessorBlock(SendWebhookRequest request) { return payload; } - @Override - public String makeProcessorChangeBlock(SendWebhookRequest request) { + private String makeProcessorChangeBlock(SendWebhookRequest request) { Object[] blocks = new Object[]{ Map.of( "type", "header", @@ -225,8 +240,7 @@ public String makeProcessorChangeBlock(SendWebhookRequest request) { return payload; } - @Override - public String makeCommentBlock(SendWebhookRequest request) { + private String makeCommentBlock(SendWebhookRequest request) { Object[] blocks = new Object[]{ Map.of( "type", "header", @@ -303,8 +317,7 @@ public String makeCommentBlock(SendWebhookRequest request) { return payload; } - @Override - public String makeTaskStatusBlock(SendWebhookRequest request) { + private String makeTaskStatusBlock(SendWebhookRequest request) { Object[] blocks = new Object[]{ Map.of( "type", "header", diff --git a/src/main/java/clap/server/adapter/outbound/api/KakaoWorkClient.java b/src/main/java/clap/server/adapter/outbound/api/KakaoWorkClient.java index 27a05cfe..415b3be8 100644 --- a/src/main/java/clap/server/adapter/outbound/api/KakaoWorkClient.java +++ b/src/main/java/clap/server/adapter/outbound/api/KakaoWorkClient.java @@ -1,10 +1,9 @@ package clap.server.adapter.outbound.api; import clap.server.adapter.outbound.api.dto.SendWebhookRequest; -import clap.server.adapter.outbound.persistense.entity.notification.constant.NotificationType; import clap.server.application.port.outbound.webhook.SendKaKaoWorkPort; import clap.server.common.annotation.architecture.ExternalApiAdapter; -import clap.server.exception.ApplicationException; +import clap.server.exception.AdapterException; import clap.server.exception.code.NotificationErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; @@ -23,29 +22,14 @@ public class KakaoWorkClient implements SendKaKaoWorkPort { @Value("${webhook.kakaowork.auth}") private String kakaworkAuth; - private final ObjectBlockService makeObjectBlock; + private final KakaoWorkBlockBuilder kakaoWorkBlockBuilder; @Override public void sendKakaoWork(SendWebhookRequest request) { RestTemplate restTemplate = new RestTemplate(); // Payload 생성 - String payload = null; - if (request.notificationType() == NotificationType.TASK_REQUESTED) { - payload = makeObjectBlock.makeTaskRequestBlock(request); - } - else if (request.notificationType() == NotificationType.PROCESSOR_ASSIGNED) { - payload = makeObjectBlock.makeNewProcessorBlock(request); - } - else if (request.notificationType() == NotificationType.PROCESSOR_CHANGED) { - payload = makeObjectBlock.makeProcessorChangeBlock(request); - } - else if (request.notificationType() == NotificationType.STATUS_SWITCHED) { - payload = makeObjectBlock.makeTaskStatusBlock(request); - } - else { - payload = makeObjectBlock.makeCommentBlock(request); - } + String payload = kakaoWorkBlockBuilder.makeObjectBlock(request); // HTTP 요청 헤더 설정 HttpHeaders headers = new HttpHeaders(); @@ -62,7 +46,7 @@ else if (request.notificationType() == NotificationType.STATUS_SWITCHED) { ); } catch (Exception e) { - throw new ApplicationException(NotificationErrorCode.KAKAO_SEND_FAILED); + throw new AdapterException(NotificationErrorCode.KAKAO_SEND_FAILED); } } } diff --git a/src/main/java/clap/server/adapter/outbound/infrastructure/sse/SsePersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/infrastructure/sse/SseAdapter.java similarity index 83% rename from src/main/java/clap/server/adapter/outbound/infrastructure/sse/SsePersistenceAdapter.java rename to src/main/java/clap/server/adapter/outbound/infrastructure/sse/SseAdapter.java index 18e04210..3be28ab2 100644 --- a/src/main/java/clap/server/adapter/outbound/infrastructure/sse/SsePersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/infrastructure/sse/SseAdapter.java @@ -3,13 +3,13 @@ import clap.server.adapter.outbound.infrastructure.sse.repository.EmitterRepository; import clap.server.application.port.outbound.notification.CommandSsePort; import clap.server.application.port.outbound.notification.LoadSsePort; -import clap.server.common.annotation.architecture.PersistenceAdapter; +import clap.server.common.annotation.architecture.InfrastructureAdapter; import lombok.RequiredArgsConstructor; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; -@PersistenceAdapter +@InfrastructureAdapter @RequiredArgsConstructor -public class SsePersistenceAdapter implements LoadSsePort, CommandSsePort { +public class SseAdapter implements LoadSsePort, CommandSsePort { private final EmitterRepository emitterRepository; diff --git a/src/main/java/clap/server/application/port/outbound/webhook/MakeObjectBlockPort.java b/src/main/java/clap/server/application/port/outbound/webhook/MakeObjectBlockPort.java deleted file mode 100644 index dfcb3f61..00000000 --- a/src/main/java/clap/server/application/port/outbound/webhook/MakeObjectBlockPort.java +++ /dev/null @@ -1,16 +0,0 @@ -package clap.server.application.port.outbound.webhook; - -import clap.server.adapter.outbound.api.dto.SendWebhookRequest; - -public interface MakeObjectBlockPort { - - String makeTaskRequestBlock(SendWebhookRequest request); - - String makeNewProcessorBlock(SendWebhookRequest request); - - String makeProcessorChangeBlock(SendWebhookRequest request); - - String makeCommentBlock(SendWebhookRequest request); - - String makeTaskStatusBlock(SendWebhookRequest request); -} diff --git a/src/main/java/clap/server/exception/AdapterException.java b/src/main/java/clap/server/exception/AdapterException.java new file mode 100644 index 00000000..be7b3973 --- /dev/null +++ b/src/main/java/clap/server/exception/AdapterException.java @@ -0,0 +1,15 @@ +package clap.server.exception; + +import clap.server.exception.code.BaseErrorCode; + +public class AdapterException extends BaseException { + + public AdapterException(BaseErrorCode code) { + super(code); + } + + public static AdapterException from(BaseErrorCode code) { + return new AdapterException(code); + } +} +