d6d72945ad23f045e34405336a88db3f6f76d376
[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\">"
27 "<nombreMessage>2</nombreMessage>"
28 "<page>1</page>"
29 "<conversation><racine>3</racine><page>1</page></conversation>"
30 "</action>",
31 io:format("Messages de la premières page : ~p~n", [traiter_xml(XML)]).
32
33 %~ traiter_xml("<action name=\"message\">"
34 %~ "<cookie>4UDUSY6Z2IZNTQO484S8X</cookie>"
35 %~ "<pseudo>Pifou</pseudo>"
36 %~ "<contenu>test &amp; plop</contenu>"
37 %~ "</action>").
38
39
40 % il faut catcher toutes les exceptions possibles
41 out(A) ->
42 %inet:setopts(A#arg.clisock, inet:getopts(A#arg.clisock, [active])),
43 {value, {_, Contenu}} = lists:keysearch("action", 1, yaws_api:parse_post(A)),
44 Ret = traiter_xml(Contenu),
45 {content, "text/xml", Ret}.
46
47
48 traiter_xml(Contenu) ->
49 {XML, _} = xmerl_scan:string(Contenu),
50 traiter_action(XML#xmlElement.attributes, XML).
51
52
53 % un client s'enregistre (pseudo + password)
54 traiter_action([#xmlAttribute{value="register"}], XML) ->
55 euphorik_protocole:nouveau_user_login(XML);
56 % authentification d'un client
57 traiter_action([#xmlAttribute{value="login"}], XML) ->
58 euphorik_protocole:login(XML);
59 % modification du profile
60 traiter_action([#xmlAttribute{value="profile"}], XML) ->
61 euphorik_protocole:profile(XML);
62 % un utilisateur demande les messages
63 traiter_action([#xmlAttribute{value="refreshMessages"}], XML) ->
64 euphorik_protocole:refreshMessage(XML);
65 % un utilisateur envoie un message
66 traiter_action([#xmlAttribute{value="message"}], XML) ->
67 euphorik_protocole:message(XML).
68
69
70