Skip to content
Original file line number Diff line number Diff line change
@@ -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 ๋ธ”๋ก
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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();
Expand All @@ -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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down

This file was deleted.

15 changes: 15 additions & 0 deletions src/main/java/clap/server/exception/AdapterException.java
Original file line number Diff line number Diff line change
@@ -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);
}
}