Version 3 — Juin 2012 — Cerdic
La boucle DATA
permet facilement d’aller chercher des données sur le web dans n’importe quel format (ou presque, un format non supporté nativement ne nécessite qu’une fonction de mise en forme pour pouvoir ensuite être lu).
Il devient ainsi facile de présenter et mettre en forme en HTML ces données distantes au sein de n’importe quelle page d’un site.
Cependant, lorsqu’il s’agit ensuite d’agréger de multiples données de sources différentes dans une même liste, cela devient plus compliqué car la boucle DATA
ne permet pas de merger des sources.
L’idée est de créer une couche intermédiaire de mashup dans un format pivot. Ce format intermédiaire pourrait ensuite être automatiquement transformé en flux RSS ou ATOM ou en d’autres formats JSON, XML, ou même HTML
Un connecteur est un squelette qui lit les données (externes) et les restitue dans le format mashup-data. C’est typiquement, mais pas exclusivement, un squelette qui utilise DATA
pour lire la source externe. Le squelette connecteur est rangé dans mashup-connecteurs/
L’idée est d’avoir un format simple a écrire dans le squelette de façon a se concentrer sur l’extraction des données, et sans avoir a se battre avec le spécificités techniques du format.
Pour cela YAML parait indiqué. Il est naturellement lisible, et permet de structurer a minima les données sans difficultés, a confirmer a l’usage
Chaque donnée extraite de la source serait ré-exprimée dans les champs suivants (inspirés de RSS) :
Les données sont une sous liste du jeu de donnée, lui même décrit par les informations :
L’API de sortie est une URL de la forme
/mashup.api/nomduconnecteur.format?arg1=value&...
avec :
Un connecteur peut être spécifique a un jeu de donnée, ou plus générique, utilisant alors les arguments fournis dans l’appel à mashup.api
pour déterminer sa source.
Par exemple un connecteur mashup-connecteurs/fromrss.html
prendrait un flux RSS fourni par l’argument « url » et le mettrait au format data-mashup. Tout flux RSS pourrait donc être alors reformaté par un appel à l’URL comme /mashup.api/fromrss.json?url=http://www.spip.net/?page=backend
qui reformate ici le flux RSS de http://www.spip.net au format JSON
Chaque flux de donnée peut ensuite être rediffusé naturellement sous n’importe quel des formats supporté par le plugin. En particulier, la rediffusion au format RSS permet de syndiquer les différentes sources de données dans SPIP, et de les agréger dans le site sous forme d’article syndiqué.
En seconde étape, le plugin ajouterait également une interface au backoffice pour administrer et syndiquer directement ses sources de données et construire son Mashup sans passer par les sites syndiqués.
Une source de donnée pourrait ainsi être utilisée pour créer automatiquement des articles à partir du format mashup-data avec les options de suivantes configurables source par source :
Le remplissage de l’article se ferait par une règle générique de conversion depuis mashup-data vers les champs de l’article, sauf si la donnée fournie par le connecteur contient un item « article » qui explicite le remplissage de l’article (au format html ou raccourcis SPIP)
<cadre >
-article :
- titre :
- descriptif :
- chapo : « ...
... »
- descriptif : « ... »
- chapo : « ... »
...
On peut ainsi construire un site complet de Mashup en y mixant du contenu rédactionnel propre ainsi que du contenu issu de différentes sources externes et hétérogènes.
Le plugin permet aussi de régler notamment le besoin fonctionnel de syndication d’un flux RSS en articles, sans stocker en doublon les données dans des articles syndiqués.