diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-03-04 08:43:53 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-03-04 08:43:53 +0000 |
| commit | bb95ebd0e305071ccea30e356844042402bcd76b (patch) | |
| tree | 8290d542d1c53c81828a3f8a5d45cf387a4c72d7 /source/QXmppRpcIq.cpp | |
| parent | f3c8579fd664461f529d2fe4713093596ba9ff97 (diff) | |
| download | qxmpp-bb95ebd0e305071ccea30e356844042402bcd76b.tar.gz | |
regroup common stanza parsing inside QXmppStanza::parse()
Diffstat (limited to 'source/QXmppRpcIq.cpp')
| -rw-r--r-- | source/QXmppRpcIq.cpp | 135 |
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(); +} + |
