/* This file is part of KDE. Copyright (c) 2005 Tobias Koenig 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 TQt, and distribute the resulting executable, without including the source code for TQt in the source distribution. */ #include "googlesearchservice.h" #include void GoogleSearchService::doGetCachedPage( TQString* key, TQString* url ) { TQDomDocument doc( "kwsdl" ); doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); TQDomElement 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 ); TQDomElement body = doc.createElement( "SOAP-ENV:Body" ); env.appendChild( body ); TQDomElement 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 TQString &xml ) { TQDomDocument doc; TQString 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; } TQByteArray* value = new TQByteArray; TQDomElement envelope = doc.documentElement(); TQDomElement body = envelope.firstChild().toElement(); TQDomElement method = body.firstChild().toElement(); Serializer::demarshal( method.firstChild().toElement(), value ); emit doGetCachedPageResponse( value ); } void GoogleSearchService::doSpellingSuggestion( TQString* key, TQString* phrase ) { TQDomDocument doc( "kwsdl" ); doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); TQDomElement 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 ); TQDomElement body = doc.createElement( "SOAP-ENV:Body" ); env.appendChild( body ); TQDomElement 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 TQString &xml ) { TQDomDocument doc; TQString 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; } TQString* value = new TQString; TQDomElement envelope = doc.documentElement(); TQDomElement body = envelope.firstChild().toElement(); TQDomElement method = body.firstChild().toElement(); Serializer::demarshal( method.firstChild().toElement(), value ); emit doSpellingSuggestionResponse( value ); } void GoogleSearchService::doGoogleSearch( TQString* key, TQString* q, int* start, int* maxResults, bool* filter, TQString* restrict, bool* safeSearch, TQString* lr, TQString* ie, TQString* oe ) { TQDomDocument doc( "kwsdl" ); doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); TQDomElement 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 ); TQDomElement body = doc.createElement( "SOAP-ENV:Body" ); env.appendChild( body ); TQDomElement 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 TQString &xml ) { TQDomDocument doc; TQString 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; TQDomElement envelope = doc.documentElement(); TQDomElement body = envelope.firstChild().toElement(); TQDomElement 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, TQT_SIGNAL( result( const TQString& ) ), this, TQT_SLOT( doGetCachedPageResponseSlot( const TQString& ) ) ); mDoSpellingSuggestionTransport = new Transport( "http://api.google.com/search/beta2" ); connect( mDoSpellingSuggestionTransport, TQT_SIGNAL( result( const TQString& ) ), this, TQT_SLOT( doSpellingSuggestionResponseSlot( const TQString& ) ) ); mDoGoogleSearchTransport = new Transport( "http://api.google.com/search/beta2" ); connect( mDoGoogleSearchTransport, TQT_SIGNAL( result( const TQString& ) ), this, TQT_SLOT( doGoogleSearchResponseSlot( const TQString& ) ) ); } GoogleSearchService::~GoogleSearchService() { delete mDoGetCachedPageTransport; mDoGetCachedPageTransport = 0; delete mDoSpellingSuggestionTransport; mDoSpellingSuggestionTransport = 0; delete mDoGoogleSearchTransport; mDoGoogleSearchTransport = 0; } #include "googlesearchservice.moc"