[MODIFY] 외부 Edge 패키지 등록 API 수정, EdgePkgInfoRequest DTO 추가 및 JSON 변환 로직 변경

main
bjkim 8 months ago
parent d51b5e2709
commit 640e3618ae

@ -3,6 +3,7 @@ package kr.re.etri.autoflow.controllers;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import kr.re.etri.autoflow.payload.request.EdgePkgInfoRequest;
import kr.re.etri.autoflow.service.ExternalAuthService; import kr.re.etri.autoflow.service.ExternalAuthService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -49,11 +50,11 @@ public class ExternalAuthController {
@PostMapping(value = "/add", consumes = {"multipart/form-data"}) @PostMapping(value = "/add", consumes = {"multipart/form-data"})
public ResponseEntity<?> addEdgePackage( public ResponseEntity<?> addEdgePackage(
@Parameter(description = "로그인 시 발급받은 Bearer 토큰") @RequestHeader("Authorization") String bearerToken, @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 @Parameter(description = "업로드할 패키지 파일") @RequestPart(value = "file", required = false) MultipartFile file
) { ) {
try { try {
Object response = externalAuthService.uploadEdgePackage(bearerToken, edgePkgInfoJson, file); Object response = externalAuthService.uploadEdgePackage(bearerToken, edgePkgInfoRequest, file);
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} catch (Exception e) { } catch (Exception e) {
return ResponseEntity.internalServerError().body( return ResponseEntity.internalServerError().body(

@ -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<EdgePkgInfoRequest> edge_info_list;
private String auth_id;
private String secret_at;
private boolean admin_at = false;
}

@ -1,7 +1,10 @@
package kr.re.etri.autoflow.service; package kr.re.etri.autoflow.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import kr.re.etri.autoflow.payload.request.EdgePkgInfoRequest;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
@ -110,16 +113,20 @@ public class ExternalAuthService {
throw new RuntimeException("Failed to fetch edge package list"); 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(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA); headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.set("Authorization", bearerToken.startsWith("Bearer ") ? bearerToken : "Bearer " + bearerToken); headers.set("Authorization", bearerToken.startsWith("Bearer ") ? bearerToken : "Bearer " + bearerToken);
// Object를 JSON 문자열로 변환
ObjectMapper objectMapper = new ObjectMapper();
String edgePkgInfoJson = objectMapper.writeValueAsString(edgePkgInfoRequest);
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("edgePkgInfoVO", edgePkgInfoJson); body.add("edgePkgInfoVO", edgePkgInfoJson);
if (file != null && !file.isEmpty()) { if (file != null && !file.isEmpty()) {
body.add("file", new org.springframework.core.io.ByteArrayResource(file.getBytes()) { body.add("file", new ByteArrayResource(file.getBytes()) {
@Override @Override
public String getFilename() { public String getFilename() {
return file.getOriginalFilename(); return file.getOriginalFilename();

Loading…
Cancel
Save