/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ès direct interdit"); |
} |
/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¶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 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/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/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é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; |
} |
?> |