From 0a7de4fb9b488bbea24acfadf10eee002e830889b8ce3a2bae1384cafb0d73de Mon Sep 17 00:00:00 2001 From: dxrknesss Date: Sun, 25 May 2025 05:53:19 +0300 Subject: [PATCH] fix bugs and add html page --- .../dxrkness/controller/S3FileHandler.java | 13 +- .../controller/S3FileHandlerConfig.java | 16 +- .../ua/com/dxrkness/service/S3Service.java | 5 +- static/common.html | 255 ++++++++++++++++++ 4 files changed, 276 insertions(+), 13 deletions(-) create mode 100644 static/common.html diff --git a/src/main/java/ua/com/dxrkness/controller/S3FileHandler.java b/src/main/java/ua/com/dxrkness/controller/S3FileHandler.java index fc1abad..246e8e7 100644 --- a/src/main/java/ua/com/dxrkness/controller/S3FileHandler.java +++ b/src/main/java/ua/com/dxrkness/controller/S3FileHandler.java @@ -34,10 +34,9 @@ public class S3FileHandler { }).get(); } - public ServerResponse downloadFile(ServerRequest request) throws ServletException, IOException { - return Optional.of(request.body(DirectoryPath.class)) - .map(DirectoryPath::path) - .map(URI::toString) + public ServerResponse downloadFile(ServerRequest request) { + return Optional.of(request.pathVariable("path").substring(1)) + .map(URI::create) .map(service::downloadFile) .map(reader -> { try (reader) { @@ -75,9 +74,9 @@ public class S3FileHandler { .get(); } - public ServerResponse listing(ServerRequest request) throws ServletException, IOException { - return Optional.of(request.body(DirectoryPath.class)) - .map(key -> service.listing(key.path())) + public ServerResponse listing(ServerRequest request) { + return Optional.of(request.pathVariable("path").substring(1)) + .map(key -> service.listing(URI.create(key))) .map(objects -> ServerResponse.ok().body(objects)) .get(); } diff --git a/src/main/java/ua/com/dxrkness/controller/S3FileHandlerConfig.java b/src/main/java/ua/com/dxrkness/controller/S3FileHandlerConfig.java index d1844cd..55f8b80 100644 --- a/src/main/java/ua/com/dxrkness/controller/S3FileHandlerConfig.java +++ b/src/main/java/ua/com/dxrkness/controller/S3FileHandlerConfig.java @@ -2,21 +2,23 @@ package ua.com.dxrkness.controller; 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; import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.RouterFunctions; import org.springframework.web.servlet.function.ServerResponse; @Configuration -public class S3FileHandlerConfig { +public class S3FileHandlerConfig implements WebMvcConfigurer { @Bean public RouterFunction router(S3FileHandler handler) { return RouterFunctions.route() .path("/files", b -> b - .GET(handler::downloadFile) + .GET("/{*path}", handler::downloadFile) .POST(handler::uploadFile) ) .path("/dirs", b -> b - .GET(handler::listing) + .GET("/{*path}", handler::listing) .POST(handler::createDirectory) ) .path("/common", b -> b @@ -25,4 +27,12 @@ public class S3FileHandlerConfig { ) .build(); } + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedMethods("*") + .allowedHeaders("*") + .allowedOriginPatterns("*"); + } } \ No newline at end of file diff --git a/src/main/java/ua/com/dxrkness/service/S3Service.java b/src/main/java/ua/com/dxrkness/service/S3Service.java index b2b072b..30c216b 100644 --- a/src/main/java/ua/com/dxrkness/service/S3Service.java +++ b/src/main/java/ua/com/dxrkness/service/S3Service.java @@ -14,7 +14,6 @@ import java.io.BufferedInputStream; import java.io.IOException; import java.net.URI; import java.nio.channels.Channels; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Optional; import java.util.function.Consumer; @@ -108,12 +107,12 @@ public class S3Service { RequestBody.fromInputStream(file.getInputStream(), file.getSize())); } - public BufferedInputStream downloadFile(String key) { + public BufferedInputStream downloadFile(URI key) { return new BufferedInputStream( Channels.newInputStream( Channels.newChannel(client.getObject(b -> b .bucket(bucketName) - .key(key))))); + .key(key.toString()))))); } public List listBuckets() { diff --git a/static/common.html b/static/common.html new file mode 100644 index 0000000..ec95df2 --- /dev/null +++ b/static/common.html @@ -0,0 +1,255 @@ + + + + + + Unified + + +

Unified

+ +
+

Current Directory: /

+ + + + +
+ +
+

Directory Contents

+
Loading...
+
+ +
+

File Operations

+ + +
+
+ +
+

Navigation

+ + +
+ + + + \ No newline at end of file