Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SpectrumIM/spectrum2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/NetworkPluginServer.cpp')
-rw-r--r--libtransport/NetworkPluginServer.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/libtransport/NetworkPluginServer.cpp b/libtransport/NetworkPluginServer.cpp
index 86794db1..59be6df2 100644
--- a/libtransport/NetworkPluginServer.cpp
+++ b/libtransport/NetworkPluginServer.cpp
@@ -47,6 +47,7 @@
#include "Swiften/Elements/InvisiblePayload.h"
#include "Swiften/Elements/SpectrumErrorPayload.h"
#include "Swiften/Elements/RawXMLPayload.h"
+#include <Swiften/Serializer/XML/XMLElement.h>
#include "boost/date_time/posix_time/posix_time.hpp"
#include <boost/regex.hpp>
@@ -1732,12 +1733,16 @@ enum OobMode {
};
void NetworkPluginServer::addOobPayload(Swift::Message::ref message, const std::string &url, const std::string &description) {
- //Add OOB tag
- std::shared_ptr<Swift::RawXMLPayload>
- oob_payload(new Swift::RawXMLPayload(
- "<x xmlns='jabber:x:oob'><url>" + url + "</url>" + "<desc>" + description + "</desc>" + "</x>"));
- // todo: add the payload itself as a caption
- message->addPayload(oob_payload);
+ const std::string OOB_NAMESPACE = "jabber:x:oob";
+ std::shared_ptr<Swift::XMLElement> oobElement = std::make_shared<Swift::XMLElement>("x", OOB_NAMESPACE);
+ std::shared_ptr<Swift::XMLElement> urlNode = std::make_shared<Swift::XMLElement>("url", "", url);
+ oobElement->addNode(urlNode);
+ if (!description.empty()) {
+ std::shared_ptr<Swift::XMLElement> descNode = std::make_shared<Swift::XMLElement>("desc");
+ oobElement->addNode(descNode);
+ }
+ std::shared_ptr<Swift::RawXMLPayload> oobPayload = std::make_shared<Swift::RawXMLPayload>(oobElement->serialize());
+ message->addPayload(oobPayload);
}
std::vector<std::shared_ptr<Swift::Message> >