Ajouter la prise en compte de méthodes xml-rpc
Afin d’ajouter des méthodes spécifiques au serveur xml-rpc, le plugin dispose d’un pipeline nommé xmlrpc_methodes
qui est un tableau associatif bidimensionnel dont la clé est le nom de la méthode ajoutée et la valeur la fonction à appeler par cette méthode.
Exemples :
Le plugin gis2 utilise ce pipeline pour ajouter ses propres méthodes spécifiques à l’objet GIS. Par exemple :
- /**
- * Insertion dans le pipeline xmlrpc_methodes (xmlrpc)
- * Ajout de méthodes xml-rpc spécifiques à GIS
- *
- * @param array $flux : un array des methodes déjà présentes, fonctionnant sous la forme :
- * -* clé = nom de la méthode;
- * -* valeur = le nom de la fonction à appeler;
- * @return array $flux : l'array complété avec nos nouvelles méthodes
- */
- function gis_xmlrpc_methodes($flux){
- $flux['spip.liste_gis'] = 'spip_liste_gis';
- $flux['spip.lire_gis'] = 'spip_lire_gis';
- return $flux;
- }
Le plugin XML-RPC API MetaWebLog utilise ce pipeline pour ajouter les méthodes MetaWeblog. Par exemple :
- /**
- * Insertion dans le pipeline xmlrpc_methodes (xmlrpc)
- * On ajoute les méthodes spécifiques à MetaWeblog
- *
- * @param array $flux : un array des methodes déjà présentes, fonctionnant sous la forme :
- * -* clé = nom de la méthode;
- * -* valeur = le nom de la fonction à appeler;
- * @return array $flux : l'array complété avec nos nouvelles méthodes
- */
- function xmlrpc_mw_xmlrpc_methodes($flux){
- /**
- * Ajout de MetaWebLog API
- */
- $flux['metaWeblog.getRecentPosts'] = 'mw_getRecentPosts';
- $flux['metaWeblog.getCategories'] = 'mw_getCategories';
- return $flux;
- }
Ajouter la prise en compte de fonctions appelées par les méthodes
Après avoir ajouté l’existence de vos méthodes dans le pipeline précédent, il faut déclarer les fonctions adéquates afin de pouvoir les utiliser.
Pour ce faire on utilise le pipeline
Exemples :
Dans le plugin GIS, on crée un fichier inc/gis_xmlrpc.php
que l’on inclue, afin d’éviter d’avoir un fichiers de pipelines très long. Par exemple :
- /**
- * Insertion dans le pipeline xmlrpc_server_class (xmlrpc)
- * Ajout de fonctions spécifiques utilisés par le serveur xml-rpc
- */
- function gis_xmlrpc_server_class($flux){
- include_spip('inc/gis_xmlrpc');
- return $flux;
- }
Dans le plugin XML-RPC API MetaWebLog, on procède de la même manière en créant le fichier inc/xmlrpc_mv_xmlrpc.php
. Par exemple :
- /**
- * Insertion dans le pipeline xmlrpc_server_class (xmlrpc)
- * Ajout de fonctions spécifiques utilisés par le serveur xml-rpc
- */
- function xmlrpc_mw_xmlrpc_server_class($flux){
- include_spip('inc/xmlrpc_mv_xmlrpc');
- return $flux;
- }
Dans ces fichiers à inclure, on ajoute donc les fonctions correspondant aux méthodes. Dans le plugin XML-RPC MEtaWeblog cela donnera quelque chose comme cela (pour les deux méthodes explicitées au dessus) :
- <?php
- /**
- * Récupère la liste des posts récents
- *
- * @param array $args Method parameters.
- * -* $args[0] => login
- * -* $args[1] => password
- * -* $args[2] => limite
- * @return array
- */
- function mw_getRecentPosts($args) {
- /**
- * Code de la fonction....
- */
- }
- /**
- * On liste les rubriques dans lesquelles l'utilisateur peut créer des articles
- *
- * @param array $args Method parameters.
- * @return array
- */
- function mw_getCategories($args) {
- /**
- * Code de la fonction....
- */
- }
- ?>
Modifier le contenu des résultats des méthodes de base
Chaque appel de méthode passe toujours par deux pipelines, le premier, avant l’appel xmlrpc_pre_methode
et le second après l’exécution de la fonction de la méthode xmlrpc_post_methode
.
Il est donc possible en passant par le premier pipeline de :
- rajouter certains arguments ;
- faire certaines vérfications et renvoyer une erreur si besoin ;
- ...
Par le second pipeline :
- ajouter des post-traitements à la sortie de la fonction ;
- renvoyer une erreur si besoin ;
Ajouter la prise en compte d’une API complète d’écriture dans le RSD du site
Le serveur xml-rpc ajoute dans l’entête du site un link
vers un fichier RSD permettant à des logiciels externes de savoir quelles APIs peuvent être utilisées pour écrire sur le site.
Le code ajouté dans l’entête de chaque page du site est du type :
- <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.monsite.org/spip.php?action=xmlrpc_serveur&rsd=rsd" />
Il est possible d’ajouter la prise en compte de nouvelles APIs d’écriture en utilisant le pipeline xmlrpc_apis
.
Le plugin XML-RPC MetaWeblog ajoute l’API MetaWeblog dans ce fichier de cette manière :
- /**
- * Insertion dans le pipeline xmlrpc_apis (xmlrpc)
- * On ajoute la prise en compte de l'API metaWeblog
- *
- * @param $flux : le contexte du pipeline, un array des APIs disponibles
- * @return $flux : le contexte du pipeline auquel on a ajouté nos nouvelles APIs
- */
- function xmlrpc_mw_xmlrpc_apis($flux){
- $flux[] = 'metaWeblog';
- return $flux;
- }
Si plusieurs APIs d’écriture sont présentes, il est possible de choisir dans la configuration du plugin xmlrpc (facultatif) l’API d’écriture préférée.
Il est également possible depuis la configuration du plugin xmlrpc de ne pas activer ce fichier RSD, il ne s’insèrera donc pas dans l’entête des pages.