/trunk/api/rest/modules/0.5/Pages.php |
---|
New file |
0,0 → 1,60 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe d'exemple de service web du projet eFlore |
* Source des données : {NOM_DU_PROJET} {ADRESSE_WEB_DONNEES_DU_PROJET} |
* Paramètres du service : |
* - param1 : explication de l'utilisation du param1 |
* - param2 : explication de l'utilisation du param2 |
* Exemple : |
* http://localhost/{CODE_DU_PROJET}/services/0.1/Exemple?param1=val1¶m2=val2 |
* |
* @category php 5.2 |
* @package lion1906 |
* @author {PRENOM} {NOM}<{PRENOM}@tela-botanica.org> |
* @copyright Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class Pages extends Service { |
private $pageNom = null; |
private $retour = 'html'; |
public function consulter($ressources, $parametres) { |
$verifOk = $this->verifierParametres($parametres); |
if ($verifOk) { |
// Débuter ici le code du service |
$this->pageNom = $ressources[0]; |
$wiki = Registre::get('wikiApi'); |
$wiki->setPageCourrante($this->pageNom); |
$page = $wiki->LoadPage($ressources[0]); |
if ($this->retour == 'html') { |
$retour = $wiki->Format($page["body"], "wakka"); |
} else { |
$retour = $page["body"]; |
} |
return $retour; |
} else { |
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE); |
} |
} |
private function verifierParametres($parametres) { |
$ok = true; |
extract($parametres); |
if (isset($retour) ) { |
if (!preg_match('/^(wiki|html)$/', $retour)) { |
$message = "La valeur du paramètre 'retour' peut seulement prendre les valeurs : wiki et html."; |
$this->ajouterMessage($message); |
$ok = false; |
} else { |
$this->retour = $retour; |
} |
} |
return $ok; |
} |
} |
?> |
/trunk/api/rest/modules/0.5/Service.php |
---|
New file |
0,0 → 1,38 |
<?php |
abstract class Service extends RestService { |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de l'ENVOIE au NAVIGATEUR |
protected function formaterEnJsonp($donnees = null, $encodage = 'utf-8') { |
$contenu = $_GET['callback'].'('.json_encode($donnees).');'; |
return $this->preparerEnvoie($contenu, 'text/html', $encodage); |
} |
protected function formaterEnJson($donnees = null, $encodage = 'utf-8') { |
$contenu = json_encode($donnees); |
return $this->preparerEnvoie($contenu, 'application/json', $encodage); |
} |
private function preparerEnvoie($sortie = 'OK', $mime = 'text/html', $encodage = 'utf-8') { |
$this->envoyerEnteteContenu($encodage, $mime); |
return $sortie; |
} |
private function envoyerEnteteContenu($encodage, $mime) { |
if (!is_null($mime) && !is_null($encodage)) { |
header("Content-Type: $mime; charset=$encodage"); |
} else if (!is_null($mime) && is_null($encodage)) { |
header("Content-Type: $mime"); |
} |
} |
protected function envoyerAuth($message_accueil, $message_echec) { |
header('HTTP/1.0 401 Unauthorized'); |
header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"'); |
header('Content-type: text/plain; charset=UTF-8'); |
print $message_echec; |
exit(0); |
} |
} |
?> |
/trunk/api/rest/configurations/config.defaut.ini |
---|
New file |
0,0 → 1,35 |
; Encodage : UTF-8 |
; +------------------------------------------------------------------------------------------------------+ |
; URLs |
; Le séparateur utilisé par le framework lorsqu'il génère des URL pour séparer les arguments. |
; Pour remettre les valeurs par défaut, utitliser : "php:ini_get('arg_separator.output')" |
url_arg_separateur_sortie = "&" |
; +------------------------------------------------------------------------------------------------------+ |
; Info sur l'application |
info.nom = "Services web de WIKINI (Tela Botanica)" |
; Abréviation de l'application |
info.abr = "WS-WIKINI" |
; Version du Framework nécessaire au fonctionnement de cette application |
info.framework.version = 0.3 |
;Encodage de l'application |
encodage_appli = "UTF-8" |
; +------------------------------------------------------------------------------------------------------+ |
; Débogage |
; Indique si oui ou non on veut afficher le débogage. |
debogage = true |
; Indique sous quelle forme les méssages de débogage doivent s'afficher : |
; - "php:Debug::MODE_ECHO" : le message est affiché en utilisant echo |
; - "php:Debug::MODE_NOTICE" : le message est affiché en utilisant une erreur de type notice |
; - "php:Debug::MODE_ENTETE_HTTP" : les messages sont envoyés dans un entête HTTP "X_REST_DEBOGAGE". |
; - "Autre valeur" : les messages sont formatés puis retournés par la méthode de débogage utilisée. |
debogage_mode = "php:Debug::MODE_ENTETE_HTTP" |
; Indique si oui ou non on veut lancer le chronométrage |
chronometrage = false |
; +------------------------------------------------------------------------------------------------------+ |
; Spécifique aux services |
serveur.baseURL = "/yeswiki/api/rest/" |
serveur.baseAlternativeURL = "/yeswiki/api/rest/" |
/trunk/api/rest/framework.defaut.php |
---|
New file |
0,0 → 1,7 |
<?php |
// Inclusion du Framework |
// Renomer ce fichier en "framework.php" |
// Indiquer ci-dessous le chemin absolu vers le fichier Framework.php de la bonne version du Framework |
$chemin = '/home/'.$_ENV['USER'].'/www/commun/tbframework/0.3/Framework.php'; |
require_once $chemin; |
?> |
/trunk/api/rest/.htaccess |
---|
New file |
0,0 → 1,9 |
<files *.ini> |
order deny,allow |
deny from all |
</files> |
RewriteEngine On |
RewriteCond %{REQUEST_FILENAME} !-d |
RewriteCond %{REQUEST_FILENAME} !-f |
RewriteRule ^.*$ index.php/ |
/trunk/api/rest/bibliotheque/WikiApi.php |
---|
New file |
0,0 → 1,42 |
<?php |
class WikiApi { |
private $page = null; |
private $wikiObjet = null; |
private $cheminWiki = null; |
private $cheminApi = null; |
public function __construct($cheminWiki, $cheminApi) { |
$this->cheminWiki = $cheminWiki; |
$this->cheminApi = $cheminApi; |
} |
private function initialiser() { |
if ($this->page != null) { |
$_REQUEST['wiki'] = $this->page; |
} |
ini_set('include_path',ini_get('include_path').':'.$this->cheminWiki.':'); |
chdir($this->cheminWiki); |
include 'api.php'; |
$this->wikiObjet = $wiki; |
chdir($this->cheminApi); |
} |
public function setPageCourrante($page) { |
$this->page = $page; |
} |
public function __call($methodeNom, $arguments) { |
//echo $methodeNom."/"; |
if ($this->wikiObjet == null) { |
$this->initialiser(); |
} |
chdir($this->cheminWiki); |
$retour = call_user_func_array(array($this->wikiObjet, $methodeNom), $arguments); |
chdir($this->cheminApi); |
return $retour; |
} |
} |
?> |
/trunk/api/rest/index.php |
---|
New file |
0,0 → 1,55 |
<?php |
// Encodage : UTF-8 |
// Permet d'afficher le temps d'execution du service |
$temps_debut = (isset($_GET['chrono']) && $_GET['chrono'] == 1) ? microtime(true) : ''; |
// +-------------------------------------------------------------------------------------------------------------------+ |
/** |
* Serveur |
* |
* Description : initialise le chargement et l'exécution des services web. |
* |
//Auteur original : |
* @author auteur <aut@tela-botanica.org> |
* @copyright Tela-Botanica 1999-2008 |
* @licence GPL v3 & CeCILL v2 |
* @version $Id$ |
*/ |
// +-------------------------------------------------------------------------------------------------------------------+ |
// Le fichier autoload.inc.php du Framework de Tela Botanica doit être appelée avant tout autre chose dans l'application. |
// Sinon, rien ne sera chargé. |
// Chemin du fichier chargeant le framework requis |
$framework = dirname(__FILE__).DIRECTORY_SEPARATOR.'framework.php'; |
if (!file_exists($framework)) { |
$e = "Veuillez paramétrer l'emplacement et la version du Framework dans le fichier $framework"; |
trigger_error($e, E_USER_ERROR); |
} else { |
// Inclusion du Framework |
require_once $framework; |
// Ajout d'information concernant cette application |
Framework::setCheminAppli(__FILE__);// Obligatoire |
Framework::setInfoAppli(Config::get('info')); |
// Transformation de l'url du handler wikini en url pour le serveur REST |
// TODO : améliorer la gestion de l'url entre le wikini et le serveur REST |
//$_SERVER['REQUEST_URI'] = Config::get('serveur.baseURL').$_GET['api']; |
//$_SERVER['QUERY_STRING'] = $_GET['params'] ? $_GET['params'] : ''; |
// Création de l'objet Wiki qui sera transmis au service via le Registre |
Registre::set('cheminApi', getcwd()); |
Registre::set('cheminWiki', realpath(dirname(__FILE__).DS.'..'.DS.'..'.DS).DS); |
$wikiApi = new WikiApi(Registre::get('cheminWiki'), Registre::get('cheminApi')); |
Registre::set('wikiApi', $wikiApi); |
// Initialisation et lancement du serveur |
$Serveur = new RestServeur(); |
$Serveur->executer(); |
// Affiche le temps d'execution du service |
if (isset($_GET['chrono']) && $_GET['chrono'] == 1) { |
$temps_fin = microtime(true); |
echo 'Temps d\'execution : '.round($temps_fin - $temps_debut, 4); |
} |
} |
?> |