1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/*
SPDX-FileCopyrightText: 2008 Joris Guisson <joris.guisson@gmail.com>
SPDX-FileCopyrightText: 2008 Ivan Vasic <ivasic@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <KIO/StoredTransferJob>
#include "feedretriever.h"
#include <ktversion.h>
#include <util/log.h>
using namespace bt;
namespace kt
{
FeedRetriever::FeedRetriever()
: job(nullptr)
, err(0)
{
}
FeedRetriever::FeedRetriever(const QString &file_name)
: backup_file(file_name)
, job(nullptr)
, err(0)
{
}
FeedRetriever::~FeedRetriever()
{
}
void FeedRetriever::setAuthenticationCookie(const QString &cookie)
{
this->cookie = cookie;
}
void FeedRetriever::abort()
{
if (job)
job->kill(KJob::EmitResult);
}
int FeedRetriever::errorCode() const
{
return err;
}
void FeedRetriever::retrieveData(const QUrl &url)
{
KIO::StoredTransferJob *j = KIO::storedGet(url, KIO::NoReload, KIO::HideProgressInfo);
j->addMetaData(QStringLiteral("UserAgent"), bt::GetVersionString());
if (!cookie.isEmpty()) {
j->addMetaData(QStringLiteral("cookies"), QStringLiteral("none"));
j->addMetaData(QStringLiteral("customHTTPHeader"), QStringLiteral("Cookie: %1").arg(cookie));
}
connect(j, &KIO::StoredTransferJob::result, this, &FeedRetriever::finished);
job = j;
}
void FeedRetriever::finished(KJob *j)
{
KIO::StoredTransferJob *stj = (KIO::StoredTransferJob *)j;
err = stj->error();
QByteArray data = stj->data();
if (!err && !backup_file.isEmpty()) {
QFile fptr(backup_file);
if (fptr.open(QIODevice::WriteOnly)) {
fptr.write(data);
fptr.close();
}
}
Q_EMIT dataRetrieved(data, err == 0);
}
}
|