diff --git a/api/src/main/java/fr/gameovergne/api/config/PrestashopProperties.java b/api/src/main/java/fr/gameovergne/api/config/prestashop/PrestashopProperties.java similarity index 85% rename from api/src/main/java/fr/gameovergne/api/config/PrestashopProperties.java rename to api/src/main/java/fr/gameovergne/api/config/prestashop/PrestashopProperties.java index da083ca..fe38d97 100644 --- a/api/src/main/java/fr/gameovergne/api/config/PrestashopProperties.java +++ b/api/src/main/java/fr/gameovergne/api/config/prestashop/PrestashopProperties.java @@ -1,4 +1,4 @@ -package fr.gameovergne.api.config; +package fr.gameovergne.api.config.prestashop; import lombok.Getter; import lombok.Setter; diff --git a/api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java b/api/src/main/java/fr/gameovergne/api/controller/prestashop/PrestashopProxyController.java similarity index 82% rename from api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java rename to api/src/main/java/fr/gameovergne/api/controller/prestashop/PrestashopProxyController.java index a4a634a..dad0147 100644 --- a/api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java +++ b/api/src/main/java/fr/gameovergne/api/controller/prestashop/PrestashopProxyController.java @@ -1,6 +1,6 @@ package fr.gameovergne.api.controller; -import fr.gameovergne.api.service.PrestashopClient; +import fr.gameovergne.api.service.prestashop.PrestashopClient; import jakarta.servlet.http.HttpServletRequest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -10,6 +10,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.HandlerMapping; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; + @RestController @RequestMapping("/api/ps") public class PrestashopProxyController { @@ -31,6 +34,10 @@ public class PrestashopProxyController { .extractPathWithinPattern(bestMatchPattern, fullPath); String rawQuery = request.getQueryString(); + if (rawQuery != null) { + // 🔥 Correction : on désencode les caractères URL avant de relayer à Presta + rawQuery = URLDecoder.decode(rawQuery, StandardCharsets.UTF_8); + } ResponseEntity prestaResponse = prestashopClient.getWithRawQuery("/" + relativePath, rawQuery); diff --git a/api/src/main/java/fr/gameovergne/api/service/PrestashopClient.java b/api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java similarity index 98% rename from api/src/main/java/fr/gameovergne/api/service/PrestashopClient.java rename to api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java index 88c2187..b99fea3 100644 --- a/api/src/main/java/fr/gameovergne/api/service/PrestashopClient.java +++ b/api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java @@ -1,4 +1,4 @@ -package fr.gameovergne.api.service; +package fr.gameovergne.api.service.prestashop; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value;