Loading src/UnicaenDbImport/Service/Api/ApiService.php +3 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,9 @@ class ApiService $dataExtractor = $this->dataExtractorPluginManager->getDataExtractorForResponse($responseData); } } if ($dataExtractor->detectErrorFromResponse($responseData)) { throw ApiServiceException::unexpectedError(new Exception("Erreur détectée dans la réponse reçue"), $url); } $knownPageCount = $dataExtractor->extractDataPageCountFromResponse($responseData); $data = $dataExtractor->extractDataFromResponse($responseData); Loading src/UnicaenDbImport/Service/Api/Response/DataExtractor/Array/ArrayResponseDataExtractor.php +5 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,11 @@ class ArrayResponseDataExtractor implements ResponseDataExtractorInterface return is_array($response); } public function detectErrorFromResponse($response): bool { return false; } public function extractDataPageCountFromResponse($response): int { return 0; // non applicable Loading src/UnicaenDbImport/Service/Api/Response/DataExtractor/Hal/HalResponseDataExtractor.php +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,11 @@ class HalResponseDataExtractor implements ResponseDataExtractorInterface return $response instanceof stdClass && isset($response->page_count) && isset($response->_embedded); } public function detectErrorFromResponse($response): bool { return false; } /** * @param stdclass $response Réponse de la forme `{ "page_count": 5, "_embedded": { "financements": [{}, {}, ...] }, ...}` */ Loading src/UnicaenDbImport/Service/Api/Response/DataExtractor/ResponseDataExtractorInterface.php +5 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,11 @@ interface ResponseDataExtractorInterface */ public function canExtractFromResponse($response): bool; /** * Tente de détecter si une erreur est signalée *dans le contenu de la réponse*. */ public function detectErrorFromResponse($response): bool; /** * Extrait le nombre de pages de données éventuellement indiqué dans la réponse spécifiée, * à l'aide du 1er extractor compétent trouvé. Loading src/UnicaenDbImport/Service/Api/Response/DataExtractor/Solr/SolrResponseDataExtractor.php +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,11 @@ class SolrResponseDataExtractor implements ResponseDataExtractorInterface return $response instanceof stdClass && isset($response->response->numFound) && isset($response->response->docs); } public function detectErrorFromResponse($response): bool { return false; } public function extractDataPageCountFromResponse($response): int { return 0; // non connu Loading Loading
src/UnicaenDbImport/Service/Api/ApiService.php +3 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,9 @@ class ApiService $dataExtractor = $this->dataExtractorPluginManager->getDataExtractorForResponse($responseData); } } if ($dataExtractor->detectErrorFromResponse($responseData)) { throw ApiServiceException::unexpectedError(new Exception("Erreur détectée dans la réponse reçue"), $url); } $knownPageCount = $dataExtractor->extractDataPageCountFromResponse($responseData); $data = $dataExtractor->extractDataFromResponse($responseData); Loading
src/UnicaenDbImport/Service/Api/Response/DataExtractor/Array/ArrayResponseDataExtractor.php +5 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,11 @@ class ArrayResponseDataExtractor implements ResponseDataExtractorInterface return is_array($response); } public function detectErrorFromResponse($response): bool { return false; } public function extractDataPageCountFromResponse($response): int { return 0; // non applicable Loading
src/UnicaenDbImport/Service/Api/Response/DataExtractor/Hal/HalResponseDataExtractor.php +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,11 @@ class HalResponseDataExtractor implements ResponseDataExtractorInterface return $response instanceof stdClass && isset($response->page_count) && isset($response->_embedded); } public function detectErrorFromResponse($response): bool { return false; } /** * @param stdclass $response Réponse de la forme `{ "page_count": 5, "_embedded": { "financements": [{}, {}, ...] }, ...}` */ Loading
src/UnicaenDbImport/Service/Api/Response/DataExtractor/ResponseDataExtractorInterface.php +5 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,11 @@ interface ResponseDataExtractorInterface */ public function canExtractFromResponse($response): bool; /** * Tente de détecter si une erreur est signalée *dans le contenu de la réponse*. */ public function detectErrorFromResponse($response): bool; /** * Extrait le nombre de pages de données éventuellement indiqué dans la réponse spécifiée, * à l'aide du 1er extractor compétent trouvé. Loading
src/UnicaenDbImport/Service/Api/Response/DataExtractor/Solr/SolrResponseDataExtractor.php +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,11 @@ class SolrResponseDataExtractor implements ResponseDataExtractorInterface return $response instanceof stdClass && isset($response->response->numFound) && isset($response->response->docs); } public function detectErrorFromResponse($response): bool { return false; } public function extractDataPageCountFromResponse($response): int { return 0; // non connu Loading