summaryrefslogtreecommitdiffstats
path: root/src/core/ephraim_event.erl
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2010-06-23 20:37:31 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2010-06-23 20:37:31 +0200
commitd5adf274c137bef22d5695d4a280e10068edcb0e (patch)
tree6c01a10c06a1fabe40d8a6498b8a934df781a023 /src/core/ephraim_event.erl
parent04a0f989a71a83114fe1f58b2ebe1af2f56cb87b (diff)
downloadephraim-d5adf274c137bef22d5695d4a280e10068edcb0e.tar
ephraim-d5adf274c137bef22d5695d4a280e10068edcb0e.zip
Show avatars in roster
Diffstat (limited to 'src/core/ephraim_event.erl')
-rw-r--r--src/core/ephraim_event.erl42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/core/ephraim_event.erl b/src/core/ephraim_event.erl
new file mode 100644
index 0000000..dd86a7b
--- /dev/null
+++ b/src/core/ephraim_event.erl
@@ -0,0 +1,42 @@
+-module(ephraim_event).
+-compile([debug_info, export_all]).
+-include_lib("exmpp/include/exmpp.hrl").
+
+-spec init() -> ok.
+init() ->
+ loop().
+
+-spec handleEvent(binary(), #xmlel{}) -> ok.
+handleEvent(From, Item) ->
+ HasAvatarData = exmpp_xml:has_element(Item, 'urn:xmpp:avatar:data', data),
+ if HasAvatarData ->
+ Element = exmpp_xml:get_element(Item, 'urn:xmpp:avatar:data', data),
+ Data = base64:decode(exmpp_xml:get_cdata_from_list(Element#xmlel.children)),
+ ephraim ! {roster, {avatar, From, Data}};
+ true ->
+ io:format("Received unhandled event from ~p:~n~p~n", [From, Item])
+ end.
+
+-spec handleEvents(binary(), [#xmlel{}]) -> ok.
+handleEvents(_, []) ->
+ ok;
+handleEvents(From, [Item|Rest]) ->
+ handleEvent(From, Item),
+ handleEvents(From, Rest).
+
+-spec loop() -> ok.
+loop() ->
+ receive
+ stop ->
+ ok;
+
+ {receive_event, From, Packet} ->
+ Event = exmpp_xml:get_element(Packet, 'http://jabber.org/protocol/pubsub#event', event),
+ Items = exmpp_xml:get_element(Event, 'http://jabber.org/protocol/pubsub#event', items),
+ handleEvents(From, Items#xmlel.children),
+ loop();
+
+ Msg ->
+ io:format("ephraim_event: ~p~n", [Msg]),
+ loop()
+ end.