summaryrefslogtreecommitdiffstats
path: root/core/ephraim_conn.erl
diff options
context:
space:
mode:
Diffstat (limited to 'core/ephraim_conn.erl')
-rw-r--r--core/ephraim_conn.erl45
1 files changed, 45 insertions, 0 deletions
diff --git a/core/ephraim_conn.erl b/core/ephraim_conn.erl
new file mode 100644
index 0000000..18edd6a
--- /dev/null
+++ b/core/ephraim_conn.erl
@@ -0,0 +1,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.