This commit is contained in:
@@ -279,73 +279,6 @@ public class ApiController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/v{version}/files/info/{fileId}")
|
|
||||||
public ResponseEntity<FileEntityResponse> getFileInfo(
|
|
||||||
@PathVariable String fileId,
|
|
||||||
@PathVariable Integer version,
|
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
Long userId = getUserIdFromToken(tokenHeader);
|
|
||||||
FileEntityResponse fileInfo = fileEntityService.getById(fileId, version);
|
|
||||||
|
|
||||||
if (!fileInfo.getUserId().equals(userId)) {
|
|
||||||
return ResponseEntity.status(403).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ResponseEntity.ok(fileInfo);
|
|
||||||
|
|
||||||
} catch (NotFoundAuthToken e) {
|
|
||||||
return ResponseEntity.status(401).build();
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error getting file info", e);
|
|
||||||
return ResponseEntity.status(500).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/v{version}/files/preview/{fileId}")
|
|
||||||
public ResponseEntity<Resource> previewFile(
|
|
||||||
@PathVariable String fileId,
|
|
||||||
@PathVariable Integer version,
|
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
Long userId = getUserIdFromToken(tokenHeader);
|
|
||||||
FileEntityResponse fileInfo = fileEntityService.getById(fileId, version);
|
|
||||||
|
|
||||||
if (!fileInfo.getUserId().equals(userId)) {
|
|
||||||
return ResponseEntity.status(403).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isPreviewSupported(fileInfo.getMimeType())) {
|
|
||||||
return ResponseEntity.status(415)
|
|
||||||
.body(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
Path filePath = Paths.get(fileInfo.getFilePath());
|
|
||||||
Resource resource = new UrlResource(filePath.toUri());
|
|
||||||
|
|
||||||
if (!resource.exists()) {
|
|
||||||
return ResponseEntity.status(404).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
String contentType = determineContentType(filePath);
|
|
||||||
|
|
||||||
return ResponseEntity.ok()
|
|
||||||
.contentType(MediaType.parseMediaType(contentType))
|
|
||||||
.header(HttpHeaders.CONTENT_DISPOSITION,
|
|
||||||
"inline; filename=\"" + fileInfo.getOriginalFileName() + "\"")
|
|
||||||
.body(resource);
|
|
||||||
|
|
||||||
} catch (NotFoundAuthToken e) {
|
|
||||||
return ResponseEntity.status(401).build();
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error previewing file", e);
|
|
||||||
return ResponseEntity.status(500).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private ResponseEntity<BaseResponse> createValidationErrorResponse(BindingResult bindingResult, Integer msgId) {
|
private ResponseEntity<BaseResponse> createValidationErrorResponse(BindingResult bindingResult, Integer msgId) {
|
||||||
List<Map<String, String>> fieldErrors = bindingResult.getFieldErrors()
|
List<Map<String, String>> fieldErrors = bindingResult.getFieldErrors()
|
||||||
.stream()
|
.stream()
|
||||||
|
|||||||
@@ -31,15 +31,15 @@ public class FileEntityHandler implements RequestHandler {
|
|||||||
String action = fileRequest.getAction();
|
String action = fileRequest.getAction();
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case "get_file_info":
|
case "file_info":
|
||||||
return handleGetFileInfo(request, fileRequest);
|
return handleGetFileInfo(request, fileRequest);
|
||||||
case "get_file_by_session":
|
case "file_by_session":
|
||||||
return handleGetFileBySession(request, fileRequest);
|
return handleGetFileBySession(request, fileRequest);
|
||||||
case "get_user_files":
|
case "user_files":
|
||||||
return handleGetUserFiles(request, fileRequest);
|
return handleGetUserFiles(request, fileRequest);
|
||||||
case "search_files":
|
case "search_files":
|
||||||
return handleSearchFiles(request, fileRequest);
|
return handleSearchFiles(request, fileRequest);
|
||||||
case "get_storage_usage":
|
case "storage_usage":
|
||||||
return handleGetStorageUsage(request, fileRequest);
|
return handleGetStorageUsage(request, fileRequest);
|
||||||
case "delete_file":
|
case "delete_file":
|
||||||
return handleDeleteFile(request, fileRequest);
|
return handleDeleteFile(request, fileRequest);
|
||||||
@@ -47,8 +47,8 @@ public class FileEntityHandler implements RequestHandler {
|
|||||||
ActionResponse response = ActionResponse.builder()
|
ActionResponse response = ActionResponse.builder()
|
||||||
.action(action)
|
.action(action)
|
||||||
.availableActions(Arrays.asList(
|
.availableActions(Arrays.asList(
|
||||||
"get_file_info", "get_file_by_session", "get_user_files",
|
"file_info", "file_by_session", "user_files",
|
||||||
"search_files", "get_storage_usage", "delete_file"))
|
"search_files", "storage_usage", "delete_file"))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
return new BaseResponse(request.getMsgId(),
|
return new BaseResponse(request.getMsgId(),
|
||||||
|
|||||||
@@ -60,12 +60,10 @@ public class FileUploadHandler implements RequestHandler {
|
|||||||
return handleCancelUpload(request, fileRequest);
|
return handleCancelUpload(request, fileRequest);
|
||||||
case "progress":
|
case "progress":
|
||||||
return handleGetProgress(request, fileRequest);
|
return handleGetProgress(request, fileRequest);
|
||||||
case "retry":
|
|
||||||
return handleRetryUpload(request, fileRequest);
|
|
||||||
default:
|
default:
|
||||||
ActionResponse response = ActionResponse.builder()
|
ActionResponse response = ActionResponse.builder()
|
||||||
.action(action)
|
.action(action)
|
||||||
.availableActions(Arrays.asList("init", "file_types", "chunks", "cancel", "progress", "retry"))
|
.availableActions(Arrays.asList("init", "file_types", "chunks", "cancel", "progress"))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
return new BaseResponse(request.getMsgId(), MessageCode.INVALID_ACTION.getCode(),
|
return new BaseResponse(request.getMsgId(), MessageCode.INVALID_ACTION.getCode(),
|
||||||
|
|||||||
Reference in New Issue
Block a user