Line 33... |
Line 33... |
33 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
33 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
34 |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
|
34 |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
|
35 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
35 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
36 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
36 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
37 |
* @since 0.3
|
37 |
* @since 0.3
|
38 |
* @version $Id: RestServeur.php 366 2011-09-30 08:20:45Z jpm $
|
38 |
* @version $Id: RestServeur.php 382 2011-10-14 10:36:41Z jpm $
|
39 |
* @link /doc/framework/
|
39 |
* @link /doc/framework/
|
40 |
*/
|
40 |
*/
|
41 |
// TODO : gerer les retours : dans ce controleur : code retour et envoi ...
|
41 |
// TODO : gerer les retours : dans ce controleur : code retour et envoi ...
|
42 |
class RestServeur {
|
42 |
class RestServeur {
|
Line 138... |
Line 138... |
138 |
* @var array
|
138 |
* @var array
|
139 |
*/
|
139 |
*/
|
140 |
private $ressources = array();
|
140 |
private $ressources = array();
|
Line 141... |
Line 141... |
141 |
|
141 |
|
- |
|
142 |
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
|
- |
|
143 |
* Les données proviennent de $_GET où les caractères suivant ont été transformé en '_' undescrore dans les clés :
|
- |
|
144 |
* - chr(32) ( ) (space)
|
- |
|
145 |
* - chr(46) (.) (dot)
|
- |
|
146 |
* - chr(91) ([) (open square bracket)
|
- |
|
147 |
* - chr(128) - chr(159) (various)
|
142 |
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
|
148 |
* En outre nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
|
- |
|
149 |
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
|
143 |
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
|
150 |
* @see parametresBruts
|
144 |
* @var array
|
151 |
* @var array
|
145 |
*/
|
152 |
*/
|
Line -... |
Line 153... |
- |
|
153 |
private $parametres = array();
|
- |
|
154 |
|
- |
|
155 |
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
|
- |
|
156 |
* Les données proviennent de $_SERVER['QUERY_STRING'] et n'ont subies aucune transformation au niveau des clés.
|
- |
|
157 |
* Cependant nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
|
- |
|
158 |
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
|
- |
|
159 |
* @see parametres
|
- |
|
160 |
* @var array
|
- |
|
161 |
*/
|
146 |
private $parametres = array();
|
162 |
private $parametresBruts = array();
|
147 |
|
163 |
|
148 |
/** Tableau contenant les paramètres de configuration du serveur.
|
164 |
/** Tableau contenant les paramètres de configuration du serveur.
|
149 |
* @var array
|
165 |
* @var array
|
Line 304... |
Line 320... |
304 |
}
|
320 |
}
|
305 |
}
|
321 |
}
|
306 |
}
|
322 |
}
|
Line 307... |
Line 323... |
307 |
|
323 |
|
- |
|
324 |
private function initialiserParametres() {
|
- |
|
325 |
$this->parametres = $this->recupererParametresGet();
|
- |
|
326 |
$this->parametresBruts = $this->recupererParametresBruts();
|
- |
|
327 |
}
|
- |
|
328 |
|
308 |
private function initialiserParametres() {
|
329 |
private function recupererParametresGet() {
|
309 |
$this->nettoyerGet();
|
330 |
$_GET = $this->nettoyerParametres($_GET);
|
310 |
$this->parametres = $_GET;
|
331 |
return $_GET;
|
Line 311... |
Line 332... |
311 |
}
|
332 |
}
|
312 |
|
333 |
|
313 |
private function nettoyerGet() {
|
334 |
private function nettoyerParametres(Array $parametres) {
|
314 |
// Pas besoin d'utiliser urldecode car déjà fait par php pour les clés et valeur de $_GET
|
335 |
// Pas besoin d'utiliser urldecode car déjà fait par php pour les clés et valeur de $_GET
|
315 |
if (isset($_GET) && count($_GET) > 0) {
|
336 |
if (isset($parametres) && count($parametres) > 0) {
|
316 |
foreach ($_GET as $cle => $valeur) {
|
337 |
foreach ($parametres as $cle => $valeur) {
|
317 |
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
|
338 |
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
|
318 |
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur));
|
339 |
$parametres[$cle] = strip_tags(str_replace($verifier, '', $valeur));
|
- |
|
340 |
}
|
319 |
}
|
341 |
}
|
Line -... |
Line 342... |
- |
|
342 |
return $parametres;
|
- |
|
343 |
}
|
- |
|
344 |
|
- |
|
345 |
private function recupererParametresBruts() {
|
- |
|
346 |
$paires = explode('&', $_SERVER['QUERY_STRING']);
|
- |
|
347 |
$parametres_bruts = array();
|
- |
|
348 |
foreach ($paires as $paire) {
|
- |
|
349 |
$nv = explode('=', $paire);
|
- |
|
350 |
$nom = urldecode($nv[0]);
|
- |
|
351 |
$valeur = urldecode($nv[1]);
|
- |
|
352 |
$parametres_bruts[$nom] = $valeur;
|
- |
|
353 |
}
|
- |
|
354 |
$parametres_bruts = $this->nettoyerParametres($parametres_bruts);
|
320 |
}
|
355 |
return $parametres_bruts;
|
321 |
}
|
356 |
}
|
322 |
|
357 |
|
323 |
/**
|
358 |
/**
|
324 |
* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
|
359 |
* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
|
Line 386... |
Line 421... |
386 |
$retour = '';
|
421 |
$retour = '';
|
387 |
if ($this->service != null) {
|
422 |
if ($this->service != null) {
|
388 |
$Service = new $this->service(self::$config);
|
423 |
$Service = new $this->service(self::$config);
|
389 |
if (method_exists($Service, self::METHODE_GET)) {
|
424 |
if (method_exists($Service, self::METHODE_GET)) {
|
390 |
$methodeGet = self::METHODE_GET;
|
425 |
$methodeGet = self::METHODE_GET;
|
- |
|
426 |
$parametres = $Service->utiliserParametresBruts() ? $this->parametresBruts : $this->parametres;
|
391 |
$retour = $Service->$methodeGet($this->ressources, $this->parametres);
|
427 |
$retour = $Service->$methodeGet($this->ressources, $parametres);
|
392 |
} else {
|
428 |
} else {
|
393 |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
429 |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
394 |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
|
430 |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
|
395 |
"lors de l'appel du service via la méthode HTTP GET.";
|
431 |
"lors de l'appel du service via la méthode HTTP GET.";
|
396 |
self::ajouterMessage($e);
|
432 |
self::ajouterMessage($e);
|