Subversion Repositories eFlore/Applications.del

Rev

Rev 1599 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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