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