Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 365 → Rev 366

/branches/v0.3-aleaume/framework/RestServeur.php
353,9 → 353,10
* Execute la requête.
*/
public function executer() {
$retour = '';
switch ($this->methode) {
case 'GET':
$this->get();
$retour = $this->get();
break;
case 'POST':
$this->post();
364,7 → 365,7
$this->delete();
break;
case 'PUT':
$this->put();
$retour = $this->put();
break;
default :
self::envoyerEnteteStatutHttp(self::HTTP_CODE_METHODE_NON_AUTORISE);
373,7 → 374,7
"Consulter l'entête Allow pour connaître les méthodes autorisées.";
self::ajouterMessage($e);
}
$this->cloreAccesServeur();
$this->cloreAccesServeur($retour);
}
 
/**
382,11 → 383,12
* database contents.
*/
private function get() {
$retour = '';
if ($this->service != null) {
$Service = new $this->service(self::$config);
if (method_exists($Service, self::METHODE_GET)) {
$methodeGet = self::METHODE_GET;
$Service->$methodeGet($this->ressources, $this->parametres);
$retour = $Service->$methodeGet($this->ressources, $this->parametres);
} else {
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
394,6 → 396,7
self::ajouterMessage($e);
}
}
return $retour;
}
 
private function post() {
400,9 → 403,9
$paires = $this->parserDonneesRequete();
if (count($paires) != 0) {
if (isset($paires['action']) && $paires['action'] == 'DELETE') {// Altnative à l'utilisation de DELETE
$this->delete();
$retour = $this->delete();
} else if (count($this->ressources) == 0) {// Altnative à l'utilisation de PUT
$this->put();
$retour = $this->put();
} else {
if ($this->service != null) {
$Service = new $this->service(self::$config);
520,11 → 523,16
/**
* Termine l'accès au serveur après envoir envoyer les messages.
*/
private static function cloreAccesServeur() {
private static function cloreAccesServeur($retour) {
// Gestion des exceptions et erreurs générées par les services
self::gererErreurs();
$retour .= self::gererErreurs();
// Envoie des messages d'erreur et d'avertissement du serveur
self::envoyerMessages();
$retour .= self::envoyerMessages();
// Envoie sur la sortie standard le contenu de la réponse HTTP
print $retour;
// Nous terminons le script
exit(0);
}
543,7 → 551,9
* - Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).
*/
public static function gererErreurs() {
$retour = '';
if (self::$debogageActivation && GestionnaireException::getExceptionsNbre() > 0) {
$exceptionsTriees = GestionnaireException::getExceptionsTriees();
reset($exceptionsTriees);
$debogageSeulement = true;
556,9 → 566,9
foreach ($exceptionsTriees as $exceptions) {
foreach ($exceptions as $e) {
if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
$exceptionsFormatees[] = GestionnaireException::formaterExceptionTxt($e);
$exceptionsFormatees[] = GestionnaireException::formaterExceptionDebug($e);
} else {
echo GestionnaireException::formaterExceptionXhtml($e);
$retour = GestionnaireException::formaterExceptionXhtml($e);
}
}
}
567,6 → 577,7
header('X_REST_DEBOGAGE_MESSAGES: '.json_encode($exceptionsFormatees));
}
}
return $retour;
}
588,7 → 599,7
private static function envoyerMessages() {
if (count(self::$messages) > 0) {
header("Content-Type: text/plain; charset=utf-8");
print implode("\n", self::$messages);
return implode("\n", self::$messages);
}
}
}