Automatisez la publication de vos événements sur projet-ode - 2nde partie
7-05-2014
Nous avons vu dans la 1ère partie comment exporter automatiquement vos événements vers le projet-ode. Nous allons aborder aujourd’hui les détails pratiques qui permettent de gérer proprement la synchronisation entre vos événements enregistrés dans votre base de données et ceux enregistrés dans la base de données du projet-ode.
Modifier un événement
Quand on enregistre un événement dans la DB du projet-ode, l’API répond en envoyant l’identifiant de cet événement dans sa propre DB. Ça tombe bien, cela va nous permettre d’enregister de votre coté la correspondance entre un événement dans votre DB et celui enregistré dans la DB du projet-ode.
Il faudra donc créer une table dans votre base de données –pour les besoins de la démonstration appelons-là : Table_projet_ode
– qui comportera 3 colonnes :
- l’identifiant d’1 événement dans votre DB
ID_Event
- l’identifiant de cet événement dans la DB du projet-ode
ID_Ode
- la date de dernier enregistrement de cet événement dans votre DB
LastMod
Ce dernier champ LastMod
sera très utile pour vous permettre d’identifier les événements qui ont été modifiés depuis la publication sur le projet-ode et de les mettre à jour de même.
Le principe : on vérifie régulièrement que la colonne LastMod
de Table_projet_ode
est la même que celle de l’événement stocké dans votre DB. Si ce n’est pas le cas on appelle l’API du projet-ode pour mettre à jour.
Comment ?
C’est très simple : au lieu d’utiliser la commande post
que nous avons vue ici, on utilise la commande put
—qui veut dire, vous l’avez compris, qu’on va modifier un événement, il faut donc dire lequel. Vous avez 5 secondes pour répondre … oui, c’est ça, on va donner l’identifiant ID_Ode
. Plus exactement, on ajoutera l'identifiant à l'url appelé. Le code sera donc : [1].
Vous noterez qu’il faut absolument renvoyer tous les champs précédemment enregistrés sinon ils seront perdus. Pas d’inquiétude, le code fait ça très bien !
Edit du 12/5 : Si l'envoi s'est bien passé l'API renverra le statut updated
et nous mettrons à jour la colonne LastMod
correspondant dans la table Table_projet_ode
.
Catégoriser
Une des spécifications du projet-ode est de pouvoir associer des catégories et des tags à un événement. J’ai bien évidemment testé pour vous et malheureusement, envoyer ces champs à l’API provoque une erreur :(
J’ai prévenu le développeur qui m’a confirmé que c’était un bug connu qu’il corrigera (je cite) “dès qu’il le pourra”. Je suggère une récrimination collective pour booster sa motivation :D
Pour récapituler
Nous avons vu comment on pouvait enregistrer un événement dans le projet-ode puis le modifier si nécessaire.
Enfin une solution pour remédier aux dates qui changent. Et un argument de plus pour convaincre vos partenaires d'utiliser le projet ode.
Dans la dernière partie nous aborderons les principaux points à prendre en compte pour implémenter cette solution sur vos sites web.
Code pour modifier un événement ↑
use Buzz\Client\Curl;
$api_url = 'https://projet-ode.org/api/v1/events';
$api_key = 'Token ma_cle_api';
$client = new Curl();
$client->setVerifyPeer(false);
$browser = new Buzz\Browser($client);
$response = $browser->put(
$api_url . '/identifiant_event_ode',
array(
'Authorization' => $api_key,
'Content-Type' => 'application/vnd.collection+json'
),'
{"template":
{ "data":
[
{"name": "title", "value": "un titre"},
{"name": "organiser", "value": "lereacteur.info"},
{"name": "start_time", "value": "2014-04-25T00:00:00+01:00"},
{"name": "end_time", "value": "2014-04-26T00:00:00+01:00"}
]
}
}
');
echo $response->getContent();
echo $response->getStatusCode();