Changeset - a9ccbdc50107
[Not reviewed]
0 7 0
HanzZ - 14 years ago 2011-06-22 23:05:40
hanzz.k@gmail.com
Working XHTML from XMPP to legacy network
7 files changed with 27 insertions and 11 deletions:
0 comments (0 inline, 0 general)
backends/libircclient-qt/main.cpp
Show inline comments
 
@@ -42,7 +42,7 @@ class IRCNetworkPlugin : public NetworkPlugin {
 
			m_sessions[user]->deleteLater();
 
		}
 

	
 
		void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) {
 
		void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &/*xhtml*/) {
 
			std::cout << "MESSAGE " << user << " " << legacyName << "\n";
 
			if (m_sessions[user] == NULL)
 
				return;
backends/libpurple/main.cpp
Show inline comments
 
@@ -259,16 +259,22 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
 
			}
 
		}
 

	
 
		void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) {
 
		void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &xhtml) {
 
			PurpleAccount *account = m_sessions[user];
 
			if (account) {
 
				PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, legacyName.c_str(), account);
 
				if (!conv) {
 
					conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, legacyName.c_str());
 
				}
 
				gchar *_markup = purple_markup_escape_text(message.c_str(), -1);
 
				purple_conv_im_send(PURPLE_CONV_IM(conv), _markup);
 
				g_free(_markup);
 
				if (xhtml.empty()) {
 
					gchar *_markup = purple_markup_escape_text(message.c_str(), -1);
 
					purple_conv_im_send(PURPLE_CONV_IM(conv), _markup);
 
					g_free(_markup);
 
				}
 
				else {
 
					std::cout << xhtml << "\n";
 
					purple_conv_im_send(PURPLE_CONV_IM(conv), xhtml.c_str());
 
				}
 
			}
 
		}
 

	
include/Swiften/Parser/PayloadParsers/XHTMLIMParser.cpp
Show inline comments
 
@@ -21,7 +21,7 @@ void XHTMLIMParser::handleStartElement(const std::string& element, const std::st
 
		}
 
	}
 
	else if (level_ >= InsideBodyLevel && bodyParser_) {
 
		bodyParser_->handleStartElement(element, ns, attributes);
 
		bodyParser_->handleStartElement(element, "", attributes);
 
	}
 
}
 

	
include/transport/networkplugin.h
Show inline comments
 
@@ -70,7 +70,7 @@ class NetworkPlugin {
 

	
 
		virtual void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) = 0;
 
		virtual void handleLogoutRequest(const std::string &user, const std::string &legacyName) = 0;
 
		virtual void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) = 0;
 
		virtual void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &xhtml = "") = 0;
 
		virtual void handleVCardRequest(const std::string &/*user*/, const std::string &/*legacyName*/, unsigned int /*id*/) {}
 
		virtual void handleVCardUpdatedRequest(const std::string &/*user*/, const std::string &/*photo*/) {}
 
		virtual void handleJoinRoomRequest(const std::string &/*user*/, const std::string &/*room*/, const std::string &/*nickname*/, const std::string &/*pasword*/) {}
src/networkplugin.cpp
Show inline comments
 
@@ -313,7 +313,7 @@ void NetworkPlugin::handleConvMessagePayload(const std::string &data) {
 
		return;
 
	}
 

	
 
	handleMessageSendRequest(payload.username(), payload.buddyname(), payload.message());
 
	handleMessageSendRequest(payload.username(), payload.buddyname(), payload.message(), payload.xhtml());
 
}
 

	
 
void NetworkPlugin::handleAttentionPayload(const std::string &data) {
src/networkpluginserver.cpp
Show inline comments
 
@@ -35,6 +35,7 @@
 
#include "Swiften/Elements/StreamError.h"
 
#include "Swiften/Network/BoostConnectionServer.h"
 
#include "Swiften/Elements/AttentionPayload.h"
 
#include "Swiften/Elements/XHTMLIMPayload.h"
 
#include "pbnetwork.pb.h"
 
#include "sys/wait.h"
 
#include "sys/signal.h"
 
@@ -645,7 +646,7 @@ void NetworkPluginServer::handleUserDestroyed(User *user) {
 
}
 

	
 
void NetworkPluginServer::handleMessageReceived(NetworkConversation *conv, boost::shared_ptr<Swift::Message> &msg) {
 

	
 
	// handle ChatState
 
	boost::shared_ptr<Swift::ChatState> statePayload = msg->getPayload<Swift::ChatState>();
 
	if (statePayload) {
 
		pbnetwork::WrapperMessage_Type type = pbnetwork::WrapperMessage_Type_TYPE_BUDDY_CHANGED;
 
@@ -677,6 +678,7 @@ void NetworkPluginServer::handleMessageReceived(NetworkConversation *conv, boost
 
		}
 
	}
 

	
 
	// Handle attention requests
 
	boost::shared_ptr<Swift::AttentionPayload> attentionPayload = msg->getPayload<Swift::AttentionPayload>();
 
	if (attentionPayload) {
 
		pbnetwork::ConversationMessage m;
 
@@ -693,13 +695,20 @@ void NetworkPluginServer::handleMessageReceived(NetworkConversation *conv, boost
 
		send(c->connection, message);
 
		return;
 
	}
 
	
 

	
 
	if (!msg->getBody().empty()) {
 
	std::string xhtml;
 
	boost::shared_ptr<Swift::XHTMLIMPayload> xhtmlPayload = msg->getPayload<Swift::XHTMLIMPayload>();
 
	if (xhtmlPayload) {
 
		xhtml = xhtmlPayload->getBody();
 
	}
 

	
 
	// Send normal message
 
	if (!msg->getBody().empty() || !xhtml.empty()) {
 
		pbnetwork::ConversationMessage m;
 
		m.set_username(conv->getConversationManager()->getUser()->getJID().toBare());
 
		m.set_buddyname(conv->getLegacyName());
 
		m.set_message(msg->getBody());
 
		m.set_xhtml(xhtml);
 

	
 
		std::string message;
 
		m.SerializeToString(&message);
src/pbnetwork.proto
Show inline comments
 
@@ -37,6 +37,7 @@ message ConversationMessage {
 
	required string buddyName = 2;
 
	required string message = 3;
 
	optional string nickname = 4;
 
	optional string xhtml = 5;
 
}
 

	
 
message Room {
0 comments (0 inline, 0 general)