diff --git a/src/main/java/kr/re/etri/autoflow/controllers/ExternalAuthController.java b/src/main/java/kr/re/etri/autoflow/controllers/ExternalAuthController.java index 71e2995..20d7ff1 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/ExternalAuthController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/ExternalAuthController.java @@ -3,6 +3,7 @@ package kr.re.etri.autoflow.controllers; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import kr.re.etri.autoflow.payload.request.EdgePkgInfoRequest; import kr.re.etri.autoflow.service.ExternalAuthService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -49,11 +50,11 @@ public class ExternalAuthController { @PostMapping(value = "/add", consumes = {"multipart/form-data"}) public ResponseEntity addEdgePackage( @Parameter(description = "로그인 시 발급받은 Bearer 토큰") @RequestHeader("Authorization") String bearerToken, - @Parameter(description = "Edge 패키지 등록 요청 JSON 데이터") @RequestPart("edgePkgInfoVO") String edgePkgInfoJson, + @Parameter(description = "Edge 패키지 등록 요청 데이터") @RequestPart("edgePkgInfoVO") EdgePkgInfoRequest edgePkgInfoRequest, @Parameter(description = "업로드할 패키지 파일") @RequestPart(value = "file", required = false) MultipartFile file ) { try { - Object response = externalAuthService.uploadEdgePackage(bearerToken, edgePkgInfoJson, file); + Object response = externalAuthService.uploadEdgePackage(bearerToken, edgePkgInfoRequest, file); return ResponseEntity.ok(response); } catch (Exception e) { return ResponseEntity.internalServerError().body( diff --git a/src/main/java/kr/re/etri/autoflow/payload/request/EdgePkgInfoRequest.java b/src/main/java/kr/re/etri/autoflow/payload/request/EdgePkgInfoRequest.java new file mode 100644 index 0000000..e3f3b61 --- /dev/null +++ b/src/main/java/kr/re/etri/autoflow/payload/request/EdgePkgInfoRequest.java @@ -0,0 +1,34 @@ +package kr.re.etri.autoflow.payload.request; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.Date; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class EdgePkgInfoRequest { + private int ed_pkg_serial; + private int sw_group; + private int sw_type; + private String sw_manufacturer; + private String package_id; + private String package_name; + private String window_root_location; + private String window_exe_name; + private String linux_root_location; + private String linux_exe_name; + private Date create_datetime; + private String user_id; + private String sw_group_name; + private String sw_type_name; + private List edge_info_list; + private String auth_id; + private String secret_at; + private boolean admin_at = false; +} diff --git a/src/main/java/kr/re/etri/autoflow/service/ExternalAuthService.java b/src/main/java/kr/re/etri/autoflow/service/ExternalAuthService.java index 58624db..3c88c11 100644 --- a/src/main/java/kr/re/etri/autoflow/service/ExternalAuthService.java +++ b/src/main/java/kr/re/etri/autoflow/service/ExternalAuthService.java @@ -1,7 +1,10 @@ package kr.re.etri.autoflow.service; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.PostConstruct; +import kr.re.etri.autoflow.payload.request.EdgePkgInfoRequest; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.util.LinkedMultiValueMap; @@ -110,16 +113,20 @@ public class ExternalAuthService { throw new RuntimeException("Failed to fetch edge package list"); } - public Object uploadEdgePackage(String bearerToken, String edgePkgInfoJson, MultipartFile file) throws IOException { + public Object uploadEdgePackage(String bearerToken, EdgePkgInfoRequest edgePkgInfoRequest, MultipartFile file) throws IOException { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); headers.set("Authorization", bearerToken.startsWith("Bearer ") ? bearerToken : "Bearer " + bearerToken); + // Object를 JSON 문자열로 변환 + ObjectMapper objectMapper = new ObjectMapper(); + String edgePkgInfoJson = objectMapper.writeValueAsString(edgePkgInfoRequest); + MultiValueMap body = new LinkedMultiValueMap<>(); body.add("edgePkgInfoVO", edgePkgInfoJson); if (file != null && !file.isEmpty()) { - body.add("file", new org.springframework.core.io.ByteArrayResource(file.getBytes()) { + body.add("file", new ByteArrayResource(file.getBytes()) { @Override public String getFilename() { return file.getOriginalFilename();