Commit c429ea22 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

WIP

parent a80f863b
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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);

+5 −0
Original line number Diff line number Diff line
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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": [{}, {}, ...] }, ...}`
     */
+5 −0
Original line number Diff line number Diff line
@@ -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é.
+5 −0
Original line number Diff line number Diff line
@@ -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