Subversion Repositories Applications.framework

Rev

Rev 423 | Rev 455 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 423 Rev 453
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 423 2013-04-11 14:52:05Z jpm $
38
 * @version		$Id: RestServeur.php 453 2014-02-06 11:03:22Z 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 445... Line 445...
445
	private function post() {
445
	private function post() {
446
		$retour = '';
446
		$retour = '';
447
		$paires = $this->parserDonneesRequete();
447
		$paires = $this->parserDonneesRequete();
448
		if (count($paires) != 0) {
448
		if (count($paires) != 0) {
449
			if (isset($paires['action']) && $paires['action'] == 'DELETE') {// Alternative à l'utilisation de DELETE
449
			if (isset($paires['action']) && $paires['action'] == 'DELETE') {// Alternative à l'utilisation de DELETE
450
				$this->delete();
450
				$retour = $this->delete();
451
			} else if (count($this->ressources) == 0) {// Alternative à l'utilisation de PUT
451
			} else if (count($this->ressources) == 0) {// Alternative à l'utilisation de PUT
452
				$retour = $this->put();
452
				$retour = $this->put();
453
			} else {
453
			} else {
454
				if ($this->service != null) {
454
				if ($this->service != null) {
455
					$Service = new $this->service(self::$config);
455
					$Service = new $this->service(self::$config);
456
					if (method_exists($Service, self::METHODE_POST)) {
456
					if (method_exists($Service, self::METHODE_POST)) {
457
						$methodePost = self::METHODE_POST;
457
						$methodePost = self::METHODE_POST;
458
						$info = $Service->$methodePost($this->ressources, $paires);
458
						$info = $Service->$methodePost($this->ressources, $paires);
459
						if ($info === true) {
459
						if ($info !== false) {
460
							$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
460
							$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
-
 
461
							$retour = $info;
461
						}
462
						}
462
					} else {
463
					} else {
463
						self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
464
						self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
464
						$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_POST."' nécessaire ".
465
						$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_POST."' nécessaire ".
465
							"lors de l'appel du service via la méthode HTTP GET.";
466
							"lors de l'appel du service via la méthode HTTP GET.";
Line 482... Line 483...
482
		if (count($paires) != 0) {
483
		if (count($paires) != 0) {
483
			if ($this->service != null) {
484
			if ($this->service != null) {
484
				$Service = new $this->service(self::$config);
485
				$Service = new $this->service(self::$config);
485
				if (method_exists($Service, self::METHODE_PUT)) {
486
				if (method_exists($Service, self::METHODE_PUT)) {
486
					$methodePut = self::METHODE_PUT;
487
					$methodePut = self::METHODE_PUT;
487
					$retour = $Service->$methodePut($this->ressources, $paires);
488
					$info = $Service->$methodePut($this->ressources, $paires);
488
					if ($retour !== false) {
489
					if ($info !== false) {
489
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
490
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
-
 
491
						$retour = $info;
490
					}
492
					}
491
				} else {
493
				} else {
492
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
494
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
493
					$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_PUT."' nécessaire ".
495
					$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_PUT."' nécessaire ".
494
						"lors de l'appel du service via la méthode HTTP GET.";
496
						"lors de l'appel du service via la méthode HTTP GET.";
Line 502... Line 504...
502
		}
504
		}
503
		return $retour;
505
		return $retour;
504
	}
506
	}
Line 505... Line 507...
505
 
507
 
-
 
508
	private function delete() {
506
	private function delete() {
509
		$retour = '';
507
		if (count($this->ressources) != 0) {
510
		if (count($this->ressources) != 0) {
508
			$paires = $this->parserDonneesRequete();
511
			$paires = $this->parserDonneesRequete();
509
			if ($this->service != null) {
512
			if ($this->service != null) {
510
				$Service = new $this->service(self::$config);
513
				$Service = new $this->service(self::$config);
Line 515... Line 518...
515
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_SUPPRESSION_OK);
518
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_SUPPRESSION_OK);
516
					} else if ($info === false) {
519
					} else if ($info === false) {
517
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
520
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
518
						$e = "La ressource à supprimer est introuvable. Il se peut qu'elle ait été préalablement supprimé.";
521
						$e = "La ressource à supprimer est introuvable. Il se peut qu'elle ait été préalablement supprimé.";
519
						self::ajouterMessage($e);
522
						self::ajouterMessage($e);
-
 
523
					} else {
-
 
524
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
-
 
525
						$retour = $info;
520
					}
526
					}
521
				} else {
527
				} else {
522
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
528
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
523
					$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_DELETE."' nécessaire ".
529
					$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_DELETE."' nécessaire ".
524
						"lors de l'appel du service via la méthode HTTP GET.";
530
						"lors de l'appel du service via la méthode HTTP GET.";
Line 528... Line 534...
528
		} else {
534
		} else {
529
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
535
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
530
			$e = "Il est nécessaire d'indiquer dans l'url la ressource à supprimer.";
536
			$e = "Il est nécessaire d'indiquer dans l'url la ressource à supprimer.";
531
			self::ajouterMessage($e);
537
			self::ajouterMessage($e);
532
		}
538
		}
-
 
539
		return $retour;
533
	}
540
	}
Line 534... Line 541...
534
 
541
 
535
	/**
542
	/**
536
	 * Parse les données contenu dans le corps de la requête HTTP (= POST) en :
543
	 * Parse les données contenu dans le corps de la requête HTTP (= POST) en :