2022-01-09 01:52:40 +00:00
|
|
|
#include "resourceschemehandler.h"
|
2021-08-28 02:35:23 +00:00
|
|
|
|
2022-01-09 01:52:40 +00:00
|
|
|
ResourceSchemeHandler::ResourceSchemeHandler(ArticleNetworkAccessManager& articleNetMgr):mManager(articleNetMgr){
|
2021-08-28 02:35:23 +00:00
|
|
|
|
|
|
|
}
|
2022-01-09 01:52:40 +00:00
|
|
|
void ResourceSchemeHandler::requestStarted(QWebEngineUrlRequestJob *requestJob)
|
2021-08-28 02:35:23 +00:00
|
|
|
{
|
|
|
|
QUrl url = requestJob->requestUrl();
|
|
|
|
|
|
|
|
QNetworkRequest request;
|
2022-01-09 03:36:48 +00:00
|
|
|
request.setUrl(url);
|
2022-01-10 12:17:22 +00:00
|
|
|
QNetworkReply *reply = this->mManager.createRequest(QNetworkAccessManager::GetOperation, request);
|
2022-01-08 04:22:41 +00:00
|
|
|
connect(reply, &QNetworkReply::finished, requestJob, [=]() {
|
|
|
|
if (reply->error() == QNetworkReply::ContentNotFoundError) {
|
|
|
|
requestJob->fail(QWebEngineUrlRequestJob::UrlNotFound);
|
|
|
|
return;
|
|
|
|
}
|
2022-01-09 03:36:48 +00:00
|
|
|
if (reply->error() != QNetworkReply::NoError) {
|
|
|
|
qDebug() << "resource handler failed:" << reply->error() << ":" << reply->request().url();
|
|
|
|
requestJob->fail(QWebEngineUrlRequestJob::RequestFailed);
|
|
|
|
return;
|
|
|
|
}
|
2022-01-08 04:22:41 +00:00
|
|
|
QMimeType mineType = db.mimeTypeForUrl(url);
|
|
|
|
QString contentType = mineType.name();
|
|
|
|
// Reply segment
|
|
|
|
requestJob->reply(contentType.toLatin1(), reply);
|
|
|
|
});
|
2022-03-22 12:29:37 +00:00
|
|
|
connect(requestJob, &QObject::destroyed, reply, &QObject::deleteLater);
|
2021-08-28 02:35:23 +00:00
|
|
|
}
|