diff options
Diffstat (limited to 'kode/kwsdl/tests/google/googlesearchservice.cpp')
-rw-r--r-- | kode/kwsdl/tests/google/googlesearchservice.cpp | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/kode/kwsdl/tests/google/googlesearchservice.cpp b/kode/kwsdl/tests/google/googlesearchservice.cpp new file mode 100644 index 000000000..555850713 --- /dev/null +++ b/kode/kwsdl/tests/google/googlesearchservice.cpp @@ -0,0 +1,208 @@ +/* + This file is part of KDE. + + Copyright (c) 2005 Tobias Koenig <tokoe@kde.org> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ + +#include "googlesearchservice.h" + +#include <serializer.h> + +void GoogleSearchService::doGetCachedPage( QString* key, QString* url ) +{ + QDomDocument doc( "kwsdl" ); + doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); + QDomElement env = doc.createElement( "SOAP-ENV:Envelope" ); + env.setAttribute( "xmlns:SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/" ); + env.setAttribute( "xmlns:xsi", "http://www.w3.org/1999/XMLSchema-instance" ); + env.setAttribute( "xmlns:xsd", "http://www.w3.org/1999/XMLSchema" ); + doc.appendChild( env ); + QDomElement body = doc.createElement( "SOAP-ENV:Body" ); + env.appendChild( body ); + QDomElement method = doc.createElement( "ns1:doGetCachedPage" ); + method.setAttribute( "xmlns:ns1", "urn:GoogleSearch" ); + method.setAttribute( "SOAP-ENV:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/" ); + body.appendChild( method ); + + Serializer::marshal( doc, method, "key", key ); + delete key; + Serializer::marshal( doc, method, "url", url ); + delete url; + qDebug( "%s", doc.toString().latin1() ); + mDoGetCachedPageTransport->query( doc.toString() ); +} + +void GoogleSearchService::doGetCachedPageResponseSlot( const QString &xml ) +{ + QDomDocument doc; + QString errorMsg; + int column, row; + + qDebug( "%s", xml.latin1() ); + + if ( !doc.setContent( xml, true, &errorMsg, &row, &column ) ) { + qDebug( "Unable to parse xml: %s (%d:%d)", errorMsg.latin1(), row, column ); + return; + } + + QByteArray* value = new QByteArray; + QDomElement envelope = doc.documentElement(); + QDomElement body = envelope.firstChild().toElement(); + QDomElement method = body.firstChild().toElement(); + Serializer::demarshal( method.firstChild().toElement(), value ); + + emit doGetCachedPageResponse( value ); +} + +void GoogleSearchService::doSpellingSuggestion( QString* key, QString* phrase ) +{ + QDomDocument doc( "kwsdl" ); + doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); + QDomElement env = doc.createElement( "SOAP-ENV:Envelope" ); + env.setAttribute( "xmlns:SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/" ); + env.setAttribute( "xmlns:xsi", "http://www.w3.org/1999/XMLSchema-instance" ); + env.setAttribute( "xmlns:xsd", "http://www.w3.org/1999/XMLSchema" ); + doc.appendChild( env ); + QDomElement body = doc.createElement( "SOAP-ENV:Body" ); + env.appendChild( body ); + QDomElement method = doc.createElement( "ns1:doSpellingSuggestion" ); + method.setAttribute( "xmlns:ns1", "urn:GoogleSearch" ); + method.setAttribute( "SOAP-ENV:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/" ); + body.appendChild( method ); + + Serializer::marshal( doc, method, "key", key ); + delete key; + Serializer::marshal( doc, method, "phrase", phrase ); + delete phrase; + qDebug( "%s", doc.toString().latin1() ); + mDoSpellingSuggestionTransport->query( doc.toString() ); +} + +void GoogleSearchService::doSpellingSuggestionResponseSlot( const QString &xml ) +{ + QDomDocument doc; + QString errorMsg; + int column, row; + + qDebug( "%s", xml.latin1() ); + + if ( !doc.setContent( xml, true, &errorMsg, &row, &column ) ) { + qDebug( "Unable to parse xml: %s (%d:%d)", errorMsg.latin1(), row, column ); + return; + } + + QString* value = new QString; + QDomElement envelope = doc.documentElement(); + QDomElement body = envelope.firstChild().toElement(); + QDomElement method = body.firstChild().toElement(); + Serializer::demarshal( method.firstChild().toElement(), value ); + + emit doSpellingSuggestionResponse( value ); +} + +void GoogleSearchService::doGoogleSearch( QString* key, QString* q, int* start, int* maxResults, bool* filter, QString* restrict, bool* safeSearch, QString* lr, QString* ie, QString* oe ) +{ + QDomDocument doc( "kwsdl" ); + doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); + QDomElement env = doc.createElement( "SOAP-ENV:Envelope" ); + env.setAttribute( "xmlns:SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/" ); + env.setAttribute( "xmlns:xsi", "http://www.w3.org/1999/XMLSchema-instance" ); + env.setAttribute( "xmlns:xsd", "http://www.w3.org/1999/XMLSchema" ); + doc.appendChild( env ); + QDomElement body = doc.createElement( "SOAP-ENV:Body" ); + env.appendChild( body ); + QDomElement method = doc.createElement( "ns1:doGoogleSearch" ); + method.setAttribute( "xmlns:ns1", "urn:GoogleSearch" ); + method.setAttribute( "SOAP-ENV:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/" ); + body.appendChild( method ); + + Serializer::marshal( doc, method, "key", key ); + delete key; + Serializer::marshal( doc, method, "q", q ); + delete q; + Serializer::marshal( doc, method, "start", start ); + delete start; + Serializer::marshal( doc, method, "maxResults", maxResults ); + delete maxResults; + Serializer::marshal( doc, method, "filter", filter ); + delete filter; + Serializer::marshal( doc, method, "restrict", restrict ); + delete restrict; + Serializer::marshal( doc, method, "safeSearch", safeSearch ); + delete safeSearch; + Serializer::marshal( doc, method, "lr", lr ); + delete lr; + Serializer::marshal( doc, method, "ie", ie ); + delete ie; + Serializer::marshal( doc, method, "oe", oe ); + delete oe; + qDebug( "%s", doc.toString().latin1() ); + mDoGoogleSearchTransport->query( doc.toString() ); +} + +void GoogleSearchService::doGoogleSearchResponseSlot( const QString &xml ) +{ + QDomDocument doc; + QString errorMsg; + int column, row; + + qDebug( "%s", xml.latin1() ); + + if ( !doc.setContent( xml, true, &errorMsg, &row, &column ) ) { + qDebug( "Unable to parse xml: %s (%d:%d)", errorMsg.latin1(), row, column ); + return; + } + + GoogleSearchResult* value = new GoogleSearchResult; + QDomElement envelope = doc.documentElement(); + QDomElement body = envelope.firstChild().toElement(); + QDomElement method = body.firstChild().toElement(); + Serializer::demarshal( method.firstChild().toElement(), value ); + + emit doGoogleSearchResponse( value ); +} + +GoogleSearchService::GoogleSearchService() +{ + mDoGetCachedPageTransport = new Transport( "http://api.google.com/search/beta2" ); + connect( mDoGetCachedPageTransport, SIGNAL( result( const QString& ) ), + this, SLOT( doGetCachedPageResponseSlot( const QString& ) ) ); + mDoSpellingSuggestionTransport = new Transport( "http://api.google.com/search/beta2" ); + connect( mDoSpellingSuggestionTransport, SIGNAL( result( const QString& ) ), + this, SLOT( doSpellingSuggestionResponseSlot( const QString& ) ) ); + mDoGoogleSearchTransport = new Transport( "http://api.google.com/search/beta2" ); + connect( mDoGoogleSearchTransport, SIGNAL( result( const QString& ) ), + this, SLOT( doGoogleSearchResponseSlot( const QString& ) ) ); +} + +GoogleSearchService::~GoogleSearchService() +{ + delete mDoGetCachedPageTransport; + mDoGetCachedPageTransport = 0; + delete mDoSpellingSuggestionTransport; + mDoSpellingSuggestionTransport = 0; + delete mDoGoogleSearchTransport; + mDoGoogleSearchTransport = 0; +} + + +#include "googlesearchservice.moc" + |