summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Mons <edwin.mons@isode.com>2014-10-30 09:22:16 (GMT)
committerSwift Review <review@swift.im>2014-10-30 22:40:07 (GMT)
commit9b762e1cf26cfe12cf601d9ea95cf91b3f95c799 (patch)
tree854e8e602a1e98b38d66cc716f4ef878620d531b /Swiften
parent8096f80861667381b777af774cfd446d6fc8cda8 (diff)
downloadswift-9b762e1cf26cfe12cf601d9ea95cf91b3f95c799.zip
swift-9b762e1cf26cfe12cf601d9ea95cf91b3f95c799.tar.bz2
Add node attribute to MAMQuery
Added node to MAMQuery, the serializers, unit tests and the Sluift ElementConvertor. Test-Information: Unit tests pass on OS X 10.9 Sluift script querying a pubsub archive sent the right query. Change-Id: If8620104a11b402d7b51a6e9b34ccbe1b7e6d15a
Diffstat (limited to 'Swiften')
-rw-r--r--Swiften/Elements/MAMQuery.h4
-rw-r--r--Swiften/Parser/PayloadParsers/MAMQueryParser.cpp3
-rw-r--r--Swiften/Parser/PayloadParsers/UnitTest/MAMQueryParserTest.cpp3
-rw-r--r--Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.cpp4
-rw-r--r--Swiften/Serializer/PayloadSerializers/UnitTest/MAMQuerySerializerTest.cpp3
5 files changed, 15 insertions, 2 deletions
diff --git a/Swiften/Elements/MAMQuery.h b/Swiften/Elements/MAMQuery.h
index 09b5af0..12148c8 100644
--- a/Swiften/Elements/MAMQuery.h
+++ b/Swiften/Elements/MAMQuery.h
@@ -24,6 +24,9 @@ namespace Swift {
void setQueryID(const boost::optional<std::string>& queryID) { queryID_ = queryID; }
const boost::optional<std::string>& getQueryID() const { return queryID_; }
+ void setNode(const boost::optional<std::string>& node) { node_ = node; }
+ const boost::optional<std::string>& getNode() const { return node_; }
+
void setForm(boost::shared_ptr<Form> form) { form_ = form; }
const boost::shared_ptr<Form>& getForm() const { return form_; }
@@ -32,6 +35,7 @@ namespace Swift {
private:
boost::optional<std::string> queryID_;
+ boost::optional<std::string> node_;
boost::shared_ptr<Form> form_;
boost::shared_ptr<ResultSet> resultSet_;
};
diff --git a/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp b/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp
index 6b3dc65..b0b279d 100644
--- a/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp
+++ b/Swiften/Parser/PayloadParsers/MAMQueryParser.cpp
@@ -22,6 +22,9 @@ void MAMQueryParser::handleStartElement(const std::string& element, const std::s
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>();
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/MAMQueryParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/MAMQueryParserTest.cpp
index e1c8e3e..541f2af 100644
--- a/Swiften/Parser/PayloadParsers/UnitTest/MAMQueryParserTest.cpp
+++ b/Swiften/Parser/PayloadParsers/UnitTest/MAMQueryParserTest.cpp
@@ -26,7 +26,7 @@ class MAMQueryParserTest : public CppUnit::TestFixture
void testParse() {
PayloadsParserTester parser;
CPPUNIT_ASSERT(parser.parse(
- "<query queryid=\"id0\" xmlns=\"urn:xmpp:mam:0\">"
+ "<query queryid=\"id0\" xmlns=\"urn:xmpp:mam:0\" node=\"node1\">"
"<x type=\"form\" xmlns=\"jabber:x:data\">"
"<field type=\"text-single\" var=\"FORM_TYPE\">"
"<value>urn:xmpp:mam:0</value>"
@@ -45,6 +45,7 @@ class MAMQueryParserTest : public CppUnit::TestFixture
CPPUNIT_ASSERT(!!payload);
CPPUNIT_ASSERT(payload->getQueryID());
CPPUNIT_ASSERT_EQUAL(std::string("id0"), *payload->getQueryID());
+ CPPUNIT_ASSERT_EQUAL(std::string("node1"), *payload->getNode());
CPPUNIT_ASSERT(payload->getForm());
boost::shared_ptr<FormField> fieldType = payload->getForm()->getField("FORM_TYPE");
diff --git a/Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.cpp b/Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.cpp
index 6a12f8e..591e73c 100644
--- a/Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.cpp
+++ b/Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.cpp
@@ -33,6 +33,10 @@ std::string MAMQuerySerializer::serializePayload(boost::shared_ptr<MAMQuery> pay
element.setAttribute("queryid", *payload->getQueryID());
}
+ if (payload->getNode()) {
+ element.setAttribute("node", *payload->getNode());
+ }
+
if (payload->getForm()) {
element.addNode(boost::make_shared<XMLRawTextNode>(FormSerializer().serialize(payload->getForm())));
}
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/MAMQuerySerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/MAMQuerySerializerTest.cpp
index 7f6cbd9..1d695cd 100644
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/MAMQuerySerializerTest.cpp
+++ b/Swiften/Serializer/PayloadSerializers/UnitTest/MAMQuerySerializerTest.cpp
@@ -44,11 +44,12 @@ class MAMQuerySerializerTest : public CppUnit::TestFixture {
boost::shared_ptr<MAMQuery> query(boost::make_shared<MAMQuery>());
query->setQueryID(std::string("id0"));
+ query->setNode(std::string("node1"));
query->setForm(parameters);
query->setResultSet(set);
std::string expectedResult =
- "<query queryid=\"id0\" xmlns=\"urn:xmpp:mam:0\">"
+ "<query node=\"node1\" queryid=\"id0\" xmlns=\"urn:xmpp:mam:0\">"
"<x type=\"form\" xmlns=\"jabber:x:data\">"
"<field type=\"text-single\" var=\"FORM_TYPE\">"
"<value>urn:xmpp:mam:0</value>"