/* * Copyright (c) 2011 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include #include namespace Swift { class PayloadSerializerCollection; class S5BProxyRequestSerializer : public GenericPayloadSerializer { public: virtual std::string serializePayload(boost::shared_ptr s5bProxyRequest) const { XMLElement queryElement("query", "http://jabber.org/protocol/bytestreams"); if (s5bProxyRequest && s5bProxyRequest->getStreamHost()) { boost::shared_ptr streamHost = boost::make_shared("streamhost"); streamHost->setAttribute("host", s5bProxyRequest->getStreamHost().get().addressPort.getAddress().toString()); streamHost->setAttribute("port", boost::lexical_cast(s5bProxyRequest->getStreamHost().get().addressPort.getPort())); streamHost->setAttribute("jid", s5bProxyRequest->getStreamHost().get().jid.toString()); queryElement.addNode(streamHost); } else if (s5bProxyRequest && s5bProxyRequest->getActivate()) { queryElement.setAttribute("sid", s5bProxyRequest->getSID()); boost::shared_ptr activate = boost::make_shared("activate", "", s5bProxyRequest->getActivate().get().toString()); queryElement.addNode(activate); } return queryElement.serialize(); } }; }