X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=doc%2Fprotocole3.txt;h=f8b4c00672943adc0f2cc603218f1a9585cd6165;hb=35838780dce22af9f2dc80af9149a30a0433de0a;hp=212794bfa2d9c1aacd7ab0b2d0ad685a4b7d9812;hpb=35b6b48d4c8fe3a262a4f01f9b97f0b2d7fdbbdf;p=euphorik.git diff --git a/doc/protocole3.txt b/doc/protocole3.txt index 212794b..f8b4c00 100644 --- a/doc/protocole3.txt +++ b/doc/protocole3.txt @@ -1,15 +1,13 @@ Euphorik - Protocole v3 ----------------------- -A. Introduction ---------------- +== Introduction == Ce document a pour but de décrire la communication client-serveur du site euphorik. Les messages échangés sont basés sur le format JSON. Ce document remplace 'protocole2.txt'. -B. Principes ------------- +== Principes == Enregistrement: * Permet de créer un compte, un cookie est donné en retour. Ce cookie doit être stocké par le client pour pouvoir s'authentifier par la suite. @@ -23,58 +21,78 @@ Rafraichissement: * Dès qu'un nouveau message arrive, le serveur débloque la connexion et envoie le ou les messages manquants. -C. Protocole ------------- +== Protocole == c : client s : server Les messages client vers serveur sont envoyés par HTTP-POST. +A toutes les requêtes le serveur peut répondre une erreur : + + { + "reply" : "error", + "error_message" : "blabla" + } + +Message ok générique : + + { + "reply" : "ok" + } -C.1. Login ----------- -Le mot de passe est hashé en md5. -c -> s - { - "action" : "authentification", - "login" : "Paul", - "password" : "IJKJDHHSAD9081238" +=== Enregistrement et authentification === +Permet de créer un nouvel utilisateur. +"login" et "password" peuvent ne pas être fournis avec un message de type "register", dans ce cas l'utilisateur ne pourra s'authentifier qu'a l'aide de son cookie. +Le mot de passe est hashé en md5. + +c -> s + { + "action" : "authentification", + "login" : "paul", + "password" : "IJKJDHHSAD9081238" } -ou - { - "action" : "authentification", - "cookie" : "LKJDLAKSJBFLKASN" +ou + { + "action" : "authentification", + "cookie" : "LKJDLAKSJBFLKASN" } -ou - { - "action" : "register", - "login" : "Paul", - "password" : "IJKJDHHSAD9081238" +ou + { + "action" : "register", + "login" : "paul", + "password" : "IJKJDHHSAD9081238" } -s -> c - { - "reply" : "login", - "status" : "registration_ok" | "authentification_ok" | "error", +s -> c + { + "reply" : "register" | "authentification", + "status" : "auth_not_registered", + "cookie" : "LKJDLAKSJBFLKASN", + "id" : 193, + "css" : "css/1/euphorik.css", + "main_page" : 1 + } +ou + { + "reply" : "register" | "authentification", + "status" : "auth_registered", "cookie" : "LKJDLAKSJBFLKASN", "id" : 193, - "pseudo" : "Paul", + "nick" : "Paul", "login" : "paul49", "email" : "paul@pierre.com", "css" : "css/3/euphorik.css", - "main_page" : 1, - "conversations" : [ - { - "root" : 123, - "page" : 1 - } - ], - "error_message" : "blabla" + "main_page" : 1, + "conversations" : [ + { + "racine" : 123, + "page" : 1 + } + ] } -C.2. Logout ------------ +=== Logout === c -> s { "action" : "logout", @@ -82,10 +100,7 @@ c -> s } -C.3. Profile ------------- -Modification du profile, seul "cookie" est obligatoire. - +=== Profile === c -> s { "action" : "set_profile", @@ -95,37 +110,37 @@ c -> s "pseudo" : "Paul", "email" : "paul@pierre.com", "css" : "css/3/euphorik.css", - "mainPage" : 1, - "conversations" : [ - { - "root" : 123, - "page" : 1 - } + "main_page" : 1, + "conversations" : [ + { + "racine" : 123, + "page" : 1 + } ] } -s -> c - { - "reply" : "ok" | "error", - "error_message" : "blabla" - } +s -> c + +ou + -C.4. Wait event ---------------------- +=== Wait event === Si "last_message_id" est absent alors le client ne possède pas de message. -Les conversations données sont définies dans le profile. +Si "main_page" est absent alors est vaut 1. +"cookie" n'est pas obligatoire. c -> s { - "action" : "wait_event", + "action" : "wait_event", + "page" : "chat" "cookie" : "LKJDLAKSJBFLKASN", - "message_count" : 10, + "message_count" : 10, "last_message_id" : 163, - "mainPage" : 1, + "main_page" : 1 "conversations" : [ { - "root" : 123, + "racine" : 123, "page" : 1 } ] @@ -138,21 +153,26 @@ Le format de la date n'est pas formel. { "reply" : "new_messages", "conversations" : [ - "last_page" : true | false, - "messages" : [ - "id" : 54, - "date" : "Hier 17:26:54", - "system" : true | false, - "owner" : true | false, - "answered" : true | false, - "is_a_reply" : true | false, - "nick" : "Paul", - "login" : "paul_22", - "content" : "Salut", - "answer_to" : [ - { "id" : 123, "pseudo" : "Pierre", "login" : "pierre_45" } + { + "last_page" : true | false, + "messages" : [ + { + "id" : 54, + "date" : "Hier 17:26:54", + "system" : true | false, + "owner" : true | false, + "answered" : true | false, + "is_a_reply" : true | false, + "nick" : "Paul", + "login" : "paul_22", + "content" : "Salut", + "answer_to" : [ + { "id" : 123, "nick" : "Pierre", "login" : "pierre_45" } + ] + } ] - ] + } + ... ] } ou @@ -168,25 +188,22 @@ ou } -C.5. Envoie troll -------------------- - +=== Envoie d'un troll === +TODO c -> s { "action" : "put_troll", "cookie" : "LKJDLAKSJBFLKASN", "content" : "Un bon troll velu !" } - -s -> c - { - "reply" : "ok" | "error", - "error_message" : "blabla" - } - +=== Modification d'un troll === +TODO +=== Suppression d'un troll === +TODO +=== Noter un troll === +TODO -C.6. Envoie message -------------------- +=== Envoie message === Le client envoie un message, le message peut répondre à un certain nombre d'autres messages. "answer_to" n'est pas obligatoire. @@ -196,7 +213,6 @@ c -> s "cookie" : "LKJDLAKSJBFLKASN", "nick" : "Paul", "content" : "Bonjour", - "Troll" : 45, "answer_to" : [ 345, 532, ... ] } @@ -207,8 +223,7 @@ s -> c } -C.7. Ajout d'une correction d'un messages ----------------------------------------- +=== Ajout d'une correction d'un messages === Le client envoie un correctif sous la forme de texte supplémentaire à appondre au dernier messages. Le message est appondu avec un " +++ " devant, par exemple : > Gnome c'est mieux que KDE +++ Euh non ok, c'est faux