File indexing completed on 2024-04-28 03:56:24

0001 /*
0002     SPDX-FileCopyrightText: 2016 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "downloadjob.h"
0008 
0009 #include "httpworker.h"
0010 
0011 #include "knewstuffcore_debug.h"
0012 
0013 using namespace KNSCore;
0014 
0015 class KNSCore::DownloadJobPrivate
0016 {
0017 public:
0018     DownloadJobPrivate() = default;
0019     QUrl source;
0020     QUrl destination;
0021 };
0022 
0023 DownloadJob::DownloadJob(const QUrl &source, const QUrl &destination, int permissions, JobFlags flags, QObject *parent)
0024     : FileCopyJob(source, destination, permissions, flags, parent)
0025     , d(new DownloadJobPrivate)
0026 {
0027     d->source = source;
0028     d->destination = destination;
0029 }
0030 
0031 DownloadJob::DownloadJob(QObject *parent)
0032     : FileCopyJob(parent)
0033     , d(new DownloadJobPrivate)
0034 {
0035 }
0036 
0037 DownloadJob::~DownloadJob() = default;
0038 
0039 void DownloadJob::start()
0040 {
0041     qCDebug(KNEWSTUFFCORE) << Q_FUNC_INFO;
0042     HTTPWorker *worker = new HTTPWorker(d->source, d->destination, HTTPWorker::DownloadJob, this);
0043     connect(worker, &HTTPWorker::completed, this, &DownloadJob::handleWorkerCompleted);
0044     connect(worker, &HTTPWorker::error, this, &DownloadJob::handleWorkerError);
0045     worker->startRequest();
0046 }
0047 
0048 void DownloadJob::handleWorkerCompleted()
0049 {
0050     emitResult();
0051 }
0052 
0053 void KNSCore::DownloadJob::handleWorkerError(const QString &error)
0054 {
0055     setError(KJob::UserDefinedError);
0056     setErrorText(error);
0057 }
0058 
0059 #include "moc_downloadjob.cpp"