1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
-module(ephraim_conn).
-include_lib("exmpp/include/exmpp_client.hrl").
-compile([debug_info, export_all]).
-record(conn_state, {
session :: any(),
roster :: any()
}).
-spec init() -> ok.
init() ->
application:start(exmpp),
Session = exmpp_session:start(),
JID = exmpp_jid:make("ephraim-test", "jabber.ccc.de", "Bar"),
exmpp_session:auth_basic_digest(Session, JID, "foobarbla"),
exmpp_session:connect_TCP(Session, "jabber.ccc.de", 5222),
session(#conn_state{session=Session}).
-spec session(#conn_state{}) -> ok.
session(State) ->
exmpp_session:login(State#conn_state.session),
exmpp_session:send_packet(State#conn_state.session, exmpp_presence:set_status(exmpp_presence:available(), "Foo/Test\\Bar")),
loop(State).
-spec loop(#conn_state{}) -> ok.
loop(State) ->
receive
stop ->
exmpp_session:stop(State#conn_state.session);
#received_packet{packet_type=presence, raw_packet=Packet} ->
From = exmpp_xml:get_attribute(Packet, from, <<"unknown">>),
Type = atom_to_list(exmpp_presence:get_type(Packet)),
Status = exmpp_presence:get_status(Packet),
io:format("~ts is now ~ts: ~ts~n", [From, Type, Status]),
loop(State);
#received_packet{packet_type=message, raw_packet=Packet} ->
From = exmpp_xml:get_attribute(Packet, from, <<"unknown">>),
ephraim ! {receive_message, From, Packet},
loop(State);
Msg ->
io:format("ephraim_conn: ~p~n", [Msg]),
loop(State)
end.
|