-
Notifications
You must be signed in to change notification settings - Fork 10
WebServices
Webservices offerts par Vlm.
- Les webservices travaillent avant tout en json.
- Le format texte est gardé pour la compatibilité provisoirement mais n'est pas garanti.
- Si le format retourné est texte et que vous nécessitez JSON :
- Méthode recommandée : Utilisez le header Accept : application/json;
- Méthode non recommandée : utiliser l'argument ?forcefmt=json (ou &... s'il y'a déja un argument).
- protections anti XSS : rester propre sur la correspondance {URL du web service appelé, URL de la page consommatrice} au niveau du nom de domaine. Le navigateur peut refuser cette utilisation de ressources (risque de sécurité).
- les requêtes http doivent avoir un User-Agent correct (ou bien celui du navigateur client, ou bien un User-Agent qui identifie l'outil et sa version).
- Voir la page VlmHttp (bonnes pratiques)
A partir de la version 0.14 de VLM, l'authentification sur un login par joueur (player mode). Par défaut, un player est loggué sur son premier bateau et les webservices concernent ce bateau.
- Pour "switcher" de bateau, il faut ajouter
select_idu=XXX
dans les paramètres http. - Ce switch est persistant, c'est à dire qu'il n'a pas besoin d'être réitéré pour une série d'appel de webservices concernant le même bateau.
- A noter que l'usage des ws est étendu à tous les bateaux manageable par le joueur (c'est à dire également ceux pour lesquels il a le droit de boatsitting).
NB: la création de WS racines n'est pas recommandé, et est même découragé.
Permet de se logguer en mode applicatif & http (ne fait rien d'autre). Necessite une auth http et de poster les champs suivants:
- VLM_AUTH_USER: player name (ie adresse email du joueur)
- VLM_AUTH_PW : mot de passe
Déconection et suppression de la session. Il faut passer "test" en username et "ko" en password.
Web service historiquement appellé getinfo. Le paramètre select_idu est obligatoire pour ce webservices pour éviter des confusions historiques.
Renvoie la liste de toutes les polaires chargées dans VLM.
Renvoie toutes les infos sur la définition d'une course
- windinfo (NE PLUS UTILISER)
Donne la pref correspondante à un joueur. paramètres :
- idu
- prefs
Donne les dernières traces pour un idu donné. Paramètres :
- idu
- (optionnel) idr
- (optionnel) starttime
- (optionnel) endtime
Voir la page les webservices autour des tracks
- arguments : idreals = id du réel tel que renvoyé par raceinfo/reals.php
- renvoie les infos disponibles sur le réel, dans un array 'profile'
Donne les dernières traces pour un idu donné. Paramètres :
- idreals
- (optionnel) idr
- (optionnel) starttime
- (optionnel) endtime
Renvoie le profile d'un joueur
Le WS de gestion de la flotte d'un joueur est défini à la page GestionFlotteJoueur
Liste des courses
- arguments : idr = numérique entier > 0 représentant le numéro de la course.
- retour : une liste de réels dans le champ 'reals', avec en prime la date de la dernière mise à jour des tracks
- Voir WebServicesWindinfo
-
requête http vers /ws/boatsetup/<sujet_verb>.php
-
<sujet_verb> permet de choisir l'action parmi : (pilot_set_', '''target_set''', '''pilototo_add''', '''pilototo_delete''', '''pilototo_update''', '''prefs_set''','_race_subscribe)
-
paramètre unique en POST : parms un dictionnaire json
- exemple :
{"pim":3,"pip":{"targetlat":1.1,"targetlong":-2.2,"targetandhdg":3.3},"debug":true,"idu":9343}
-
le GET est accepté pour l'instant, mais attention à l'encodage des urls (idem que pour le POST, même si les navigateurs le font automatiquement en général)
-
Le POST doit être encodé en ASCII, mais le champ JSON contenant les données doît être URL encodé. Ce qui donne un POST dans le genre ci-dessous envoyé au serveur:
parms=%7B%22taskid%22%3A98254%2C%20%22pim%22%3A2%2C%22pip%22%3A123%2C%22debug%22%3Atrue%2C%22tasktime%22%3A1324567890%2C%22idu%22%3A10548%7D
Il ne faut bien sur pas URLencoder le parms=, sinon le = devient un %3B et la requete ne passe pas
Pour le dictionnaire parms pour les verbs pilot_set_', '''target_set''', '''pilototo_add''', '''pilototo_delete''', '''pilototo_update''', '_prefs_set
- idu : int (id du boat loggué, pour être sur qu'un programme tiers n'envoie pas un ordre sur un bateau non désiré)
- obligatoire
- pim : int
- obligatoire pour boat, pilototo_add, pilototo_update
- pip :
- float (hdg pour le pim=1, twa pour pim=2) (obligatoire pour action=boat)
- dict (pour pim = 3, 4, 5) (optionnel pour action=boat, obligatoire pour target, pilototo_add et _update)
- targetlat : float (obligatoire)
- targetlong : float (obligatoire)
- targetandhdg float (optionnel)
- tasktime : int
- obligatoire pour pilototo_add et _update
- taskid : int * optionnel pour pilototo_update
- obligatoire pour pilototo_delete et pilototo_update
- prefs : dictionnaire (key => value)
- obligatoire pour l'action "prefs"
- debug : boolean, optionnel
Fournir les deux paramètres suivants tous les deux obligatoires:
- idu : (int) L'idu du boat à engager
- idr : (string) L'Id de la course à laquelle engager le bateau
- le paramètre debug = true listé dans les exemples ou plus haut ne doit être utilisé que lors de la mise au point ou en cas de bug.
- User-agent : Voir plus haut dans Format
NB: Ces exemples sont des exemples de test (utilisation du GET sans urlencodage et du mode debug). Il faut utiliser le POST sans debug (voir plus haut) en production.
- MAJ WP ET PIM3
/ws/boatsetup/pilot_set.php?parms={"pim":3,"pip":{"targetlat":42.8,"targetlong":-7,"targetandhdg":180},"debug":true,"idu":10573}
- MAJ CAP PIM1
/ws/boatsetup/pilot_set.php?parms={"pim":1,"pip":340,"debug":true,"idu":10573}
- MAJ ANGLE PIM2
/ws/boatsetup/pilot_set.php?parms={"pim":2,"pip":50,"debug":true,"idu":10573}
- MAJ SIMPLE PIM3, 4 et 5
/ws/boatsetup/pilot_set?parms={"pim":3,"idu":10573}
/ws/boatsetup/pilot_set.php?parms={"pim":4,"idu":10573}
/ws/boatsetup/pilot_set.php?parms={"pim":5,"idu":10573}
- MAJ WP UNIQUEMENT
/ws/boatsetup/target_set.php?parms={"pip":{"targetlat":42.8,"targetlong":-7,"targetandhdg":180},"debug":true,"idu":10573}
-
PILOTOTO_ADD un pim3 et passage du WP
/ws/boatsetup/pilototo_add.php?parms={"tasktime":1275307500,"pim":3,"pip":{"targetlat":42.8,"targetlong":-7,"targetandhdg":180},"debug":true,"idu":10573}
-
PILOTOTO_UPDATE
- PIM 3,4 ou 5
/ws/boatsetup/pilototo_update.php?parms={"taskid":98237,"tasktime":1275313000,"pim":3,"pip":{"targetlat":42.8,"targetlong":-7,"targetandhdg":180},"debug":true,"idu":10573}
- PIM 1 ou 2 : "pip":-45
- PIM 3,4 ou 5
-
PILOTOTO_DELETE
/ws/boatsetup/pilototo_delete.php?parms={"taskid":98237,"debug":true,"idu":10573}
-
Vous pouvez obtenir la liste des ordres *après''' mise à jour en passant en outre le paramètre *"list_on_success":true
/ws/boatsetup/prefs_set.php?parms={"idu":9343, "prefs" : {"maparea" : 13}, "debug":true}
/ws/boatsetup/prefs_set.php?select_idu=9343&parms={"idu":9343, "prefs" : {"maparea" : 13}, "debug":true}
- mapOpponents : Type d'affichage des concurrents C'est une chaine, un des éléments de la liste suivante : myboat, my5opps, my10opps, meandtop10, mylist, all
- mapLayers (carte fusionnée ou pas) C'est une chaine, un des éléments de la liste suivante : merged ou multi
- mapTools : Définit l'affichage du compas. C'est une chaine, un des éléments de la liste suivante : compas, floatingcompas, bothcompass, none
- mapPrefOpponents : Liste des bateaux demandés sur la carte. C'est une liste d'idusers sous forme de chaine de caractère (une liste d'identifiant numérique des bateaux). Il faut utiliser la virgule comme séparateur, sans espace.
- maparea
- mapMaille
- mapX
- mapY
- mapAge
- mapEstime
- mapDrawtextwp
- mapCenter
- mobiVlmDatas
- blocnote
- color
- theme
- country
- boatname
- frogDatas : la valeur peut dépasser 255 chars
- sbsrouteurDatas : la valeur peut dépasser 255 chars
- qtvlmDatas : la valeur peut dépasser 255 chars
Renvoie la String table selon la langue du joueur.
- La réponse à la requête http est un dictionnaire json.
- exemple : {"request":{"action":"boat","pim":3,"pip":{"targetlat":1.1,"targetlong":-2.2,"targetandhdg":3.3},"debug":true,"idu":9343},"success":true}
- champs disponibles dans la réponse :
- request : si debug a été passé à true
- success : boolean, indique le succès ou pas de l'opération
- error : en cas d'erreur, un dictionnaire est renvoyé
- code : le code de l'erreur
- msg : le message associé
- custom_error_string : optionnel, un message complémentaire
- usage : en cas d'erreur, un renvoi vers la doc.
Il est recommandé de lire ce résultat afin de tenir compte du message d'erreur potentiel et de le logguer ou d'avertir l'utilisateur.