Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 381 → Rev 382

/branches/v0.3-aleaume/framework/RestServeur.php
140,11 → 140,27
private $ressources = array();
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
* Les données proviennent de $_GET où les caractères suivant ont été transformé en '_' undescrore dans les clés :
* - chr(32) ( ) (space)
* - chr(46) (.) (dot)
* - chr(91) ([) (open square bracket)
* - chr(128) - chr(159) (various)
* En outre nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
* @see parametresBruts
* @var array
*/
private $parametres = array();
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
* Les données proviennent de $_SERVER['QUERY_STRING'] et n'ont subies aucune transformation au niveau des clés.
* Cependant nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
* @see parametres
* @var array
*/
private $parametresBruts = array();
/** Tableau contenant les paramètres de configuration du serveur.
* @var array
*/
306,20 → 322,39
}
private function initialiserParametres() {
$this->nettoyerGet();
$this->parametres = $_GET;
$this->parametres = $this->recupererParametresGet();
$this->parametresBruts = $this->recupererParametresBruts();
}
private function nettoyerGet() {
private function recupererParametresGet() {
$_GET = $this->nettoyerParametres($_GET);
return $_GET;
}
private function nettoyerParametres(Array $parametres) {
// Pas besoin d'utiliser urldecode car déjà fait par php pour les clés et valeur de $_GET
if (isset($_GET) && count($_GET) > 0) {
foreach ($_GET as $cle => $valeur) {
if (isset($parametres) && count($parametres) > 0) {
foreach ($parametres as $cle => $valeur) {
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur));
$parametres[$cle] = strip_tags(str_replace($verifier, '', $valeur));
}
}
return $parametres;
}
private function recupererParametresBruts() {
$paires = explode('&', $_SERVER['QUERY_STRING']);
$parametres_bruts = array();
foreach ($paires as $paire) {
$nv = explode('=', $paire);
$nom = urldecode($nv[0]);
$valeur = urldecode($nv[1]);
$parametres_bruts[$nom] = $valeur;
}
$parametres_bruts = $this->nettoyerParametres($parametres_bruts);
return $parametres_bruts;
}
/**
* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
388,7 → 423,8
$Service = new $this->service(self::$config);
if (method_exists($Service, self::METHODE_GET)) {
$methodeGet = self::METHODE_GET;
$retour = $Service->$methodeGet($this->ressources, $this->parametres);
$parametres = $Service->utiliserParametresBruts() ? $this->parametresBruts : $this->parametres;
$retour = $Service->$methodeGet($this->ressources, $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 ".