19 #include <QNetworkAccessManager> 
   20 #include <QNetworkReply> 
   22 using namespace Marble;
 
   24 class Marble::HttpJobPrivate
 
   27     HttpJobPrivate( 
const QUrl & sourceUrl, 
const QString & destFileName,
 
   28                     const QString &
id, QNetworkAccessManager *networkAccessManager );
 
   31     QString        m_destinationFileName;
 
   32     QString        m_initiatorId;
 
   36     QNetworkAccessManager *
const m_networkAccessManager;
 
   37     QNetworkReply *m_networkReply;
 
   40 HttpJobPrivate::HttpJobPrivate( 
const QUrl & sourceUrl, 
const QString & destFileName,
 
   41                                 const QString &
id, QNetworkAccessManager *networkAccessManager )
 
   42     : m_sourceUrl( sourceUrl ),
 
   43       m_destinationFileName( destFileName ),
 
   49       m_pluginId( 
"unknown" ),
 
   50       m_networkAccessManager( networkAccessManager ),
 
   56 HttpJob::HttpJob( 
const QUrl & sourceUrl, 
const QString & destFileName, 
const QString &
id, QNetworkAccessManager *networkAccessManager )
 
   57     : d( new HttpJobPrivate( sourceUrl, destFileName, id, networkAccessManager ) )
 
   68     return d->m_sourceUrl;
 
   78     return d->m_initiatorId;
 
   83     d->m_initiatorId = id;
 
   88     return d->m_destinationFileName;
 
   93     d->m_destinationFileName = fileName;
 
   98     if( d->m_trialsLeft > 0 ) {
 
  109     return d->m_downloadUsage;
 
  114     d->m_downloadUsage = 
usage;
 
  119     d->m_pluginId = pluginId;
 
  124     switch ( d->m_downloadUsage ) {
 
  132         qCritical() << 
"Unknown download usage value:" << d->m_downloadUsage;
 
  139     QNetworkRequest request( d->m_sourceUrl );
 
  140     request.setAttribute( QNetworkRequest::HttpPipeliningAllowedAttribute, 
true );
 
  141     request.setRawHeader( 
"User-Agent", 
userAgent() );
 
  142     d->m_networkReply = d->m_networkAccessManager->get( request );
 
  144     connect( d->m_networkReply, SIGNAL(downloadProgress(qint64,qint64)),
 
  145              SLOT(downloadProgress(qint64,qint64)));
 
  146     connect( d->m_networkReply, SIGNAL(error(QNetworkReply::NetworkError)),
 
  147              SLOT(error(QNetworkReply::NetworkError)));
 
  148     connect( d->m_networkReply, SIGNAL(finished()),
 
  151 void HttpJob::downloadProgress( qint64 bytesReceived, qint64 bytesTotal )
 
  153     Q_UNUSED(bytesReceived);
 
  154     Q_UNUSED(bytesTotal);
 
  159 void HttpJob::error( QNetworkReply::NetworkError code )
 
  164 void HttpJob::finished()
 
  166     QNetworkReply::NetworkError 
const error = d->m_networkReply->error();
 
  170     const QVariant httpPipeliningWasUsed =
 
  171         d->m_networkReply->attribute( QNetworkRequest::HttpPipeliningWasUsedAttribute );
 
  172     if ( !httpPipeliningWasUsed.isNull() )
 
  173         mDebug() << 
"http pipelining used:" << httpPipeliningWasUsed.toBool();
 
  176     case QNetworkReply::NoError: {
 
  178         const QVariant redirectionAttribute =
 
  179             d->m_networkReply->attribute( QNetworkRequest::RedirectionTargetAttribute );
 
  180         if ( !redirectionAttribute.isNull() ) {
 
  181             emit 
redirected( 
this, redirectionAttribute.toUrl() );
 
  185             const QByteArray data = d->m_networkReply->readAll();
 
  195     d->m_networkReply->disconnect( 
this );
 
  197     d->m_networkReply->deleteLater();
 
  198     d->m_networkReply = 0;
 
  201 #include "HttpJob.moc" 
void setInitiatorId(const QString &)
 
void setSourceUrl(const QUrl &)
 
DownloadUsage
This enum is used to describe the type of download. 
 
void jobDone(HttpJob *, int errorCode)
errorCode contains 0, if there was no error and 1 otherwise 
 
Browsing mode, normal operation of Marble, like a web browser. 
 
void dataReceived(HttpJob *job, QByteArray data)
This signal is emitted if the data was successfully received and the argument data contains completel...
 
HttpJob(const QUrl &sourceUrl, const QString &destFileName, const QString &id, QNetworkAccessManager *networkAccessManager)
 
void setDownloadUsage(const DownloadUsage)
 
QByteArray userAgent() const 
 
QString initiatorId() const 
 
QString destinationFileName() const 
 
DownloadUsage downloadUsage() const 
 
static QByteArray userAgent(const QString &platform, const QString &plugin)
 
void setUserAgentPluginId(const QString &pluginId) const 
 
void redirected(HttpJob *job, QUrl redirectionTarget)
 
QDebug mDebug()
a function to replace qDebug() in Marble library code 
 
void setDestinationFileName(const QString &)
 
Bulk download, for example "File/Download region". 
 
void usage(const QString &app)