Les réponses
Les réponses fournies par les API INSEE Sirene peuvent être de deux types : une réponse unitaire ou une collection.
Réponse unitaire
Les réponses unitaires (LuFiipe\InseeSierene\Response\Response
) sont structurées en 2 parties qui peuvent être consultées avec les méthodes :
getHeader()
: Le header (à ne pas confondre avec l'en-tête http ni l'en-tête de réponse) qui contient le code retour et le message d'erreur.getBody()
: Le corps qui contient les informations relatives d'une unité légale ou d'un établissement.get()
: qui est un alias degetBody()
.
Exemple:
use LuFiipe\InseeSierene\Sirene;
$sirene = new Sirene('YOUR-API-KEY');
$legalUnit = $sirene->siren('120027016')->getBody();
// Informations d'une unité légale
var_dump($legalUnit->getBody());
Header
La partie header, contient le code retour et le message d'erreur.
getStatus()
: Code status de l'erreur.getMessage()
: Message de l'erreur.
Collection
Une collection (LuFiipe\InseeSierene\Response\Collection
) permet de parcourir les éléments d'un résultat, soit par itération, soit manuellement à l'aide d'un ensemble de méthodes dédiées.
Par itération
Les résultats sont parcourus par itération à l'aide de la méthode each()
, qui applique une closure à chaque élément.
La closure prenant quatre arguments, ordonnés de la manière suivante :
array
$item
: Les données d'une unité légale ou d'un établissement.int
$key
: N° de l'offset en cours.LuFiipe\InseeSierene\Response\Pagination
$pagination
: Instance de la pagination en cours.LuFiipe\InseeSierene\Response\Header
$header
: Instance de l'header en cours.
$collection->each(function (array $item, int $key, Pagination $pagination, Header $header) {
// ...
});
Vous pouvez arrêter l'itération des éléments à tout moment en retournant false
depuis votre closure :
$collection->each(function (array $item) {
if (/* condition */) {
return false;
}
});
Manuellement
Le parcours des résultats en manuel se fait avec le jeu de méthodes suivantes:
firstPage()
: Renvoie la première page. Remarque : si un offset est spécifié dans la requête, la première page commencera à partir de cet offset.nextPage()
: Renvoie la page suivante.previousPage()
: Renvoie la page précédente.lastPage()
: Renvoie la page dernière page.count()
: Renvoie le nombre total d'éléments dans la collection.
Les méthodes firstPage()
, nextPage()
, previousPage()
et lastPage()
retournent une instance de LuFiipe\InseeSierene\Response\ResponsePaginated
.
ResponsePaginated
partage le même principe d'utilisation que Response
, sauf pour les points suivants :
- Elle inclut des informations de pagination accessibles via la méthode
getPagination()
, - Et la méthode
getBody()
retourne l'ensemble des éléments contenus dans une page.
Exemple 1 : Pagination manuelle :
use LuFiipe\InseeSierene\Parameters\SearchParameters;
use LuFiipe\InseeSierene\Sirene;
$sirene = new Sirene('YOUR-API-KEY');
// Recherche les établissements INSEE créés le 01/09/2016
$parameters = (new SearchParameters)
->setQuery('siren:120027016 AND dateCreationEtablissement:2016-09-01')
->setFields(['siret'])
->addSort('siret')
->setPerPage(5);
$collection = $sirene->searchEstablishments($parameters);
// 30 éléments
$collection->count();
// Débute à la page N° 1
$collection->firstPage();
// Continue sur la page N° 2
$collection->nextPage();
// Continue sur la page N° 3
$collection->nextPage();
// Reviens sur la page N° 2
$collection->previousPage();
// Passe à la dernière page
$collection->lastPage();
Exemple 2 : Si un offset est défini dans la requête, la pagination commencera à partir de cet offset.
// Recherche les établissements INSEE créés le 01/09/2016
$parameters = (new SearchParameters)
->setQuery('siren:120027016 AND dateCreationEtablissement:2016-09-01')
->setFields(['siret'])
->addSort('siret')
->setPerPage(5)
->setOffset(12);
$collection = $sirene->searchEstablishments($parameters);
// Débute à la page N°1, mais en ignorant les 12 premiers éléments
$collection->firstPage();
Exemple 3 : Aperçu de l'utilisation d'une instance de ResponsePaginated
// Recherche les établissements INSEE
$parameters = (new SearchParameters)
->setQuery('siren:120027016')
->setPerPage(5);
$collection = $sirene->searchEstablishments($parameters);
// Débute à la page N°1
$result = $collection->firstPage();
// Code de statut HTTP de la réponse
$result->getHeader()->getStatus();
// Informations de pagination pour la première page
$pagination = $result->getPagination();
// Nombre total d'établissements trouvés
$pagination->getTotal();
// Position actuelle dans les résultats (offset)
$pagination->getOffset();
// Liste des 5 premiers établissements trouvés
$result->getBody();