/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include #include namespace Swift { SecurityLabelSerializer::SecurityLabelSerializer() : GenericPayloadSerializer() { } std::string SecurityLabelSerializer::serializePayload(std::shared_ptr label) const { XMLElement element("securitylabel", "urn:xmpp:sec-label:0"); if (!label->getDisplayMarking().empty()) { std::shared_ptr displayMarking(new XMLElement("displaymarking")); if (!label->getForegroundColor().empty()) { displayMarking->setAttribute("fgcolor", label->getForegroundColor()); } if (!label->getBackgroundColor().empty()) { displayMarking->setAttribute("bgcolor", label->getBackgroundColor()); } displayMarking->addNode(std::make_shared(label->getDisplayMarking())); element.addNode(displayMarking); } std::shared_ptr labelElement(new XMLElement("label")); labelElement->addNode(std::make_shared(label->getLabel())); element.addNode(labelElement); for (const auto& equivalentLabel : label->getEquivalentLabels()) { std::shared_ptr equivalentLabelElement(new XMLElement("equivalentlabel")); equivalentLabelElement->addNode(std::make_shared(equivalentLabel)); element.addNode(equivalentLabelElement); } return element.serialize(); } }