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 8ac12404e109ff1a7c28a495a2750c3fe213d47c..c9233ddb0f4065ce4e13fe5e19ac6c7cd240033b 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 3ee39708caf59c335556e03f2e5159015d691f38..758350cd2a1476b065a697078c650b8bb8613791 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 0000000000000000000000000000000000000000..92bb75354aaedd0cc65d9229a4411cdda45aaed8 --- /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 202cb7cddb41752a8cf8ca339f55727de0546baf..5d4e53374f88311ee1a5ef5b3adff4dcf6e4ec16 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 c11e79e7c18c2b66681699fce14e13191560134a..1d53b6337cf47e86870c0c74c4078ce61556a3c7 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 96cbd79a07686e82f050c796455a5031068e0466..465b82b0dc3a484740d39c992ccaaba7754f91c2 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 080da2de5e48fed2c6da5b1839bdf3fcbdda73c7..a58bc6359acb30ffa67e0ccf9b6d735185ef54da 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