Add a Yahoo! web service client example.
svn path=/branches/work/~ervin/qtjolie/; revision=989179
This commit is contained in:
parent
379085039b
commit
f639993c8b
@ -26,4 +26,5 @@ SODEP_UNIT_TESTS(
|
||||
SODEP_EXECUTABLE_TESTS(
|
||||
testprinter
|
||||
calculatorservice
|
||||
trivialyahooclient
|
||||
)
|
||||
|
133
private/qtjolie-branch/tests/trivialyahooclient.cpp
Normal file
133
private/qtjolie-branch/tests/trivialyahooclient.cpp
Normal file
@ -0,0 +1,133 @@
|
||||
/**
|
||||
* This file is part of the KDE project
|
||||
* Copyright (C) 2009 Kevin Ottens <ervin@kde.org>
|
||||
* Copyright (C) 2009 Fabrizio Montesi <famontesi@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public License
|
||||
* along with this library; see the file COPYING.LIB. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtCore/QTimer>
|
||||
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QBoxLayout>
|
||||
#include <QtGui/QLineEdit>
|
||||
#include <QtGui/QTextBrowser>
|
||||
|
||||
#include <QtJolie/Client>
|
||||
#include <QtJolie/Message>
|
||||
#include <QtJolie/MetaService>
|
||||
|
||||
using namespace Jolie;
|
||||
|
||||
class MainWindow : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainWindow()
|
||||
{
|
||||
setEnabled(false);
|
||||
|
||||
setLayout(new QVBoxLayout());
|
||||
m_lineEdit = new QLineEdit(this);
|
||||
m_browser = new QTextBrowser(this);
|
||||
m_browser->setOpenExternalLinks(true);
|
||||
layout()->addWidget(m_lineEdit);
|
||||
layout()->addWidget(m_browser);
|
||||
|
||||
m_meta.start();
|
||||
QTimer::singleShot(1000, this, SLOT(delayedInit()));
|
||||
}
|
||||
|
||||
~MainWindow()
|
||||
{
|
||||
m_meta.stop();
|
||||
delete m_client;
|
||||
}
|
||||
|
||||
private slots:
|
||||
void delayedInit()
|
||||
{
|
||||
Value aliases;
|
||||
aliases.children("webSearch") << Value("webSearch?appid=%{applicationId}&query=%{query}");
|
||||
Value inProtocol("http");
|
||||
inProtocol.children("format") << Value("rest");
|
||||
inProtocol.children("aliases") << aliases;
|
||||
Value outProtocol("sodep");
|
||||
|
||||
m_resourcePath = m_meta.addRedirection(
|
||||
QString::fromUtf8("YahooWebSearch"),
|
||||
QString::fromUtf8("socket://search.yahooapis.com:80/WebSearchService/V1/"),
|
||||
inProtocol,
|
||||
outProtocol
|
||||
);
|
||||
|
||||
m_client = new Client(QString::fromUtf8("localhost"), 9000);
|
||||
connect(m_lineEdit, SIGNAL(returnPressed()),
|
||||
this, SLOT(onReturnPressed()));
|
||||
|
||||
setEnabled(true);
|
||||
m_lineEdit->setFocus();
|
||||
}
|
||||
|
||||
void onReturnPressed()
|
||||
{
|
||||
Message request((QString::fromUtf8("/")+m_resourcePath).toUtf8(), "webSearch");
|
||||
Value requestData;
|
||||
requestData.children("applicationId") << Value("UrlfFCDV34F.d8xYpsswjaA7P.unhHJ6ELvrhhIb.ybJeUHh.POHIkSf_YO0Fw--");
|
||||
requestData.children("query") << Value(m_lineEdit->text().toUtf8());
|
||||
request.setData(requestData);
|
||||
|
||||
Message response = m_client->call(request);
|
||||
|
||||
m_browser->clear();
|
||||
QString html = QString::fromUtf8("<html><body>");
|
||||
|
||||
foreach (const Value &value, response.data().children("Result")) {
|
||||
QString url = QString::fromUtf8(value.children("Url").first().toByteArray());
|
||||
QString title = QString::fromUtf8(value.children("Title").first().toByteArray());
|
||||
QString summary = QString::fromUtf8(value.children("Summary").first().toByteArray());
|
||||
|
||||
html+= QString::fromUtf8(
|
||||
"<div><a href=\"%1\"><b>%2</b></a></div>"
|
||||
"<div>%3</div><br/>"
|
||||
).arg(url).arg(title).arg(summary);
|
||||
}
|
||||
|
||||
html+= QString::fromUtf8("</body></html>");
|
||||
|
||||
m_browser->setHtml(html);
|
||||
}
|
||||
|
||||
private:
|
||||
MetaService m_meta;
|
||||
QLineEdit *m_lineEdit;
|
||||
QTextBrowser *m_browser;
|
||||
Client *m_client;
|
||||
QString m_resourcePath;
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
MainWindow w;
|
||||
w.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
#include "trivialyahooclient.moc"
|
Loading…
Reference in New Issue
Block a user