about summary refs log tree commit diff stats
path: root/src/xmpp_message.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-01-29 00:21:04 +0000
committerJames Booth <boothj5@gmail.com>2013-01-29 00:21:04 +0000
commitb269ac97022bd15ac9a62d8b7cc98646313c4ce5 (patch)
treeaf3538804b60e13cc025712d877f7c7227527893 /src/xmpp_message.c
parent0b7a0531d08822985e5244fa4b8f5cfffc100454 (diff)
downloadprofani-tty-b269ac97022bd15ac9a62d8b7cc98646313c4ce5.tar.gz
Added xmpp_message.c
Diffstat (limited to 'src/xmpp_message.c')
-rw-r--r--src/xmpp_message.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/xmpp_message.c b/src/xmpp_message.c
new file mode 100644
index 00000000..f018470c
--- /dev/null
+++ b/src/xmpp_message.c
@@ -0,0 +1,52 @@
+/*
+ * xmpp_message.c
+ *
+ * Copyright (C) 2012, 2013 James Booth <boothj5@gmail.com>
+ *
+ * This file is part of Profanity.
+ *
+ * Profanity is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Profanity is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Profanity.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <strophe.h>
+
+#include "chat_session.h"
+#include "preferences.h"
+#include "xmpp.h"
+
+void
+message_send(const char * const msg, const char * const recipient)
+{
+    xmpp_conn_t * const conn = jabber_get_conn();
+    xmpp_ctx_t * const ctx = jabber_get_ctx();
+    if (prefs_get_states()) {
+        if (!chat_session_exists(recipient)) {
+            chat_session_start(recipient, TRUE);
+        }
+    }
+
+    xmpp_stanza_t *message;
+    if (prefs_get_states() && chat_session_get_recipient_supports(recipient)) {
+        chat_session_set_active(recipient);
+        message = stanza_create_message(ctx, recipient, STANZA_TYPE_CHAT,
+            msg, STANZA_NAME_ACTIVE);
+    } else {
+        message = stanza_create_message(ctx, recipient, STANZA_TYPE_CHAT,
+            msg, NULL);
+    }
+
+    xmpp_send(conn, message);
+    xmpp_stanza_release(message);
+}