Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
700 gduche 1
<?php
1599 jpm 2
/**
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
* Encodage en entrée : utf8
7
* Encodage en sortie : utf8
8
*
9
* @category DEL
10
* @package Commun
11
* @version 0.1
12
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
* @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
* @copyright 1999-2014 Tela Botanica (accueil@tela-botanica.org)
16
*/
700 gduche 17
class ReponseHttp {
18
 
19
	private $resultatService = null;
20
	private $erreurs = array();
21
 
22
	public function __construct() {
23
		$this->resultatService = new ResultatService();
24
	}
25
 
26
	public function setResultatService($resultat) {
27
		if (!($resultat instanceof ResultatService)) {
28
			$this->resultatService->corps = $resultat;
29
		} else {
30
			$this->resultatService = $resultat;
31
		}
32
	}
33
 
34
	public function getCorps() {
35
		if ($this->etreEnErreur()) {
1599 jpm 36
			foreach ($this->erreurs as $erreur) {
37
				$this->resultatService->corps .= $erreur['message']."\n";
38
			}
700 gduche 39
		} else {
40
			$this->transformerReponseCorpsSuivantMime();
41
		}
42
		return $this->resultatService->corps;
43
	}
44
 
45
	public function ajouterErreur(Exception $e) {
46
		$this->erreurs[] = array('entete' => $e->getCode(), 'message' => $e->getMessage());
47
	}
48
 
49
	public function emettreLesEntetes() {
50
		$enteteHttp = new EnteteHttp();
51
		if ($this->etreEnErreur()) {
52
			$enteteHttp->code = $this->erreurs[0]['entete'];
53
			$enteteHttp->mime = 'text/html';
54
		} else {
55
			$enteteHttp->encodage = $this->resultatService->encodage;
56
			$enteteHttp->mime = $this->resultatService->mime;
57
		}
58
		header("Content-Type: $enteteHttp->mime; charset=$enteteHttp->encodage");
59
		RestServeur::envoyerEnteteStatutHttp($enteteHttp->code);
60
	}
61
 
62
	private function etreEnErreur() {
63
		$enErreur = false;
64
		if (count($this->erreurs) > 0) {
65
			$enErreur = true;
66
		}
67
		return $enErreur;
68
	}
69
 
70
	private function transformerReponseCorpsSuivantMime() {
71
		switch ($this->resultatService->mime) {
72
			case 'application/json' :
73
				$this->resultatService->corps = json_encode($this->resultatService->corps);
74
				break;
75
		}
76
	}
77
 
78
}
79
?>