diff options
| author | Ian Geiser <ian.geiser@gmail.com> | 2009-11-08 22:02:28 +0000 |
|---|---|---|
| committer | Ian Geiser <ian.geiser@gmail.com> | 2009-11-08 22:02:28 +0000 |
| commit | 5b0870ddaac421af2639058648a218c7061cdd6f (patch) | |
| tree | 351dd9d9ecb92fb1db4ded641a986066ad888914 /example/example_5_rpcInterface | |
| parent | 89e052995997c9a372d7deee6a9d31e100e10533 (diff) | |
| download | qxmpp-5b0870ddaac421af2639058648a218c7061cdd6f.tar.gz | |
Added start of XEP-009. This is only the inteface, being able to invoke remote methods is next.
Diffstat (limited to 'example/example_5_rpcInterface')
| -rw-r--r-- | example/example_5_rpcInterface/example_5_rpcInterface.pro | 17 | ||||
| -rw-r--r-- | example/example_5_rpcInterface/main.cpp | 39 | ||||
| -rw-r--r-- | example/example_5_rpcInterface/remoteinterface.cpp | 15 | ||||
| -rw-r--r-- | example/example_5_rpcInterface/remoteinterface.h | 20 | ||||
| -rw-r--r-- | example/example_5_rpcInterface/rpcClient.cpp | 38 | ||||
| -rw-r--r-- | example/example_5_rpcInterface/rpcClient.h | 40 | ||||
| -rw-r--r-- | example/example_5_rpcInterface/xmlrpctest.txt | 63 |
7 files changed, 232 insertions, 0 deletions
diff --git a/example/example_5_rpcInterface/example_5_rpcInterface.pro b/example/example_5_rpcInterface/example_5_rpcInterface.pro new file mode 100644 index 00000000..f6b8d6be --- /dev/null +++ b/example/example_5_rpcInterface/example_5_rpcInterface.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +TARGET = example_5_rpcInterface +SOURCES += main.cpp \ + rpcClient.cpp \ + remoteinterface.cpp +HEADERS += rpcClient.h \ + remoteinterface.h +INCLUDEPATH += ../../source +QT += network \ + xml +CONFIG += console \ + debug_and_release +CONFIG(debug, debug|release):LIBS += -L../../source/debug \ + -lQXmppClient_d +else:LIBS += -L../../source/release \ + -lQXmppClient +OTHER_FILES += README diff --git a/example/example_5_rpcInterface/main.cpp b/example/example_5_rpcInterface/main.cpp new file mode 100644 index 00000000..f6dd6785 --- /dev/null +++ b/example/example_5_rpcInterface/main.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2008-2009 Manjeet Dahiya + * + * Author: + * Manjeet Dahiya + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#include <QtCore/QCoreApplication> +#include "rpcClient.h" +#include "QXmppLogger.h" + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + QXmppLogger::getLogger()->setLoggingType(QXmppLogger::STDOUT); + + rpcClient client; + client.getConfiguration().setUseSASLAuthentication( false ); + client.connectToServer("jabber.geiseri.com", "server", "Passw0rd", "geiseri.com"); + return a.exec(); +} diff --git a/example/example_5_rpcInterface/remoteinterface.cpp b/example/example_5_rpcInterface/remoteinterface.cpp new file mode 100644 index 00000000..77d52384 --- /dev/null +++ b/example/example_5_rpcInterface/remoteinterface.cpp @@ -0,0 +1,15 @@ +#include "remoteinterface.h" + +RemoteInterface::RemoteInterface(QObject *parent) : QXmppInvokable(parent) +{ +} + +bool RemoteInterface::isAuthorized( const QString &jid ) const +{ + return true; +} + +QString RemoteInterface::echoString(const QString& message) +{ + return "Echo: " + message; +} diff --git a/example/example_5_rpcInterface/remoteinterface.h b/example/example_5_rpcInterface/remoteinterface.h new file mode 100644 index 00000000..02ce72d7 --- /dev/null +++ b/example/example_5_rpcInterface/remoteinterface.h @@ -0,0 +1,20 @@ +#ifndef REMOTEINTERFACE_H +#define REMOTEINTERFACE_H + +#include "QXmppInvokable.h" + +class RemoteInterface : public QXmppInvokable +{ + Q_OBJECT +public: + RemoteInterface(QObject *parent = 0); + + bool isAuthorized( const QString &jid ) const; + +// RPC Interface +public slots: + QString echoString( const QString &message ); + +}; + +#endif // REMOTEINTERFACE_H diff --git a/example/example_5_rpcInterface/rpcClient.cpp b/example/example_5_rpcInterface/rpcClient.cpp new file mode 100644 index 00000000..df178ed5 --- /dev/null +++ b/example/example_5_rpcInterface/rpcClient.cpp @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2008-2009 QXmpp Developers + * + * Author: + * Ian Reinhart Geiser + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#include "rpcClient.h" +#include "remoteinterface.h" + +rpcClient::rpcClient(QObject *parent) + : QXmppClient(parent) +{ + addInvokableInterface( new RemoteInterface(this) ); +} + +rpcClient::~rpcClient() +{ + +} + diff --git a/example/example_5_rpcInterface/rpcClient.h b/example/example_5_rpcInterface/rpcClient.h new file mode 100644 index 00000000..53788579 --- /dev/null +++ b/example/example_5_rpcInterface/rpcClient.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2008-2009 QXmpp Developers + * + * Author: + * Ian Reinhart Geiser + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#ifndef RPCCLIENT_H +#define RPCCLIENT_H + +#include "QXmppClient.h" + +class rpcClient : public QXmppClient +{ + Q_OBJECT + +public: + rpcClient(QObject *parent = 0); + ~rpcClient(); + +}; + +#endif // RPCCLIENT_H diff --git a/example/example_5_rpcInterface/xmlrpctest.txt b/example/example_5_rpcInterface/xmlrpctest.txt new file mode 100644 index 00000000..4796fdd3 --- /dev/null +++ b/example/example_5_rpcInterface/xmlrpctest.txt @@ -0,0 +1,63 @@ +<stream:stream + to='geiseri.com' + xmlns='jabber:client' + xmlns:stream='http://etherx.jabber.org/streams'> + +<iq id='A3' type='set'> + <query xmlns='jabber:iq:auth'> + <username>client</username> + <resource>telnet</resource> + <password>Passw0rd</password> + </query> +</iq> + +<presence/> + +<iq type='set' + from='client@geiseri.com/telnet' + to='server@geiseri.com/QXmpp' + id='rpc1'> + <query xmlns='jabber:iq:rpc'> + <methodCall> + <methodName>RemoteInterface.echoString</methodName> + <params> + <param> + <value><string>Test string</string></value> + </param> + </params> + </methodCall> + </query> +</iq> + +<iq type='set' + from='client@geiseri.com/telnet' + to='server@geiseri.com/QXmpp' + id='rpc1'> + <query xmlns='jabber:iq:rpc'> + <methodCall> + <methodName>RemoteInterface.badMethod</methodName> + <params> + <param> + <value><string>Test string</string></value> + </param> + </params> + </methodCall> + </query> +</iq> + +<iq type='set' + from='client@geiseri.com/telnet' + to='server@geiseri.com/QXmpp' + id='rpc1'> + <query xmlns='jabber:iq:rpc'> + <methodCall> + <methodName>BadInterface.echoString</methodName> + <params> + <param> + <value><string>Test string</string></value> + </param> + </params> + </methodCall> + </query> +</iq> + |
