Skip to content

Commit

Permalink
#28 feat: CertName으로 메타데이터 내용 정리해서 가져오는 메서드 생성 및 getObjectRequest 가져오…
Browse files Browse the repository at this point in the history
…는 메서드 리팩토링
  • Loading branch information
jinno321 committed Oct 14, 2024
1 parent 415581c commit 04c9d7a
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 30 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
Expand Down Expand Up @@ -109,11 +110,9 @@ public ResponseEntity<String> replacePdf(
@RequestParam("page") int page,
@Parameter(description = "사용자 지갑ID",required = true)
@RequestParam("walletId") Long walletId) throws IOException {

Wallet wallet = walletService.getWalletById(walletId).orElseThrow(()-> new EntityNotFoundException("Wallet does not exist"));
String pdfUrl = s3StorageService.replacePdfPage(wallet, page, file);
return ResponseEntity.ok(pdfUrl);

}

@Operation(summary = "메타데이터 얻기",description = "사용자의 모든 메타데이터의 정보들을 가져옵니다.")
Expand All @@ -128,15 +127,16 @@ public ResponseEntity<String> getMetadata(
return ResponseEntity.ok().body(metadata);
}

@Operation(summary = "pdf key값 얻기",description = "사용자의 pdf에서 원하는 페이지의 key값을 가져옵니다.")
@GetMapping("/get-pdfkey")
public ResponseEntity<String> getPdfKey(
@Operation(summary = "메타데이터 내용부분 얻기",description = "사용자의 인증서 목록중 원하는 인증서의 내용들을 가져옵니다.")
@GetMapping("/get-content")
public ResponseEntity<List<Map.Entry<String, String>>> getPdfKey(
@Parameter(description = "pdf 파일 경로",required = true)
@RequestParam String pdfUrl,
@Parameter(description = "페이지 번호",required = true)
@RequestParam int page) {
String metadata = s3StorageService.getPdfKeyForPage(pdfUrl, page);
return ResponseEntity.ok().body(metadata);
@RequestParam String certName) {

List<Map.Entry<String, String>> contentsForCertName = s3StorageService.getContentsForCertName(pdfUrl, certName);
return ResponseEntity.ok().body(contentsForCertName);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -318,10 +318,7 @@ public HashMap<String, String> getPdfMetadata( String pdfUrl) {
public String getMetadataForPage(String pdfUrl, int pageNumber) {
String fileName = extractKeyFromUrl(pdfUrl);

GetObjectRequest getRequest = GetObjectRequest.builder()
.bucket(s3Properties.getS3BucketName())
.key(fileName)
.build();
GetObjectRequest getRequest = getGetObjectRequest(fileName);

GetObjectResponse getObjectResponse = s3Client.getObject(getRequest).response();

Expand All @@ -340,28 +337,46 @@ public String getMetadataForPage(String pdfUrl, int pageNumber) {
return null; // 결과가 없거나 ':'가 없는 경우 null 반환
}

public String getPdfKeyForPage(String pdfUrl, int pageNumber) {
public List<Map.Entry<String, String>> getContentsForCertName(String pdfUrl, String certName) {
String fileName = extractKeyFromUrl(pdfUrl);

GetObjectRequest getRequest = GetObjectRequest.builder()
.bucket(s3Properties.getS3BucketName())
.key(fileName)
.build();

GetObjectRequest getRequest = getGetObjectRequest(fileName);
GetObjectResponse getObjectResponse = s3Client.getObject(getRequest).response();
String value = null;
List<Map.Entry<String, String>> tuples = new ArrayList<>();
System.out.println("certName = " + certName);
System.out.println("pdfUrl = " + pdfUrl);
Map<String, String> metadata = decodeMetadata(getObjectResponse.metadata());
for (String key : metadata.keySet()) {

Map<String, String> metadata = getObjectResponse.metadata();
if (key.startsWith(certName + "_") && key.endsWith("_0")){
value = metadata.get(key);

String pageKey = "page-" + pageNumber;
break;
}
}

String result = metadata.get(pageKey);
// '/'로 분리
String[] pairs = Objects.requireNonNull(value).split("/");

// pdfKey 부분만 추출
if (result != null && result.contains(":")) {
return result.split(":")[1]; // ':'기준으로 분리
// 각 쌍을 (key, value) 형태로 변환하여 리스트에 추가
for (String pair : pairs) {
if (!pair.isEmpty()) { // 빈 문자열 체크
String[] keyValue = pair.split(":");
if (keyValue.length == 2) {
tuples.add(new AbstractMap.SimpleEntry<>(keyValue[0], keyValue[1]));
}
}
}
System.out.println("tuples = " + tuples);
return tuples;
}

return null; // 결과가 없거나 ':'가 없는 경우 null 반환
private GetObjectRequest getGetObjectRequest(String fileName) {
GetObjectRequest getRequest = GetObjectRequest.builder()
.bucket(s3Properties.getS3BucketName())
.key(fileName)
.build();
return getRequest;
}

public int getPdfPageCount(byte[] pdfBytes){
Expand Down Expand Up @@ -498,10 +513,7 @@ public LinkedHashMap<String, String> decodeMetadata(Map<String, String> metadata

public ResponseInputStream<GetObjectResponse> getPdf(String pdfUrl) {
String key = extractKeyFromUrl(pdfUrl);
GetObjectRequest getObjectRequest = GetObjectRequest.builder()
.bucket(s3Properties.getS3BucketName())
.key(key)
.build();
GetObjectRequest getObjectRequest = getGetObjectRequest(key);
return s3Client.getObject(getObjectRequest);
}

Expand Down

0 comments on commit 04c9d7a

Please sign in to comment.