MOD Passage au JSON (tout cassé pour l'instant)
[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 qu'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  <action name="login">
36    <login>Paul</login>
37    <password>IJKJDHHSAD9081238</password>
38  </action>
39  
40 ou
41 <action name="login">
42    <cookie>LKJDLAKSJBFLKASN</cookie>
43 </action>
44
45 ou
46  <action name="register">
47    <login>Paul</login>
48    <password>IJKJDHHSAD9081238</password>
49  </action>
50    
51 s -> c
52 (<information> et <pseudo> pas obligatoire)
53  <reponse name="login">
54    <statut>enregistre|identifie|erreur</statut>
55    <cookie>LKJDLAKSJBFLKASN</cookie>
56    <id>7ZS</id> <!-- l'id est en base 36 -->
57    <pseudo>Paul</pseudo>
58    <login>paul49</login>
59    <email>paul@pierre.com</email>
60    <css>css/lite.css</css>
61    <pagePrincipale>1</pagePrincipale> <!-- facultatif -->
62    <!-- L'ordre des conversations est le même que lors de la sauvegarde du profile -->
63    <conversation>
64       <racine>4F</racine>
65       <page>1</page>
66    </conversation>
67    <!-- [..] -->
68    <information>blabla</information>
69  </reponse>
70  
71  
72 C.2. Logout
73 -----------
74 c -> s
75  <action name="logout">
76    <cookie>LKJDLAKSJBFLKASN</cookie> 
77  </action>
78  
79 C.3. Profile
80 ------------
81 modification du profile, seul 'cookie' est obligatoire
82
83 c -> s
84  <action name="profile">
85    <cookie>LKJDLAKSJBFLKASN</cookie>
86    <login>paul49</login>
87    <password>IJKJDHHSAD9081238</password>
88    <pseudo>Paul</pseudo>
89    <email>paul@pierre.com</email>
90    <css>css/dark.css</css>
91    <pagePrincipale>1</pagePrincipale> <!-- facultatif -->
92    <conversation>
93       <racine>4F</racine>
94       <page>1</page>
95    </conversation>
96    <!-- [..] -->
97  </action>
98  
99 s -> c
100  <reponse name="profile">
101    <statut>ok|pas ok</statut>
102    <information>balbla</information>
103  </reponse>
104
105
106 C.4. Refresh messages
107 ---------------------
108
109 Si dernierMessageId est absent alors le client ne possède pas de message.
110 Page peut être omis, il a alors la valeur 1 (première page).
111 dernierMessageId est en base 36 (l'histoire de rigoler un peu).
112 Les conversations données sont définies dans le profile.
113
114 c -> s
115    <action name="refreshMessages">
116       <cookie>LKJDLAKSJBFLKASN</cookie>
117       <nombreMessage>10</nombreMessage>
118       <dernierMessageId>6ZR</dernierMessageId>
119    </action>
120  
121 s -> c
122    <reponse name="refreshMessages">
123       <conversation> <!-- les conversations sont ordrées, la première est la conversation principale -->
124          <autresPages>true</autresPages> <!-- possède une ou plusieurs autres pages ? "true" ou "false" -->
125          <message id="1F5">
126             <date>Hier 17:26:54</date> <!-- date du message (format non formel) -->
127             <systeme></system> <!-- est-ce un message système ? "true" ou "false" -->
128             <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->
129             <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->
130             <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->
131             <pseudo>Paul</pseudo>
132             <login>paul_22</login>
133             <contenu>Salut</contenu>
134             <repondA>
135                <!-- id est l'id d'un message -->
136                <id id="DE2" pseudo="Pierre" login="pierre_45"> 
137                <!-- [..] -->
138             </repondA>
139          </message>
140          <!-- [..] -->
141       <conversation>
142       <!-- [..] -->
143    </reponse>
144 ou
145    <!-- modification d'un message -->
146    <reponse name="modMessage">
147       <message id="1F5">\r
148          <contenu>Salut ++ poulpe</contenu> <!-- contient le message complet -->\r
149       </message>
150    </reponse>
151 ou
152    <reponse name="refreshMessages">
153       <erreur>raison</erreur>
154    </reponse>
155
156
157 C.5. Envoie message
158 -------------------
159
160 Le client envoie un message, le message peut répondre à un certain nombre d'autres messages.
161 <reponses> n'est pas obligatoire.\r
162
163 c -> s
164    <action name="message">
165       <cookie>LKJDLAKSJBFLKASN</cookie>
166       <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->
167       <contenu>Bonjour</contenu>
168       <reponses>
169          <reponse id="RT5" />
170          <reponse id="39K" />
171          <!-- [..] -->
172       </reponses>
173    </action>
174  
175 s -> c
176    <reponse name="message">
177       <statut>ok|pas ok</statut>
178    </reponse>
179  \r
180  \r
181 C.6 Ajout d'une correction d'un messages\r
182 ----------------------------------------\r
183 \r
184 Le client envoie un correctif sous la forme de texte supplémentaire à appondre au dernier messages.\r
185 Le message est appondu avec un " +++ " devant, par exemple :\r
186 > Gnome c'est mieux que KDE +++ Euh non ok, c'est faux\r
187 \r
188 c -> s\r
189    <action name="correction">\r
190       <cookie>LKJDLAKSJBFLKASN</cookie>\r
191       <correctif>Euh non ok, c'est faux</correctif>\r
192    </action>\r
193    \r
194 s -> c\r
195    <reponse name="correction">\r
196       <statut>ok|pas ok</statut> <!-- pas ok en général lorsque l'utilisateur n'a pas encore posté de message -->\r
197    </reponse>\r
198 \r
199 \r
200
201