Subversion Repositories eFlore/Applications.del

Rev

Rev 1599 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1599 Rev 1793
1
<?php
1
<?php
2
/**
2
/**
3
* Classe créant la réponse HTTP pour les services de DEL.
3
 * Classe créant la réponse HTTP pour les services de DEL.
4
*
4
 *
5
* Vérifie qu'aucune erreur n'a été générée. Si une erreur existe, retourne le contenu de l'erreur.
5
 * Vérifie qu'aucune erreur n'a été générée. Si une erreur existe, retourne le contenu de l'erreur.
6
* Encodage en entrée : utf8
-
 
7
* Encodage en sortie : utf8
-
 
8
*
6
 *
9
* @category DEL
7
 * @category DEL
10
* @package Commun
8
 * @package Services
-
 
9
 * @subpackage Bibliotheque
11
* @version 0.1
10
 * @version 0.1
-
 
11
 * @author Mathias CHOUET <mathias@tela-botanica.org>
12
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
13
 * @author Aurelien PERONNET <aurelien@tela-botanica.org>
13
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
* @copyright 1999-2014 Tela Botanica (accueil@tela-botanica.org)
16
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
*/
17
*/
17
class ReponseHttp {
18
class ReponseHttp {
18
 
19
 
19
	private $resultatService = null;
20
	private $resultatService = null;
20
	private $erreurs = array();
21
	private $erreurs = array();
21
 
22
 
22
	public function __construct() {
23
	public function __construct() {
23
		$this->resultatService = new ResultatService();
24
		$this->resultatService = new ResultatService();
24
	}
25
	}
25
 
26
 
26
	public function setResultatService($resultat) {
27
	public function setResultatService($resultat) {
27
		if (!($resultat instanceof ResultatService)) {
28
		if (!($resultat instanceof ResultatService)) {
28
			$this->resultatService->corps = $resultat;
29
			$this->resultatService->corps = $resultat;
29
		} else {
30
		} else {
30
			$this->resultatService = $resultat;
31
			$this->resultatService = $resultat;
31
		}
32
		}
32
	}
33
	}
33
 
34
 
34
	public function getCorps() {
35
	public function getCorps() {
35
		if ($this->etreEnErreur()) {
36
		if ($this->etreEnErreur()) {
36
			foreach ($this->erreurs as $erreur) {
37
			foreach ($this->erreurs as $erreur) {
37
				$this->resultatService->corps .= $erreur['message']."\n";
38
				$this->resultatService->corps .= $erreur['message']."\n";
38
			}
39
			}
39
		} else {
40
		} else {
40
			$this->transformerReponseCorpsSuivantMime();
41
			$this->transformerReponseCorpsSuivantMime();
41
		}
42
		}
42
		return $this->resultatService->corps;
43
		return $this->resultatService->corps;
43
	}
44
	}
44
 
45
 
45
	public function ajouterErreur(Exception $e) {
46
	public function ajouterErreur(Exception $e) {
46
		$this->erreurs[] = array('entete' => $e->getCode(), 'message' => $e->getMessage());
47
		$this->erreurs[] = array('entete' => $e->getCode(), 'message' => $e->getMessage());
47
	}
48
	}
48
 
49
 
49
	public function emettreLesEntetes() {
50
	public function emettreLesEntetes() {
50
		$enteteHttp = new EnteteHttp();
51
		$enteteHttp = new EnteteHttp();
51
		if ($this->etreEnErreur()) {
52
		if ($this->etreEnErreur()) {
52
			$enteteHttp->code = $this->erreurs[0]['entete'];
53
			$enteteHttp->code = $this->erreurs[0]['entete'];
53
			$enteteHttp->mime = 'text/html';
54
			$enteteHttp->mime = 'text/html';
54
		} else {
55
		} else {
55
			$enteteHttp->encodage = $this->resultatService->encodage;
56
			$enteteHttp->encodage = $this->resultatService->encodage;
56
			$enteteHttp->mime = $this->resultatService->mime;
57
			$enteteHttp->mime = $this->resultatService->mime;
57
		}
58
		}
58
		header("Content-Type: $enteteHttp->mime; charset=$enteteHttp->encodage");
59
		header("Content-Type: $enteteHttp->mime; charset=$enteteHttp->encodage");
59
		RestServeur::envoyerEnteteStatutHttp($enteteHttp->code);
60
		RestServeur::envoyerEnteteStatutHttp($enteteHttp->code);
60
	}
61
	}
61
 
62
 
62
	private function etreEnErreur() {
63
	private function etreEnErreur() {
63
		$enErreur = false;
64
		$enErreur = false;
64
		if (count($this->erreurs) > 0) {
65
		if (count($this->erreurs) > 0) {
65
			$enErreur = true;
66
			$enErreur = true;
66
		}
67
		}
67
		return $enErreur;
68
		return $enErreur;
68
	}
69
	}
69
 
70
 
70
	private function transformerReponseCorpsSuivantMime() {
71
	private function transformerReponseCorpsSuivantMime() {
71
		switch ($this->resultatService->mime) {
72
		switch ($this->resultatService->mime) {
72
			case 'application/json' :
73
			case 'application/json' :
73
				$this->resultatService->corps = json_encode($this->resultatService->corps);
74
				$this->resultatService->corps = json_encode($this->resultatService->corps);
74
				break;
75
				break;
75
		}
76
		}
76
	}
77
	}
77
 
-
 
78
}
-
 
79
?>
78
 
-
 
79
}
80
80