Small fixes
This commit is contained in:
@@ -11,15 +11,15 @@ import jakarta.decorator.Delegate;
|
|||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.inject.Named;
|
import jakarta.inject.Named;
|
||||||
import sh.rhiobet.lalafin.advent.access.AdventAccessService;
|
import sh.rhiobet.lalafin.advent.access.AdventAccessService;
|
||||||
import sh.rhiobet.lalafin.api.configuration.FileApiConfiguration;
|
|
||||||
import sh.rhiobet.lalafin.core.path.model.Path;
|
import sh.rhiobet.lalafin.core.path.model.Path;
|
||||||
import sh.rhiobet.lalafin.core.path.model.PathAccessor;
|
import sh.rhiobet.lalafin.core.path.model.PathAccessor;
|
||||||
import sh.rhiobet.lalafin.core.path.plugin.PathPlugin;
|
import sh.rhiobet.lalafin.core.path.plugin.PathPlugin;
|
||||||
|
import sh.rhiobet.lalafin.file.configuration.FileConfiguration;
|
||||||
|
|
||||||
@Decorator
|
@Decorator
|
||||||
public class AdventThumbnailPathPlugin extends PathAccessor implements PathPlugin {
|
public class AdventThumbnailPathPlugin extends PathAccessor implements PathPlugin {
|
||||||
@Inject
|
@Inject
|
||||||
FileApiConfiguration fileApiConfiguration;
|
FileConfiguration fileConfiguration;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("file/thumbnail")
|
@Named("file/thumbnail")
|
||||||
@@ -37,7 +37,7 @@ public class AdventThumbnailPathPlugin extends PathAccessor implements PathPlugi
|
|||||||
Optional<java.nio.file.Path> thumbnailAbsolutePath = getDefaultThumbnailPath(path);
|
Optional<java.nio.file.Path> thumbnailAbsolutePath = getDefaultThumbnailPath(path);
|
||||||
|
|
||||||
if (thumbnailAbsolutePath.isPresent()) {
|
if (thumbnailAbsolutePath.isPresent()) {
|
||||||
java.nio.file.Path rootFolderPath = Paths.get(this.fileApiConfiguration.directory());
|
java.nio.file.Path rootFolderPath = Paths.get(this.fileConfiguration.directory());
|
||||||
return Optional.of(
|
return Optional.of(
|
||||||
"/" + rootFolderPath.resolve("file").relativize(thumbnailAbsolutePath.get())
|
"/" + rootFolderPath.resolve("file").relativize(thumbnailAbsolutePath.get())
|
||||||
.toString());
|
.toString());
|
||||||
|
|||||||
@@ -1,28 +1,21 @@
|
|||||||
package sh.rhiobet.lalafin.core.path.model;
|
package sh.rhiobet.lalafin.core.path.model;
|
||||||
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
|
||||||
import jakarta.ws.rs.core.PathSegment;
|
import jakarta.ws.rs.core.PathSegment;
|
||||||
|
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import sh.rhiobet.lalafin.api.configuration.FileApiConfiguration;
|
|
||||||
import sh.rhiobet.lalafin.core.path.exception.InvalidPathException;
|
import sh.rhiobet.lalafin.core.path.exception.InvalidPathException;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class PathFactory {
|
public class PathFactory {
|
||||||
@Inject
|
public Path toPath(List<PathSegment> names, java.nio.file.Path rootFolderPath)
|
||||||
FileApiConfiguration fileApiConfiguration;
|
throws InvalidPathException {
|
||||||
|
|
||||||
public Path toPath(List<PathSegment> names) throws InvalidPathException {
|
|
||||||
if (hasEncodedPathSeparator(names)) {
|
if (hasEncodedPathSeparator(names)) {
|
||||||
throw new InvalidPathException("Some path segments contain illegal characters.");
|
throw new InvalidPathException("Some path segments contain illegal characters.");
|
||||||
} else {
|
} else {
|
||||||
java.nio.file.Path rootFolderPath = Paths.get(this.fileApiConfiguration.directory());
|
|
||||||
|
|
||||||
int zipIndex = -1;
|
int zipIndex = -1;
|
||||||
for (int i = 0; i < names.size(); i++) {
|
for (int i = 0; i < names.size(); i++) {
|
||||||
if (names.get(i).getPath().endsWith(".zip")) {
|
if (names.get(i).getPath().endsWith(".zip")) {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import sh.rhiobet.lalafin.LalafinConfiguration;
|
|||||||
import sh.rhiobet.lalafin.api.internal.redis.FileTokenProvider;
|
import sh.rhiobet.lalafin.api.internal.redis.FileTokenProvider;
|
||||||
import sh.rhiobet.lalafin.core.path.model.Path;
|
import sh.rhiobet.lalafin.core.path.model.Path;
|
||||||
import sh.rhiobet.lalafin.core.path.plugin.PathPlugin;
|
import sh.rhiobet.lalafin.core.path.plugin.PathPlugin;
|
||||||
import sh.rhiobet.lalafin.file.ThumbnailService;
|
|
||||||
import sh.rhiobet.lalafin.file.configuration.FileConfiguration;
|
import sh.rhiobet.lalafin.file.configuration.FileConfiguration;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
@@ -20,9 +19,6 @@ public class FileMetadataService {
|
|||||||
@Inject
|
@Inject
|
||||||
FileConfiguration fileConfiguration;
|
FileConfiguration fileConfiguration;
|
||||||
|
|
||||||
@Inject
|
|
||||||
ThumbnailService thumbnailService;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("file/thumbnail")
|
@Named("file/thumbnail")
|
||||||
PathPlugin thumbnailPathPlugin;
|
PathPlugin thumbnailPathPlugin;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package sh.rhiobet.lalafin.file.rest;
|
package sh.rhiobet.lalafin.file.rest;
|
||||||
|
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -15,12 +16,16 @@ import io.quarkus.security.Authenticated;
|
|||||||
import sh.rhiobet.lalafin.core.access.AccessService;
|
import sh.rhiobet.lalafin.core.access.AccessService;
|
||||||
import sh.rhiobet.lalafin.core.path.exception.InvalidPathException;
|
import sh.rhiobet.lalafin.core.path.exception.InvalidPathException;
|
||||||
import sh.rhiobet.lalafin.core.path.model.PathFactory;
|
import sh.rhiobet.lalafin.core.path.model.PathFactory;
|
||||||
|
import sh.rhiobet.lalafin.file.configuration.FileConfiguration;
|
||||||
import sh.rhiobet.lalafin.file.model.FileInfoBase;
|
import sh.rhiobet.lalafin.file.model.FileInfoBase;
|
||||||
import sh.rhiobet.lalafin.file.model.FileMetadataService;
|
import sh.rhiobet.lalafin.file.model.FileMetadataService;
|
||||||
|
|
||||||
@Authenticated
|
@Authenticated
|
||||||
@Path("/v1/api/private/file")
|
@Path("/v1/api/private/file")
|
||||||
public class FilePrivateAPI {
|
public class FilePrivateAPI {
|
||||||
|
@Inject
|
||||||
|
FileConfiguration fileConfiguration;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
FileMetadataService fileMetadataService;
|
FileMetadataService fileMetadataService;
|
||||||
|
|
||||||
@@ -41,9 +46,11 @@ public class FilePrivateAPI {
|
|||||||
@Path("/{names: .+}")
|
@Path("/{names: .+}")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Response getFileInfo(List<PathSegment> names) {
|
public Response getFileInfo(List<PathSegment> names) {
|
||||||
|
java.nio.file.Path rootFolderPath = Paths.get(this.fileConfiguration.directory());
|
||||||
|
|
||||||
sh.rhiobet.lalafin.core.path.model.Path path;
|
sh.rhiobet.lalafin.core.path.model.Path path;
|
||||||
try {
|
try {
|
||||||
path = this.pathFactory.toPath(names);
|
path = this.pathFactory.toPath(names, rootFolderPath);
|
||||||
} catch (InvalidPathException ignored) {
|
} catch (InvalidPathException ignored) {
|
||||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user