From 8820fe2be0b8cbcd8b8f1dd794695e6b529b8b47 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 11:42:23 +0530 Subject: [PATCH 1/3] Httpheader content disposition changed --- .../EmployeeSignatureController.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index bd4a62d..1d5b039 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -21,6 +21,8 @@ */ package com.iemr.admin.controller.employeemaster; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Base64; import org.slf4j.Logger; @@ -30,8 +32,9 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; - +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +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.RequestMethod; @@ -39,7 +42,6 @@ import com.iemr.admin.data.employeemaster.EmployeeSignature; import com.iemr.admin.service.employeemaster.EmployeeSignatureServiceImpl; -import com.iemr.admin.utils.mapper.InputMapper; import com.iemr.admin.utils.response.OutputResponse; import io.swagger.v3.oas.annotations.Operation; @@ -54,12 +56,10 @@ public class EmployeeSignatureController { @Autowired EmployeeSignatureServiceImpl employeeSignatureServiceImpl; - private InputMapper inputMapper = new InputMapper(); - private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); @Operation(summary = "Upload") - @RequestMapping(value = "/upload", headers = "Authorization", method = { RequestMethod.POST }, produces = { + @PostMapping(value = "/upload", headers = "Authorization", produces = { "application/json" }) public String uploadFile(@RequestBody EmployeeSignature emp) { OutputResponse response = new OutputResponse(); @@ -83,21 +83,22 @@ public String uploadFile(@RequestBody EmployeeSignature emp) { } @Operation(summary = "User id") - @RequestMapping(value = "/{userID}", headers = "Authorization", method = { RequestMethod.GET }) + @GetMapping(value = "/{userID}", headers = "Authorization") public ResponseEntity fetchFile(@PathVariable("userID") Long userID) throws Exception { - OutputResponse response = new OutputResponse(); logger.debug("File download for userID" + userID); try { EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, - "inline; filename=\"" + userSignID.getFileName() + "\""); - responseHeaders.set("filename", userSignID.getFileName()); - - return ResponseEntity.ok().contentType(MediaType.parseMediaType(userSignID.getFileType())) - .headers(responseHeaders).body(userSignID.getSignature()); + String fileName = URLEncoder.encode(userSignID.getFileName(), StandardCharsets.UTF_8); + responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\""); + responseHeaders.set("filename", fileName); + + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(userSignID.getFileType())) // or MediaType.APPLICATION_PDF + .headers(responseHeaders) + .body(userSignID.getSignature()); } catch (Exception e) { logger.error("Unexpected error:", e); From 2aab70ebdc0a070340416e903383c21739a10c3f Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 12:05:37 +0530 Subject: [PATCH 2/3] Coderabbitai comments adrressed --- .../EmployeeSignatureController.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java index 1d5b039..dcf7868 100644 --- a/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java +++ b/src/main/java/com/iemr/admin/controller/employeemaster/EmployeeSignatureController.java @@ -21,7 +21,6 @@ */ package com.iemr.admin.controller.employeemaster; -import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -29,7 +28,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.PropertySource; +import org.springframework.http.ContentDisposition; import org.springframework.http.HttpHeaders; +import org.springframework.http.InvalidMediaTypeException; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -91,14 +92,19 @@ public ResponseEntity fetchFile(@PathVariable("userID") Long userID) thr EmployeeSignature userSignID = employeeSignatureServiceImpl.fetchSignature(userID); HttpHeaders responseHeaders = new HttpHeaders(); - String fileName = URLEncoder.encode(userSignID.getFileName(), StandardCharsets.UTF_8); - responseHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\""); - responseHeaders.set("filename", fileName); - - return ResponseEntity.ok() - .contentType(MediaType.parseMediaType(userSignID.getFileType())) // or MediaType.APPLICATION_PDF - .headers(responseHeaders) - .body(userSignID.getSignature()); + ContentDisposition contentDisposition = ContentDisposition.attachment() + .filename(userSignID.getFileName(), StandardCharsets.UTF_8).build(); + responseHeaders.setContentDisposition(contentDisposition); + + MediaType mediaType; + try { + mediaType = MediaType.parseMediaType(userSignID.getFileType()); + } catch (InvalidMediaTypeException | NullPointerException ex) { + mediaType = MediaType.APPLICATION_OCTET_STREAM; + } + + return ResponseEntity.ok().contentType(mediaType).headers(responseHeaders) + .contentLength(userSignID.getSignature().length).body(userSignID.getSignature()); } catch (Exception e) { logger.error("Unexpected error:", e); From e04b9e5bcb6483a8d5c61c88de016b7887bb20ac Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 2 Sep 2025 14:34:34 +0530 Subject: [PATCH 3/3] Compile error resolved --- src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java b/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java index 0605ec3..8e6c4b9 100644 --- a/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java +++ b/src/main/java/com/iemr/admin/repository/user/UserLoginRepo.java @@ -8,7 +8,7 @@ import com.iemr.admin.data.user.M_User; @Repository -public interface UserLoginRepo extends CrudRepository { +public interface UserLoginRepo extends CrudRepository { @Query(" SELECT u FROM M_User u WHERE u.userID = :userID AND u.Deleted = false ") public M_User getUserByUserID(@Param("userID") Long userID);