| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- package com.aip.gateway.api.controller;
- import com.aip.gateway.api.model.request.*;
- import com.aip.gateway.api.model.response.ApiResponseModel;
- import com.aip.gateway.api.repository.AppRepository;
- import com.aip.gateway.api.repository.GlobalConstants;
- import com.aip.gateway.api.service.IApiFileService;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.Parameter;
- import io.swagger.v3.oas.annotations.responses.ApiResponse;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import jakarta.servlet.http.HttpServletRequest;
- import jakarta.validation.Valid;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.http.MediaType;
- import org.springframework.http.ResponseEntity;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.multipart.MultipartFile;
- @Slf4j
- @Tag(name = "03.ApiFile", description = "FILE AIP API")
- @RestController
- @RequiredArgsConstructor
- @CrossOrigin
- @Validated
- @RequestMapping(GlobalConstants.API_FILE)
- public class ApiFileController extends BaseController {
- private final AppRepository appRepo;
- private final IApiFileService service;
- @Operation(summary = "01.File Info", description = "AIP File Information Query.")
- @ApiResponse(responseCode = "200", description = "AIP File Information query Success.")
- @ApiOperation(value = "File Info", response = ApiResponseModel.class)
- @PostMapping(value = "info", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> getFileInfo(
- @Parameter(name = "req", description = "File 정보 요청 데이터", required = true)
- @RequestBody @Valid final RequestFile req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_INFO, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_INFO);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.getInfo(req));
- }
- catch (Exception e) {
- log.error("exception: {}/info, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "02.File AIP Label 설정", description = "File AIP Label Set.")
- @ApiResponse(responseCode = "200", description = "File AIP Label set success.")
- @ApiOperation(value = "File AIP Label 설정", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "set-label", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> setLabel(
- @Parameter(name = "req", description = "File AIP Label 설정 요청 데이터", required = true)
- @RequestBody @Valid final RequestFileSet req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_SET_LABEL, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_SET_LABEL);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.setLabel(req));
- }
- catch (Exception e) {
- log.error("exception: {}/set-label, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "03.File AIP Label Delete", description = "File AIP Label Delete.")
- @ApiResponse(responseCode = "200", description = "File AIP Label delete success.")
- @ApiOperation(value = "File AIP Label 해제", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "delete-label", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> delLabel(
- @Parameter(name = "req", description = "File AIP Label 해제 요청 데이터", required = true)
- @RequestBody @Valid final RequestFileDel req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_DELETE_LABEL, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_DELETE_LABEL);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.delLabel(req));
- }
- catch (Exception e) {
- log.error("exception: {}/delete-label, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "04.File AIP Protection 설정", description = "File AIP Protection AIP.")
- @ApiResponse(responseCode = "200", description = "File AIP Protection set success.")
- @ApiOperation(value = "File AIP Protection 설정", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "set-protection", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> setProtection(
- @Parameter(name = "req", description = "File AIP Protection 설정 요청 데이터", required = true)
- @RequestBody @Valid final RequestFileSet req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_SET_PROTECTION, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_SET_PROTECTION);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.setProtection(req));
- }
- catch (Exception e) {
- log.error("exception: {}/set-protection, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "05.File AIP Protection Delete", description = "File AIP Protection Delete.")
- @ApiResponse(responseCode = "200", description = "File AIP Protection delete success.")
- @ApiOperation(value = "File AIP Protection 해제", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "delete-protection", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> delProtection(
- @Parameter(name = "req", description = "File AIP Protection 해제 요청 데이터", required = true)
- @RequestBody @Valid final RequestFileDel req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_DELETE_PROTECTIN, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_DELETE_PROTECTIN);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.delProtection(req));
- }
- catch (Exception e) {
- log.error("exception: {}/delete-protection, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "06.File AIP Label Or Protection 설정", description = "File AIP Label Or Protection AIP.")
- @ApiResponse(responseCode = "200", description = "File AIP Label Or Protection set success.")
- @ApiOperation(value = "File AIP Label Or Protection 설정", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "set-label-protection", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> setLabelProtection(
- @Parameter(name = "req", description = "File AIP Label Or Protection 설정 요청 데이터", required = true)
- @RequestBody @Valid final RequestFileAllSet req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_SET_LABEL_PROTECTION, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_SET_LABEL_PROTECTION);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.setLabelProtection(req));
- }
- catch (Exception e) {
- log.error("exception: {}/set-label-protection, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "07.File AIP Label Or Protection Delete", description = "File AIP Label Or Protection Delete.")
- @ApiResponse(responseCode = "200", description = "File AIP Label Or Protection delete success.")
- @ApiOperation(value = "File AIP Label Or Protection 해제", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "delete-label-protection", produces = {"application/json; charset=utf8"})
- public ResponseEntity<ApiResponseModel> delLabelProtection(
- @Parameter(name = "req", description = "File AIP Label Or Protection 해제 요청 데이터", required = true)
- @RequestBody @Valid final RequestFileDel req, HttpServletRequest request)
- {
- try {
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_DELETE_LABEL_PROTECTION, req.getApiKey(), req);
- int authError = this.appRepo.checkApiKeyValidation(req.getApiKey(), getRemoteIP(request), GlobalConstants.API_FILE_DELETE_LABEL_PROTECTION);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.delLabelProtection(req));
- }
- catch (Exception e) {
- log.error("exception: {}/delete-label-protection, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- // https://www.callicoder.com/spring-boot-file-upload-download-rest-api-example/
- @Operation(summary = "08.Encrypt File", description = "Encrypt File.")
- @ApiResponse(responseCode = "200", description = "Encrypt File set success.")
- @ApiOperation(value = "Encrypt File", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "encrypt", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
- public ResponseEntity<ApiResponseModel> encryptFile(
- @Parameter(description = "multipart/form-data 형식의 파일을 input 으로 받습니다. 이때 key 값은 multipartFile 입니다.")
- @RequestParam("file") MultipartFile file,
- @RequestParam("apiKey") String apiKey,
- @RequestParam("email") String email, HttpServletRequest request)
- {
- try {
- RequestBase baseReq = RequestBase.builder()
- .apiKey(apiKey)
- .decryptKey("")
- .email(email)
- .apiGuid("")
- .build();
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_ENCRYPT, apiKey, baseReq);
- int authError = this.appRepo.checkApiKeyValidation(apiKey, getRemoteIP(request), GlobalConstants.API_FILE_ENCRYPT);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.encryptFile(file, baseReq));
- }
- catch (Exception e) {
- log.error("exception: {}/encrypt, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- @Operation(summary = "09.Decrypt File", description = "Decrypt File.")
- @ApiResponse(responseCode = "200", description = "Decrypt File set success.")
- @ApiOperation(value = "Decrypt File", response = ApiResponseModel.class, responseContainer = "ArrayList")
- @PostMapping(value = "decrypt", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
- public ResponseEntity<ApiResponseModel> decryptFile(
- @Parameter(description = "multipart/form-data 형식의 파일을 input 으로 받습니다. 이때 key 값은 multipartFile 입니다.")
- @RequestParam("file") MultipartFile file,
- @RequestParam("apiKey") String apiKey,
- @RequestParam("email") String email, HttpServletRequest request)
- {
- try {
- RequestBase baseReq = RequestBase.builder()
- .apiKey(apiKey)
- .decryptKey("")
- .email(email)
- .apiGuid("")
- .build();
- GlobalConstants.setAuthorization(request, GlobalConstants.API_FILE_DECRYPT, apiKey, baseReq);
- int authError = this.appRepo.checkApiKeyValidation(apiKey, getRemoteIP(request), GlobalConstants.API_FILE_DECRYPT);
- if (authError != 0) {
- return responseApiKeyValidationError(request, authError);
- }
- return responseSuccess(request, this.service.decryptFile(file, baseReq));
- }
- catch (Exception e) {
- log.error("exception: {}/decrypt, {}", GlobalConstants.API_FILE, e.getMessage());
- return responseException(request, e);
- }
- }
- }
|