Subversion Repositories eFlore/Applications.moissonnage

Rev

Rev 22 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 22 Rev 34
1
<?php
1
<?php
2
 
2
 
3
class ReponseHttp {
3
class ReponseHttp {
4
 
-
 
5
	private $mime = 'application/json';
4
 
6
	private $encodage = 'utf-8';
-
 
7
	private $codeHttp = RestServeur::HTTP_CODE_OK;
-
 
8
	
-
 
9
	private $corps = '';
-
 
10
	
5
	private $resultatService = null;
11
	private $erreurs = array();
-
 
12
 
6
	private $erreurs = array();
-
 
7
 
13
	
8
	public function __construct() {
14
	public function __construct() {
9
		$this->resultatService = new ResultatService();
15
		if (function_exists('json_decode') == false){
10
		if (function_exists('json_decode') == false){
16
			require_once (dirname(__FILE__).'/JSON.php');
11
			require_once (dirname(__FILE__).'/JSON.php');
17
			function json_decode($content, $assoc = false){
12
			function json_decode($content, $assoc = false){
18
				if ($assoc) {
13
				if ($assoc) {
19
					$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
14
					$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
20
				} else {
15
				} else {
21
					$json = new Services_JSON;
16
					$json = new Services_JSON;
22
				}
17
				}
23
				return $json->decode($content);
18
				return $json->decode($content);
24
			}
19
			}
25
		}
20
		}
26
 
21
 
27
		if ( !function_exists('json_encode') ){
22
		if ( !function_exists('json_encode') ){
28
			function json_encode($content){
23
			function json_encode($content){
29
				$json = new Services_JSON;
24
				$json = new Services_JSON;
30
				return $json->encode($content);
25
				return $json->encode($content);
31
			}
26
			}
32
		}
27
		}
33
	}
28
	}
34
 
-
 
35
	
29
 
-
 
30
	public function setResultatService($resultat) {
-
 
31
		if (!($resultat instanceof ResultatService)) {
-
 
32
			$this->resultatService->corps = $resultat;
36
	public function setResultatService($resultat) {
33
		} else {
-
 
34
			$this->resultatService = $resultat;
37
		$this->corps = $resultat;
35
		}
38
	}
36
	}
39
 
37
 
40
	public function getCorps() {
38
	public function getCorps() {
41
		if ($this->etreEnErreur()) {
39
		if ($this->etreEnErreur()) {
42
			$this->corps = $this->erreurs[0]['message'];
40
			$this->resultatService->corps = $this->erreurs[0]['message'];
43
		} else {
41
		} else {
44
			$this->transformerReponseCorpsSuivantMime();
42
			$this->transformerReponseCorpsSuivantMime();
45
		}
43
		}
46
		return $this->corps;
44
		return $this->resultatService->corps;
47
	}
45
	}
48
 
46
 
49
	public function ajouterErreur(Exception $e) {
47
	public function ajouterErreur(Exception $e) {
50
		$this->erreurs[] = array('entete' => $e->getCode(), 'message' => $e->getMessage());
48
		$this->erreurs[] = array('entete' => $e->getCode(), 'message' => $e->getMessage());
51
	}
49
	}
52
 
50
 
53
	public function emettreLesEntetes() {
51
	public function emettreLesEntetes() {
-
 
52
		$enteteHttp = new EnteteHttp();
54
		if ($this->etreEnErreur()) {
53
		if ($this->etreEnErreur()) {
55
			$codeHttp = $this->erreurs[0]['entete'];
54
			$enteteHttp->code = $this->erreurs[0]['entete'];
56
			$encodage = 'utf-8';
-
 
57
			$mime = 'text/html';
55
			$enteteHttp->mime = 'text/html';
58
		} else {
56
		} else {
59
			$codeHttp = $this->codeHttp;
-
 
60
			$encodage = $this->encodage;
57
			$enteteHttp->encodage = $this->resultatService->encodage;
61
			$mime = $this->mime;
58
			$enteteHttp->mime = $this->resultatService->mime;
62
		}
59
		}
63
		header("Content-Type: $mime; charset=$encodage");
60
		header("Content-Type: $enteteHttp->mime; charset=$enteteHttp->encodage");
64
		RestServeur::envoyerEnteteStatutHttp($codeHttp);
61
		RestServeur::envoyerEnteteStatutHttp($enteteHttp->code);
65
	}
62
	}
66
 
63
 
67
	private function etreEnErreur() {
64
	private function etreEnErreur() {
68
		$enErreur = false;
65
		$enErreur = false;
69
		if (count($this->erreurs) > 0) {
66
		if (count($this->erreurs) > 0) {
70
			$enErreur = true;
67
			$enErreur = true;
71
		}
68
		}
72
		return $enErreur;
69
		return $enErreur;
73
	}
70
	}
74
 
71
 
75
	private function transformerReponseCorpsSuivantMime() {
72
	private function transformerReponseCorpsSuivantMime() {
76
		switch ($this->mime) {
73
		switch ($this->resultatService->mime) {
77
			case 'application/json' :
74
			case 'application/json' :
78
				if (isset($_GET['callback'])) {
75
				if (isset($_GET['callback'])) {
79
					$contenu = $_GET['callback'].'('.json_encode($this->corps).');';
76
					$contenu = $_GET['callback'].'('.json_encode($this->resultatService->corps).');';
80
				} else {
77
				} else {
81
					$contenu = json_encode($this->corps);
78
					$contenu = json_encode($this->resultatService->corps);
82
				}
79
				}
83
				$this->corps = $contenu;
80
				$this->resultatService->corps = $contenu;
84
				break;
81
				break;
85
		}
82
		}
86
	}
83
	}
87
 
84
 
88
}
85
}
89
 
86
 
90
?>
87
?>