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 410 2012-03-05 13:08:34Z aurelien $
|
38 |
* @version $Id: RestServeur.php 413 2012-03-15 13:59:19Z 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 333... |
Line 333... |
333 |
|
333 |
|
334 |
private function nettoyerParametres(Array $parametres) {
|
334 |
private function nettoyerParametres(Array $parametres) {
|
335 |
// 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
|
336 |
if (isset($parametres) && count($parametres) > 0) {
|
336 |
if (isset($parametres) && count($parametres) > 0) {
|
337 |
foreach ($parametres as $cle => $valeur) {
|
337 |
foreach ($parametres as $cle => $valeur) {
|
338 |
// les quotes, guillements et points-virgules ont été retirés des caractères à vérifier car
|
338 |
// les quotes, guillements et points-virgules ont été retirés des caractères à vérifier car
|
339 |
//ça n'a plus lieu d'être maintenant que l'on utilise protéger à peu près partout
|
339 |
//ça n'a plus lieu d'être maintenant que l'on utilise protéger à peu près partout
|
340 |
$verifier = array('NULL', "\n", "\r", "\\", "\x00", "\x1a");
|
340 |
$verifier = array('NULL', "\n", "\r", "\\", "\x00", "\x1a");
|
341 |
$parametres[$cle] = strip_tags(str_replace($verifier, '', $valeur));
|
341 |
$parametres[$cle] = strip_tags(str_replace($verifier, '', $valeur));
|
342 |
}
|
342 |
}
|
Line 387... |
Line 387... |
387 |
switch ($this->methode) {
|
387 |
switch ($this->methode) {
|
388 |
case 'GET':
|
388 |
case 'GET':
|
389 |
$retour = $this->get();
|
389 |
$retour = $this->get();
|
390 |
break;
|
390 |
break;
|
391 |
case 'POST':
|
391 |
case 'POST':
|
392 |
$this->post();
|
392 |
$retour = $this->post();// Retour pour l'alternative PUT
|
393 |
break;
|
393 |
break;
|
394 |
case 'DELETE':
|
394 |
case 'DELETE':
|
395 |
$this->delete();
|
395 |
$this->delete();
|
396 |
break;
|
396 |
break;
|
397 |
case 'PUT':
|
397 |
case 'PUT':
|
Line 429... |
Line 429... |
429 |
}
|
429 |
}
|
430 |
return $retour;
|
430 |
return $retour;
|
431 |
}
|
431 |
}
|
Line 432... |
Line 432... |
432 |
|
432 |
|
- |
|
433 |
private function post() {
|
433 |
private function post() {
|
434 |
$retour = '';
|
434 |
$paires = $this->parserDonneesRequete();
|
435 |
$paires = $this->parserDonneesRequete();
|
435 |
if (count($paires) != 0) {
|
436 |
if (count($paires) != 0) {
|
436 |
if (isset($paires['action']) && $paires['action'] == 'DELETE') {// Altnative à l'utilisation de DELETE
|
437 |
if (isset($paires['action']) && $paires['action'] == 'DELETE') {// Alternative à l'utilisation de DELETE
|
437 |
$retour = $this->delete();
|
438 |
$this->delete();
|
438 |
} else if (count($this->ressources) == 0) {// Altnative à l'utilisation de PUT
|
439 |
} else if (count($this->ressources) == 0) {// Alternative à l'utilisation de PUT
|
439 |
$retour = $this->put();
|
440 |
$retour = $this->put();
|
440 |
} else {
|
441 |
} else {
|
441 |
if ($this->service != null) {
|
442 |
if ($this->service != null) {
|
442 |
$Service = new $this->service(self::$config);
|
443 |
$Service = new $this->service(self::$config);
|
Line 458... |
Line 459... |
458 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
|
459 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
|
459 |
$e = "Le service '{$this->service}' requiert de fournir le contenu à modifier dans le corps ".
|
460 |
$e = "Le service '{$this->service}' requiert de fournir le contenu à modifier dans le corps ".
|
460 |
"de la requête avec la méthode HTTP POST.";
|
461 |
"de la requête avec la méthode HTTP POST.";
|
461 |
self::ajouterMessage($e);
|
462 |
self::ajouterMessage($e);
|
462 |
}
|
463 |
}
|
- |
|
464 |
return $retour;
|
463 |
}
|
465 |
}
|
Line 464... |
Line 466... |
464 |
|
466 |
|
- |
|
467 |
private function put() {
|
465 |
private function put() {
|
468 |
$retour = '';
|
466 |
$paires = $this->parserDonneesRequete();
|
469 |
$paires = $this->parserDonneesRequete();
|
467 |
if (count($paires) != 0) {
|
470 |
if (count($paires) != 0) {
|
468 |
if ($this->service != null) {
|
471 |
if ($this->service != null) {
|
469 |
$Service = new $this->service(self::$config);
|
472 |
$Service = new $this->service(self::$config);
|
470 |
if (method_exists($Service, self::METHODE_PUT)) {
|
473 |
if (method_exists($Service, self::METHODE_PUT)) {
|
471 |
$methodePut = self::METHODE_PUT;
|
474 |
$methodePut = self::METHODE_PUT;
|
472 |
$info = $Service->$methodePut($this->ressources, $paires);
|
475 |
$retour = $Service->$methodePut($this->ressources, $paires);
|
473 |
if ($info === true) {
|
476 |
if ($retour !== false) {
|
474 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
|
477 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
|
475 |
}
|
478 |
}
|
476 |
} else {
|
479 |
} else {
|
477 |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
480 |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
478 |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_PUT."' nécessaire ".
|
481 |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_PUT."' nécessaire ".
|
Line 483... |
Line 486... |
483 |
} else {
|
486 |
} else {
|
484 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
|
487 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
|
485 |
$e = "Il est nécessaire de fournir du contenu dans le corps de la requête pour créer une nouvelle ressource.";
|
488 |
$e = "Il est nécessaire de fournir du contenu dans le corps de la requête pour créer une nouvelle ressource.";
|
486 |
self::ajouterMessage($e);
|
489 |
self::ajouterMessage($e);
|
487 |
}
|
490 |
}
|
- |
|
491 |
return $retour;
|
488 |
}
|
492 |
}
|
Line 489... |
Line 493... |
489 |
|
493 |
|
490 |
private function delete() {
|
494 |
private function delete() {
|
491 |
if (count($this->ressources) != 0) {
|
495 |
if (count($this->ressources) != 0) {
|