From 54dff8d28067599e63b5c2312889a0c13143a571 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Sun, 26 Feb 2012 12:40:48 +0100 Subject: [PATCH] Gateway payload --- include/Swiften/Elements/GatewayPayload.cpp | 16 ++++++ include/Swiften/Elements/GatewayPayload.h | 49 +++++++++++++++++++ .../PayloadParsers/GatewayPayloadParser.cpp | 33 +++++++++++++ .../PayloadParsers/GatewayPayloadParser.h | 21 ++++++++ .../GatewayPayloadSerializer.cpp | 41 ++++++++++++++++ .../GatewayPayloadSerializer.h | 19 +++++++ 6 files changed, 179 insertions(+) create mode 100644 include/Swiften/Elements/GatewayPayload.cpp create mode 100644 include/Swiften/Elements/GatewayPayload.h create mode 100644 include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.cpp create mode 100644 include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.h create mode 100644 include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.cpp create mode 100644 include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h diff --git a/include/Swiften/Elements/GatewayPayload.cpp b/include/Swiften/Elements/GatewayPayload.cpp new file mode 100644 index 00000000..59b6a9f6 --- /dev/null +++ b/include/Swiften/Elements/GatewayPayload.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include + +namespace Swift { + +GatewayPayload::GatewayPayload(const JID &jid, const std::string &desc, const std::string &prompt) : + jid(jid), desc(desc), prompt(prompt) { + + } + +} diff --git a/include/Swiften/Elements/GatewayPayload.h b/include/Swiften/Elements/GatewayPayload.h new file mode 100644 index 00000000..2f6bbc54 --- /dev/null +++ b/include/Swiften/Elements/GatewayPayload.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include + +#include +#include +#include + +namespace Swift { + class GatewayPayload : public Payload { + public: + GatewayPayload(const JID &jid = JID(), const std::string &desc = "", const std::string &prompt = ""); + + void setJID(const JID &jid) { + this->jid = jid; + } + + const JID &getJID() const { + return jid; + } + + void setDesc(const std::string &desc) { + this->desc = desc; + } + + const std::string &getDesc() const { + return desc; + } + + void setPrompt(const std::string &prompt) { + this->prompt = prompt; + } + + const std::string &getPrompt() const { + return prompt; + } + + private: + JID jid; + std::string desc; + std::string prompt; + }; +} diff --git a/include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.cpp b/include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.cpp new file mode 100644 index 00000000..30437926 --- /dev/null +++ b/include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2012 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include + +#include + +#include +#include +#include +#include +#include + +namespace Swift { + +void GatewayPayloadParser::handleTree(ParserElement::ref root) { + foreach (ParserElement::ref child, root->getAllChildren()) { + if (child->getName() == "desc") { + getPayloadInternal()->setDesc(child->getText()); + } + else if (child->getName() == "prompt") { + getPayloadInternal()->setPrompt(child->getText()); + } + else if (child->getName() == "jid") { + getPayloadInternal()->setJID(child->getText()); + } + } +} + +} diff --git a/include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.h b/include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.h new file mode 100644 index 00000000..db2c5782 --- /dev/null +++ b/include/Swiften/Parser/PayloadParsers/GatewayPayloadParser.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2012 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include + +#include +#include +#include + +namespace Swift { + class GatewayPayloadParser : public GenericPayloadTreeParser { + public: + GatewayPayloadParser() {} + virtual void handleTree(ParserElement::ref root); + }; +} diff --git a/include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.cpp new file mode 100644 index 00000000..8a129376 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include +#include +#include +#include +#include +#include + +namespace Swift { + +GatewayPayloadSerializer::GatewayPayloadSerializer() + : GenericPayloadSerializer() { +} + +std::string GatewayPayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement query("query", "jabber:iq:gateway"); + + if (!payload->getJID().isValid()) { + boost::shared_ptr jid(new XMLElement("jid", "", payload->getJID().toBare().toString())); + query.addNode(jid); + } + + if (!payload->getDesc().empty()) { + boost::shared_ptr desc(new XMLElement("desc", "", payload->getDesc())); + query.addNode(desc); + } + + if (!payload->getPrompt().empty()) { + boost::shared_ptr prompt(new XMLElement("prompt", "", payload->getPrompt())); + query.addNode(prompt); + } + + return query.serialize(); +} + +} diff --git a/include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h b/include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h new file mode 100644 index 00000000..1b64ac17 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include +#include + +namespace Swift { + class GatewayPayloadSerializer : public GenericPayloadSerializer { + public: + GatewayPayloadSerializer(); + + virtual std::string serializePayload(boost::shared_ptr item) const; + }; +}