diff --git a/include/Swiften/Elements/PubSubItem.cpp b/include/Swiften/Elements/PubSubItem.cpp new file mode 100644 index 00000000..e146be9d --- /dev/null +++ b/include/Swiften/Elements/PubSubItem.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include + +namespace Swift { + +PubSubItem::PubSubItem(const std::string &body) : body_(body) { +} + +} diff --git a/include/Swiften/Elements/PubSubItem.h b/include/Swiften/Elements/PubSubItem.h new file mode 100644 index 00000000..554b7a76 --- /dev/null +++ b/include/Swiften/Elements/PubSubItem.h @@ -0,0 +1,35 @@ +/* + * 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 + +namespace Swift { + class PubSubItem : public Payload { + public: + PubSubItem(const std::string &body = ""); + + const std::string& getData() const { return body_; } + + void setData(const std::string& body) { + body_ = body; + } + + const std::string& getId() const { return id; } + + void setId(const std::string& id) { + this->id = id; + } + + private: + std::string body_; + std::string id; + }; +} diff --git a/include/Swiften/Elements/PubSubPayload.cpp b/include/Swiften/Elements/PubSubPayload.cpp new file mode 100644 index 00000000..663e8eb7 --- /dev/null +++ b/include/Swiften/Elements/PubSubPayload.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include + +namespace Swift { + +PubSubPayload::PubSubPayload() { +} + +} diff --git a/include/Swiften/Elements/PubSubPayload.h b/include/Swiften/Elements/PubSubPayload.h new file mode 100644 index 00000000..61ccdfa8 --- /dev/null +++ b/include/Swiften/Elements/PubSubPayload.h @@ -0,0 +1,53 @@ +/* + * 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 + +namespace Swift { + class PubSubPayload : public Payload { + public: + PubSubPayload(); + + const std::vector > getPayloads() const { + return payloads; + } + + template + const std::vector > getPayloads() const { + std::vector > matched_payloads; + for (std::vector >::const_iterator i = payloads.begin(); i != payloads.end(); ++i) { + boost::shared_ptr result = boost::dynamic_pointer_cast(*i); + if (result) { + matched_payloads.push_back(result); + } + } + + return matched_payloads; + + } + + template + const boost::shared_ptr getPayload() const { + boost::shared_ptr result; + for (std::vector >::const_iterator i = payloads.begin(); i != payloads.end(); ++i) { + result = boost::dynamic_pointer_cast(*i); + if (result) { + return result; + } + } + + return result; + } + + private: + std::vector > payloads; + }; +} diff --git a/include/Swiften/Elements/PubSubPublishPayload.cpp b/include/Swiften/Elements/PubSubPublishPayload.cpp new file mode 100644 index 00000000..dec34e92 --- /dev/null +++ b/include/Swiften/Elements/PubSubPublishPayload.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 { + +PubSubPublishPayload::PubSubPublishPayload(const std::string &node) : + node(node) { + + } + +} diff --git a/include/Swiften/Elements/PubSubPublishPayload.h b/include/Swiften/Elements/PubSubPublishPayload.h new file mode 100644 index 00000000..7505ca58 --- /dev/null +++ b/include/Swiften/Elements/PubSubPublishPayload.h @@ -0,0 +1,43 @@ +/* + * 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 +#include + +namespace Swift { + class PubSubPublishPayload : public Payload { + public: + enum Type { None, Pending, Subscribed, Unconfigured }; + + PubSubPublishPayload(const std::string &node = ""); + + void setNode(const std::string &node) { + this->node = node; + } + + const std::string &getNode() const { + return node; + } + + void addItem(const boost::shared_ptr &item) { + items.push_back(item); + } + + const std::vector > &getItems() const { + return items; + } + + private: + std::string node; + std::vector > items; + }; +} diff --git a/include/Swiften/Elements/PubSubSubscribePayload.cpp b/include/Swiften/Elements/PubSubSubscribePayload.cpp new file mode 100644 index 00000000..24aa6fd6 --- /dev/null +++ b/include/Swiften/Elements/PubSubSubscribePayload.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 { + +PubSubSubscribePayload::PubSubSubscribePayload(const JID &jid, const std::string &node) : + jid(jid), node(node) { + + } + +} diff --git a/include/Swiften/Elements/PubSubSubscribePayload.h b/include/Swiften/Elements/PubSubSubscribePayload.h new file mode 100644 index 00000000..c65e2b61 --- /dev/null +++ b/include/Swiften/Elements/PubSubSubscribePayload.h @@ -0,0 +1,40 @@ +/* + * 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 PubSubSubscribePayload : public Payload { + public: + PubSubSubscribePayload(const JID &jid, const std::string &node = ""); + + void setJID(const JID &jid) { + this->jid = jid; + } + + const JID &getJID() const { + return jid; + } + + void setNode(const std::string &node) { + this->node = node; + } + + const std::string &getNode() const { + return node; + } + + private: + JID jid; + std::string node; + }; +} diff --git a/include/Swiften/Elements/PubSubSubscriptionPayload.cpp b/include/Swiften/Elements/PubSubSubscriptionPayload.cpp new file mode 100644 index 00000000..293505ec --- /dev/null +++ b/include/Swiften/Elements/PubSubSubscriptionPayload.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 { + +PubSubSubscriptionPayload::PubSubSubscriptionPayload(const JID &jid, const std::string &node) : + jid(jid), node(node), type(None) { + + } + +} diff --git a/include/Swiften/Elements/PubSubSubscriptionPayload.h b/include/Swiften/Elements/PubSubSubscriptionPayload.h new file mode 100644 index 00000000..7e4e4154 --- /dev/null +++ b/include/Swiften/Elements/PubSubSubscriptionPayload.h @@ -0,0 +1,60 @@ +/* + * 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 PubSubSubscriptionPayload : public Payload { + public: + enum Type { None, Pending, Subscribed, Unconfigured }; + + PubSubSubscriptionPayload(const JID &jid, const std::string &node = ""); + + void setJID(const JID &jid) { + this->jid = jid; + } + + const JID &getJID() const { + return jid; + } + + void setNode(const std::string &node) { + this->node = node; + } + + const std::string &getNode() const { + return node; + } + + void setId(const std::string &id) { + this->id = id; + } + + const std::string &getId() const { + return id; + } + + void setType(const Type &type) { + this->type = type; + } + + const Type &getType() const { + return type; + } + + private: + JID jid; + std::string node; + std::string id; + Type type; + }; +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubItemSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubItemSerializer.cpp new file mode 100644 index 00000000..85702537 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubItemSerializer.cpp @@ -0,0 +1,31 @@ +/* + * 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 + +namespace Swift { + +PubSubItemSerializer::PubSubItemSerializer() : GenericPayloadSerializer() { +} + +std::string PubSubItemSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement item("item"); + if (!payload->getId().empty()) { + item.setAttribute("id", payload->getId()); + } + + boost::shared_ptr body(new XMLElement("body", "http://www.w3.org/1999/xhtml")); + body->addNode(boost::shared_ptr(new XMLRawTextNode(payload->getData()))); + item.addNode(body); + + return item.serialize(); +} + +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubItemSerializer.h b/include/Swiften/Serializer/PayloadSerializers/PubSubItemSerializer.h new file mode 100644 index 00000000..a75c4969 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubItemSerializer.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 PubSubItemSerializer : public GenericPayloadSerializer { + public: + PubSubItemSerializer(); + + virtual std::string serializePayload(boost::shared_ptr item) const; + }; +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.cpp new file mode 100644 index 00000000..9706d681 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.cpp @@ -0,0 +1,36 @@ +/* + * 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 { + +PubSubPayloadSerializer::PubSubPayloadSerializer(PayloadSerializerCollection *serializers) + : GenericPayloadSerializer(), + serializers(serializers) { +} + +std::string PubSubPayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement pubsub("pubsub", "http://jabber.org/protocol/pubsub"); + + if (!payload->getPayloads().empty()) { + foreach(boost::shared_ptr subPayload, payload->getPayloads()) { + PayloadSerializer* serializer = serializers->getPayloadSerializer(subPayload); + if (serializer) { + pubsub.addNode(boost::shared_ptr(new XMLRawTextNode(serializer->serialize(subPayload)))); + } + } + } + + return pubsub.serialize(); +} + +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.h b/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.h new file mode 100644 index 00000000..0f8f251a --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.h @@ -0,0 +1,23 @@ +/* + * 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 PayloadSerializerCollection; + + class PubSubPayloadSerializer : public GenericPayloadSerializer { + public: + PubSubPayloadSerializer(PayloadSerializerCollection *serializers); + + virtual std::string serializePayload(boost::shared_ptr item) const; + private: + PayloadSerializerCollection *serializers; + }; +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubPublishPayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubPublishPayloadSerializer.cpp new file mode 100644 index 00000000..1f87c246 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubPublishPayloadSerializer.cpp @@ -0,0 +1,40 @@ +/* + * 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 { + +PubSubPublishPayloadSerializer::PubSubPublishPayloadSerializer(PayloadSerializerCollection *serializers) + : GenericPayloadSerializer(), + serializers(serializers) { +} + +std::string PubSubPublishPayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement publish("publish"); + + if (!payload->getNode().empty()) { + publish.setAttribute("node", payload->getNode()); + } + + if (!payload->getItems().empty()) { + foreach(boost::shared_ptr subPayload, payload->getItems()) { + PayloadSerializer* serializer = serializers->getPayloadSerializer(subPayload); + if (serializer) { + publish.addNode(boost::shared_ptr(new XMLRawTextNode(serializer->serialize(subPayload)))); + } + } + } + + return publish.serialize(); +} + +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubPublishPayloadSerializer.h b/include/Swiften/Serializer/PayloadSerializers/PubSubPublishPayloadSerializer.h new file mode 100644 index 00000000..ae290559 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubPublishPayloadSerializer.h @@ -0,0 +1,23 @@ +/* + * 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 PayloadSerializerCollection; + + class PubSubPublishPayloadSerializer : public GenericPayloadSerializer { + public: + PubSubPublishPayloadSerializer(PayloadSerializerCollection *serializers); + + virtual std::string serializePayload(boost::shared_ptr item) const; + private: + PayloadSerializerCollection *serializers; + }; +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubSubscribePayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscribePayloadSerializer.cpp new file mode 100644 index 00000000..f6a96626 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscribePayloadSerializer.cpp @@ -0,0 +1,34 @@ +/* + * 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 { + +PubSubSubscribePayloadSerializer::PubSubSubscribePayloadSerializer() + : GenericPayloadSerializer() { +} + +std::string PubSubSubscribePayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement subscribe("subscribe"); + + if (!payload->getJID().isValid()) { + subscribe.setAttribute("jid", payload->getJID().toBare().toString()); + } + + if (!payload->getNode().empty()) { + subscribe.setAttribute("node", payload->getNode()); + } + + return subscribe.serialize(); +} + +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubSubscribePayloadSerializer.h b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscribePayloadSerializer.h new file mode 100644 index 00000000..327703be --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscribePayloadSerializer.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 PubSubSubscribePayloadSerializer : public GenericPayloadSerializer { + public: + PubSubSubscribePayloadSerializer(); + + virtual std::string serializePayload(boost::shared_ptr item) const; + }; +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.cpp new file mode 100644 index 00000000..02a634a1 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.cpp @@ -0,0 +1,49 @@ +/* + * 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 { + +PubSubSubscriptionPayloadSerializer::PubSubSubscriptionPayloadSerializer() + : GenericPayloadSerializer() { +} + +std::string PubSubSubscriptionPayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement subscription("subscription"); + + if (!payload->getJID().isValid()) { + subscription.setAttribute("jid", payload->getJID().toBare().toString()); + } + + if (!payload->getNode().empty()) { + subscription.setAttribute("node", payload->getNode()); + } + + switch (payload->getType()) { + case PubSubSubscriptionPayload::None: + subscription.setAttribute("subscription", "none"); + break; + case PubSubSubscriptionPayload::Subscribed: + subscription.setAttribute("subscription", "subscribed"); + break; + case PubSubSubscriptionPayload::Unconfigured: + subscription.setAttribute("subscription", "unconfigured"); + break; + case PubSubSubscriptionPayload::Pending: + subscription.setAttribute("subscription", "pending"); + break; + } + + return subscription.serialize(); +} + +} diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.h b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.h new file mode 100644 index 00000000..0e06a34b --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.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 PubSubSubscriptionPayloadSerializer : public GenericPayloadSerializer { + public: + PubSubSubscriptionPayloadSerializer(); + + virtual std::string serializePayload(boost::shared_ptr item) const; + }; +} diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index cc57d216..c473966b 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -33,12 +33,12 @@ incoming_dir=/var/spool/sms/incoming #backend_config=/home/hanzz/code/libtransport/spectrum/src/backend-logging.cfg # log4cxx/log4j logging configuration file for backends [database] -#type = sqlite3 # or "none" without database backend -#database = test.sql -#prefix=icq -type = mysql # or "none" without database backend....................................................................................................................... -database = test -prefix= -user=root -password=yourrootsqlpassword +type = sqlite3 # or "none" without database backend +database = test.sql +prefix=icq +#type = mysql # or "none" without database backend....................................................................................................................... +#database = test +#prefix= +#user=root +#password=yourrootsqlpassword #encryption_key=hanzzik