Archived
- Replace base64 JSON response with StreamingResponseBody (zero-buffer) - Error responses return JSON via GlobalExceptionHandler (400/404) - Add git-lfs track for *.docx to keep repo lean - Add deploy/deploy.sh: one-click build + restart - Add deploy/clean-lfs.sh: periodic LFS cache cleanup - Add deploy/gmp-service.service: systemd service unit - Remove unused ApiResponse and DocxExportData DTOs - Fix build.sh/run.sh jar name (gmp-mock-service -> gmp-service) - Add TemplateNotFoundException for missing templates
44 lines
1.5 KiB
Java
44 lines
1.5 KiB
Java
package com.gmp.mock.controller;
|
|
|
|
import jakarta.validation.Valid;
|
|
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
|
|
|
import com.gmp.mock.dto.DocxExportRequest;
|
|
import com.gmp.mock.service.DocxService;
|
|
import com.gmp.mock.service.DocxService.ExportResult;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/docx")
|
|
public class DocxController {
|
|
|
|
private final DocxService docxService;
|
|
|
|
public DocxController(DocxService docxService) {
|
|
this.docxService = docxService;
|
|
}
|
|
|
|
@PostMapping("/export")
|
|
public ResponseEntity<StreamingResponseBody> exportDocx(@Valid @RequestBody DocxExportRequest request) {
|
|
|
|
ExportResult result = docxService.export(request.getExportId());
|
|
|
|
StreamingResponseBody stream = outputStream ->
|
|
result.writer().write(outputStream);
|
|
|
|
return ResponseEntity.ok()
|
|
.contentType(MediaType.parseMediaType(
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"))
|
|
.header(HttpHeaders.CONTENT_DISPOSITION,
|
|
"attachment; filename=\"" + result.fileName() + "\"")
|
|
.body(stream);
|
|
}
|
|
}
|