MOD légères modif du TODO
[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 %~ {XML, _} = xmerl_scan:string(
19 %~ "<action name=\"loginCaptcha\">"
20 %~ " <captchaCrypt>b1b1b4e72e6f3d00e477cf37cced5851</captchaCrypt>"
21 %~ " <captchaInput>LKJDLA</captchaInput>"
22 %~ "</action>"),
23 %~ io:format("Nouvel user : ~p~n", [nouveau_user(XML)]).
24
25 %~ {XML2, _} = xmerl_scan:string(
26 %~ "<action name=\"login\">"
27 %~ " <cookie>5DZQ2HCRO7JIX3QCSWRNL</cookie>"
28 %~ "</action>"),
29 %~ io:format("Login : ~p~n", [euphorik_protocole:login(XML2)]).
30
31 XML =
32 "<action name=\"refreshMessages\">"
33 "<nombreMessage>2</nombreMessage>"
34 "<page>1</page>"
35 "<conversation><racine>3</racine><page>1</page></conversation>"
36 "</action>",
37 io:format("Messages de la premières page : ~p~n", [traiter_xml(XML)]).
38
39 %~ traiter_xml("<action name=\"message\">"
40 %~ "<cookie>4UDUSY6Z2IZNTQO484S8X</cookie>"
41 %~ "<pseudo>Pifou</pseudo>"
42 %~ "<contenu>test &amp; plop</contenu>"
43 %~ "</action>").
44 %~ traiter_xml(
45 %~ "<action name=\"generationCaptcha\">"
46 %~ "</action>").
47
48
49 % il faut catcher toutes les exceptions possibles
50 out(A) ->
51 %inet:setopts(A#arg.clisock, inet:getopts(A#arg.clisock, [active])),
52 {value, {_, Contenu}} = lists:keysearch("action", 1, yaws_api:parse_post(A)),
53 Ret = traiter_xml(Contenu),
54 {content, "text/xml", Ret}.
55
56
57 traiter_xml(Contenu) ->
58 {XML, _} = xmerl_scan:string(Contenu),
59 traiter_action(XML#xmlElement.attributes, XML).
60
61
62 % un client demande la génération d'un captcha (obsolète)
63 %~ traiter_action([#xmlAttribute{value="generationCaptcha"}], XML) ->
64 %~ euphorik_protocole:generation_captcha(XML);
65 % un client se log pour la première fois (obsolète)
66 %~ traiter_action([#xmlAttribute{value="loginCaptcha"}], XML) ->
67 %~ euphorik_protocole:nouveau_user_captcha(XML);
68
69
70 % un client s'enregistre (pseudo + password)
71 traiter_action([#xmlAttribute{value="register"}], XML) ->
72 euphorik_protocole:nouveau_user_login(XML);
73 % authentification d'un client
74 traiter_action([#xmlAttribute{value="login"}], XML) ->
75 euphorik_protocole:login(XML);
76 % modification du profile
77 traiter_action([#xmlAttribute{value="profile"}], XML) ->
78 euphorik_protocole:profile(XML);
79 % un utilisateur demande les messages
80 traiter_action([#xmlAttribute{value="refreshMessages"}], XML) ->
81 euphorik_protocole:refreshMessage(XML);
82 % un utilisateur envoie un message
83 traiter_action([#xmlAttribute{value="message"}], XML) ->
84 euphorik_protocole:message(XML).
85
86
87