From c9ceb4674693696810cb7554a513b86ab8e2b9bf Mon Sep 17 00:00:00 2001 From: Vincent Guillet Date: Tue, 25 Nov 2025 16:28:18 +0000 Subject: [PATCH] Update api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java --- .../service/prestashop/PrestashopClient.java | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java b/api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java index 67bea44..ddd80ac 100644 --- a/api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java +++ b/api/src/main/java/fr/gameovergne/api/service/prestashop/PrestashopClient.java @@ -3,6 +3,8 @@ package fr.gameovergne.api.service.prestashop; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; import org.springframework.stereotype.Service; +import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; @@ -22,23 +24,47 @@ public class PrestashopClient { } public ResponseEntity get(String path, String query) { - // path = ex: "/products" - // query = ex: "display=full&limit=10" (facultatif) + // path = ex: "/categories" + // query = ex: "display=...[...]" (déjà encodé) String url = UriComponentsBuilder .fromHttpUrl(baseUrl) .path("/api") .path(path) .query(query) - .build(true) + .build(true) // la query contient déjà les %5B..%5D .toUriString(); + System.out.println("[Presta] GET " + url); + HttpHeaders headers = new HttpHeaders(); headers.set(HttpHeaders.AUTHORIZATION, "Basic " + basicAuth); HttpEntity entity = new HttpEntity<>(headers); - return restTemplate.exchange(url, HttpMethod.GET, entity, String.class); - } + try { + ResponseEntity response = + restTemplate.exchange(url, HttpMethod.GET, entity, String.class); - // Si tu as besoin de POST/PUT plus tard tu ajoutes d'autres méthodes ici + System.out.println("[Presta] <- " + response.getStatusCode()); + return ResponseEntity + .status(response.getStatusCode()) + .headers(response.getHeaders()) + .body(response.getBody()); + + } catch (HttpStatusCodeException ex) { + // Erreur HTTP renvoyée par Presta (401, 403, 404, 500, ...) + System.err.println("[Presta] ERROR " + ex.getStatusCode() + " for URL: " + url); + System.err.println("[Presta] BODY: " + ex.getResponseBodyAsString()); + return ResponseEntity + .status(ex.getStatusCode()) + .body(ex.getResponseBodyAsString()); + } catch (RestClientException ex) { + // Erreur réseau/TLS/etc + System.err.println("[Presta] CLIENT ERROR for URL: " + url); + ex.printStackTrace(); + return ResponseEntity + .status(HttpStatus.BAD_GATEWAY) + .body("Error while calling Prestashop: " + ex.getMessage()); + } + } } \ No newline at end of file