From 8ed3081e9813c7ad8d112fce0f8db2e2e56df246 Mon Sep 17 00:00:00 2001 From: seokwns Date: Tue, 16 Jan 2024 23:02:21 +0900 Subject: [PATCH] feat: implement web database downloader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 웹 데이터베이스 다운로드를 위한 컴포넌트 구현 --- .../_core/config/WebClientConfig.java | 9 ++++ .../_core/utils/WebDatabaseReader.java | 41 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 see-realview/src/main/java/com/see/realview/_core/utils/WebDatabaseReader.java diff --git a/see-realview/src/main/java/com/see/realview/_core/config/WebClientConfig.java b/see-realview/src/main/java/com/see/realview/_core/config/WebClientConfig.java index 262a48d..d13a35b 100644 --- a/see-realview/src/main/java/com/see/realview/_core/config/WebClientConfig.java +++ b/see-realview/src/main/java/com/see/realview/_core/config/WebClientConfig.java @@ -71,4 +71,13 @@ public WebClient imageWebClient() { throw new ServerException(ExceptionStatus.IMAGE_PARSING_ERROR); } } + + @Bean(name = "databaseWebClient") + public WebClient databaseWebClient() { + return WebClient.builder() + .exchangeStrategies(ExchangeStrategies.builder() + .codecs(clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().maxInMemorySize(100 * 1024 * 1024)) + .build()) + .build(); + } } diff --git a/see-realview/src/main/java/com/see/realview/_core/utils/WebDatabaseReader.java b/see-realview/src/main/java/com/see/realview/_core/utils/WebDatabaseReader.java new file mode 100644 index 0000000..6613cba --- /dev/null +++ b/see-realview/src/main/java/com/see/realview/_core/utils/WebDatabaseReader.java @@ -0,0 +1,41 @@ +package com.see.realview._core.utils; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.util.Arrays; +import java.util.List; + +@Component +@Slf4j +public class WebDatabaseReader { + + private final WebClient databaseWebClient; + + public WebDatabaseReader(@Autowired @Qualifier("databaseWebClient") WebClient databaseWebClient) { + this.databaseWebClient = databaseWebClient; + } + + public List read(String url, String identifier) { + log.debug("웹 데이터베이스 다운로드 시작 | " + url); + Mono readBytes = databaseWebClient + .get() + .uri(url) + .retrieve() + .bodyToMono(byte[].class); + + byte[] dataBytes = readBytes.block(); + if (dataBytes == null) { + log.debug("웹 데이터베이스 다운로드 실패 | " + url); + return List.of(); + } + + log.debug("웹 데이터베이스 다운로드 완료 | " + url); + String data = Arrays.toString(dataBytes); + return List.of(data.split(identifier)); + } +}