Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 420 → Rev 421

/branches/v0.3-aleaume/framework/RestServeur.php
186,7 → 186,7
);
 
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private $parametres_obligatoires = array('debogage', 'debogage_mode', 'serveur.baseURL', 'chemin_modules');
private $parametres_obligatoires = array('debogage', 'debogage_mode', 'serveur.baseURL', 'chemin_services');
 
/**
* Analyse les données envoyées au serveur, enregistre la méthode HTTP utilisée pour appeler le serveur et parse
267,6 → 267,7
if ($this->verifierApiVersion($apiVersion)) {
$this->apiVersion = $apiVersion;
self::$config['chemins']['api'] = Config::get('chemin_modules').$this->apiVersion.DS;
self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
} else {
self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
$e = "Aucune version d'API n'a été spécifiée.\n".
370,7 → 371,7
if (class_exists($classe)) {
return null;
}
$chemins = array('', self::$config['chemins']['api']);
$chemins = array('', self::$config['chemins']['api'], self::$config['chemins']['api_bibliotheque']);
foreach ($chemins as $chemin) {
$chemin = $chemin.$classe.'.php';
if (file_exists($chemin)) {
397,6 → 398,17
case 'PUT':
$retour = $this->put();
break;
// Autorise l'accès depuis des serveurs tiers
/*
case 'OPTIONS':
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers:origin, content-type');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Content-Type: application/json');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Credentials: false');
break;
*/
default :
self::envoyerEnteteStatutHttp(self::HTTP_CODE_METHODE_NON_AUTORISE);
header('Allow: GET, POST, DELETE, PUT');
472,9 → 484,9
$Service = new $this->service(self::$config);
if (method_exists($Service, self::METHODE_PUT)) {
$methodePut = self::METHODE_PUT;
$retour = $Service->$methodePut($this->ressources, $paires);
if ($retour !== false) {
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
$retour = $Service->$methodePut($this->ressources, $paires);
if ($retour !== false) {
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
}
} else {
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
493,11 → 505,12
 
private function delete() {
if (count($this->ressources) != 0) {
$paires = $this->parserDonneesRequete();
if ($this->service != null) {
$Service = new $this->service(self::$config);
if (method_exists($Service, self::METHODE_DELETE)) {
$methodeDelete = self::METHODE_DELETE;
$info = $Service->$methodeDelete($this->ressources);
$info = $Service->$methodeDelete($this->ressources, $paires);
if ($info === true) {
$this->envoyerEnteteStatutHttp(self::HTTP_CODE_SUPPRESSION_OK);
} else if ($info === false) {
531,12 → 544,16
if ($this->requeteDonneesParsees != null) {
$donnees = $this->requeteDonneesParsees;
} else if ($this->requeteDonnees != null) {
$paires = explode('&', $this->requeteDonnees);
foreach ($paires as $paire) {
list($cle, $valeur) = explode('=', $paire);
$cle = (isset($cle)) ? trim(urldecode($cle)) : '';
$valeur = (isset($valeur)) ? trim(urldecode($valeur)) : '';
$donnees[$cle] = $valeur;
if (preg_match('/application\/json/', $_SERVER['CONTENT_TYPE'])) {
$donnees = json_decode($this->requeteDonnees, true);
} else {
$paires = explode('&', $this->requeteDonnees);
foreach ($paires as $paire) {
list($cle, $valeur) = explode('=', $paire);
$cle = (isset($cle)) ? trim(urldecode($cle)) : '';
$valeur = (isset($valeur)) ? trim(urldecode($valeur)) : '';
$donnees[$cle] = $valeur;
}
}
$this->requeteDonneesParsees = $donnees;
}
565,6 → 582,9
// Envoie des messages d'erreur et d'avertissement du serveur
$retour .= self::envoyerMessages();
 
// Autorise l'accès depuis des serveurs tiers
//header('Access-Control-Allow-Origin: *');
// Envoie sur la sortie standard le contenu de la réponse HTTP
print $retour;
 
638,4 → 658,4
}
}
}
?>
?>