diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiDTO.java b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiDTO.java index e978927..6a23e3f 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiDTO.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiDTO.java @@ -12,10 +12,15 @@ import lombok.Getter; @Builder public class ObpApiDTO { + /** + * 고정 ID (항상 0) + */ + private final int id; + /** * API ID (TSEAIHE01.EAISVCNAME) */ - private final String id; + private final String apiId; /** * API 이름 (TSEAIHE01.EAISVCDESC) @@ -28,9 +33,9 @@ public class ObpApiDTO { private final boolean enabled; /** - * API URL (TSEAIHS04.APIFULLPATH에서 '|' 이후 부분) + * API URL 패턴 (TSEAIHS04.APIFULLPATH에서 '|' 이후 부분) */ - private final String url; + private final String urlPattern; /** * HTTP Method (TSEAIHS04.APIFULLPATH에서 '|' 이전 부분) @@ -38,7 +43,51 @@ public class ObpApiDTO { private final String method; /** - * 인증 타입 (TSEAIHE01.AUTHTYPE) + * 요구되는 인증 정보 */ - private final String authType; + private final RequiredAuthentication requiredAuthentication; + + /** + * API 상태 정보 + */ + private final Status status; + + /** + * 요구되는 인증 정보 DTO + */ + @Getter + @Builder + public static class RequiredAuthentication { + /** + * 인증 타입 코드 (API_KEY, OAUTH2, NONE) + */ + private final String key; + + /** + * 인증 타입 표시명 + */ + private final String name; + } + + /** + * API 상태 정보 DTO + */ + @Getter + @Builder + public static class Status { + /** + * 상태 코드 (RUNNING, SUSPEND) + */ + private final String key; + + /** + * 상태 표시명 + */ + private final String name; + + /** + * 배포 여부 (enabled와 동일) + */ + private final boolean deployed; + } } diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiService.java b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiService.java index e896067..e1e1069 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiService.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/obp/ObpApiService.java @@ -95,16 +95,71 @@ public class ObpApiService { // USEYN이 "1"이면 enabled = true boolean enabled = "1".equals(useyn); + // RequiredAuthentication 매핑 + ObpApiDTO.RequiredAuthentication reqAuth = mapAuthType(authtype); + + // Status 매핑 + ObpApiDTO.Status status = mapStatus(enabled); + return ObpApiDTO.builder() - .id(eaisvcname) + .id(0) + .apiId(eaisvcname) .name(eaisvcdesc) .enabled(enabled) - .url(url) + .urlPattern(url) .method(method) - .authType(authtype) + .requiredAuthentication(reqAuth) + .status(status) .build(); } + /** + * 인증 타입을 RequiredAuthentication으로 매핑 + * + * @param authtype TSEAIHE01.AUTHTYPE 값 + * @return RequiredAuthentication 객체 + */ + private ObpApiDTO.RequiredAuthentication mapAuthType(String authtype) { + if ("api_key".equalsIgnoreCase(authtype)) { + return ObpApiDTO.RequiredAuthentication.builder() + .key("API_KEY") + .name("APP키를 이용한 인증") + .build(); + } else if ("oauth".equalsIgnoreCase(authtype) || "ca".equalsIgnoreCase(authtype)) { + return ObpApiDTO.RequiredAuthentication.builder() + .key("OAUTH2") + .name("OAuth Ver.2 인증") + .build(); + } else { + return ObpApiDTO.RequiredAuthentication.builder() + .key("NONE") + .name("인증없이 사용") + .build(); + } + } + + /** + * enabled 값을 Status로 매핑 + * + * @param enabled 활성화 여부 + * @return Status 객체 + */ + private ObpApiDTO.Status mapStatus(boolean enabled) { + if (enabled) { + return ObpApiDTO.Status.builder() + .key("RUNNING") + .name("서비스 중") + .deployed(true) + .build(); + } else { + return ObpApiDTO.Status.builder() + .key("SUSPEND") + .name("서비스 일시 중지") + .deployed(false) + .build(); + } + } + /** * 기관코드에 해당하는 법인이 이용하는 API 목록 조회 *