Quantum GIS API Documentation  1.7.4
src/core/qgshttptransaction.h
Go to the documentation of this file.
00001 /***************************************************************************
00002   qgshttptransaction.h  -  Tracks a HTTP request with its response,
00003                            with particular attention to tracking
00004                            HTTP redirect responses
00005                              -------------------
00006     begin                : 17 Mar, 2005
00007     copyright            : (C) 2005 by Brendan Morley
00008     email                : morb at ozemail dot com dot au
00009  ***************************************************************************/
00010 
00011 /***************************************************************************
00012  *                                                                         *
00013  *   This program is free software; you can redistribute it and/or modify  *
00014  *   it under the terms of the GNU General Public License as published by  *
00015  *   the Free Software Foundation; either version 2 of the License, or     *
00016  *   (at your option) any later version.                                   *
00017  *                                                                         *
00018  ***************************************************************************/
00019 
00020 /* $Id: qgshttptransaction.h 5697 2006-08-15 10:29:46Z morb_au $ */
00021 
00022 #ifndef QGSHTTPTRANSACTION_H
00023 #define QGSHTTPTRANSACTION_H
00024 
00025 #include <QHttp>
00026 #include <QNetworkProxy>
00027 #include <QString>
00028 
00029 class QTimer;
00030 
00037 class CORE_EXPORT QgsHttpTransaction : public QObject
00038 {
00039 
00040     Q_OBJECT
00041 
00042   public:
00047     QgsHttpTransaction( QString uri,
00048                         QString proxyHost = QString(),
00049                         int     proxyPort = 80,
00050                         QString proxyUser = QString(),
00051                         QString proxyPass = QString(),
00052                         QNetworkProxy::ProxyType proxyType = QNetworkProxy::NoProxy,
00053                         QString userName = QString(),
00054                         QString password = QString() );
00055 
00057     virtual ~QgsHttpTransaction();
00058 
00059     void getAsynchronously();
00060 
00063 
00076     bool getSynchronously( QByteArray &respondedContent, int redirections = 0, const QByteArray* postData = 0 );
00077 
00078     QString responseContentType();
00079 
00086     QString errorString();
00087 
00090     static bool applyProxySettings( QHttp& http, const QString& url );
00091 
00097     void setCredentials( const QString& username, const QString &password );
00098 
00100     int networkTimeout() const { return mNetworkTimeoutMsec;}
00102     void setNetworkTimeout( int msec ) { mNetworkTimeoutMsec = msec;}
00103 
00104 
00105   public slots:
00106 
00107     void dataStarted( int id );
00108 
00109     void dataHeaderReceived( const QHttpResponseHeader& resp );
00110 
00111     void dataReceived( const QHttpResponseHeader& resp );
00112 
00113     void dataProgress( int done, int total );
00114 
00115     void dataFinished( int id, bool error );
00116 
00117     void transactionFinished( bool error );
00118 
00119     void dataStateChanged( int state );
00120 
00121     void networkTimedOut();
00122 
00124     void abort();
00125 
00126   signals:
00127 
00129     void setProgress( int done, int total );
00130 
00132     void dataReadProgress( int theProgress );
00134     void totalSteps( int theTotalSteps );
00135 
00137     void statusChanged( QString theStatusQString );
00138 
00139 
00140   private:
00141 
00143     QgsHttpTransaction();
00144 
00152     QHttp* http;
00153 
00157     int httpid;
00158 
00162     bool httpactive;
00163 
00164     /*
00165      * Indicates the response from the QHttp
00166      */
00167     QByteArray httpresponse;
00168 
00169     /*
00170      * Indicates the content type of the response from the QHttp
00171      */
00172     QString    httpresponsecontenttype;
00173 
00177     QString httpurl;
00178 
00182     QString httphost;
00183 
00188     QString httpredirecturl;
00189 
00197     int httpredirections;
00198 
00202     QTimer * mWatchdogTimer;
00203 
00207     QString mError;
00208 
00212     QString mUserName;
00213 
00217     QString mPassword;
00218 
00220     int mNetworkTimeoutMsec;
00221 };
00222 
00223 #endif
00224 
00225 // ENDS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines