aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-09 13:04:27 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-09 13:04:27 +0000
commit71b56f080fd955062719c6529192a347fc26313f (patch)
treec6d405edcf35f8171cbeb3e64dd4272837b28207 /source
parent7e38b7e68e3c8bd99a1e7f263242cc7e0aa67c57 (diff)
downloadqxmpp-71b56f080fd955062719c6529192a347fc26313f.tar.gz
simplify XML RPC code
Diffstat (limited to 'source')
-rw-r--r--source/QXmppRpcIq.cpp4
-rw-r--r--source/xmlrpc.cpp167
-rw-r--r--source/xmlrpc.h21
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;