diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-09 13:04:27 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-09 13:04:27 +0000 |
| commit | 71b56f080fd955062719c6529192a347fc26313f (patch) | |
| tree | c6d405edcf35f8171cbeb3e64dd4272837b28207 /source | |
| parent | 7e38b7e68e3c8bd99a1e7f263242cc7e0aa67c57 (diff) | |
| download | qxmpp-71b56f080fd955062719c6529192a347fc26313f.tar.gz | |
simplify XML RPC code
Diffstat (limited to 'source')
| -rw-r--r-- | source/QXmppRpcIq.cpp | 4 | ||||
| -rw-r--r-- | source/xmlrpc.cpp | 167 | ||||
| -rw-r--r-- | source/xmlrpc.h | 21 |
3 files changed, 78 insertions, 114 deletions
diff --git a/source/QXmppRpcIq.cpp b/source/QXmppRpcIq.cpp index 2708bbb7..15f428f1 100644 --- a/source/QXmppRpcIq.cpp +++ b/source/QXmppRpcIq.cpp @@ -67,12 +67,12 @@ void QXmppRpcResponseIq::parseElementFromChild(const QDomElement &element) QDomElement methodElement = queryElement.firstChildElement("methodResponse"); XMLRPC::ResponseMessage message( methodElement ); - m_payload = message.value(); + m_payload = message.values().first(); } void QXmppRpcResponseIq::toXmlElementFromChild(QXmlStreamWriter *writer) const { - XMLRPC::ResponseMessage message( m_payload ); + XMLRPC::ResponseMessage message(QList<QVariant>() << m_payload ); writer->writeStartElement(ns_rpc, "query"); message.writeXml(writer); writer->writeEndElement(); diff --git a/source/xmlrpc.cpp b/source/xmlrpc.cpp index c6e8d021..8ce4efeb 100644 --- a/source/xmlrpc.cpp +++ b/source/xmlrpc.cpp @@ -5,32 +5,6 @@ #include <QStringList> #include <QTextStream> -XMLRPC::RequestMessage::RequestMessage( const QByteArray &method, const QList<QVariant> &args ) -: MessageBase() -{ - m_method = method; - m_args = args; -} - -void XMLRPC::RequestMessage::writeXml( QXmlStreamWriter *writer ) const -{ - writer->writeStartElement("methodCall"); - writer->writeTextElement("methodName", m_method ); - if( !m_args.isEmpty() ) - { - writer->writeStartElement("params"); - foreach( QVariant arg, m_args) - { - writer->writeStartElement("param"); - marshall( writer, arg ); - writer->writeEndElement(); - } - writer->writeEndElement(); - } - writer->writeEndElement(); - -} - void XMLRPC::MessageBase::marshall( QXmlStreamWriter *writer, const QVariant &value ) const { writer->writeStartElement("value"); @@ -101,43 +75,6 @@ void XMLRPC::MessageBase::marshall( QXmlStreamWriter *writer, const QVariant &va writer->writeEndElement(); } -XMLRPC::ResponseMessage::ResponseMessage( const QDomElement &element ) -{ - const QDomElement contents = element.firstChild().toElement(); - if( contents.tagName().toLower() == "params") - { - QDomNode param = contents.firstChild(); - while( !param.isNull() && isValid() ) - { - m_values.append( demarshall( param.firstChild().toElement() ) ); - param = param.nextSibling(); - } - } - else if( contents.tagName().toLower() == "fault") - { - const QDomElement errElement = contents.firstChild().toElement(); - const QVariant error = demarshall( errElement ); - - setError( QString("XMLRPC Fault %1: %2") - .arg(error.toMap()["faultCode"].toString() ) - .arg(error.toMap()["faultString"].toString() ) ); - } - else - { - setError("Bad XML response"); - } -} - -int XMLRPC::ResponseMessage::count() const -{ - return m_values.count(); -} - -QVariant XMLRPC::ResponseMessage::value( int index) const -{ - return m_values[index]; -} - bool XMLRPC::MessageBase::isValid() const { return m_valid; @@ -243,20 +180,11 @@ XMLRPC::MessageBase::~MessageBase( ) { } - -QList< QVariant > XMLRPC::ResponseMessage::values() const -{ - return m_values; -} - -QList< QVariant > XMLRPC::RequestMessage::args() const -{ - return m_args; -} - -QByteArray XMLRPC::RequestMessage::method() const +XMLRPC::RequestMessage::RequestMessage( const QByteArray &method, const QList<QVariant> &args ) +: MessageBase() { - return m_method; + m_method = method; + m_args = args; } XMLRPC::RequestMessage::RequestMessage( const QDomElement &element ) @@ -267,34 +195,44 @@ XMLRPC::RequestMessage::RequestMessage( const QDomElement &element ) const QDomElement methodName = element.firstChildElement("methodName"); if( !methodName.isNull() ) { - m_method = methodName.text().toLatin1(); + m_method = methodName.text().toLatin1(); } else { - setError("Missing methodName property."); - return; + setError("Missing methodName property."); + return; } const QDomElement methodParams = element.firstChildElement("params"); if( !methodParams.isNull() ) { - QDomNode param = methodParams.firstChild(); - while( !param.isNull() && isValid() ) - { - m_args.append( demarshall( param.firstChild().toElement() ) ); - param = param.nextSibling(); - } + QDomNode param = methodParams.firstChild(); + while( !param.isNull() && isValid() ) + { + m_args.append( demarshall( param.firstChild().toElement() ) ); + param = param.nextSibling(); + } } } -void XMLRPC::ResponseMessage::writeXml( QXmlStreamWriter *writer ) const +QList< QVariant > XMLRPC::RequestMessage::args() const { - writer->writeStartElement("methodResponse"); + return m_args; +} - if( !m_values.isEmpty() ) +QByteArray XMLRPC::RequestMessage::method() const +{ + return m_method; +} + +void XMLRPC::RequestMessage::writeXml( QXmlStreamWriter *writer ) const +{ + writer->writeStartElement("methodCall"); + writer->writeTextElement("methodName", m_method ); + if( !m_args.isEmpty() ) { writer->writeStartElement("params"); - foreach( QVariant arg, m_values) + foreach( QVariant arg, m_args) { writer->writeStartElement("param"); marshall( writer, arg ); @@ -310,8 +248,53 @@ XMLRPC::ResponseMessage::ResponseMessage( const QList< QVariant > & theValue ) { } -XMLRPC::ResponseMessage::ResponseMessage( const QVariant & theValue ) -: MessageBase() +XMLRPC::ResponseMessage::ResponseMessage( const QDomElement &element ) +{ + const QDomElement contents = element.firstChild().toElement(); + if( contents.tagName().toLower() == "params") + { + QDomNode param = contents.firstChild(); + while( !param.isNull() && isValid() ) + { + m_values.append( demarshall( param.firstChild().toElement() ) ); + param = param.nextSibling(); + } + } + else if( contents.tagName().toLower() == "fault") + { + const QDomElement errElement = contents.firstChild().toElement(); + const QVariant error = demarshall( errElement ); + + setError( QString("XMLRPC Fault %1: %2") + .arg(error.toMap()["faultCode"].toString() ) + .arg(error.toMap()["faultString"].toString() ) ); + } + else + { + setError("Bad XML response"); + } +} + +QList< QVariant > XMLRPC::ResponseMessage::values() const { - m_values << theValue; + return m_values; } + +void XMLRPC::ResponseMessage::writeXml( QXmlStreamWriter *writer ) const +{ + writer->writeStartElement("methodResponse"); + + if( !m_values.isEmpty() ) + { + writer->writeStartElement("params"); + foreach( QVariant arg, m_values) + { + writer->writeStartElement("param"); + marshall( writer, arg ); + writer->writeEndElement(); + } + writer->writeEndElement(); + } + writer->writeEndElement(); +} + diff --git a/source/xmlrpc.h b/source/xmlrpc.h index 021c5892..3b846f23 100644 --- a/source/xmlrpc.h +++ b/source/xmlrpc.h @@ -22,7 +22,7 @@ * ResponseMessage resp( SomeHttpDispatchObject( msg.xml() ) ); * if( resp.isValid() ) * { -* int rows = resp.value().toMap()["widgets"].toInt(); +* int rows = resp.values().first().toMap()["widgets"].toInt(); * } * else * qWarning("Error: %s", resp.error().latin1() ); @@ -121,28 +121,9 @@ public: */ ResponseMessage( const QList< QVariant >& theValue ); - /** - * Create a new response message with data. This is exactly like - * the above method save for it only takes a single QVariant. - */ - explicit ResponseMessage( const QVariant& theValue ); - virtual ~ResponseMessage() {;} /** - * Returns the number of data elements. Usually this is only - * 1 element, but some services will return mutiple messages in - * a single xmlrpc packet. - */ - int count() const; - - /** - * Returns the native value for an xmlrpc message at an offset. - * Usually this method can be called with no arguments. - */ - QVariant value( int idx = 0 ) const; - - /** * Return the xml representation of the packet. */ void writeXml( QXmlStreamWriter *writer ) const; |
