Subversion Repositories Applications.framework

Rev

Rev 360 | Rev 372 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 360 Rev 365
Line 380... Line 380...
380
	 * Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element
380
	 * Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element
381
	 * when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
381
	 * when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
382
	 * database contents.
382
	 * database contents.
383
	 */
383
	 */
384
	private function get() {
384
	private function get() {
-
 
385
		$retour = '';
385
		if ($this->service != null) {
386
		if ($this->service != null) {
386
			$Service = new $this->service(self::$config);
387
			$Service = new $this->service(self::$config);
387
			if (method_exists($Service, self::METHODE_GET)) {
388
			if (method_exists($Service, self::METHODE_GET)) {
388
				$methodeGet = self::METHODE_GET;
389
				$methodeGet = self::METHODE_GET;
389
				$Service->$methodeGet($this->ressources, $this->parametres);
390
				$retour = $Service->$methodeGet($this->ressources, $this->parametres);
390
			} else {
391
			} else {
391
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
392
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
392
				$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
393
				$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
393
					"lors de l'appel du service via la méthode HTTP GET.";
394
					"lors de l'appel du service via la méthode HTTP GET.";
394
				self::ajouterMessage($e);
395
				self::ajouterMessage($e);
395
			}
396
			}
396
		}
397
		}
-
 
398
		return $retour;
397
	}
399
	}
Line 398... Line 400...
398
 
400
 
399
	private function post() {
401
	private function post() {
400
		$paires = $this->parserDonneesRequete();
402
		$paires = $this->parserDonneesRequete();
Line 427... Line 429...
427
			self::ajouterMessage($e);
429
			self::ajouterMessage($e);
428
		}
430
		}
429
	}
431
	}
Line 430... Line 432...
430
 
432
 
-
 
433
	private function put() {
431
	private function put() {
434
		$retour = '';
432
		$paires = $this->parserDonneesRequete();
435
		$paires = $this->parserDonneesRequete();
433
		if (count($paires) != 0) {
436
		if (count($paires) != 0) {
434
			if ($this->service != null) {
437
			if ($this->service != null) {
435
				$Service = new $this->service(self::$config);
438
				$Service = new $this->service(self::$config);
436
				if (method_exists($Service, self::METHODE_PUT)) {
439
				if (method_exists($Service, self::METHODE_PUT)) {
437
					$methodePut = self::METHODE_PUT;
440
					$methodePut = self::METHODE_PUT;
438
					$info = $Service->$methodePut($this->ressources, $paires);
441
					$retour = $Service->$methodePut($this->ressources, $paires);
439
					if ($info === true) {
442
					if ($retour !== false) {
440
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
443
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
441
					}
444
					}
442
				} else {
445
				} else {
443
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
446
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
Line 449... Line 452...
449
		} else {
452
		} else {
450
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
453
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
451
			$e = "Il est nécessaire de fournir du contenu dans le corps de la requête pour créer une nouvelle ressource.";
454
			$e = "Il est nécessaire de fournir du contenu dans le corps de la requête pour créer une nouvelle ressource.";
452
			self::ajouterMessage($e);
455
			self::ajouterMessage($e);
453
		}
456
		}
-
 
457
		return $retour;
454
	}
458
	}
Line 455... Line 459...
455
 
459
 
456
	private function delete() {
460
	private function delete() {
457
		if (count($this->ressources) != 0) {
461
		if (count($this->ressources) != 0) {
Line 518... Line 522...
518
	}
522
	}
Line 519... Line 523...
519
	
523
	
520
	/**
524
	/**
521
	 * Termine l'accès au serveur après envoir envoyer les messages.
525
	 * Termine l'accès au serveur après envoir envoyer les messages.
522
	 */
526
	 */
523
	private static function cloreAccesServeur() {
527
	private static function cloreAccesServeur($retour) {
524
		// 	Gestion des exceptions et erreurs générées par les services
528
		// 	Gestion des exceptions et erreurs générées par les services
-
 
529
		$retour .= self::gererErreurs();
525
		self::gererErreurs();
530
		
526
		// Envoie des messages d'erreur et d'avertissement du serveur
531
		// Envoie des messages d'erreur et d'avertissement du serveur
-
 
532
		$retour .= self::envoyerMessages();
-
 
533
		
-
 
534
		// Envoie sur la sortie standard le contenu de la réponse HTTP
-
 
535
		print $retour;
527
		self::envoyerMessages();
536
		
528
		// Nous terminons le script
537
		// Nous terminons le script
529
		exit(0);
538
		exit(0);
Line 530... Line 539...
530
	}
539
	}
Line 541... Line 550...
541
	 *  - Debug::MODE_ENTETE_HTTP : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type 
550
	 *  - Debug::MODE_ENTETE_HTTP : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type 
542
	 *  E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) à la fin de l'execution du programme.
551
	 *  E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) à la fin de l'execution du programme.
543
	 *  - Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).
552
	 *  - Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).
544
	 */
553
	 */
545
	public static function gererErreurs() {
554
	public static function gererErreurs() {
-
 
555
		$retour = '';
546
		if (self::$debogageActivation && GestionnaireException::getExceptionsNbre() > 0) {
556
		if (self::$debogageActivation && GestionnaireException::getExceptionsNbre() > 0) {
-
 
557
			
547
			$exceptionsTriees = GestionnaireException::getExceptionsTriees();
558
			$exceptionsTriees = GestionnaireException::getExceptionsTriees();
548
			reset($exceptionsTriees);
559
			reset($exceptionsTriees);
549
			$debogageSeulement = true;
560
			$debogageSeulement = true;
550
			if (array_key_exists(E_USER_ERROR, $exceptionsTriees)) {
561
			if (array_key_exists(E_USER_ERROR, $exceptionsTriees)) {
551
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR);
562
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR);
Line 554... Line 565...
554
			
565
			
555
			$exceptionsFormatees = array();
566
			$exceptionsFormatees = array();
556
			foreach ($exceptionsTriees as $exceptions) {
567
			foreach ($exceptionsTriees as $exceptions) {
557
				foreach ($exceptions as $e) {
568
				foreach ($exceptions as $e) {
558
					if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
569
					if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
559
						$exceptionsFormatees[] = GestionnaireException::formaterExceptionTxt($e);
570
						$exceptionsFormatees[] = GestionnaireException::formaterExceptionDebug($e);
560
					} else {
571
					} else {
561
						echo GestionnaireException::formaterExceptionXhtml($e);
572
						$retour = GestionnaireException::formaterExceptionXhtml($e);
562
					}
573
					}
563
				}
574
				}
Line 564... Line 575...
564
			}
575
			}
565
			
576
			
566
			if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
577
			if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
567
				header('X_REST_DEBOGAGE_MESSAGES: '.json_encode($exceptionsFormatees));
578
				header('X_REST_DEBOGAGE_MESSAGES: '.json_encode($exceptionsFormatees));
-
 
579
			}
568
			}
580
		}
Line 569... Line 581...
569
		}
581
		return $retour;
570
	}
582
	}
Line 586... Line 598...
586
	 * Le format d'envoie est text/plain encodé en UTF-8.
598
	 * Le format d'envoie est text/plain encodé en UTF-8.
587
	 */
599
	 */
588
	private static function envoyerMessages() {
600
	private static function envoyerMessages() {
589
		if (count(self::$messages) > 0) {
601
		if (count(self::$messages) > 0) {
590
			header("Content-Type: text/plain; charset=utf-8");
602
			header("Content-Type: text/plain; charset=utf-8");
591
			print implode("\n", self::$messages);
603
			return implode("\n", self::$messages);
592
		}
604
		}
593
	}
605
	}
594
}
606
}
595
?>
607
?>
596
608