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.
7 -module(euphorik_requests
).
13 -include_lib("xmerl/include/xmerl.hrl").
14 -include_lib("yaws/include/yaws_api.hrl").
19 %~ {XML2, _} = xmerl_scan:string(
20 %~ "<action name=\"login\">"
21 %~ " <cookie>5DZQ2HCRO7JIX3QCSWRNL</cookie>"
23 %~ io:format("Login : ~p~n", [euphorik_protocole:login(XML2)]).
26 "<action name=\"refreshMessages\">"
27 "<nombreMessage>2</nombreMessage>"
29 "<conversation><racine>3</racine><page>1</page></conversation>"
31 io:format("Messages de la premières page : ~p~n", [traiter_xml(XML
)]).
33 %~ traiter_xml("<action name=\"message\">"
34 %~ "<cookie>4UDUSY6Z2IZNTQO484S8X</cookie>"
35 %~ "<pseudo>Pifou</pseudo>"
36 %~ "<contenu>test & plop</contenu>"
40 % il faut catcher toutes les exceptions possibles
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
}.
48 traiter_xml(Contenu
) ->
49 {XML
, _
} = xmerl_scan:string(Contenu
),
50 traiter_action(XML#xmlElement
.attributes
, XML
).
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
).