Documentation du Métamoteur

Introduction

Ce document décrit les interactions disponibles avec le métamoteur de partage des conditions de courses en montagne sur le Web. L'application n'est pas un site web classique mais un web service doté de fonctions d'insertion de l'information (« push » - réservé aux partenaires du service) et d'interrogation / consommation du service (« query » - ouvert au public).

Le service est accessible à l'adresse http://meta.camptocamp.org/

La page d'accueil accessible à cette adresse comporte un formulaire permettant d'obtenir facilement l'URL correspondant à une recherche selon les critères de son choix.

Une version "bac à sable" est également disponible pour les tests à l'adresse http://meta.camptocamp.org:8080/

PUSH (enregistrement)

L'URL de base de cette fonction est : http://meta.camptocamp.org/outings/push

URL de base "bac à sable" : http://meta.camptocamp.org:8080/outings/push

L'application prend alors en paramètre 3 inputs (méthode POST) :

  • metaengine_user_id: id numérique du partenaire (préalablement configuré dans les fichiers de configuration sur le serveur)
  • metaengine_user_key: clé associée au partenaire, sha1 d'une string associant le nom du partenaire et un mot clé (spécifiés dans les fichiers de configuration sur le serveur)
  • metaengine_xml: un document XML, basé sur la structure définie par le fichier xml schema disponible à l'adresse http://meta.camptocamp.org/metaengineschema.xsd

Création

3 cas sont possibles et sont décrits ci-dessous. A noter que l'ordre des éléments XML est important.

Avec coordonnées lat/lon

Exemple de document XML transmis :

<?xml version="1.0" encoding="UTF-8"?>
<outings xmlns="http://meta.camptocamp.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meta.camptocamp.org/metaengineschema.xsd">
    <outing>
        <name>Mont Blanc: Par les 3 Mont-Blanc</name>
        <geom>40.0446,-76.4131</geom>
        <elevation>4300</elevation>
        <date>2007-08-06</date>
        <lang>fr</lang>
        <activity>1</activity>
        <activity>5</activity>
        <activity>6</activity>
        <rating>très dur</rating>
        <facing>4</facing>
        <original_outing_id>42</original_outing_id>
        <url>http://example.com/sortie42.html</url>
    </outing>
</outings>

Les éléments XML à utiliser sont :

  • <name> nom de la sortie. obligatoire
  • <geom> coordonnées lat/lon du sommet, séparées par une virgule <geom>6.072,45.653</geom> Les objets géométriques utilisent par défaut le SRID 4326.
  • <elevation> altitude du sommet en mètres
  • <date> date de la sortie, au format yyyy-mm-dd. obligatoire
  • <lang> langue de la description : code à 2 caractères selon la norme ISO 639-1. obligatoire
  • <activity> identifiant numérique d'activité. On peut avoir autant d'éléments <activity> que nécessaire. obligatoire. Les activités disponibles sont:
    • 1: alpinisme
    • 2: canyon
    • 3: cascade glace
    • 4: escalade
    • 5: haute-montagne
    • 6: hors-piste
    • 7: randonnée pédestre
    • 8: raquette
    • 9: rocher
    • 10: skirando
    • 11: surf
    • 12: via-ferrata
    • 13: VTT
  • <rating> niveau de difficulté champ libre
  • <facing> identifiant numérique d'orientation (une seule valeur)
    • 0: (non définie)
    • 1: N
    • 2: NW
    • 3: W
    • 4: SW
    • 5: S
    • 6: SE
    • 7: E
    • 8: NE
  • <original_outing_id> id de la sortie sur le site du partenaire. obligatoire
  • <url> url pointant sur la sortie sur le site du partenaire. obligatoire

Avec l'id de la région (region_id)

L'id est l'id de région interne au métamoteur, l'utilisateur doit utiliser une grille pour connaître la correspondance entre un id de région dans un système (c2c, sngm) et l'id attribué en interne. Les régions actuellement intégrées au métamoteur sont décrites à la fin de ce document.

Exemple de document XML transmis :

<?xml version="1.0" encoding="UTF-8"?>
<outings xmlns="http://meta.camptocamp.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meta.camptocamp.org/metaengineschema.xsd">
    <outing>
        <name>test name</name>
        <elevation>2452</elevation>
        <date>2007-08-06</date>
        <lang>fr</lang>
        <activity>1</activity>
        <activity>5</activity>
        <activity>10</activity>
        <rating>facile</rating>
        <facing>5</facing>
        <original_outing_id>42</original_outing_id>
        <url>http://example.com/sortie42.html</url>
        <region_code>2</region_code>
    </outing>
</outings>

En plus des éléments XML décrits dans la section précédente on peut alors utiliser l'élément suivant :

  • <region_code> code interne de la région

Avec un nom de région

Si le partenaire ne peut pas associer de coordonnées géographiques à sa sortie ou de massif prédéfini dans la base de données du métamoteur, il peut spécifier un nom de massif libre. Cette façon de faire n'est pas recommandée car elle réduit l'efficacité du filtrage géographique mais est tout de même fournie afin de ne pas trop prétériter les partenaires ne disposant pas d'informations plus précises.

Exemple de document XML transmis :

<?xml version="1.0" encoding="UTF-8"?>
<outings xmlns="http://meta.camptocamp.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meta.camptocamp.org/metaengineschema.xsd">
    <outing>
        <name>test name</name>
        <elevation>2452</elevation>
        <date>2007-08-06</date>
        <lang>fr</lang>
        <activity>1</activity>
        <activity>5</activity>
        <activity>10</activity>
        <rating>très dur</rating>
        <facing>6</facing>
        <original_outing_id>42</original_outing_id>
        <url>http://example.com/sortie42.html</url>
        <region_name>Mont Blanc</region_name>
    </outing>
</outings>

L'élément XML suivant est ajouté par rapport aux systèmes précédents :

  • <region_name> nom de la région. champ libre

Transmission de données multiples

Il est possible de transmettre ("pusher") plusieurs sorties à la fois en utilisant la syntaxe suivante :

<?xml version="1.0" encoding="UTF-8"?>
<outings xmlns="http://meta.camptocamp.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meta.camptocamp.org/metaengineschema.xsd">
    <outing>
        ...(outing 1)...
    </outing>
    <outing>
        ...(outing 2)...
    </outing>
    <outing>
        ...(outing 3)...
    </outing>
</outings>

A noter que le traitement est interrompu en cas d'erreur dans une sortie. Validez le xml à l'aide du schéma (http://meta.camptocamp.org/metaengineschema.xsd) avant de pusher plusieurs sorties en même temps.

Feedback

Le script revoie un document XML :

<?xml version="1.0"?>
<metaengine_result>
  <status>1</status>
</metaengine_result>
  • status = 1, tout est ok
  • status = 0, une erreur est survenue
<metaengine_result>
  <status>0</status>
  <errors>
    <error>
      <outing_counter>5</outing_counter>
      <outing_id>42</outing_id>
      <error_message>missing mandatory element (activity_ids)</error_message>
    </error>
    <error>
      <outing_counter>8</outing_counter>
      <outing_id>45</outing_id>
      <error_message>An outing with the same original_outing_id already exist for the system selected</error_message>
    </error>
  </errors>
</metaengine_result>
  • "outing_counter" est un compteur interne. "5" signifie qu'une erreur est survenue dans la 5eme sortie dans la liste de sorties qui ont été traitées.
  • "outing_id" correspond à l'"original_outing_id" de la sortie en question.
  • "errmsg": le message d'erreur

Lorsqu'une erreur survient, la sortie incriminée est ignorée et le script passe au traitement de la sortie suivante.

Modification / Suppression

Pour modifier ou supprimer une sortie, il faut spécifier un "status". La valeur du paramètre "original_outing_id" est utilisée pour identifier la sortie. L'ordre des éléments est important.

<?xml version="1.0" encoding="UTF-8"?>
<outings xmlns="http://meta.camptocamp.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meta.camptocamp.org/metaengineschema.xsd">
    <outing>
        <name>test name</name>
        <elevation>2452</elevation>
        <date>2007-08-06</date>
        <lang>fr</lang>
        <activity>1</activity>
        <activity>5</activity>
        <activity>10</activity>
        <rating>très dur</rating>
        <facing>5</facing>
        <original_outing_id>42</original_outing_id>
        <url>http://example.com/sortie42.html</url>
        <region_code>4</region_code>
        <status>1</status>
    </outing>
</outings>
  • <id> id de la sortie a modifier
  • <status>
    • 0: ajout (par défaut)
    • 1: modification
      • 2: suppression

Seul le partenaire ayant créé la sortie peut la supprimer.

Exemple de code PHP permettant de pousser les données requises vers le metamoteur

Le script ci dessous est basé sur Curl : http://www.php.net/curl

<?php
$post = 'metaengine_user_id=' . $votre_id . 
        '&metaengine_user_key=' . $votre_clef . 
        '&metaengine_xml=' . urlencode($votre_xml);

$ch = curl_init();

// Push vers le metamoteur de test
curl_setopt($ch, CURLOPT_URL, "http://meta.camptocamp.org:8080/outings/push");
curl_setopt($ch, CURLOPT_PORT, 8080);

// Push vers le metamoteur de production :
// curl_setopt($ch, CURLOPT_URL, "http://meta.camptocamp.org/outings/push");

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

echo curl_exec($ch);
curl_close($ch);

PULL (query)

Cette fonction est accessible à l'adresse suivante : http://meta.camptocamp.org/outings/query?parameters1=value11(,value12,...)(&parameters2=value21(,value22,...))...

A noter d'ailleurs que l'adresse par défaut du métamoteur http://meta.camptocamp.org/outings correspond à une requête sans filtrage.

L'URL "bac à sable" est http://meta.camptocamp.org:8080/outings/query

Des critères de filtre peuvent être transmis via des paramètres GET de l'URL.

La recherche multicritère est stricte (operateur 'AND'). Plusieurs critères peuvent être utilisés en même temps. Tous les critères acceptent une ou plusieurs valeurs séparées par des virgules. Il faut au minimum un critère et une valeur associée.

Les critères sont les suivants :

  • mot clé dans le nom de la sortie:
    • outing_name=foo
    • outing_name=foo,bar,test
  • nom de la région:
    • region_name=region1
    • region_name=region1,region2,region3
    • région id:
    • region_id=2
    • region_id=2,3
  • system id (partenaire id):
    • system_id=1 (c2c)
    • system_id=1,2 (c2c & sngm)
  • date:
    • outing_date=2007-08-06 (du 2007-08-06 et plus récent)
    • outing_date=2007-08-06,2007-08-09 (du 2007-08-06 au 2007-08-09)
  • langue:
    • outing_lang=it
    • outing_lang=fr,it
  • activité:
    • activity_ids=3
    • activity_ids=3,7,11
  • ordre des résultats:
    • orderby=outing_name
    • orderby=region_name
    • orderby=region_id
    • orderby=system_id
    • orderby=outing_date
  • limite (la valeur par défaut est de 50):
    • limit=10

Le résultat est formaté suivant la norme RSS 2.0. La page de requête par défaut (aucun critère spécifié) est dotée d'un cache de 5 minutes.

Liste des régions disponibles

La liste suivante indique les régions actuellement intégrées dans le métamoteur. Le premier identifiant est le numéro de document sur camptocamp.org, le second est l'identifiant interne de région pour le métamoteur.

      14420: 1 # Adamello
      14421: 2 # Alpes Vaudoises
      14454: 3 # Alpi Giulie
      14461: 4 # Alpi Liguri
      14422: 5 # Alpi Ticinesi - Conches - Goms
      14462: 6 # Appennino centrale
      14458: 7 # Appennino meridionale
      14467: 8 # Appennino settentrionale
      14469: 9 # Ariège - Cardós - Andorra
      14443: 10 # Arlberg - Silvretta
      14399: 11 # Bauges
      14400: 12 # Beaufortain
      14398: 13 # Belledonne
      14442: 14 # Berner Alpen
      14417: 15 # Bornes-Aravis
      14423: 16 # Bündner Oberland - Adula - Ticino E
      14416: 17 # Pyrénées Orientales
      14415: 18 # Capcir Corbières
      14451: 19 # Carinthia
      14424: 20 # Cerces - Thabor - Mont Cenis
      14411: 21 # Chablais
      14401: 22 # Chartreuse
      14448: 23 # Chiemgauer Alpen - Kitzbühler Alpen
      14478: 24 # Corse
      14449: 25 # Dachstein
      14402: 26 # Dévoluy
      14456: 27 # Dolomiti centrale
      14444: 28 # Dolomiti occidentale
      14455: 29 # Dolomiti orientale
      14403: 30 # Ecrins
      14425: 31 # Engadin - Disgrazia
      14414: 32 # Gavarnie - Ordesa - Guara
      14418: 33 # Genevois - Jura S
      14426: 34 # Glarner Alpen
      14427: 35 # Gran Paradiso
      14404: 36 # Haut Giffre - Aiguilles Rouges
      14405: 37 # Jura
      14453: 38 # Karawanken
      14452: 39 # Karnische Alpen
      14406: 40 # Lauzière
      14441: 41 # Lechtaler Alpen - Wetterstein - Karwendel
      14460: 42 # Lubéron - Baronnies - Saoû
      14466: 43 # Mercantour - Argentera
      14410: 44 # Mont Blanc
      14470: 45 # Montes Ibericos
      14450: 46 # Niedere Tauern
      14428: 47 # Orobie
      14429: 48 # Ortles
      14430: 49 # Ötztal
      14465: 50 # Pelat - Préalpes de Castellane
      14471: 51 # Picos de Europa - Cantabrica
      14464: 52 # Préalpes Dignoises
      14431: 53 # Préalpes Fribourgeoises et Bernoises
      14463: 54 # Provence
      14447: 55 # Pustresi - Hohe Tauern
      14413: 56 # Pyrénées Occidentales
      14432: 57 # Queyras N - Briançonnais - Cozie
      14433: 58 # Queyras S - Parpaillon - Ubaye - Oronaye
      14407: 59 # Grandes Rousses
      14477: 60 # Sardegna
      14474: 61 # Scotland
      14476: 62 # Sicilia
      14472: 63 # Sierra de Gredos
      14473: 64 # Sierra de Guadarrama
      14468: 65 # Sierra Nevada - Sistema Penibico
      14446: 66 # Steirische Alpen
      14434: 67 # Stubaïer Alpen - Sarntaler Alpen
      14408: 68 # Taillefer
      14440: 69 # Toggenburg - Appenzell
      14435: 70 # Urner Alpen
      14436: 71 # Valais E - Alpes Pennines E
      14437: 72 # Valais W - Alpes Pennines W
      14412: 73 # Aure Néouvielle - Posets Maladeta - Aigüestortes
      14409: 74 # Vanoise
      14459: 75 # Vercors
      14438: 76 # Vorarlberg - Allgauer Alpen
      14419: 77 # Vosges
      14475: 78 # Wales
      14445: 79 # Wienner Alpen
      14439: 80 # Zentral Graubünden
      14457: 81 # Zillertaler Alpen