From d125e7a5dcee75c83114f60cd9afd8895fb61fa3 Mon Sep 17 00:00:00 2001 From: Lucas Bertrand-Christen <l.b-c@hotmail.com> Date: Fri, 17 Nov 2023 16:43:14 +0100 Subject: [PATCH] feat:end-td4 --- .../miage23/filestore/api/dto/InputNodeDto.java | 3 ++- .../miage23/filestore/api/dto/POSTNodeDto.java | 6 +----- .../filestore/api/filter/VersionFilter.java | 17 +++++++++++++++++ .../filestore/api/resources/NodesResource.java | 4 ++-- .../filestore/api/validation/Filename.java | 6 +++--- .../api/validation/ValidationPattern.java | 2 +- .../resources/ValidationMessages.properties | 8 +------- 7 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java diff --git a/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java b/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java index 8ac1240..c9233dd 100644 --- a/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java +++ b/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java @@ -1,5 +1,6 @@ package fr.miage23.filestore.api.dto; +import fr.miage23.filestore.api.validation.Filename; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import jakarta.ws.rs.FormParam; @@ -12,7 +13,7 @@ public class InputNodeDto { @FormParam("name") @PartType(MediaType.TEXT_PLAIN) - @Pattern(regexp = "^[^*&%/]+$") + @Filename private String name; @FormParam("data") @PartType(MediaType.APPLICATION_OCTET_STREAM) diff --git a/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java b/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java index 3ee3970..758350c 100644 --- a/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java +++ b/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java @@ -5,12 +5,8 @@ import fr.miage23.filestore.TypeNode; public class POSTNodeDto { private String id = null; - private String name = null; - private TypeNode type = null; - public POSTNodeDto(String id, String name, TypeNode type) { + public POSTNodeDto(String id) { this.id = id; - this.name = name; - this.type = type; } } diff --git a/TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java b/TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java new file mode 100644 index 0000000..92bb753 --- /dev/null +++ b/TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java @@ -0,0 +1,17 @@ +package fr.miage23.filestore.api.filter; + +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerResponseContext; +import jakarta.ws.rs.container.ContainerResponseFilter; +import jakarta.ws.rs.ext.Provider; + +@Provider +public class VersionFilter implements ContainerResponseFilter { + + private static final String VERSION = "1.0.0-SNAPSHOT"; + + @Override + public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { + responseContext.getHeaders().add("X-FILESTORE-VERSION", VERSION); + } +} diff --git a/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java b/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java index 202cb7c..5d4e533 100644 --- a/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java +++ b/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java @@ -141,7 +141,7 @@ public class NodesResource { Node node = service.get(newid); return Response.ok(gson.toJson( - (new POSTNodeDto(node.getId(), node.getName(), node.getType())), + (new POSTNodeDto(node.getId())), POSTNodeDto.class), MediaType.APPLICATION_JSON).build(); } @@ -173,7 +173,7 @@ public class NodesResource { .create(); Node node = service.get(newid); return Response.ok(gson.toJson( - (new POSTNodeDto(node.getId(), node.getName(), node.getType())), + (new POSTNodeDto(node.getId())), POSTNodeDto.class), MediaType.APPLICATION_JSON).build(); } diff --git a/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java b/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java index c11e79e..1d53b63 100644 --- a/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java +++ b/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java @@ -9,12 +9,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@Target({ElementType.FIELD, ElementType.PARAMETER}) @Constraint(validatedBy={}) -@Retention(RetentionPolicy.RUNTIME) @Pattern(regexp=ValidationPattern.FILE_PATTERN) +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.PARAMETER}) public @interface Filename { - String message() default "{invalid.filename_FR}"; + String message() default "{invalid.filename}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } diff --git a/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java b/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java index 96cbd79..465b82b 100644 --- a/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java +++ b/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java @@ -1,6 +1,6 @@ package fr.miage23.filestore.api.validation; public class ValidationPattern { - public static final String FILE_PATTERN = "^[^*&%/]+$"; + public static final String FILE_PATTERN = "^[^*&%/\\~]+$"; } diff --git a/TD4/src/main/resources/ValidationMessages.properties b/TD4/src/main/resources/ValidationMessages.properties index 080da2d..a58bc63 100644 --- a/TD4/src/main/resources/ValidationMessages.properties +++ b/TD4/src/main/resources/ValidationMessages.properties @@ -1,7 +1 @@ -invalid.filename_FR=Le nom du fichier contient des caract�res interdits -invalid.filename_EN=The filename contains forbidden characters -invalid.filename_ES=El nombre del archivo contiene caracteres no permitidos -invalid.filename_DE=Der Dateiname enth�lt unzul�ssige Zeichen -invalid.filename_IT=Il nome del file contiene caratteri non consentiti -invalid.filename_NL=De bestandsnaam bevat verboden tekens -invalid.filename_PT=O nome do arquivo cont�m caracteres proibidos +invalid.filename=Le nom du fichier contient des caract�res interdits -- GitLab