diff --git a/libtransport/NetworkPluginServer.cpp b/libtransport/NetworkPluginServer.cpp index a4487af04173b3baad0bcb3147dc91c174dd10ac..10c2d1879b4c5643d4c1b0a65820aba343c24184 100644 --- a/libtransport/NetworkPluginServer.cpp +++ b/libtransport/NetworkPluginServer.cpp @@ -46,8 +46,10 @@ #include "Swiften/Elements/DeliveryReceiptRequest.h" #include "Swiften/Elements/InvisiblePayload.h" #include "Swiften/Elements/SpectrumErrorPayload.h" +#include "Swiften/Elements/RawXMLPayload.h" #include "boost/date_time/posix_time/posix_time.hpp" +#include #include "transport/utf8.h" @@ -686,6 +688,8 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool msg->setBody(payload.message()); } + wrapIncomingImage(msg.get(), payload); + if (payload.headline()) { msg->setType(Swift::Message::Headline); } @@ -1789,6 +1793,32 @@ void NetworkPluginServer::handleBuddyRemoved(Buddy *b) { send(c->connection, message); } +void NetworkPluginServer::wrapIncomingImage(Swift::Message* msg, const pbnetwork::ConversationMessage& payload) { + static boost::regex image_expr{""}; + + if (payload.xhtml().find(" + oob_payload(new Swift::RawXMLPayload( + "" + + image_url + + "" + + "" + )); + // todo: add the payload itself as a caption + + msg->addPayload(oob_payload); + msg->setBody(image_url); + } else { + LOG4CXX_WARN(logger, "xhtml seems to contain an image, but doesn't match: " + payload.xhtml()) + } + } +} + void NetworkPluginServer::handleBuddyUpdated(Buddy *b, const Swift::RosterItemPayload &item) { User *user = b->getRosterManager()->getUser();