ADD support des conversations (pas fini)
[euphorik.git] / doc / protocole2.txt
index 6449cd9..704dc6a 100644 (file)
@@ -1,69 +1,76 @@
-Euphorik - minichat - Protocole v2\r
-----------------------------------\r
-\r
-A. Introduction\r
----------------\r
-\r
-Ce document a pour but de décrire la communication client-serveur du site euphorik.\r
-Ce document remplace 'protocole.txt' qui était la première version du protocol.\r
-\r
-B. Principe\r
------------\r
-\r
-Enregistrement:\r
-\r
-Authentification:\r
-\r
-Rafraichissement:\r
- * Le client envoie une demande au serveur avec l'id du dernier message (via XMLHttpRequest ou un function de JQuery)\r
- * Le serveur maintient la connexion bloqué si le client est à jour.\r
- * Dès qu'un nouveau message arrive, le serveurs débloque la connexion est envoie le ou les messages manquants.\r
+Euphorik - minichat - Protocole v2
+----------------------------------
+
+A. Introduction
+---------------
+
+Ce document a pour but de décrire la communication client-serveur du site euphorik.
+Ce document remplace 'protocole.txt' qui était la première version du protocol.
+
+B. Principe
+-----------
+
+Enregistrement:
+
+Authentification:
+
+Rafraichissement:
+ * Le client envoie une demande au serveur avec l'id du dernier message (via XMLHttpRequest ou un function de JQuery)
+ * Le serveur maintient la connexion bloqué si le client est à jour.
+ * Dès qclientu'un nouveau message arrive, le serveurs débloque la connexion est envoie le ou les messages manquants.
  
-\r
-C. Protocole\r
-------------\r
-c : client\r
-s : server\r
-Chaque message est numéroté #<num>.\r
-Les messages client vers serveur sont envoyé par HTTP-POST\r
-\r
-\r
-C.1. Login\r
-----------\r
-\r
-c -> s\r
+
+C. Protocole
+------------
+c : client
+s : server
+Chaque message est numéroté #<num>.
+Les messages client vers serveur sont envoyé par HTTP-POST
+
+
+C.1. Login
+----------
+
+c -> s
 #1
  <action name="login">
    <login>Paul</login>
    <password>IJKJDHHSAD9081238</password>
  </action>
-\r
-ou\r
+
+ou
 #2 (<login> et <password> peuvent être omis)
  <action name="register">
    <login>Paul</login>
    <password>IJKJDHHSAD9081238</password>
- </action>\r
-   \r
-s -> c\r
-#3 (<information> et <pseudo> pas obligatoire)\r
- <reponse name="login">\r
-   <statut>enregistre|identifie|erreur</statut>\r
-   <cookie>LKJDLAKSJBFLKASN</cookie>\r
-   <id>7ZS</id> <!-- l'id est en base 36 -->\r
+ </action>
+   
+s -> c
+#3 (<information> et <pseudo> pas obligatoire)
+ <reponse name="login">
+   <statut>enregistre|identifie|erreur</statut>
+   <cookie>LKJDLAKSJBFLKASN</cookie>
+   <id>7ZS</id> <!-- l'id est en base 36 -->
    <pseudo>Paul</pseudo>
    <login>paul49</login>
    <email>paul@pierre.com</email>
-   <css>css/lite.css</css>\r
-   <information>blabla</information>\r
- </reponse>\r
\r
\r
-C.2. Logout\r
------------\r
-c -> s\r
- <action name="logout">\r
-   <cookie>LKJDLAKSJBFLKASN</cookie> \r
+   <css>css/lite.css</css>
+   <!-- L'ordre des conversations est le même que lors de la sauvegarde du profile -->
+   <!-- Comprend également la conversation principal, dans ce cas la racine est à 0 -->
+   <conversation>
+      <racine>4</racine>
+      <page>1</page>
+   </conversation>
+   <!-- [..] -->
+   <information>blabla</information>
+ </reponse>
+C.2. Logout
+-----------
+c -> s
+ <action name="logout">
+   <cookie>LKJDLAKSJBFLKASN</cookie> 
  </action>
  
 C.3. Profile
@@ -78,84 +85,114 @@ c -> s
    <pseudo>Paul</pseudo>
    <email>paul@pierre.com</email>
    <css>css/dark.css</css>
+   <conversation>
+      <racine>4</racine>
+      <page>1</page>
+   </conversation>
+   <!-- [..] -->
  </action>
  
 s -> c
  <reponse name="profile">
    <statut>ok|pas ok</statut>
-   <information>balbla></information>
- </reponse>\r
-\r
-\r
-C.4. Attente evenement\r
-----------------------\r
-\r
-Si dernierMessageId est absent alors le client ne possède pas de message.\r
-Page peut être omis, il a alors la valeur 1 (première page)\r
-dernierMessageId est en base 36 (l'histoire de rigoler un peu)
-\r
-c -> s\r
- <action name="attenteEvenement">
-  <cookie>LKJDLAKSJBFLKASN</cookie>\r
-  <dernierMessageId>6ZR</dernierMessageId>\r
-  <nombreMessage>10</nombreMessage>\r
-  <page>1</page>\r
- </action>\r
+   <information>balbla</information>
+ </reponse>
+
+
+C.4. Refresh messages
+---------------------
+
+Si dernierMessageId est absent alors le client ne possède pas de message.
+Page peut être omis, il a alors la valeur 1 (première page).
+dernierMessageId est en base 36 (l'histoire de rigoler un peu).
+Les conversations données sont définies dans le profile.
+
+c -> s
+   <action name="refreshMessages">
+      <cookie>LKJDLAKSJBFLKASN</cookie>
+      <nombreMessage>10</nombreMessage>
+      <dernierMessageId>6ZR</dernierMessageId>
+      <!-- [..] -->
+   </action>
+s -> c
+   <reponse name="refreshMessages">
+      <conversation> <!-- les conversations sont ordrées, la première est la conversation principale -->
+         <autresPages>true</autresPages> <!-- possède une ou plusieurs autres pages ? "true" ou "false" -->
+         <message id="1F5">
+            <date>Hier 17:26:54</date> <!-- date du message (format non formel) -->
+            <systeme></system> <!-- est-ce un message système ? "true" ou "false" -->
+            <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->
+            <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->
+            <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->
+            <pseudo>Paul</pseudo>
+            <login>paul_22</login>
+            <contenu>Salut</contenu>
+            <repondA>
+               <!-- id est l'id d'un message -->
+               <id id="DE2" pseudo="Pierre" login="pierre_45"> 
+               <!-- [..] -->
+            </repondA>
+         </message>
+         <!-- [..] -->
+      <conversation>
+      <!-- [..] -->
+   </reponse>
+ou
+   <!-- modification d'un message -->
+   <reponse name="modMessage">
+      <message id="1F5">\r
+         <contenu>Salut ++ poulpe</contenu> <!-- contient le message complet -->\r
+      </message>
+   </reponse>
+ou
+   <reponse name="refreshMessages">
+      <erreur>raison</erreur>
+   </reponse>
+
+
+C.5. Envoie message
+-------------------
+
+Le client envoie un message, le message peut répondre à un certain nombre d'autres messages.
+<reponses> n'est pas obligatoire.\r
+
+c -> s
+   <action name="message">
+      <cookie>LKJDLAKSJBFLKASN</cookie>
+      <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->
+      <contenu>Bonjour</contenu>
+      <reponses>
+         <reponse id="RT5" />
+         <reponse id="39K" />
+         <!-- [..] -->
+      </reponses>
+   </action>
+s -> c
+   <reponse name="message">
+      <statut>ok|pas ok</statut>
+   </reponse>
  \r
-s -> c\r
- <reponse name="attenteEvenement" evenement="nouveauxMessages">\r
-  <nbPage>4</nbPage> <!-- le nombre de page total -->
-  <message id="1F5">\r
-   <date>Hier 17:26:54</date>
-   <systeme></system> <!-- est-ce un message système ? -->\r
-   <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->\r
-   <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->\r
-   <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->\r
-   <pseudo>Paul</pseudo>
-   <login>paul_22</login>\r
-   <contenu>Salut</contenu>\r
-   <repondA>
-      <!-- id est l'id d'un message -->\r
-      <id id="DE2" pseudo="Pierre" login="pierre_45"> 
-      <!-- [..] -->\r
-   </repondA>\r
-  </message>\r
-  <!-- [..] -->\r
- </reponse>\r
  \r
-ou\r
- <reponse name="attenteEvenement" evenement="modificationMessage">\r
- TODO\r
- </reponse>\r
-\r
-ou\r
- <reponse name="refreshMessages">\r
-  <erreur>raison</erreur>\r
- </reponse>\r
+C.6 Ajout d'une correction d'un messages\r
+----------------------------------------\r
 \r
-C.5. Envoie message\r
--------------------\r
+Le client envoie un correctif sous la forme de texte supplémentaire à appondre au dernier messages.\r
+Le message est appondu avec un " +++ " devant, par exemple :\r
+> Gnome c'est mieux que KDE +++ Euh non ok, c'est faux\r
 \r
-Un client envoie un message, le message peut répondre à un certain nombre d'autres messages.\r
-<reponses> n'est pas obligatoire.\r
 c -> s\r
- <action name="message">\r
-  <cookie>LKJDLAKSJBFLKASN</cookie>\r
-  <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->\r
-  <contenu>Bonjour</contenu>\r
-  <reponses>\r
-   <reponse id="RT5" />\r
-   <reponse id="39K" />\r
-   <!-- [..] -->\r
-  </reponses>\r
- </action>\r
\r
+   <action name="correction">\r
+      <cookie>LKJDLAKSJBFLKASN</cookie>\r
+      <correctif>Euh non ok, c'est faux</correctif>\r
+   </action>\r
+   \r
 s -> c\r
- <reponse name="message">\r
-   <statut>ok|pas ok</statut>\r
- </reponse>\r
\r
+   <reponse name="correction">\r
+      <statut>ok|pas ok</statut> <!-- pas ok en général lorsque l'utilisateur n'a pas encore posté de message -->\r
+   </reponse>\r
 \r
-C.5. Envoie message\r
--------------------\r
\r
+\r
+