11#include "MarbleDebug.h"
12#include "HttpDownloadManager.h"
14#include <QNetworkAccessManager>
18class Marble::HttpJobPrivate
21 HttpJobPrivate(
const QUrl & sourceUrl,
const QString & destFileName,
34HttpJobPrivate::HttpJobPrivate(
const QUrl & sourceUrl,
const QString & destFileName,
36 : m_sourceUrl( sourceUrl ),
37 m_destinationFileName( destFileName ),
43 m_userAgent(
"unknown" ),
44 m_networkAccessManager( networkAccessManager ),
45 m_networkReply( nullptr )
51 : d( new HttpJobPrivate( sourceUrl, destFileName, id, networkAccessManager ) )
60QUrl HttpJob::sourceUrl()
const
62 return d->m_sourceUrl;
65void HttpJob::setSourceUrl(
const QUrl &url )
70QString HttpJob::initiatorId()
const
72 return d->m_initiatorId;
75void HttpJob::setInitiatorId(
const QString &
id )
77 d->m_initiatorId = id;
80QString HttpJob::destinationFileName()
const
82 return d->m_destinationFileName;
85void HttpJob::setDestinationFileName(
const QString &fileName )
87 d->m_destinationFileName = fileName;
90bool HttpJob::tryAgain()
92 if( d->m_trialsLeft > 0 ) {
103 return d->m_downloadUsage;
108 d->m_downloadUsage = usage;
111void HttpJob::setUserAgentPluginId(
const QString & pluginId )
const
113 d->m_userAgent = pluginId;
118 switch ( d->m_downloadUsage ) {
120 return HttpDownloadManager::userAgent(
"Browser", d->m_userAgent);
122 return HttpDownloadManager::userAgent(
"BulkDownloader", d->m_userAgent);
124 qCritical() <<
"Unknown download usage value:" << d->m_downloadUsage;
125 return HttpDownloadManager::userAgent(
"unknown", d->m_userAgent);
129void HttpJob::execute()
133 request.setRawHeader(
"User-Agent", userAgent() );
134 d->m_networkReply = d->m_networkAccessManager->
get( request );
136 connect( d->m_networkReply,
SIGNAL(downloadProgress(qint64,qint64)),
137 SLOT(downloadProgress(qint64,qint64)));
143void HttpJob::downloadProgress( qint64 bytesReceived, qint64 bytesTotal )
153 mDebug() <<
"error" << destinationFileName() << code;
156void HttpJob::finished()
178 emit dataReceived(
this, data );
184 emit jobDone(
this, 1 );
190 d->m_networkReply =
nullptr;
193#include "moc_HttpJob.cpp"
Binds a QML item to a specific geodetic location in screen coordinates.
DownloadUsage
This enum is used to describe the type of download.
@ DownloadBrowse
Browsing mode, normal operation of Marble, like a web browser.
@ DownloadBulk
Bulk download, for example "File/Download region".
QNetworkReply * get(const QNetworkRequest &request)
QVariant attribute(QNetworkRequest::Attribute code) const const
NetworkError error() const const
HttpPipeliningAllowedAttribute
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool disconnect(const QMetaObject::Connection &connection)
T qobject_cast(QObject *object)