FIX il manquait le dernier message à l'affichage (problème dans euphorik_minichat_con...
[euphorik.git] / modules / erl / euphorik_requests.erl
1 % coding: utf-8
2 % Ce module est fait pour répondre à des requêtes 'AJAX'.
3 % Il est définit comme 'appmods' pour l'url "request" dans yaws.
4 % Par exemple http://www.euphorik.ch/request abouti sur la fonction out() de ce module.
5 % @author G.Burri
6
7 -module(euphorik_requests).
8 -export([
9 tester/0,
10 out/1
11 ]).
12
13 -include_lib("xmerl/include/xmerl.hrl").
14 -include_lib("yaws/include/yaws_api.hrl").
15
16 % Test du module
17 tester() ->
18
19 %~ {XML2, _} = xmerl_scan:string(
20 %~ "<action name=\"login\">"
21 %~ " <cookie>5DZQ2HCRO7JIX3QCSWRNL</cookie>"
22 %~ "</action>"),
23 %~ io:format("Login : ~p~n", [euphorik_protocole:login(XML2)]).
24
25 XML =
26 "<action name=\"refreshMessages\"><cookie>3FSDCH0FD4ML8WEPN2B5T</cookie>"
27 "<nombreMessage>10</nombreMessage>"
28 "</action>",
29 io:format("Messages de la premières page : ~p~n", [traiter_xml(XML)]).
30
31 %~ traiter_xml("<action name=\"message\">"
32 %~ "<cookie>4UDUSY6Z2IZNTQO484S8X</cookie>"
33 %~ "<pseudo>Pifou</pseudo>"
34 %~ "<contenu>test &amp; plop</contenu>"
35 %~ "</action>").
36
37
38 % il faut catcher toutes les exceptions possibles
39 out(A) ->
40 %inet:setopts(A#arg.clisock, inet:getopts(A#arg.clisock, [active])),
41 {value, {_, Contenu}} = lists:keysearch("action", 1, yaws_api:parse_post(A)),
42 Ret = traiter_xml(Contenu),
43 {content, "text/xml", Ret}.
44
45
46 traiter_xml(Contenu) ->
47 {XML, _} = xmerl_scan:string(Contenu),
48 traiter_action(XML#xmlElement.attributes, XML).
49
50
51 % un client s'enregistre (pseudo + password)
52 traiter_action([#xmlAttribute{value="register"}], XML) ->
53 euphorik_protocole:nouveau_user_login(XML);
54 % authentification d'un client
55 traiter_action([#xmlAttribute{value="login"}], XML) ->
56 euphorik_protocole:login(XML);
57 % modification du profile
58 traiter_action([#xmlAttribute{value="profile"}], XML) ->
59 euphorik_protocole:profile(XML);
60 % un utilisateur demande les messages
61 traiter_action([#xmlAttribute{value="refreshMessages"}], XML) ->
62 euphorik_protocole:refreshMessage(XML);
63 % un utilisateur envoie un message
64 traiter_action([#xmlAttribute{value="message"}], XML) ->
65 euphorik_protocole:message(XML).
66
67
68