ADD le slap
[euphorik.git] / doc / protocole3.txt
index c3c2e6a..99776a4 100644 (file)
@@ -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.\r
 Les messages échangés sont basés sur le format JSON.
 Ce document remplace 'protocole2.txt'.
 \r
 
-B. Principes
-------------
+== Principes ==
 Enregistrement:\r
  * 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,8 +21,7 @@ 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.
@@ -43,50 +40,61 @@ Message ok g
    }
 
 
-C.1. Login
-----------
-Le mot de passe est hashé en md5.\r
+=== 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\r
-   { \r
-      "action" : "authentification",\r
-      "login" : "Paul",\r
-      "password" : "IJKJDHHSAD9081238"\r
+c -> s
+   { 
+      "action" : "authentification",
+      "login" : "paul",
+      "password" : "IJKJDHHSAD9081238"
    }
-ou\r
-   {\r
-      "action" : "authentification",\r
-      "cookie" : "LKJDLAKSJBFLKASN"\r
+ou
+   {
+      "action" : "authentification",
+      "cookie" : "LKJDLAKSJBFLKASN"
    }
-ou\r
-   {\r
-      "action" : "register",\r
-      "login" : "Paul",\r
-      "password" : "IJKJDHHSAD9081238"\r
+ou
+   {
+      "action" : "register",
+      "login" : "paul",
+      "password" : "IJKJDHHSAD9081238"
    }
    
-s -> c\r
-   {\r
-      "reply" : "login",\r
-      "status" : "registration_ok" | "authentification_ok",\r
+s -> c
+   {
+      "reply" : "register" | "authentification",
+      "status" : "auth_not_registered",
+      "cookie" : "LKJDLAKSJBFLKASN",
+      "id" : 193,
+      "css" : "css/1/euphorik.css",
+      "main_page" : 1
+   }
+ou\r
+   {
+      "reply" : "register" | "authentification",\r
+      "status" : "auth_registered",\r
       "cookie" : "LKJDLAKSJBFLKASN",\r
       "id" : 193,\r
-      "pseudo" : "Paul",\r
+      "nick" : "Paul",\r
       "login" : "paul49",\r
       "email" : "paul@pierre.com",\r
-      "css" : "css/3/euphorik.css",\r
-      "main_page" : 1,\r
-      "conversations" : [\r
-         {\r
-            "root" : 123,\r
-            "page" : 1\r
-         }\r
-      ]\r
+      "css" : "css/3/euphorik.css",
+      "nick_format" : "nick" | "login" | "nick_login",\r
+      "main_page" : 1,
+      "conversations" : [
+         {
+            "racine" : 123,
+            "page" : 1
+         }
+      ],
+      "ek_master" : true | false\r
    }
  \r
  
-C.2. Logout
------------
+=== Logout ===
 c -> s\r
    {\r
       "action" : "logout",\r
@@ -94,24 +102,23 @@ c -> s
    }
  \r
  
-C.3. Profile
-------------
-
+=== Profile ===
 c -> s\r
    {\r
       "action" : "set_profile",\r
       "cookie" : "LKJDLAKSJBFLKASN",\r
       "login" : "paul49",\r
       "password" : "IJKJDHHSAD9081238",\r
-      "pseudo" : "Paul",\r
+      "nick" : "Paul",\r
       "email" : "paul@pierre.com",\r
-      "css" : "css/3/euphorik.css",\r
-      "main_page" : 1,\r
-      "conversations" : [\r
-         {\r
-            "root" : 123,\r
-            "page" : 1\r
-         }\r
+      "css" : "css/3/euphorik.css",
+      "nick_format" : "nick" | "login" | "nick_login",\r
+      "main_page" : 1,
+      "conversations" : [
+         {
+            "root" : 123,
+            "page" : 1
+         }
       ]\r
    }\r
       
@@ -121,22 +128,24 @@ ou
    <error>
 
 
-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\r
    {\r
-      "action" : "wait_event",\r
+      "action" : "wait_event",
+      "page" : "chat"\r
       "cookie" : "LKJDLAKSJBFLKASN",\r
-      "message_count" : 10,\r
+      "message_count" : 10,
       "last_message_id" : 163,
-      "main_page" : 1,
+      "main_page" : 1
       "conversations" : [
          {
-            "root" : 123,
-            "page" : 1
+            "racine" : 123,
+            "page" : 1,
+            "last_message_id" : 4 (pas obligatoire)
          }
       ]\r
    }
@@ -148,21 +157,28 @@ Le format de la date n'est pas formel.
    {\r
       "reply" : "new_messages",\r
       "conversations" : [\r
-         "last_page" : true | false,\r
-         "messages" : [\r
-            "id" : 54,\r
-            "date" : "Hier 17:26:54",\r
-            "system" : true | false,\r
-            "owner" : true | false,\r
-            "answered" : true | false,\r
-            "is_a_reply" : true | false,\r
-            "nick" : "Paul",\r
-            "login" : "paul_22",\r
-            "content" : "Salut",\r
-            "answer_to" : [\r
-               { "id" : 123, "pseudo" : "Pierre", "login" : "pierre_45" }\r
+         {\r
+            "last_page" : true | false,\r
+            "messages" : [
+               {\r
+                  "id" : 54,
+                  "user_id" : 344,\r
+                  "date" : "Hier 17:26:54",\r
+                  "system" : true | false,\r
+                  "owner" : true | false,\r
+                  "answered" : true | false,\r
+                  "is_a_reply" : true | false,\r
+                  "nick" : "Paul",\r
+                  "login" : "paul_22",\r
+                  "content" : "Salut",\r
+                  "answer_to" : [\r
+                     { "id" : 123, "nick" : "Pierre", "login" : "pierre_45" }\r
+                  ]
+                  "ek_master" : true | false
+               }\r
             ]\r
-         ]\r
+         }
+         ...\r
       ]\r
    }
 ou\r
@@ -171,32 +187,26 @@ ou
       "message_id" : 123,\r
       "contenu" : "Salut +++ poulpe"\r
    }
-ou\r
-   {\r
-      "reply" : "error",\r
-      "error_message" : "blabla"\r
-   }
-\r
+ou
+   <error>
 \r
-C.5. Envoie troll\r
--------------------\r
 \r
+=== Envoie d'un troll ===
+TODO\r
 c -> s\r
    {\r
       "action" : "put_troll",\r
       "cookie" : "LKJDLAKSJBFLKASN",\r
       "content" : "Un bon troll velu !"\r
    }\r
\r
-s -> c\r
-   {\r
-      "reply" : "ok" | "error",\r
-      "error_message" : "blabla"\r
-   }\r
-   
+=== Modification d'un troll ===\r
+TODO\r
+=== Suppression d'un troll ===\r
+TODO\r
+=== Noter un troll ===\r
+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.\r
 
@@ -206,19 +216,46 @@ c -> s
       "cookie" : "LKJDLAKSJBFLKASN",\r
       "nick" : "Paul",\r
       "content" : "Bonjour",\r
-      "Troll" : 45,\r
       "answer_to" : [ 345, 532, ... ]\r
    }
  
-s -> c\r
-   {\r
-      "reply" : "ok" | "error",\r
-      "error_message" : "blabla"\r
+s -> c
+   <ok>
+ou
+   <error>
+
+
+=== Slapage ===
+
+c -> s
+   {
+      "action" : "slap",
+      "cookie" :  "LKJDLAKSJBFLKASN",
+      "user_id" : 67
    }
+   
+s -> c
+   <ok>
+ou
+   <error>
+   
+
+=== Bannissement ===
+
+c -> s
+   {
+      "action" : "ban",
+      "cookie" : "LKJDLAKSJBFLKASN",
+      "duration" : 15, // en minute
+      "user_id" : 67
+   }
+   
+s -> c
+   <ok>
+ou
+   <error>\r
  \r
\r
-C.7. Ajout d'une correction d'un messages\r
-----------------------------------------\r
+=== Ajout d'une correction d'un messages ===\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