Subversion Repositories Applications.wikini

Compare Revisions

Ignore whitespace Rev 28 → Rev 29

/trunk/tools/api/index.php
1,6 → 1,6
<?php
// Administration
// Vérification de sécurité
// V�rification de s�curit�
if (!defined("TOOLS_MANAGER")) {
die ("acc&egrave;s direct interdit");
}
/trunk/tools/api/rest/framework.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'].'/web/framework_3/framework/Framework.php';
require_once $chemin;
?>
/trunk/tools/api/rest/modules/0.5/Exemple.php
New file
0,0 → 1,51
<?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&param2=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 Exemple extends Service {
public function consulter($ressources, $parametres) {
$verifOk = $this->verifierParametres($parametres);
if ($verifOk) {
// Débuter ici le code du service
$retour = $this->formaterEnJson(array('info' => 'OK'));
//print_r($retour);
return $retour;
} else {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
}
}
private function verifierParametres($parametres) {
$ok = true;
extract($parametres);
if ($param1 != '' && !preg_match('/^val1$/', $param1)) {
$message = "La valeur du param1 n'est pas bonne. Seul 'val1' est accepté.";
$this->ajouterMessage($message);
$ok = false;
}
if ($param1 != '' && !preg_match('/^val1$/', $param2)) {
$message = "La valeur du param2 n'est pas bonne Seul 'val2' est accepté.";
$this->ajouterMessage($message);
$ok = false;
}
return $ok;
}
}
?>
/trunk/tools/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/tools/api/rest/configurations/config.ini
New file
0,0 → 1,29
; 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 si oui ou non on veut lancer le chronométrage
chronometrage = false
 
; +------------------------------------------------------------------------------------------------------+
; Spécifique aux services
serveur.baseURL = "/yeswiki/"
serveur.baseAlternativeURL = "/yeswiki/api/rest/"
/trunk/tools/api/rest/configurations/config.defaut.ini
New file
0,0 → 1,49
; 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 des données {NOM_DU_PROJET} (Tela Botanica)"
; Abréviation de l'application
info.abr = "WS-{CODE_DU_PROJET}"
; 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 si oui ou non on veut lancer le chronométrage
chronometrage = false
 
; +------------------------------------------------------------------------------------------------------+
; Spécifique aux services
serveur.baseURL = /{CODE_DU_PROJET}/
serveur.baseAlternativeURL = service:eflore:{CODE_DU_PROJET}/
 
+------------------------------------------------------------------------------------------------------+
; Paramètrage de la base de données.
; bdd_abstraction : abstraction de la base de données.
; bdd_protocole : Protocole de la base de données.
; bdd_serveur : Nom du serveur de bases de données.
; bdd_utilisateur : Nom de l'utilisateur de la base de données.
; bdd_mot_de_passe : Mot de passe de l'utilisateur de la base de données.
; bdd_nom : Nom de la base de données principale.
; bdd_encodage : Encodage de la base de données principale. Normalement le même que l'application mais au format base de
; données : voir ici : http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html
; et là: http://www.postgresql.org/docs/8.1/static/multibyte.html pour les correspondances
bdd_abstraction = pdo
bdd_protocole = mysql
bdd_serveur = localhost
bdd_utilisateur = "telabotap"
bdd_mot_de_passe = ""
bdd_nom = "tb_eflore"
bdd_encodage = "utf8"
/trunk/tools/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/tools/api/rest/index.php
New file
0,0 → 1,49
<?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'] : '';
// 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);
}
}
?>
/trunk/tools/api/handlers/page/api.php
New file
0,0 → 1,24
<?php
// declare(encoding='UTF-8');
/**
* Handler renvoyant au navigateur le contenu HTML de la page wiki.
*
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
//Vérification de sécurité
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) {
die ("Acc&eacute;s direct interdit");
}
$chemin = dirname(__FILE__).DIRECTORY_SEPARATOR.'../../rest/index.php';
if (!file_exists($chemin)) {
$e = "Veuillez paramétrer l'emplacement de l'api : $chemin";
} else {
include $chemin;
}
?>