| Line 89... |
Line 89... |
| 89 |
|
89 |
|
| 90 |
/** Code d'erreur HTTP 500 Internal Server Error.
|
90 |
/** Code d'erreur HTTP 500 Internal Server Error.
|
| 91 |
* L'utiliser quand le serveur ou un service soulève une erreur ou une exception. */
|
91 |
* L'utiliser quand le serveur ou un service soulève une erreur ou une exception. */
|
| Line 92... |
Line 92... |
| 92 |
const HTTP_CODE_ERREUR = '500';
|
92 |
const HTTP_CODE_ERREUR = '500';
|
| - |
|
93 |
|
| - |
|
94 |
/** Mettre à true pour activer l'affichage des messages d'erreurs et de débogage.
|
| - |
|
95 |
* @var boolean */
|
| - |
|
96 |
private $debogageActivation = false;
|
| 93 |
|
97 |
|
| 94 |
/** Les paramètres de configuration dynamiques internes au serveur.
|
98 |
/** Indiquer le mode de débogage à utiliser (@see Debug).
|
| Line 95... |
Line 99... |
| 95 |
* @var array */
|
99 |
* @var string */
|
| 96 |
private static $config = array();
|
100 |
private $debogageMode = '';
|
| 97 |
|
101 |
|
| Line 148... |
Line 152... |
| 148 |
/**
|
152 |
/**
|
| 149 |
* Analyse les données envoyées au serveur, enregistre la méthode HTTP utilisée pour appeler le serveur et parse
|
153 |
* Analyse les données envoyées au serveur, enregistre la méthode HTTP utilisée pour appeler le serveur et parse
|
| 150 |
* l'url appelée pour trouver le service demandé.
|
154 |
* l'url appelée pour trouver le service demandé.
|
| 151 |
*/
|
155 |
*/
|
| 152 |
public function __construct() {
|
156 |
public function __construct() {
|
| - |
|
157 |
$this->debogageActivation = Config::get('fw_debogage');
|
| - |
|
158 |
$this->debogageMode = Config::get('fw_debogage_mode');
|
| - |
|
159 |
|
| 153 |
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
|
160 |
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
|
| 154 |
$this->initialiserMethode();
|
161 |
$this->initialiserMethode();
|
| 155 |
$this->initialiserRequeteDonnees();
|
162 |
$this->initialiserRequeteDonnees();
|
| Line 156... |
Line 163... |
| 156 |
|
163 |
|
| Line 298... |
Line 305... |
| 298 |
* when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
|
305 |
* when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
|
| 299 |
* database contents.
|
306 |
* database contents.
|
| 300 |
*/
|
307 |
*/
|
| 301 |
private function get() {
|
308 |
private function get() {
|
| 302 |
if ($this->service != null) {
|
309 |
if ($this->service != null) {
|
| 303 |
$Service = new $this->service(self::$config);
|
310 |
$Service = new $this->service();
|
| 304 |
if (method_exists($Service, self::METHODE_GET)) {
|
311 |
if (method_exists($Service, self::METHODE_GET)) {
|
| 305 |
$methodeGet = self::METHODE_GET;
|
312 |
$methodeGet = self::METHODE_GET;
|
| 306 |
$Service->$methodeGet($this->ressources, $this->parametres);
|
313 |
$Service->$methodeGet($this->ressources, $this->parametres);
|
| 307 |
} else {
|
314 |
} else {
|
| 308 |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
|
315 |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
|
| Line 320... |
Line 327... |
| 320 |
$this->delete();
|
327 |
$this->delete();
|
| 321 |
} else if (count($this->ressources) == 0) {// Altnative à l'utilisation de PUT
|
328 |
} else if (count($this->ressources) == 0) {// Altnative à l'utilisation de PUT
|
| 322 |
$this->add();
|
329 |
$this->add();
|
| 323 |
} else {
|
330 |
} else {
|
| 324 |
if ($this->service != null) {
|
331 |
if ($this->service != null) {
|
| 325 |
$Service = new $this->service(self::$config);
|
332 |
$Service = new $this->service();
|
| 326 |
if (method_exists($Service, self::METHODE_POST)) {
|
333 |
if (method_exists($Service, self::METHODE_POST)) {
|
| 327 |
$methodePost = self::METHODE_POST;
|
334 |
$methodePost = self::METHODE_POST;
|
| 328 |
if ($Service->$methodePost($this->ressources, $paires)) {
|
335 |
if ($Service->$methodePost($this->ressources, $paires)) {
|
| 329 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
|
336 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
|
| 330 |
}
|
337 |
}
|
| Line 343... |
Line 350... |
| 343 |
private function put() {
|
350 |
private function put() {
|
| 344 |
$paires = $this->parserDonneesRequete();
|
351 |
$paires = $this->parserDonneesRequete();
|
| Line 345... |
Line 352... |
| 345 |
|
352 |
|
| 346 |
if (count($paires) != 0) {
|
353 |
if (count($paires) != 0) {
|
| 347 |
if ($this->service != null) {
|
354 |
if ($this->service != null) {
|
| 348 |
$Service = new $this->service(self::$config);
|
355 |
$Service = new $this->service();
|
| 349 |
if (method_exists($Service, self::METHODE_PUT)) {
|
356 |
if (method_exists($Service, self::METHODE_PUT)) {
|
| 350 |
$methodePut = self::METHODE_PUT;
|
357 |
$methodePut = self::METHODE_PUT;
|
| 351 |
if ($Service->$methodePut($this->ressources, $paires)) {
|
358 |
if ($Service->$methodePut($this->ressources, $paires)) {
|
| 352 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
|
359 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
|
| Line 363... |
Line 370... |
| 363 |
}
|
370 |
}
|
| Line 364... |
Line 371... |
| 364 |
|
371 |
|
| 365 |
private function delete() {
|
372 |
private function delete() {
|
| 366 |
if (count($this->ressources) != 0) {
|
373 |
if (count($this->ressources) != 0) {
|
| 367 |
if ($this->service != null) {
|
374 |
if ($this->service != null) {
|
| 368 |
$Service = new $this->service(self::$config);
|
375 |
$Service = new $this->service();
|
| 369 |
if (method_exists($Service, self::METHODE_DELETE)) {
|
376 |
if (method_exists($Service, self::METHODE_DELETE)) {
|
| 370 |
$methodeDelete = self::METHODE_DELETE;
|
377 |
$methodeDelete = self::METHODE_DELETE;
|
| 371 |
if ($Service->$methodeDelete($this->ressources, $paires)) {
|
378 |
if ($Service->$methodeDelete($this->ressources, $paires)) {
|
| 372 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_SUPPRESSION_OK);
|
379 |
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_SUPPRESSION_OK);
|
| Line 419... |
Line 426... |
| 419 |
header("HTTP/1.0 $code $txt", true);
|
426 |
header("HTTP/1.0 $code $txt", true);
|
| 420 |
}
|
427 |
}
|
| 421 |
}
|
428 |
}
|
| Line 422... |
Line 429... |
| 422 |
|
429 |
|
| 423 |
/**
|
430 |
/**
|
| - |
|
431 |
* Si des exceptions ou des erreurs sont soulevées par le serveur ou les services, elles sont gérées par cette méthode.
|
| - |
|
432 |
* Si nous avec des erreurs d'un type différent d'E_USER_NOTICE (réservé au débogage), elle sont renvoyées sur la sortie
|
| - |
|
433 |
* standard (via echo).
|
| - |
|
434 |
* Si seulement des erreurs de type E_USER_NOTICE, sont présentes, elle sont envoyées en fonction du contenu du paramètre de
|
| - |
|
435 |
* config "fw_debogage_mode" :
|
| - |
|
436 |
* - Debug::MODE_ECHO : les messages sont affichés en utilisant echo au moment où ils sont déclenchés dans le code.
|
| - |
|
437 |
* - Debug::MODE_NOTICE : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type
|
| - |
|
438 |
* E_USER_NOTICE et sont renvoyés sur la sortie standard à la fin de l'execution du programme (via echo).
|
| - |
|
439 |
* - Debug::MODE_ENTETE_HTTP : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type
|
| - |
|
440 |
* E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) à la fin de l'execution du programme.
|
| 424 |
* Si des exceptions ou des erreurs sont soulevées par le serveur ou les services, elles sont gérées par cette méthode.
|
441 |
* - Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).
|
| 425 |
*/
|
442 |
*/
|
| 426 |
public static function gererErreurs() {
|
443 |
public static function gererErreurs() {
|
| 427 |
if (Config::get('fw_debogage') && GestionnaireException::getExceptionsNbre() > 0) {
|
444 |
if ($this->debogageActivation && GestionnaireException::getExceptionsNbre() > 0) {
|
| 428 |
$exceptionsTriees = GestionnaireException::getExceptionsTriees();
|
445 |
$exceptionsTriees = GestionnaireException::getExceptionsTriees();
|
| - |
|
446 |
reset($exceptionsTriees);
|
| 429 |
reset($exceptionsTriees);
|
447 |
$debogageSeulement = true;
|
| 430 |
if (! (count($exceptionsTriees) == 1 && key($exceptionsTriees) == E_USER_NOTICE)) {
|
448 |
if (! (count($exceptionsTriees) == 1 && key($exceptionsTriees) == E_USER_NOTICE)) {
|
| - |
|
449 |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR);
|
| 431 |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR);
|
450 |
$debogageSeulement = false;
|
| - |
|
451 |
}
|
| - |
|
452 |
|
| 432 |
}
|
453 |
$exceptionsFormatees = array();
|
| 433 |
foreach ($exceptionsTriees as $exceptions) {
|
454 |
foreach ($exceptionsTriees as $exceptions) {
|
| - |
|
455 |
foreach ($exceptions as $e) {
|
| - |
|
456 |
if ($debogageSeulement && $this->debogageMode == Debug::MODE_ENTETE_HTTP) {
|
| - |
|
457 |
$exceptionsFormatees[] = GestionnaireException::formaterExceptionTxt($e);
|
| 434 |
foreach ($exceptions as $e) {
|
458 |
} else {
|
| - |
|
459 |
echo GestionnaireException::formaterExceptionXhtml($e);
|
| 435 |
echo GestionnaireException::formaterExceptionXhtml($e);
|
460 |
}
|
| 436 |
}
|
461 |
}
|
| - |
|
462 |
}
|
| - |
|
463 |
|
| - |
|
464 |
if ($debogageSeulement && $this->debogageMode == Debug::MODE_ENTETE_HTTP) {
|
| - |
|
465 |
header('X_REST_DEBOGAGE_MESSAGES: '.json_encode($exceptionsFormatees));
|
| 437 |
}
|
466 |
}
|
| 438 |
}
|
467 |
}
|
| 439 |
}
|
468 |
}
|
| 440 |
}
|
469 |
}
|
| 441 |
?>
|
470 |
?>
|