dev #1

Open
backdev wants to merge 47 commits from dev into main
2 changed files with 21 additions and 3 deletions
Showing only changes of commit a4feb5277a - Show all commits
@@ -25,5 +25,5 @@ public interface DashBoardAppClient {
Map<String, Object> internalDataControl(@RequestBody BaseRequest request); Map<String, Object> internalDataControl(@RequestBody BaseRequest request);
@GetMapping("api/internal/data-download/{fileId}") @GetMapping("api/internal/data-download/{fileId}")
ResponseEntity<Resource> download(@PathVariable String fileId); ResponseEntity<byte[]> download(@PathVariable String fileId);
} }
@@ -4,9 +4,11 @@ import feign.FeignException;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
import ru.soune.nocopy.adminpanel.client.DashBoardAppClient; import ru.soune.nocopy.adminpanel.client.DashBoardAppClient;
import ru.soune.nocopy.adminpanel.dto.BaseRequest; import ru.soune.nocopy.adminpanel.dto.BaseRequest;
import ru.soune.nocopy.adminpanel.dto.BaseResponse; import ru.soune.nocopy.adminpanel.dto.BaseResponse;
@@ -129,11 +131,27 @@ public class AdminController {
.messageDesc("You can't control") .messageDesc("You can't control")
.build()); .build());
} }
try { try {
return dashBoardAppClient.download(fileId); ResponseEntity<byte[]> response = dashBoardAppClient.download(fileId);
StreamingResponseBody stream = outputStream -> {
outputStream.write(response.getBody());
outputStream.flush();
};
return ResponseEntity.ok()
.contentType(response.getHeaders().getContentType())
.header(HttpHeaders.CONTENT_DISPOSITION,
response.getHeaders().getFirst(HttpHeaders.CONTENT_DISPOSITION))
.header(HttpHeaders.CACHE_CONTROL,
response.getHeaders().getFirst(HttpHeaders.CACHE_CONTROL))
.body(stream);
} catch (FeignException.NotFound e) { } catch (FeignException.NotFound e) {
return ResponseEntity.notFound().build(); return ResponseEntity.notFound().build();
} catch (FeignException e) {
log.error("Error downloading file: {}", fileId, e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
} }
} }
} }