From 065127585a724926210da0a4d61e3faef496f238 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Mon, 26 Mar 2012 21:36:10 +0200 Subject: [PATCH] Added MUCPayloadParser --- .../PayloadParsers/MUCPayloadParser.cpp | 27 +++++++++++++++++++ .../Parser/PayloadParsers/MUCPayloadParser.h | 22 +++++++++++++++ src/transport.cpp | 3 +++ 3 files changed, 52 insertions(+) create mode 100644 include/Swiften/Parser/PayloadParsers/MUCPayloadParser.cpp create mode 100644 include/Swiften/Parser/PayloadParsers/MUCPayloadParser.h diff --git a/include/Swiften/Parser/PayloadParsers/MUCPayloadParser.cpp b/include/Swiften/Parser/PayloadParsers/MUCPayloadParser.cpp new file mode 100644 index 00000000..257c3da3 --- /dev/null +++ b/include/Swiften/Parser/PayloadParsers/MUCPayloadParser.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include + +#include + +#include +#include +#include +#include +#include + +namespace Swift { + +void MUCPayloadParser::handleTree(ParserElement::ref root) { + foreach (ParserElement::ref child, root->getAllChildren()) { + if (child->getName() == "password" && child->getNamespace() == root->getNamespace()) { + getPayloadInternal()->setPassword(child->getText()); + } + } +} + +} diff --git a/include/Swiften/Parser/PayloadParsers/MUCPayloadParser.h b/include/Swiften/Parser/PayloadParsers/MUCPayloadParser.h new file mode 100644 index 00000000..5f6910b0 --- /dev/null +++ b/include/Swiften/Parser/PayloadParsers/MUCPayloadParser.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include + +#include +#include +#include + +namespace Swift { + class PayloadParserFactoryCollection; + class MUCPayloadParser : public GenericPayloadTreeParser { + public: + MUCPayloadParser(){} + virtual void handleTree(ParserElement::ref root); + }; +} diff --git a/src/transport.cpp b/src/transport.cpp index 581670af..d32bad70 100644 --- a/src/transport.cpp +++ b/src/transport.cpp @@ -40,6 +40,7 @@ #include "Swiften/Parser/PayloadParsers/GatewayPayloadParser.h" #include "Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h" #include "Swiften/Serializer/PayloadSerializers/SpectrumErrorSerializer.h" +#include "Swiften/Parser/PayloadParsers/MUCPayloadParser.h" #include "transport/BlockParser.h" #include "transport/BlockSerializer.h" #include "Swiften/Parser/PayloadParsers/InvisibleParser.h" @@ -94,6 +95,7 @@ Component::Component(Swift::EventLoop *loop, Swift::NetworkFactories *factories, m_server->addPayloadParserFactory(new GenericPayloadParserFactory("invisible", "urn:xmpp:invisible:0")); m_server->addPayloadParserFactory(new GenericPayloadParserFactory("query", "http://jabber.org/protocol/stats")); m_server->addPayloadParserFactory(new GenericPayloadParserFactory("query", "jabber:iq:gateway")); + m_server->addPayloadParserFactory(new GenericPayloadParserFactory("x", "http://jabber.org/protocol/muc")); m_server->addPayloadSerializer(new Swift::AttentionSerializer()); m_server->addPayloadSerializer(new Swift::XHTMLIMSerializer()); @@ -122,6 +124,7 @@ Component::Component(Swift::EventLoop *loop, Swift::NetworkFactories *factories, m_component->addPayloadParserFactory(new GenericPayloadParserFactory("invisible", "urn:xmpp:invisible:0")); m_component->addPayloadParserFactory(new GenericPayloadParserFactory("query", "http://jabber.org/protocol/stats")); m_component->addPayloadParserFactory(new GenericPayloadParserFactory("query", "jabber:iq:gateway")); + m_component->addPayloadParserFactory(new GenericPayloadParserFactory("x", "http://jabber.org/protocol/muc")); m_component->addPayloadSerializer(new Swift::AttentionSerializer()); m_component->addPayloadSerializer(new Swift::XHTMLIMSerializer());