From 54e66d483f59776f4dcae7ef255c9952ab2abb5f Mon Sep 17 00:00:00 2001 From: st-yclee Date: Wed, 28 Aug 2024 09:50:44 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/mcmp/dto/oss/NexusFormatType.java | 20 -- .../co/mcmp/dto/oss/NexusRepositoryDto.java | 193 ------------------ .../mcmp/service/oss/NexusAdapterFactory.java | 25 --- .../mcmp/service/oss/NexusAdapterService.java | 12 -- .../oss/NexusDockerAdapterService.java | 36 ---- .../service/oss/NexusHelmAdapterService.java | 37 ---- .../service/oss/NexusRawAdapterService.java | 34 --- .../oss/NexusRepositoryAdapterClient.java | 190 ----------------- .../service/oss/NexusRepositoryService.java | 38 ---- 9 files changed, 585 deletions(-) delete mode 100644 src/main/java/kr/co/mcmp/dto/oss/NexusFormatType.java delete mode 100644 src/main/java/kr/co/mcmp/dto/oss/NexusRepositoryDto.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusAdapterFactory.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusAdapterService.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusDockerAdapterService.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusHelmAdapterService.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusRawAdapterService.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusRepositoryAdapterClient.java delete mode 100644 src/main/java/kr/co/mcmp/service/oss/NexusRepositoryService.java diff --git a/src/main/java/kr/co/mcmp/dto/oss/NexusFormatType.java b/src/main/java/kr/co/mcmp/dto/oss/NexusFormatType.java deleted file mode 100644 index 0039776..0000000 --- a/src/main/java/kr/co/mcmp/dto/oss/NexusFormatType.java +++ /dev/null @@ -1,20 +0,0 @@ -package kr.co.mcmp.dto.oss; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class NexusFormatType { - - @Schema(title = "레포지토리 포맷 유형") - private String format; - - @Schema(title = "레포지토리 타입 유형") - private String type; -} diff --git a/src/main/java/kr/co/mcmp/dto/oss/NexusRepositoryDto.java b/src/main/java/kr/co/mcmp/dto/oss/NexusRepositoryDto.java deleted file mode 100644 index aa28b7a..0000000 --- a/src/main/java/kr/co/mcmp/dto/oss/NexusRepositoryDto.java +++ /dev/null @@ -1,193 +0,0 @@ -package kr.co.mcmp.dto.oss; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import javax.validation.Valid; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -@Getter -public class NexusRepositoryDto { - - @Getter - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class ResGetRepositoryDto { - @Schema(title = "레포지토리 이름", required = true) - @NotBlank - private String name; - - @Schema(title = "레포지토리 포맷 유형", required = true) - @NotBlank - private String format; - - @Schema(title = "레포지토리 타입 유형", required = true) - @NotBlank - private String type; - - @Schema(title = "레포지토리 접근 url", required = true) - @NotBlank - private String url; - - @Schema(title = "레포지토리 사용자 접근 가능 여부", required = true) - @NotNull - private Boolean online; - - @Valid - private ResGetStorageDto storage; - - @Valid - private ResGetDockerDto docker; - - @Getter - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class ResGetStorageDto { - @Schema(title = "아티팩트를 저장하는 물리적 저장소 이름", required = true, example = "default") - @NotBlank - private String blobStoreName; - - @Schema(title = "저장되는 아티팩트 유형 일치 여부 검증", required = true) - @NotNull - private Boolean strictContentTypeValidation; - - @Schema(title = "레포지토리 읽기/쓰기 설정", required = true, example = "allow, allow_once, read_only") - @NotBlank - private String writePolicy; - } - - @Getter - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class ResGetDockerDto { - @Schema(title = "도커 registry 버전 지원(false: v2 지원)", required = true) - @NotNull - private Boolean v1Enabled; - - @Schema(title = "도커 클라이언트가 레포지토리에 접근할 때 기본 인증 사용 여부", required = true) - @NotNull - private Boolean forceBasicAuth; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 http 포트") - private Integer httpPort; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 https 포트") - private Integer httpsPort; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 서브도메인") - private String subdomain; - } - } - - @Getter - public static class ReqCreateRepositoryDto { - @Schema(title = "레포지토리 이름", required = true) - @NotBlank - private String name; - - @Schema(title = "레포지토리 사용자 접근 가능 여부", required = true) - @NotNull - private Boolean online; - - @Valid - private ReqCreateStorageDto storage; - - @Valid - private ReqCreateDockerDto docker; - - @Getter - public static class ReqCreateStorageDto { - @Schema(title = "아티팩트를 저장하는 물리적 저장소 이름", required = true, example = "default") - @NotBlank - private String blobStoreName; - - @Schema(title = "저장되는 아티팩트 유형 일치 여부 검증", required = true) - @NotNull - private Boolean strictContentTypeValidation; - - @Schema(title = "레포지토리 읽기/쓰기 설정", required = true, example = "allow, allow_once, read_only") - @NotBlank - private String writePolicy; - } - - @Getter - public static class ReqCreateDockerDto { - @Schema(title = "도커 registry 버전 지원(false: v2 지원)", required = true) - @NotNull - private Boolean v1Enabled; - - @Schema(title = "도커 클라이언트가 레포지토리에 접근할 때 기본 인증 사용 여부", required = true) - @NotNull - private Boolean forceBasicAuth; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 http 포트") - private Integer httpPort; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 https 포트") - private Integer httpsPort; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 서브도메인") - private String subdomain; - } - } - - @Getter - public static class ReqUpdateRepositoryDto { - @Schema(title = "레포지토리 이름", required = true) - @JsonIgnore - private String name; - - @Schema(title = "레포지토리 사용자 접근 가능 여부", required = true) - @NotNull - private Boolean online; - - @Valid - private ReqUpdateStorageDto storage; - - @Valid - private ReqUpdateDockerDto docker; - - @Getter - public static class ReqUpdateStorageDto { - @Schema(title = "아티팩트를 저장하는 물리적 저장소 이름", required = true, example = "default") - @JsonIgnore - private String blobStoreName; - - @Schema(title = "저장되는 아티팩트 유형 일치 여부 검증", required = true) - @NotNull - private Boolean strictContentTypeValidation; - - @Schema(title = "레포지토리 읽기/쓰기 설정", required = true, example = "allow, allow_once, read_only") - @NotBlank - private String writePolicy; - } - - @Getter - public static class ReqUpdateDockerDto { - @Schema(title = "도커 registry 버전 지원(false: v2 지원)", required = true) - @NotNull - private Boolean v1Enabled; - - @Schema(title = "도커 클라이언트가 레포지토리에 접근할 때 기본 인증 사용 여부", required = true) - @NotNull - private Boolean forceBasicAuth; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 http 포트") - private Integer httpPort; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 https 포트") - private Integer httpsPort; - - @Schema(title = "도커 레포지토리에 접근할 때 사용할 서브도메인") - private String subdomain; - } - } -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusAdapterFactory.java b/src/main/java/kr/co/mcmp/service/oss/NexusAdapterFactory.java deleted file mode 100644 index df8250f..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusAdapterFactory.java +++ /dev/null @@ -1,25 +0,0 @@ -package kr.co.mcmp.service.oss; - -import kr.co.mcmp.dto.oss.NexusFormatType; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class NexusAdapterFactory { - - private final NexusRawAdapterService rawAdapterService; - private final NexusDockerAdapterService dockerAdapterService; - private final NexusHelmAdapterService helmAdapterService; - - public NexusAdapterService getAdapterService(NexusFormatType formatType) { - if ("raw".equals(formatType.getFormat())) { - return rawAdapterService; - } else if ("docker".equals(formatType.getFormat())) { - return dockerAdapterService; - } else if ("helm".equals(formatType.getFormat())) { - return helmAdapterService; - } - throw new IllegalArgumentException("unknown format: " + formatType.getFormat()); - } -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusAdapterService.java b/src/main/java/kr/co/mcmp/service/oss/NexusAdapterService.java deleted file mode 100644 index 4ee4dee..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusAdapterService.java +++ /dev/null @@ -1,12 +0,0 @@ -package kr.co.mcmp.service.oss; - -import kr.co.mcmp.dto.oss.NexusFormatType; -import kr.co.mcmp.dto.oss.NexusRepositoryDto; - -public interface NexusAdapterService { - - NexusRepositoryDto.ResGetRepositoryDto getRepositoryByName(NexusFormatType formatType, String name); - - void createRepository(NexusFormatType formatType, NexusRepositoryDto.ReqCreateRepositoryDto repositoryDto); - -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusDockerAdapterService.java b/src/main/java/kr/co/mcmp/service/oss/NexusDockerAdapterService.java deleted file mode 100644 index ccbcb10..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusDockerAdapterService.java +++ /dev/null @@ -1,36 +0,0 @@ -package kr.co.mcmp.service.oss; - -import kr.co.mcmp.dto.oss.NexusFormatType; -import kr.co.mcmp.dto.oss.NexusRepositoryDto; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -import java.util.Collections; -import java.util.Optional; - -@Log4j2 -@Service -@RequiredArgsConstructor -public class NexusDockerAdapterService implements NexusAdapterService { - - private final NexusRepositoryAdapterClient repositoryAdapterClient; - - @Override - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryByName(NexusFormatType formatType, String name) { - return Optional.ofNullable(repositoryAdapterClient.getRepositoryByName(formatType, name)) - .orElseThrow(() -> new IllegalArgumentException("레포지토리 " + name + "을(를) 찾을 수 없습니다.")); - } - - @Override - public void createRepository(NexusFormatType formatType, NexusRepositoryDto.ReqCreateRepositoryDto repositoryDto) { - boolean duplicateNameCheck = Optional.ofNullable(repositoryAdapterClient.getRepositoryList()) - .orElse(Collections.emptyList()).stream() - .noneMatch(r -> r.getName().equals(repositoryDto.getName())); - - if (duplicateNameCheck) { - repositoryAdapterClient.createRepository(formatType, repositoryDto); - } - throw new IllegalArgumentException("중복된 이름의 레포지토리가 존재합니다."); - } -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusHelmAdapterService.java b/src/main/java/kr/co/mcmp/service/oss/NexusHelmAdapterService.java deleted file mode 100644 index 396dc12..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusHelmAdapterService.java +++ /dev/null @@ -1,37 +0,0 @@ -package kr.co.mcmp.service.oss; - -import kr.co.mcmp.dto.oss.NexusFormatType; -import kr.co.mcmp.dto.oss.NexusRepositoryDto; -import kr.co.mcmp.exception.AlreadyExistsException; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -import java.util.Collections; -import java.util.Optional; - -@Log4j2 -@Service -@RequiredArgsConstructor -public class NexusHelmAdapterService implements NexusAdapterService { - - private final NexusRepositoryAdapterClient repositoryAdapterClient; - - @Override - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryByName(NexusFormatType formatType, String name) { - return Optional.ofNullable(repositoryAdapterClient.getRepositoryByName(formatType, name)) - .orElseThrow(() -> new IllegalArgumentException("레포지토리 " + name + "을(를) 찾을 수 없습니다.")); - } - - @Override - public void createRepository(NexusFormatType formatType, NexusRepositoryDto.ReqCreateRepositoryDto repositoryDto) { - boolean duplicateNameCheck = Optional.ofNullable(repositoryAdapterClient.getRepositoryList()) - .orElse(Collections.emptyList()).stream() - .noneMatch(r -> r.getName().equals(repositoryDto.getName())); - - if (duplicateNameCheck) { - repositoryAdapterClient.createRepository(formatType, repositoryDto); - } - throw new IllegalArgumentException("중복된 이름의 레포지토리가 존재합니다."); - } -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusRawAdapterService.java b/src/main/java/kr/co/mcmp/service/oss/NexusRawAdapterService.java deleted file mode 100644 index 5b283bd..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusRawAdapterService.java +++ /dev/null @@ -1,34 +0,0 @@ -package kr.co.mcmp.service.oss; - -import kr.co.mcmp.dto.oss.NexusFormatType; -import kr.co.mcmp.dto.oss.NexusRepositoryDto; -import kr.co.mcmp.exception.AlreadyExistsException; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -import java.util.Collections; -import java.util.Optional; - -@Log4j2 -@Service -@RequiredArgsConstructor -public class NexusRawAdapterService implements NexusAdapterService { - - private final NexusRepositoryAdapterClient repositoryAdapterClient; - - @Override - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryByName(NexusFormatType formatType, String name) { - return repositoryAdapterClient.getRepositoryByName(formatType, name); - } - - @Override - public void createRepository(NexusFormatType formatType, NexusRepositoryDto.ReqCreateRepositoryDto repositoryDto) { - NexusRepositoryDto.ResGetRepositoryDto repositoryOne = repositoryAdapterClient.getRepositoryOne(repositoryDto.getName()); - - if (repositoryOne != null) { - repositoryAdapterClient.createRepository(formatType, repositoryDto); - } - } - -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusRepositoryAdapterClient.java b/src/main/java/kr/co/mcmp/service/oss/NexusRepositoryAdapterClient.java deleted file mode 100644 index ec295c0..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusRepositoryAdapterClient.java +++ /dev/null @@ -1,190 +0,0 @@ -package kr.co.mcmp.service.oss; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import kr.co.mcmp.config.oss.RestTemplateProvider; -import kr.co.mcmp.dto.oss.NexusFormatType; -import kr.co.mcmp.dto.oss.NexusRepositoryDto; -import kr.co.mcmp.exception.NexusClientException; -import kr.co.mcmp.util.Base64Util; -import lombok.extern.log4j.Log4j2; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.*; -import org.springframework.stereotype.Service; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.RestClientException; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.UriComponentsBuilder; - -import java.util.Collections; -import java.util.List; - -@Log4j2 -@Service -public class NexusRepositoryAdapterClient { - - private static final String NEXUS_ID = "admin"; - private static final String NEXUS_PWD = "tjxjfkxh!23"; - - private static final String BASE_URL = "http://210.217.178.130:8081/service/rest"; - private static final String AUTHORIZATION = "Authorization"; - - private static final String GET_REPO_LIST = "/v1/repositories"; - private static final String GET_REPO_ONE = "/v1/repositories/{name}"; - private static final String GET_REPO_BY_NAME = "/v1/repositories/{format}/{type}/{name}"; - private static final String POST_CREATE_REPO = "/v1/repositories/{format}/{type}"; - - public List getRepositoryList() { - String url = UriComponentsBuilder.fromHttpUrl(BASE_URL) - .path(GET_REPO_LIST) - .toUriString(); - - HttpEntity request = getRequest(null); - RestTemplate template = RestTemplateProvider.get(); - - try { - ResponseEntity> response = template.exchange( - url, - HttpMethod.GET, - request, - new ParameterizedTypeReference>() {}); - - if (response.getStatusCode() == HttpStatus.OK) { - return response.getBody(); - } else { - throw new IllegalArgumentException("Unexpected Response Status: " + response.getStatusCode() + " from URL: " + url); - } - - } catch (HttpClientErrorException e) { - String errorMessage = e.getResponseBodyAsString(); - String parseMessage = parseErrorMessage(errorMessage); - throw new IllegalArgumentException(parseMessage, e); - } - } - - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryOne(String name) { - String url = UriComponentsBuilder.fromHttpUrl(BASE_URL) - .path(GET_REPO_ONE) - .buildAndExpand(name) - .toUriString(); - - HttpEntity request = getRequest(null); - RestTemplate template = RestTemplateProvider.get(); - - try { - ResponseEntity response = template.exchange( - url, - HttpMethod.GET, - request, - new ParameterizedTypeReference() {}); - - if (response.getStatusCode() == HttpStatus.OK) { - return response.getBody(); - } else { - throw new NexusClientException("Unexpected Response Status: " + response.getStatusCode() + " from URL: " + url); - } - - } catch (HttpClientErrorException e) { - String errorMessage = e.getResponseBodyAsString(); - String parseMessage = parseErrorMessage(errorMessage); - throw new NexusClientException(parseMessage); - } - } - - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryByName(NexusFormatType formatType, String name) { - String url = UriComponentsBuilder.fromHttpUrl(BASE_URL) - .path(GET_REPO_BY_NAME) - .buildAndExpand(formatType.getFormat(), formatType.getType(), name) - .toUriString(); - - HttpEntity request = getRequest(null); - RestTemplate template = RestTemplateProvider.get(); - - try { - ResponseEntity response = template.exchange( - url, - HttpMethod.GET, - request, - new ParameterizedTypeReference() {}); - - if (response.getStatusCode() == HttpStatus.OK) { - return response.getBody(); - } else { - throw new NexusClientException("Unexpected Response Status: " + response.getStatusCode() + " from URL: " + url); - } - - } catch (HttpClientErrorException e) { - String errorMessage = e.getResponseBodyAsString(); - String parseMessage = parseErrorMessage(errorMessage); - throw new NexusClientException(parseMessage); - } - } - - public Object createRepository(NexusFormatType formatType, NexusRepositoryDto.ReqCreateRepositoryDto repositoryDto) { - String url = UriComponentsBuilder.fromHttpUrl(BASE_URL) - .path(POST_CREATE_REPO) - .buildAndExpand(formatType.getFormat(), formatType.getType()) - .toUriString(); - - HttpEntity request = getRequest(repositoryDto); - RestTemplate template = RestTemplateProvider.get(); - - try { - ResponseEntity response = template.exchange( - url, - HttpMethod.POST, - request, - new ParameterizedTypeReference() {}); - - if (response.getStatusCode() == HttpStatus.OK) { - return response.getBody(); - } else { - throw new IllegalArgumentException("Unexpected Response Status: " + response.getStatusCode() + " from URL: " + url); - } - - } catch (HttpClientErrorException e) { - String errorMessage = e.getResponseBodyAsString(); - String parseMessage = parseErrorMessage(errorMessage); - throw new IllegalArgumentException(parseMessage, e); - } - } - - private static HttpEntity getRequest(T body) { - String basicToken = createToken(); - HttpHeaders headers = getHeaders(basicToken); - if (body == null) { - return new HttpEntity(headers); - } - return new HttpEntity(body, headers); - } - - private static HttpHeaders getHeaders(String basicToken) { - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.set(AUTHORIZATION, basicToken); - return headers; - } - - private static String createToken() { - String auth = NEXUS_ID + ":" + NEXUS_PWD; - String encodedAuth = Base64Util.base64Encoding(auth); - return "Basic " + encodedAuth; - } - - private String parseErrorMessage(String errorMessage) { - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonPart = errorMessage.substring(errorMessage.indexOf("{")); - - JsonNode rootNode = mapper.readTree(jsonPart); - JsonNode messageNode = rootNode.path("message"); - - String message = messageNode.asText(); - return message.replace("\\\"", "\"").replace("\"", ""); - - } catch (Exception e) { - return "Message Parsing Error"; - } - } -} diff --git a/src/main/java/kr/co/mcmp/service/oss/NexusRepositoryService.java b/src/main/java/kr/co/mcmp/service/oss/NexusRepositoryService.java deleted file mode 100644 index 6b1413f..0000000 --- a/src/main/java/kr/co/mcmp/service/oss/NexusRepositoryService.java +++ /dev/null @@ -1,38 +0,0 @@ -package kr.co.mcmp.service.oss; - -import kr.co.mcmp.dto.oss.NexusFormatType; -import kr.co.mcmp.dto.oss.NexusRepositoryDto; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Log4j2 -@Service -@RequiredArgsConstructor -public class NexusRepositoryService { - - private final NexusRepositoryAdapterClient repositoryAdapterClient; - private final NexusAdapterFactory adapterFactory; - - public List getRepositoryList() { - return repositoryAdapterClient.getRepositoryList(); - } - - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryOne(String name) { - return repositoryAdapterClient.getRepositoryOne(name); - } - - public NexusRepositoryDto.ResGetRepositoryDto getRepositoryByName(NexusFormatType formatType, String name) { - NexusAdapterService adapterService = adapterFactory.getAdapterService(formatType); - return adapterService.getRepositoryByName(formatType, name); - } - - public void createRepository(NexusFormatType formatType, NexusRepositoryDto.ReqCreateRepositoryDto repositoryDto) { - NexusAdapterService adapterService = adapterFactory.getAdapterService(formatType); - adapterService.createRepository(formatType, repositoryDto); - } - - //public updateRepository(String name, NexusRepositoryDto.ReqUpdateRepositoryDto repositoryDto) -}