diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-09-06 15:48:27 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-09-11 21:53:43 (GMT) |
commit | 6f31cc8a329d15767d54511edd14339ac3dfdd7a (patch) | |
tree | d41bdb8af487fed788f7a9bc88b1ab08ff567272 /Swiften/Parser | |
parent | ebccdadcae24932b299a8612a9c6e0cdc4e00249 (diff) | |
download | swift-6f31cc8a329d15767d54511edd14339ac3dfdd7a.zip swift-6f31cc8a329d15767d54511edd14339ac3dfdd7a.tar.bz2 |
Added support for Entity Capabilities.
Resolves: #94
Diffstat (limited to 'Swiften/Parser')
-rw-r--r-- | Swiften/Parser/PayloadParsers/CapsInfoParser.cpp | 35 | ||||
-rw-r--r-- | Swiften/Parser/PayloadParsers/CapsInfoParser.h | 24 | ||||
-rw-r--r-- | Swiften/Parser/PayloadParsers/CapsInfoParserFactory.h | 17 | ||||
-rw-r--r-- | Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp | 2 | ||||
-rw-r--r-- | Swiften/Parser/SConscript | 1 |
5 files changed, 79 insertions, 0 deletions
diff --git a/Swiften/Parser/PayloadParsers/CapsInfoParser.cpp b/Swiften/Parser/PayloadParsers/CapsInfoParser.cpp new file mode 100644 index 0000000..49c271c --- /dev/null +++ b/Swiften/Parser/PayloadParsers/CapsInfoParser.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Parser/PayloadParsers/CapsInfoParser.h" + +#include <locale> + +#include <boost/date_time/time_facet.hpp> + +namespace Swift { + +CapsInfoParser::CapsInfoParser() : level(0) { +} + +void CapsInfoParser::handleStartElement(const String&, const String& /*ns*/, const AttributeMap& attributes) { + if (level == 0) { + getPayloadInternal()->setHash(attributes.getAttribute("hash")); + getPayloadInternal()->setNode(attributes.getAttribute("node")); + getPayloadInternal()->setVersion(attributes.getAttribute("ver")); + } + ++level; +} + +void CapsInfoParser::handleEndElement(const String&, const String&) { + --level; +} + +void CapsInfoParser::handleCharacterData(const String&) { + +} + +} diff --git a/Swiften/Parser/PayloadParsers/CapsInfoParser.h b/Swiften/Parser/PayloadParsers/CapsInfoParser.h new file mode 100644 index 0000000..6058837 --- /dev/null +++ b/Swiften/Parser/PayloadParsers/CapsInfoParser.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include "Swiften/Elements/CapsInfo.h" +#include "Swiften/Parser/GenericPayloadParser.h" + +namespace Swift { + class CapsInfoParser : public GenericPayloadParser<CapsInfo> { + public: + CapsInfoParser(); + + virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); + virtual void handleEndElement(const String& element, const String&); + virtual void handleCharacterData(const String& data); + + private: + int level; + }; +} diff --git a/Swiften/Parser/PayloadParsers/CapsInfoParserFactory.h b/Swiften/Parser/PayloadParsers/CapsInfoParserFactory.h new file mode 100644 index 0000000..6910ff8 --- /dev/null +++ b/Swiften/Parser/PayloadParsers/CapsInfoParserFactory.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include "Swiften/Parser/GenericPayloadParserFactory.h" +#include "Swiften/Parser/PayloadParsers/CapsInfoParser.h" + +namespace Swift { + class CapsInfoParserFactory : public GenericPayloadParserFactory<CapsInfoParser> { + public: + CapsInfoParserFactory() : GenericPayloadParserFactory<CapsInfoParser>("c", "http://jabber.org/protocol/caps") {} + }; +} diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp index ce6c9f8..6294403 100644 --- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp +++ b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp @@ -22,6 +22,7 @@ #include "Swiften/Parser/PayloadParsers/StorageParserFactory.h" #include "Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h" #include "Swiften/Parser/PayloadParsers/DiscoItemsParserFactory.h" +#include "Swiften/Parser/PayloadParsers/CapsInfoParserFactory.h" #include "Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h" #include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h" #include "Swiften/Parser/PayloadParsers/FormParserFactory.h" @@ -49,6 +50,7 @@ FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() { factories_.push_back(shared_ptr<PayloadParserFactory>(new RosterParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new DiscoInfoParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new DiscoItemsParserFactory())); + factories_.push_back(shared_ptr<PayloadParserFactory>(new CapsInfoParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new ResourceBindParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new StartSessionParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new SecurityLabelParserFactory())); diff --git a/Swiften/Parser/SConscript b/Swiften/Parser/SConscript index 4ab70a4..b9119d0 100644 --- a/Swiften/Parser/SConscript +++ b/Swiften/Parser/SConscript @@ -21,6 +21,7 @@ sources = [ "PayloadParsers/BodyParser.cpp", "PayloadParsers/SubjectParser.cpp", "PayloadParsers/ChatStateParser.cpp", + "PayloadParsers/CapsInfoParser.cpp", "PayloadParsers/DiscoInfoParser.cpp", "PayloadParsers/DiscoItemsParser.cpp", "PayloadParsers/ErrorParser.cpp", |