ADD support des conversations (pas fini)
[euphorik.git] / doc / protocole2.txt
1 Euphorik - minichat - Protocole v2
2 ----------------------------------
3
4 A. Introduction
5 ---------------
6
7 Ce document a pour but de décrire la communication client-serveur du site euphorik.
8 Ce document remplace 'protocole.txt' qui était la première version du protocol.
9
10 B. Principe
11 -----------
12
13 Enregistrement:
14
15 Authentification:
16
17 Rafraichissement:
18  * Le client envoie une demande au serveur avec l'id du dernier message (via XMLHttpRequest ou un function de JQuery)
19  * Le serveur maintient la connexion bloqué si le client est à jour.
20  * Dès qclientu'un nouveau message arrive, le serveurs débloque la connexion est envoie le ou les messages manquants.
21  
22
23 C. Protocole
24 ------------
25 c : client
26 s : server
27 Chaque message est numéroté #<num>.
28 Les messages client vers serveur sont envoyé par HTTP-POST
29
30
31 C.1. Login
32 ----------
33
34 c -> s
35 #1
36  <action name="login">
37    <login>Paul</login>
38    <password>IJKJDHHSAD9081238</password>
39  </action>
40
41 ou
42 #2 (<login> et <password> peuvent être omis)
43  <action name="register">
44    <login>Paul</login>
45    <password>IJKJDHHSAD9081238</password>
46  </action>
47    
48 s -> c
49 #3 (<information> et <pseudo> pas obligatoire)
50  <reponse name="login">
51    <statut>enregistre|identifie|erreur</statut>
52    <cookie>LKJDLAKSJBFLKASN</cookie>
53    <id>7ZS</id> <!-- l'id est en base 36 -->
54    <pseudo>Paul</pseudo>
55    <login>paul49</login>
56    <email>paul@pierre.com</email>
57    <css>css/lite.css</css>
58    <!-- L'ordre des conversations est le même que lors de la sauvegarde du profile -->
59    <!-- Comprend également la conversation principal, dans ce cas la racine est à 0 -->
60    <conversation>
61       <racine>4</racine>
62       <page>1</page>
63    </conversation>
64    <!-- [..] -->
65    <information>blabla</information>
66  </reponse>
67  
68  
69 C.2. Logout
70 -----------
71 c -> s
72  <action name="logout">
73    <cookie>LKJDLAKSJBFLKASN</cookie> 
74  </action>
75  
76 C.3. Profile
77 ------------
78 modification du profile, seul 'cookie' est obligatoire
79
80 c -> s
81  <action name="profile">
82    <cookie>LKJDLAKSJBFLKASN</cookie>
83    <login>paul49</login>
84    <password>IJKJDHHSAD9081238</password>
85    <pseudo>Paul</pseudo>
86    <email>paul@pierre.com</email>
87    <css>css/dark.css</css>
88    <conversation>
89       <racine>4</racine>
90       <page>1</page>
91    </conversation>
92    <!-- [..] -->
93  </action>
94  
95 s -> c
96  <reponse name="profile">
97    <statut>ok|pas ok</statut>
98    <information>balbla</information>
99  </reponse>
100
101
102 C.4. Refresh messages
103 ---------------------
104
105 Si dernierMessageId est absent alors le client ne possède pas de message.
106 Page peut être omis, il a alors la valeur 1 (première page).
107 dernierMessageId est en base 36 (l'histoire de rigoler un peu).
108 Les conversations données sont définies dans le profile.
109
110 c -> s
111    <action name="refreshMessages">
112       <cookie>LKJDLAKSJBFLKASN</cookie>
113       <nombreMessage>10</nombreMessage>
114       <dernierMessageId>6ZR</dernierMessageId>
115       <!-- [..] -->
116    </action>
117  
118 s -> c
119    <reponse name="refreshMessages">
120       <conversation> <!-- les conversations sont ordrées, la première est la conversation principale -->
121          <autresPages>true</autresPages> <!-- possède une ou plusieurs autres pages ? "true" ou "false" -->
122          <message id="1F5">
123             <date>Hier 17:26:54</date> <!-- date du message (format non formel) -->
124             <systeme></system> <!-- est-ce un message système ? "true" ou "false" -->
125             <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->
126             <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->
127             <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->
128             <pseudo>Paul</pseudo>
129             <login>paul_22</login>
130             <contenu>Salut</contenu>
131             <repondA>
132                <!-- id est l'id d'un message -->
133                <id id="DE2" pseudo="Pierre" login="pierre_45"> 
134                <!-- [..] -->
135             </repondA>
136          </message>
137          <!-- [..] -->
138       <conversation>
139       <!-- [..] -->
140    </reponse>
141 ou
142    <!-- modification d'un message -->
143    <reponse name="modMessage">
144       <message id="1F5">\r
145          <contenu>Salut ++ poulpe</contenu> <!-- contient le message complet -->\r
146       </message>
147    </reponse>
148 ou
149    <reponse name="refreshMessages">
150       <erreur>raison</erreur>
151    </reponse>
152
153
154 C.5. Envoie message
155 -------------------
156
157 Le client envoie un message, le message peut répondre à un certain nombre d'autres messages.
158 <reponses> n'est pas obligatoire.\r
159
160 c -> s
161    <action name="message">
162       <cookie>LKJDLAKSJBFLKASN</cookie>
163       <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->
164       <contenu>Bonjour</contenu>
165       <reponses>
166          <reponse id="RT5" />
167          <reponse id="39K" />
168          <!-- [..] -->
169       </reponses>
170    </action>
171  
172 s -> c
173    <reponse name="message">
174       <statut>ok|pas ok</statut>
175    </reponse>
176  \r
177  \r
178 C.6 Ajout d'une correction d'un messages\r
179 ----------------------------------------\r
180 \r
181 Le client envoie un correctif sous la forme de texte supplémentaire à appondre au dernier messages.\r
182 Le message est appondu avec un " +++ " devant, par exemple :\r
183 > Gnome c'est mieux que KDE +++ Euh non ok, c'est faux\r
184 \r
185 c -> s\r
186    <action name="correction">\r
187       <cookie>LKJDLAKSJBFLKASN</cookie>\r
188       <correctif>Euh non ok, c'est faux</correctif>\r
189    </action>\r
190    \r
191 s -> c\r
192    <reponse name="correction">\r
193       <statut>ok|pas ok</statut> <!-- pas ok en général lorsque l'utilisateur n'a pas encore posté de message -->\r
194    </reponse>\r
195 \r
196 \r
197
198