[파일 업로드] tusHook 작업

- 진행중
This commit is contained in:
2026-03-05 17:12:00 +09:00
parent 68bcd449fe
commit 5a2ef8f754
6 changed files with 94 additions and 2 deletions
@@ -1,6 +1,7 @@
package com.alist.api.common.modules.file;
import com.alist.api.common.modules.file.dto.UploadTokenDto;
import com.alist.api.common.modules.file.form.TusHookForm;
import com.alist.api.common.response.ApiResponse;
import com.alist.api.common.response.ApiResponseCode;
import com.alist.api.common.modules.file.dto.UploadStartDto;
@@ -82,8 +83,8 @@ public class FileController {
}
@PostMapping("/tusHook")
public ResponseEntity<ApiResponse<String>> tusHook(@RequestBody Map<String, Object> payload) {
log.debug("[tusHook] payload={}", payload);
public ResponseEntity<ApiResponse<String>> tusHook(@RequestBody TusHookForm tusHookForm) {
fileService.insertFileAndSave(tusHookForm.tusHookDto());
return ApiResponse.entity("", ApiResponseCode.CODE_200);
}
}
@@ -0,0 +1,13 @@
package com.alist.api.common.modules.file.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class TusHookDto {
private TusHookEventDto tusHookEventDto;
private TusHookUploadDto tusHookUploadDto;
}
@@ -0,0 +1,13 @@
package com.alist.api.common.modules.file.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class TusHookEventDto {
private String Type;
}
@@ -0,0 +1,16 @@
package com.alist.api.common.modules.file.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
import java.util.Map;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class TusHookUploadDto {
private String id;
private Long size;
private Map<String, String> metaData;
}
@@ -0,0 +1,24 @@
package com.alist.api.common.modules.file.form;
import com.alist.api.common.modules.file.dto.TusHookDto;
import com.alist.api.common.modules.file.dto.TusHookEventDto;
import com.alist.api.common.modules.file.dto.TusHookUploadDto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class TusHookForm {
private TusHookEventDto event;
private TusHookUploadDto upload;
public TusHookDto tusHookDto() {
TusHookDto tusHookDto = new TusHookDto();
tusHookDto.setTusHookEventDto(this.event);
tusHookDto.setTusHookUploadDto(this.upload);
return tusHookDto;
}
}
@@ -1,14 +1,19 @@
package com.alist.api.common.modules.file.service;
import com.alist.api.common.modules.file.dto.TusHookDto;
import com.alist.api.common.modules.file.dto.TusHookUploadDto;
import com.alist.api.common.modules.file.dto.UploadStartDto;
import com.alist.api.common.modules.file.dto.UploadTokenDto;
import com.alist.api.common.modules.file.mapper.FileMapper;
import com.alist.api.config.jwt.JwtTokenProvider;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.UUID;
@Slf4j
@Service
public class FileService {
@Value("${file.upload.tus-endpoint}")
@@ -67,4 +72,24 @@ public class FileService {
return uploadTokenDto;
}
public void insertFileAndSave(TusHookDto tusHookDto) {
if (tusHookDto == null || tusHookDto.getTusHookEventDto() == null || tusHookDto.getTusHookUploadDto() == null) {
log.debug("[tusHook] invalid payload");
return;
}
String eventType = tusHookDto.getTusHookEventDto().getType();
TusHookUploadDto upload = tusHookDto.getTusHookUploadDto();
Map<String, String> meta = upload.getMetaData();
String uploadId = upload.getId();
Long size = upload.getSize();
String fileMasterKey = meta == null ? null : meta.get("fileMasterKey");
String filename = meta == null ? null : meta.get("filename");
String filetype = meta == null ? null : meta.get("filetype");
log.debug("[tusHook] eventType={}, uploadId={}, size={}, fileMasterKey={}, filename={}, filetype={}",
eventType, uploadId, size, fileMasterKey, filename, filetype);
}
}