ADD la description fonctionnelle
[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   <conversation num="0">
102    <racine>RE</racine> <!-- pas présent pour la conversation numéro 0 -->
103    <dernierMessageId>6ZR</dernierMessageId>
104    <page>1</page>
105   </converation>
106   <!-- [..] -->
107  </action>
108  
109 s -> c
110    <reponse name="refreshMessages">
111       <conversation num="0"> <!-- num : le numéro de la conversation 0 = conversation principale -->
112          <autresPages>true</autresPages> <!-- possède une ou plusieurs autres pages ? "true" ou "false" -->
113          <message id="1F5">
114             <date>Hier 17:26:54</date> <!-- date du message (format non formel) -->
115             <systeme></system> <!-- est-ce un message système ? "true" ou "false" -->
116             <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->
117             <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->
118             <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->
119             <pseudo>Paul</pseudo>
120             <login>paul_22</login>
121             <contenu>Salut</contenu>
122             <repondA>
123                <!-- id est l'id d'un message -->
124                <id id="DE2" pseudo="Pierre" login="pierre_45"> 
125                <!-- [..] -->
126             </repondA>
127          </message>
128          <!-- [..] -->
129       <conversation>
130       <!-- [..] -->
131    </reponse>
132 ou
133    <!-- modification d'un message -->
134    <reponse name="modMessage">
135    TODO
136    </reponse>
137 ou
138    <reponse name="refreshMessages">
139       <erreur>raison</erreur>
140    </reponse>
141
142
143 C.5. Envoie message
144 -------------------
145
146 Un client envoie un message, le message peut répondre à un certain nombre d'autres messages.
147 <reponses> n'est pas obligatoire.
148 c -> s
149  <action name="message">
150   <cookie>LKJDLAKSJBFLKASN</cookie>
151   <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->
152   <contenu>Bonjour</contenu>
153   <reponses>
154    <reponse id="RT5" />
155    <reponse id="39K" />
156    <!-- [..] -->
157   </reponses>
158  </action>
159  
160 s -> c
161  <reponse name="message">
162    <statut>ok|pas ok</statut>
163  </reponse>
164  
165