From ad14f307e7b9647ac2ff96cd1947e709dd45f73d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Mon, 7 May 2012 19:20:10 +0200 Subject: Added convenience method for responding with a custom error payload. diff --git a/Swiften/Elements/IQ.cpp b/Swiften/Elements/IQ.cpp index 8e6d7cc..8c0f692 100644 --- a/Swiften/Elements/IQ.cpp +++ b/Swiften/Elements/IQ.cpp @@ -44,20 +44,24 @@ boost::shared_ptr IQ::createResult(const JID& to, const JID& from, const std return iq; } -boost::shared_ptr IQ::createError(const JID& to, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { +boost::shared_ptr IQ::createError(const JID& to, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type, boost::shared_ptr payload) { boost::shared_ptr iq = boost::make_shared(IQ::Error); iq->setTo(to); iq->setID(id); - iq->addPayload(boost::make_shared(condition, type)); + boost::shared_ptr errorPayload = boost::make_shared(condition, type); + errorPayload->setPayload(payload); + iq->addPayload(errorPayload); return iq; } -boost::shared_ptr IQ::createError(const JID& to, const JID& from, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { +boost::shared_ptr IQ::createError(const JID& to, const JID& from, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type, boost::shared_ptr payload) { boost::shared_ptr iq = boost::make_shared(IQ::Error); iq->setTo(to); iq->setFrom(from); iq->setID(id); - iq->addPayload(boost::make_shared(condition, type)); + boost::shared_ptr errorPayload = boost::make_shared(condition, type); + errorPayload->setPayload(payload); + iq->addPayload(errorPayload); return iq; } diff --git a/Swiften/Elements/IQ.h b/Swiften/Elements/IQ.h index 05cd96a..99561f8 100644 --- a/Swiften/Elements/IQ.h +++ b/Swiften/Elements/IQ.h @@ -41,13 +41,15 @@ namespace Swift { const JID& to, const std::string& id, ErrorPayload::Condition condition = ErrorPayload::BadRequest, - ErrorPayload::Type type = ErrorPayload::Cancel); + ErrorPayload::Type type = ErrorPayload::Cancel, + boost::shared_ptr payload = boost::shared_ptr()); static boost::shared_ptr createError( const JID& to, const JID& from, const std::string& id, ErrorPayload::Condition condition = ErrorPayload::BadRequest, - ErrorPayload::Type type = ErrorPayload::Cancel); + ErrorPayload::Type type = ErrorPayload::Cancel, + boost::shared_ptr payload = boost::shared_ptr()); private: Type type_; diff --git a/Swiften/Queries/Responder.h b/Swiften/Queries/Responder.h index 2ba9c24..edcaa52 100644 --- a/Swiften/Queries/Responder.h +++ b/Swiften/Queries/Responder.h @@ -83,15 +83,15 @@ namespace Swift { /** * Convenience function for responding with an error. */ - void sendError(const JID& to, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { - router_->sendIQ(IQ::createError(to, id, condition, type)); + void sendError(const JID& to, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type, Payload::ref payload = Payload::ref()) { + router_->sendIQ(IQ::createError(to, id, condition, type, payload)); } /** * Convenience function for responding with an error from a specific from address. */ - void sendError(const JID& to, const JID& from, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { - router_->sendIQ(IQ::createError(to, from, id, condition, type)); + void sendError(const JID& to, const JID& from, const std::string& id, ErrorPayload::Condition condition, ErrorPayload::Type type, Payload::ref payload = Payload::ref()) { + router_->sendIQ(IQ::createError(to, from, id, condition, type, payload)); } IQRouter* getIQRouter() const { -- cgit v0.10.2-6-g49f6