2fb69c0b784a4caae1d71119b55f36a3e2470f14
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\"><cookie>3FSDCH0FD4ML8WEPN2B5T</cookie>"
27 "<nombreMessage>10</nombreMessage>"
29 io:format("Messages de la premières page : ~p~n", [traiter_donnees(XML
)]).
31 %~ traiter_xml("<action name=\"message\">"
32 %~ "<cookie>4UDUSY6Z2IZNTQO484S8X</cookie>"
33 %~ "<pseudo>Pifou</pseudo>"
34 %~ "<contenu>test & plop</contenu>"
38 % il faut catcher toutes les exceptions possibles
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_donnees(Contenu
),
43 {content
, "text/xml", Ret
}.
46 traiter_donnees(Contenu
) ->
47 case xmerl_scan:string(Contenu
) of
50 #xmlElement
{name
= json
, content
= [#xmlText
{value
= J
}|_
]} ->
51 case json:decode_string(J
) of
52 {ok
, {struct
, [{action
, Action
}| Reste
]}} ->
53 traiter_action(Action
, Reste
);
58 traiter_action(XML#xmlElement
.attributes
, XML
)
64 traiter_action("authentification", JSON
) ->
65 euphorik_protocole:login(JSON
);
66 % un client s'enregistre (pseudo + password)
67 traiter_action([#xmlAttribute
{value
="register"}], XML
) ->
68 euphorik_protocole:nouveau_user_login(XML
);
69 % authentification d'un client
70 traiter_action([#xmlAttribute
{value
="login"}], XML
) ->
71 euphorik_protocole:login(XML
);
72 % modification du profile
73 traiter_action([#xmlAttribute
{value
="profile"}], XML
) ->
74 euphorik_protocole:profile(XML
);
75 % un utilisateur demande les messages
76 traiter_action([#xmlAttribute
{value
="refreshMessages"}], XML
) ->
77 euphorik_protocole:refreshMessage(XML
);
78 % un utilisateur envoie un message
79 traiter_action([#xmlAttribute
{value
="message"}], XML
) ->
80 euphorik_protocole:message(XML
).