Accueil > Documentation incomplète > Les plugins développés pour MédiaSPIP > XMLRPC : une API xml-rpc pour SPIP > XML-RPC : étendre le serveur

XML-RPC : étendre le serveur

Le plugin xml-rpc propose plusieurs méthode de base qu’il est possible d’étendre facilement dans d’autres plugins gràce à l’utilisation de divers pipelines définis dans le serveur.

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 :

  1. /**
  2.  * Insertion dans le pipeline xmlrpc_methodes (xmlrpc)
  3.  * Ajout de méthodes xml-rpc spécifiques à GIS
  4.  *
  5.  * @param array $flux : un array des methodes déjà présentes, fonctionnant sous la forme :
  6.  * -* clé = nom de la méthode;
  7.  * -* valeur = le nom de la fonction à appeler;
  8.  * @return array $flux : l'array complété avec nos nouvelles méthodes
  9.  */
  10. function gis_xmlrpc_methodes($flux){
  11.     $flux['spip.liste_gis'] = 'spip_liste_gis';
  12.     $flux['spip.lire_gis'] = 'spip_lire_gis';
  13.     return $flux;
  14. }

Télécharger

Le plugin XML-RPC API MetaWebLog utilise ce pipeline pour ajouter les méthodes MetaWeblog. Par exemple :

  1. /**
  2.  * Insertion dans le pipeline xmlrpc_methodes (xmlrpc)
  3.  * On ajoute les méthodes spécifiques à MetaWeblog
  4.  *
  5.  * @param array $flux : un array des methodes déjà présentes, fonctionnant sous la forme :
  6.  * -* clé = nom de la méthode;
  7.  * -* valeur = le nom de la fonction à appeler;
  8.  * @return array $flux : l'array complété avec nos nouvelles méthodes
  9.  */
  10. function xmlrpc_mw_xmlrpc_methodes($flux){
  11.     /**
  12.      * Ajout de MetaWebLog API
  13.      */
  14.     $flux['metaWeblog.getRecentPosts'] = 'mw_getRecentPosts';
  15.     $flux['metaWeblog.getCategories'] = 'mw_getCategories';
  16.  
  17.     return $flux;
  18. }

Télécharger

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 :

  1. /**
  2.  * Insertion dans le pipeline xmlrpc_server_class (xmlrpc)
  3.  * Ajout de fonctions spécifiques utilisés par le serveur xml-rpc
  4.  */
  5. function gis_xmlrpc_server_class($flux){
  6.     include_spip('inc/gis_xmlrpc');
  7.     return $flux;
  8. }

Télécharger

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 :

  1. /**
  2.  * Insertion dans le pipeline xmlrpc_server_class (xmlrpc)
  3.  * Ajout de fonctions spécifiques utilisés par le serveur xml-rpc
  4.  */
  5. function xmlrpc_mw_xmlrpc_server_class($flux){
  6.     include_spip('inc/xmlrpc_mv_xmlrpc');
  7.     return $flux;
  8. }

Télécharger

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) :

  1. <?php
  2.  
  3. /**
  4.  * Récupère la liste des posts récents
  5.  *
  6.  * @param array $args Method parameters.
  7.  * -* $args[0] => login
  8.  * -* $args[1] => password
  9.  * -* $args[2] => limite
  10.  * @return array
  11.  */
  12. function mw_getRecentPosts($args) {
  13.     /**
  14.      * Code de la fonction....
  15.      */
  16. }
  17.  
  18. /**
  19.  * On liste les rubriques dans lesquelles l'utilisateur peut créer des articles
  20.  *
  21.  * @param array $args Method parameters.
  22.  * @return array
  23.  */
  24. function mw_getCategories($args) {
  25.     /**
  26.      * Code de la fonction....
  27.      */
  28. }
  29. ?>

Télécharger

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 :

  1. <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 :

  1. /**
  2.  * Insertion dans le pipeline xmlrpc_apis (xmlrpc)
  3.  * On ajoute la prise en compte de l'API metaWeblog
  4.  *
  5.  * @param $flux : le contexte du pipeline, un array des APIs disponibles
  6.  * @return $flux : le contexte du pipeline auquel on a ajouté nos nouvelles APIs
  7.  */
  8. function xmlrpc_mw_xmlrpc_apis($flux){
  9.     $flux[] = 'metaWeblog';
  10.    
  11.     return $flux;
  12. }

Télécharger

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.

  • Auteur :
  • Publié le :
  • Mis à jour : 27/06/13
  • Révisé par : 1 anonyme

Aucun commentaire


Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document