diff --git a/src/main/java/it/inaf/ia2/transfer/controller/FileController.java b/src/main/java/it/inaf/ia2/transfer/controller/FileController.java new file mode 100644 index 0000000000000000000000000000000000000000..f8baf55ef6f319fd0ae80a246ce64aad10a42640 --- /dev/null +++ b/src/main/java/it/inaf/ia2/transfer/controller/FileController.java @@ -0,0 +1,21 @@ +package it.inaf.ia2.transfer.controller; + +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; + +public abstract class FileController { + + @Autowired + protected HttpServletRequest request; + + public String getPath() { + String[] parts = request.getRequestURI().split("/"); + return String.join("/", Arrays.stream(parts) + .map(p -> URLDecoder.decode(p, StandardCharsets.UTF_8)) + .collect(Collectors.toList())); + } +} diff --git a/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java index b4a3a166e4a2a9994cda72d37de34ae880cfbb63..cbc52d72a4fac359a810c29fc9557500e1f61187 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/GetFileController.java @@ -10,7 +10,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.UncheckedIOException; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +22,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController -public class GetFileController { +public class GetFileController extends FileController { private static final Logger LOG = LoggerFactory.getLogger(GetFileController.class); @@ -33,16 +32,16 @@ public class GetFileController { @Autowired private GmsClient gmsClient; - @Autowired - private HttpServletRequest request; - @Autowired private HttpServletResponse response; @GetMapping("/**") public ResponseEntity getFile() { - String path = request.getServletPath(); + String path = getPath(); + + LOG.debug("getFile called for path {}", path); + Optional optFileInfo = fileDAO.getFileInfo(path); if (optFileInfo.isPresent()) { diff --git a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java index 4c9c724c739d2e5d1a94a5b060925afa9cb1624d..98fedc8aeb8292c3c03bf09f25d3981831fd7676 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java @@ -11,7 +11,8 @@ import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import static org.springframework.http.HttpStatus.NOT_FOUND; import org.springframework.http.ResponseEntity; @@ -21,21 +22,22 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController -public class PutFileController { +public class PutFileController extends FileController { + private static final Logger LOG = LoggerFactory.getLogger(PutFileController.class); + @Autowired private FileDAO fileDAO; @Autowired private ListOfFilesDAO listOfFilesDAO; - @Autowired - private HttpServletRequest request; - @PutMapping("/**") public ResponseEntity putFile(@RequestParam("file") MultipartFile file) throws IOException { - - String path = request.getServletPath(); + + String path = getPath(); + LOG.debug("putFile called for path {}", path); + Optional optFileInfo = fileDAO.getFileInfo(path); if (optFileInfo.isPresent()) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9e5a988d2a0fed70a6d5906b684d2506f8daa9ad..5379521217b6dbf94d5491f3e0575b08403aa041 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -14,3 +14,5 @@ cors.allowed.origin=http://localhost:8080,http://localhost:8085 spring.servlet.multipart.max-file-size=10GB spring.servlet.multipart.max-request-size=10GB + +logging.level.it.inaf=TRACE