diff options
Diffstat (limited to 'Swiften/Parser/PayloadParsers/MAMQueryParser.cpp')
-rw-r--r-- | Swiften/Parser/PayloadParsers/MAMQueryParser.cpp | 96 |
1 files changed, 49 insertions, 47 deletions
diff --git a/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp b/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp index 54eaf84..4919d22 100644 --- a/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp +++ b/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp @@ -1,15 +1,17 @@ /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ +#include <Swiften/Parser/PayloadParsers/MAMQueryParser.h> + #include <boost/lexical_cast.hpp> #include <boost/optional.hpp> + #include <Swiften/Base/DateTime.h> #include <Swiften/Parser/PayloadParsers/FormParser.h> #include <Swiften/Parser/PayloadParsers/ResultSetParser.h> -#include <Swiften/Parser/PayloadParsers/MAMQueryParser.h> using namespace Swift; @@ -17,60 +19,60 @@ MAMQueryParser::MAMQueryParser() : level_(TopLevel) { } void MAMQueryParser::handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes) { - if (level_ == TopLevel) { - boost::optional<std::string> attributeValue; - if ((attributeValue = attributes.getAttributeValue("queryid"))) { - getPayloadInternal()->setQueryID(*attributeValue); - } - if ((attributeValue = attributes.getAttributeValue("node"))) { - getPayloadInternal()->setNode(*attributeValue); - } - } else if (level_ == PayloadLevel) { - if (element == "x" && ns == "jabber:x:data") { - formParser_ = boost::make_shared<FormParser>(); - } else if (element == "set" && ns == "http://jabber.org/protocol/rsm") { - resultSetParser_ = boost::make_shared<ResultSetParser>(); - } - } + if (level_ == TopLevel) { + boost::optional<std::string> attributeValue; + if ((attributeValue = attributes.getAttributeValue("queryid"))) { + getPayloadInternal()->setQueryID(*attributeValue); + } + if ((attributeValue = attributes.getAttributeValue("node"))) { + getPayloadInternal()->setNode(*attributeValue); + } + } else if (level_ == PayloadLevel) { + if (element == "x" && ns == "jabber:x:data") { + formParser_ = std::make_shared<FormParser>(); + } else if (element == "set" && ns == "http://jabber.org/protocol/rsm") { + resultSetParser_ = std::make_shared<ResultSetParser>(); + } + } - if (formParser_) { /* parsing a nested Form */ - formParser_->handleStartElement(element, ns, attributes); - } + if (formParser_) { /* parsing a nested Form */ + formParser_->handleStartElement(element, ns, attributes); + } - if (resultSetParser_) { /* parsing a nested ResultSet */ - resultSetParser_->handleStartElement(element, ns, attributes); - } + if (resultSetParser_) { /* parsing a nested ResultSet */ + resultSetParser_->handleStartElement(element, ns, attributes); + } - ++level_; + ++level_; } void MAMQueryParser::handleEndElement(const std::string& element, const std::string& ns) { - --level_; + --level_; - if (formParser_ && level_ >= PayloadLevel) { - formParser_->handleEndElement(element, ns); - } - if (formParser_ && level_ == PayloadLevel) { - /* done parsing nested Form */ - getPayloadInternal()->setForm(boost::dynamic_pointer_cast<Form>(formParser_->getPayload())); - formParser_.reset(); - } + if (formParser_ && level_ >= PayloadLevel) { + formParser_->handleEndElement(element, ns); + } + if (formParser_ && level_ == PayloadLevel) { + /* done parsing nested Form */ + getPayloadInternal()->setForm(std::dynamic_pointer_cast<Form>(formParser_->getPayload())); + formParser_.reset(); + } - if (resultSetParser_ && level_ >= PayloadLevel) { - resultSetParser_->handleEndElement(element, ns); - } - if (resultSetParser_ && level_ == PayloadLevel) { - /* done parsing nested ResultSet */ - getPayloadInternal()->setResultSet(boost::dynamic_pointer_cast<ResultSet>(resultSetParser_->getPayload())); - resultSetParser_.reset(); - } + if (resultSetParser_ && level_ >= PayloadLevel) { + resultSetParser_->handleEndElement(element, ns); + } + if (resultSetParser_ && level_ == PayloadLevel) { + /* done parsing nested ResultSet */ + getPayloadInternal()->setResultSet(std::dynamic_pointer_cast<ResultSet>(resultSetParser_->getPayload())); + resultSetParser_.reset(); + } } void MAMQueryParser::handleCharacterData(const std::string& data) { - if (formParser_) { - formParser_->handleCharacterData(data); - } - if (resultSetParser_) { - resultSetParser_->handleCharacterData(data); - } + if (formParser_) { + formParser_->handleCharacterData(data); + } + if (resultSetParser_) { + resultSetParser_->handleCharacterData(data); + } } |