Loading src/main/java/it/inaf/ia2/transfer/CorsConfig.java 0 → 100644 +29 −0 Original line number Diff line number Diff line package it.inaf.ia2.transfer; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig { @Value("${cors.allowed.origin}") private String corsAllowedOrigin; @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins(corsAllowedOrigin) .allowedMethods("*") .allowCredentials(true); } }; } } src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java 0 → 100644 +62 −0 Original line number Diff line number Diff line package it.inaf.ia2.transfer.controller; import it.inaf.ia2.transfer.persistence.FileDAO; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.Optional; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import static org.springframework.http.HttpStatus.NOT_FOUND; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class PutFileController { @Value("${path_prefix}") private String pathPrefix; @Autowired private FileDAO fileDAO; @Autowired private HttpServletRequest request; @PutMapping("/**") public ResponseEntity<?> putFile(@RequestParam("file") MultipartFile file) throws IOException { String path = request.getServletPath(); Optional<FileInfo> optFileInfo = fileDAO.getFileInfo(path); if (optFileInfo.isPresent()) { try (InputStream in = file.getInputStream()) { storeFile(optFileInfo.get(), in); } return ResponseEntity.ok().build(); } else { return new ResponseEntity<>("File " + path + " not found", NOT_FOUND); } } private void storeFile(FileInfo fileInfo, InputStream is) throws IOException { Path path = Path.of(pathPrefix, fileInfo.getOsRelPath()); File file = path.toFile(); if (!file.getParentFile().exists()) { if (!file.getParentFile().mkdirs()) { throw new IllegalStateException("Unable to create parent folder: " + file.getParentFile().getAbsolutePath()); } } Files.copy(is, file.toPath()); } } src/main/resources/application.properties +3 −1 Original line number Diff line number Diff line server.port=8080 server.port=8087 server.servlet.context-path=/ file-catalog.datasource.jdbc-url=jdbc:postgresql://127.0.0.1:5432/vospace_testdb Loading @@ -9,3 +9,5 @@ gms_base_url=http://localhost:8082/gms jwks_uri=http://localhost/rap-ia2/auth/oidc/jwks path_prefix=/tmp cors.allowed.origin=http://localhost:8080 No newline at end of file Loading
src/main/java/it/inaf/ia2/transfer/CorsConfig.java 0 → 100644 +29 −0 Original line number Diff line number Diff line package it.inaf.ia2.transfer; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig { @Value("${cors.allowed.origin}") private String corsAllowedOrigin; @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins(corsAllowedOrigin) .allowedMethods("*") .allowCredentials(true); } }; } }
src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java 0 → 100644 +62 −0 Original line number Diff line number Diff line package it.inaf.ia2.transfer.controller; import it.inaf.ia2.transfer.persistence.FileDAO; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.Optional; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import static org.springframework.http.HttpStatus.NOT_FOUND; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class PutFileController { @Value("${path_prefix}") private String pathPrefix; @Autowired private FileDAO fileDAO; @Autowired private HttpServletRequest request; @PutMapping("/**") public ResponseEntity<?> putFile(@RequestParam("file") MultipartFile file) throws IOException { String path = request.getServletPath(); Optional<FileInfo> optFileInfo = fileDAO.getFileInfo(path); if (optFileInfo.isPresent()) { try (InputStream in = file.getInputStream()) { storeFile(optFileInfo.get(), in); } return ResponseEntity.ok().build(); } else { return new ResponseEntity<>("File " + path + " not found", NOT_FOUND); } } private void storeFile(FileInfo fileInfo, InputStream is) throws IOException { Path path = Path.of(pathPrefix, fileInfo.getOsRelPath()); File file = path.toFile(); if (!file.getParentFile().exists()) { if (!file.getParentFile().mkdirs()) { throw new IllegalStateException("Unable to create parent folder: " + file.getParentFile().getAbsolutePath()); } } Files.copy(is, file.toPath()); } }
src/main/resources/application.properties +3 −1 Original line number Diff line number Diff line server.port=8080 server.port=8087 server.servlet.context-path=/ file-catalog.datasource.jdbc-url=jdbc:postgresql://127.0.0.1:5432/vospace_testdb Loading @@ -9,3 +9,5 @@ gms_base_url=http://localhost:8082/gms jwks_uri=http://localhost/rap-ia2/auth/oidc/jwks path_prefix=/tmp cors.allowed.origin=http://localhost:8080 No newline at end of file