package com.dji.sample.media.controller; import com.dji.sample.common.model.CustomClaim; import com.dji.sample.common.model.PaginationData; import com.dji.sample.common.model.ResponseResult; import com.dji.sample.media.model.MediaFileDTO; import com.dji.sample.media.model.MediaFileEntity; import com.dji.sample.media.model.MediaFileQueryParam; import com.dji.sample.media.service.IFileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URL; import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM; /** * @author sean * @version 0.2 * @date 2021/12/9 */ @RestController @RequestMapping("${url.media.prefix}${url.media.version}/files") public class FileController { @Autowired private IFileService fileService; /** * Get information about all the media files in this workspace based on the workspace id. * 根据工作空间id获取有关此工作空间中所有媒体文件的信息。 * @param workspaceId * @return */ @GetMapping("/{workspace_id}/files") public ResponseResult> getFilesList(@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, MediaFileQueryParam mediaFileQueryParam) { PaginationData filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize,mediaFileQueryParam); return ResponseResult.success(filesList); } @PostMapping("/{workspace_id}/updateFile") public ResponseResult updateFile(HttpServletRequest request, @PathVariable(name = "workspace_id") String workspaceId, @RequestBody MediaFileEntity mediaFileEntity) { CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM); mediaFileEntity.setUserId(claims.getId()); return ResponseResult.success(fileService.updateMediaFile(workspaceId, mediaFileEntity)); } /** * Query the download address of the file according to the media file id, * and redirect to this address directly for download. * @param workspaceId * @param fileId * @param response */ @GetMapping("/{workspace_id}/file/{file_id}/url") public void getFileUrl(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "file_id") String fileId, HttpServletResponse response) { try { URL url = fileService.getObjectUrl(workspaceId, fileId); response.sendRedirect(url.toString()); } catch (IOException e) { e.printStackTrace(); } } }