goldendict-ng/src/resourceschemehandler.cc

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

33 lines
1.2 KiB
C++
Raw Normal View History

#include "resourceschemehandler.hh"
2021-08-28 02:35:23 +00:00
ResourceSchemeHandler::ResourceSchemeHandler( ArticleNetworkAccessManager & articleNetMgr, QObject * parent ):
QWebEngineUrlSchemeHandler( parent ),
mManager( articleNetMgr )
{
2021-08-28 02:35:23 +00:00
}
void ResourceSchemeHandler::requestStarted( QWebEngineUrlRequestJob * requestJob )
2021-08-28 02:35:23 +00:00
{
QUrl url = requestJob->requestUrl();
QNetworkRequest request;
request.setUrl( url );
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache );
QNetworkReply * reply = this->mManager.getArticleReply( request );
2022-01-08 04:22:41 +00:00
connect( reply, &QNetworkReply::finished, requestJob, [ = ]() {
if ( reply->error() == QNetworkReply::ContentNotFoundError ) {
requestJob->fail( QWebEngineUrlRequestJob::UrlNotFound );
return;
}
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
}