Le composant Navitia permet de faire des appels à l'API Navitia 2 et de contrôler les paramètres.
NavitiaComponent est une librairie full-stack PHP 5.3. Il peut être associé à un framework (Symfony, Zend, ...).
- PHP: >=5.3.3 - NavitiaComponent utilise PHP 5.3.3 et plus.
- Psr/Log: ~1.0 - Pour utiliser un logger, il faut qu'il implémente l'interface LoggerInterface de Psr
Pour installer NavitiaComponent il faut utiliser composer.
-
Ouvrir votre composer.json
-
Placer à la dernière ligne de vos require "canaltp/navitia": "dev-master" (dev-master ou la dernière version stable)
-
Placer dans vos repositories le type et l'url de packagist
{ ... "require": { ... "canaltp/navitia": "dev-master" }, "repositories": [ { "type": "composer", "url": "http://packagist.canaltp.fr" }, ... ], ... }
NavitiaComponent propose une utilisation simple et une utilisation avancée.
La configuration est sous la forme d'un tableau (array).
Parametres | Type | Explication | Valeurs acceptées | Valeur défaut |
---|---|---|---|---|
url (obligatoire) | string | Url d'appel navitia | ||
token (obligatoire) | string | Token de l'api navitia | ||
version (optionnel) | string | Version de l'api navitia | v1 | v1 |
format (optionnel) | string | Format de la sortie | 'json', 'object' | object |
// Configuration
$config = array(
'url' => 'http://navitia2-ws.ctp.dev.canaltp.fr',
'format' => 'json',
'token' => '123456789abcdef'
);
Nous supportons deux API Navitia :
- Coverage
- Journeys
Pour ces deux API, nous pouvons passer les paramètres sous la forme d'un "String" ou d'un "Array".
Parametres | Type | Explication | Valeurs acceptées |
---|---|---|---|
api (obligatoire) | string | api journeys de Navitia | journeys |
parameters (obligatoire) | mixed (string, array) | parametres journeys |
Pour Journeys, le passage des paramètres peut se faire de deux manières:
// 1. Un tableau de paramètres
$query = array(
'api' => 'journeys',
'parameters' => array(
'from' => 'stop_area:TAN:SA:COMM',
'to' => 'stop_area:SCF:SA:SAOCE87481051',
'datetime' => '20130819T153000',
'datetime_represents' => 'departure'
)
);
// 2. Un tableau de paramètres contenant un tableau de paramètres
$query = array(
'api' => 'journeys',
'parameters' => array(
'parameters' => array(
'from' => 'stop_area:TAN:SA:COMM',
'to' => 'stop_area:SCF:SA:SAOCE87481051',
'datetime' => '20130819T153000',
'datetime_represents' => 'departure'
)
)
);
// parameters string avec Journeys
$query = array(
'api' => 'journeys',
'parameters' => '?from=stop_area:TAN:SA:COMM&to=stop_area:SCF:SA:SAOCE87481051&'.
'datetime=20130819T153000&datetime_represents=departure'
);
Parametres | Type | Explication | Valeurs acceptées |
---|---|---|---|
api (obligatoire) | string | api coverage de Navitia | coverage |
parameters (obligatoire) | array | parametres coverage |
Les paramètres de coverage sont plus complexes que ceux de journeys.
Parametres Coverage | Type | Explication | Exemples |
---|---|---|---|
region (obligatoire) | string | Region | 'centre' |
path_filter | string | Filtre de coverage | 'lines/line_id' |
action | string | l'api de coverage | 'route_schedules' |
parameters | mixed (array, string) | paramètres de l'action |
// parameters array avec Coverage
$query = array(
'api' => 'coverage',
'parameters' => array(
'region' => 'PaysDeLaLoire',
'path_filter' => 'lines/12',
'action' => 'route_schedules',
'parameters' => array (
'from_datetime' => 123312,
'duration' => 10
)
)
);
// parameters string avec Coverage
$query = array(
'api' => 'coverage',
'parameters' => array(
'region' => 'centre',
'path_filter' => 'lines/12',
'action' => 'route_schedules',
'parameters' => '?from_datetime=123312&duration=10'
)
);
L'appel Navitia se fait en trois petites étapes :
-
Instanciation de ServiceFacade
-
Ajout (set) de la configuration
-
Appel à l'api Navitia avec les paramètres de l'api
$service = ServiceFacade::getInstance(); $service->setConfiguration($config); $result = $service->call($query);
Des objets sont disponibles pour une utilisation avancée du NavitiaComponent.
// parameters object avec Coverage
$query = new \Navitia\Component\Request\CoverageRequest();
$query->setRegion('centre');
$query->setPathFilter('lines/12');
$query->setAction('route_schedules');
$actionParams = new \Navitia\Component\Request\Parameters\CoverageRouteSchedulesParameters();
$actionParams->setFromDatetime(123312);
$actionParams->setDuration(10);
$query->setParameters($actionParams);
// parameters object avec Journeys
$query = new \Navitia\Component\Request\JourneysRequest();
$actionParameters = new \Navitia\Component\Request\Parameters\JourneysParameters();
$actionParameters->setFrom('stop_area:TAN:SA:COMM');
$actionParameters->setTo('stop_area:SCF:SA:SAOCE87481051');
$actionParameters->setDatetime('20130819T153000');
$actionParameters->setDatetimeRepresents('departure');
$query->setParameters($actionParameters);
Les trois étapes de l'appel restent les mêmes pour l'utilisation simple et avancée.
Afin d'exécuter les tests unitaires, vous devez définir la variable d'environnement "NAVITIA_TOKEN" avec le token dont vous disposez:
// Exemple pour une distribution Linux
export NAVITIA_TOKEN=123456789abcdef
phpunit