% coding: utf-8
% Ce module est fait pour répondre à des requêtes 'AJAX'.
% Il est définit comme 'appmods' pour l'url "request" dans yaws.
% Par exemple http://www.euphorik.ch/request abouti sur la fonction out() de ce module.
% @author G.Burri
-module(euphorik_requests).
-export([
tester/0,
out/1
]).
-include_lib("xmerl/include/xmerl.hrl").
-include_lib("yaws/include/yaws_api.hrl").
% Test du module
tester() ->
%~ {XML2, _} = xmerl_scan:string(
%~ ""
%~ " 5DZQ2HCRO7JIX3QCSWRNL"
%~ ""),
%~ io:format("Login : ~p~n", [euphorik_protocole:login(XML2)]).
XML =
""
"2"
"1"
"31"
"",
io:format("Messages de la premières page : ~p~n", [traiter_xml(XML)]).
%~ traiter_xml(""
%~ "4UDUSY6Z2IZNTQO484S8X"
%~ "Pifou"
%~ "test & plop"
%~ "").
% il faut catcher toutes les exceptions possibles
out(A) ->
%inet:setopts(A#arg.clisock, inet:getopts(A#arg.clisock, [active])),
{value, {_, Contenu}} = lists:keysearch("action", 1, yaws_api:parse_post(A)),
Ret = traiter_xml(Contenu),
{content, "text/xml", Ret}.
traiter_xml(Contenu) ->
{XML, _} = xmerl_scan:string(Contenu),
traiter_action(XML#xmlElement.attributes, XML).
% un client s'enregistre (pseudo + password)
traiter_action([#xmlAttribute{value="register"}], XML) ->
euphorik_protocole:nouveau_user_login(XML);
% authentification d'un client
traiter_action([#xmlAttribute{value="login"}], XML) ->
euphorik_protocole:login(XML);
% modification du profile
traiter_action([#xmlAttribute{value="profile"}], XML) ->
euphorik_protocole:profile(XML);
% un utilisateur demande les messages
traiter_action([#xmlAttribute{value="refreshMessages"}], XML) ->
euphorik_protocole:refreshMessage(XML);
% un utilisateur envoie un message
traiter_action([#xmlAttribute{value="message"}], XML) ->
euphorik_protocole:message(XML).