35,7 → 35,7 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @since 0.3 |
* @version $Id: RestServeur.php 413 2012-03-15 13:59:19Z jpm $ |
* @version $Id: RestServeur.php 421 2013-04-11 14:43:49Z jpm $ |
* @link /doc/framework/ |
*/ |
// TODO : gerer les retours : dans ce controleur : code retour et envoi ... |
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; |
|