aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppRpcIq.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-03-04 08:43:53 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-03-04 08:43:53 +0000
commitbb95ebd0e305071ccea30e356844042402bcd76b (patch)
tree8290d542d1c53c81828a3f8a5d45cf387a4c72d7 /source/QXmppRpcIq.cpp
parentf3c8579fd664461f529d2fe4713093596ba9ff97 (diff)
downloadqxmpp-bb95ebd0e305071ccea30e356844042402bcd76b.tar.gz
regroup common stanza parsing inside QXmppStanza::parse()
Diffstat (limited to 'source/QXmppRpcIq.cpp')
-rw-r--r--source/QXmppRpcIq.cpp135
1 files changed, 66 insertions, 69 deletions
diff --git a/source/QXmppRpcIq.cpp b/source/QXmppRpcIq.cpp
index 8e7a6b99..4e9fed2f 100644
--- a/source/QXmppRpcIq.cpp
+++ b/source/QXmppRpcIq.cpp
@@ -24,14 +24,23 @@ QXmppRpcInvokeIq QXmppRpcErrorIq::getQuery() const
return m_query;
}
-void QXmppRpcErrorIq::parse( QDomElement &element )
+bool QXmppRpcErrorIq::isRpcErrorIq(const QDomElement &element)
{
+ QString type = element.attribute("type");
QDomElement errorElement = element.firstChildElement("error");
- setId( element.attribute("id"));
- setTo( element.attribute("to"));
- setFrom( element.attribute("from"));
- setTypeFromStr( element.attribute("type"));
+ QDomElement queryElement = element.firstChildElement("query");
+ return (type == "error") &&
+ !errorElement.isNull() &&
+ queryElement.namespaceURI() == ns_rpc;
+}
+
+void QXmppRpcErrorIq::parse(const QDomElement &element)
+{
+ QXmppStanza::parse(element);
+
+ setTypeFromStr(element.attribute("type"));
+ QDomElement errorElement = element.firstChildElement("error");
QXmppStanza::Error error;
error.setTypeFromStr( errorElement.attribute("type"));
@@ -48,44 +57,21 @@ void QXmppRpcErrorIq::parse( QDomElement &element )
setError( error );
}
-bool QXmppRpcErrorIq::isRpcErrorIq( QDomElement &element )
-{
- QString type = element.attribute("type");
- QDomElement errorElement = element.firstChildElement("error");
- QDomElement queryElement = element.firstChildElement("query");
- return (type == "error") &&
- !errorElement.isNull() &&
- queryElement.namespaceURI() == ns_rpc;
-}
-
QXmppRpcResponseIq::QXmppRpcResponseIq() : QXmppIq( QXmppIq::Result )
{
}
-void QXmppRpcResponseIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
+QVariant QXmppRpcResponseIq::getPayload() const
{
- XMLRPC::ResponseMessage message( m_payload );
- writer->writeStartElement(ns_rpc, "query");
- message.writeXml(writer);
- writer->writeEndElement();
+ return m_payload;
}
-void QXmppRpcResponseIq::parse( QDomElement &element )
+void QXmppRpcResponseIq::setPayload( const QVariant &payload )
{
- QDomElement queryElement = element.firstChildElement("query");
- setId( element.attribute("id"));
- setTo( element.attribute("to"));
- setFrom( element.attribute("from"));
- setTypeFromStr( element.attribute("type"));
-
- QDomElement methodElement = queryElement.firstChildElement("methodResponse");
-
- XMLRPC::ResponseMessage message( methodElement );
- m_payload = message.value();
-
+ m_payload = payload;
}
-bool QXmppRpcResponseIq::isRpcResponseIq( QDomElement &element )
+bool QXmppRpcResponseIq::isRpcResponseIq(const QDomElement &element)
{
QString type = element.attribute("type");
QDomElement dataElement = element.firstChildElement("query");
@@ -93,57 +79,32 @@ bool QXmppRpcResponseIq::isRpcResponseIq( QDomElement &element )
type == "result";
}
-QVariant QXmppRpcResponseIq::getPayload() const
+void QXmppRpcResponseIq::parse(const QDomElement &element)
{
- return m_payload;
-}
+ QXmppStanza::parse(element);
-void QXmppRpcResponseIq::setPayload( const QVariant &payload )
-{
- m_payload = payload;
-}
+ setTypeFromStr(element.attribute("type"));
+ QDomElement queryElement = element.firstChildElement("query");
+ QDomElement methodElement = queryElement.firstChildElement("methodResponse");
+
+ XMLRPC::ResponseMessage message( methodElement );
+ m_payload = message.value();
-QXmppRpcInvokeIq::QXmppRpcInvokeIq() : QXmppIq( QXmppIq::Set )
-{
}
-void QXmppRpcInvokeIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
+void QXmppRpcResponseIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
{
- QString methodName = m_interface + "." + m_method;
- XMLRPC::RequestMessage message( methodName.toLatin1() ,m_payload );
+ XMLRPC::ResponseMessage message( m_payload );
writer->writeStartElement(ns_rpc, "query");
message.writeXml(writer);
writer->writeEndElement();
}
-void QXmppRpcInvokeIq::parse( QDomElement &element )
-{
- QDomElement queryElement = element.firstChildElement("query");
- setId( element.attribute("id"));
- setTo( element.attribute("to"));
- setFrom( element.attribute("from"));
- setTypeFromStr( element.attribute("type"));
-
- QDomElement methodElement = queryElement.firstChildElement("methodCall");
-
- XMLRPC::RequestMessage message( methodElement );
-
- m_interface = message.method().split('.').value(0);
- m_method = message.method().split('.').value(1);
- m_payload = message.args();
-
-}
-
-bool QXmppRpcInvokeIq::isRpcInvokeIq( QDomElement &element )
+QXmppRpcInvokeIq::QXmppRpcInvokeIq() : QXmppIq( QXmppIq::Set )
{
- QString type = element.attribute("type");
- QDomElement dataElement = element.firstChildElement("query");
- return dataElement.namespaceURI() == ns_rpc &&
- type == "set";
}
-
QVariantList QXmppRpcInvokeIq::getPayload() const
{
return m_payload;
@@ -167,7 +128,43 @@ QString QXmppRpcInvokeIq::getInterface() const
{
return m_interface;
}
+
void QXmppRpcInvokeIq::setInterface( const QString &interface )
{
m_interface = interface;
}
+
+bool QXmppRpcInvokeIq::isRpcInvokeIq(const QDomElement &element)
+{
+ QString type = element.attribute("type");
+ QDomElement dataElement = element.firstChildElement("query");
+ return dataElement.namespaceURI() == ns_rpc &&
+ type == "set";
+}
+
+void QXmppRpcInvokeIq::parse(const QDomElement &element)
+{
+ QXmppStanza::parse(element);
+
+ setTypeFromStr(element.attribute("type"));
+
+ QDomElement queryElement = element.firstChildElement("query");
+ QDomElement methodElement = queryElement.firstChildElement("methodCall");
+
+ XMLRPC::RequestMessage message( methodElement );
+
+ m_interface = message.method().split('.').value(0);
+ m_method = message.method().split('.').value(1);
+ m_payload = message.args();
+
+}
+
+void QXmppRpcInvokeIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
+{
+ QString methodName = m_interface + "." + m_method;
+ XMLRPC::RequestMessage message( methodName.toLatin1() ,m_payload );
+ writer->writeStartElement(ns_rpc, "query");
+ message.writeXml(writer);
+ writer->writeEndElement();
+}
+