File: resourceschemehandler.cpp

package info (click to toggle)
goldendict-webengine 23.02.05-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 19,148 kB
  • sloc: cpp: 58,537; javascript: 9,942; ansic: 9,242; xml: 41; makefile: 15; sh: 9
file content (31 lines) | stat: -rw-r--r-- 1,285 bytes parent folder | download
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
#include "resourceschemehandler.h"

ResourceSchemeHandler::ResourceSchemeHandler(ArticleNetworkAccessManager& articleNetMgr, QObject *parent):
    QWebEngineUrlSchemeHandler(parent),
    mManager(articleNetMgr){
}
void ResourceSchemeHandler::requestStarted(QWebEngineUrlRequestJob *requestJob)
{
    QUrl url = requestJob->requestUrl();

    QNetworkRequest request;
    request.setUrl(url);
    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
    QNetworkReply *reply = this->mManager.getArticleReply( request);
    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;
      }
      QMimeType mineType = db.mimeTypeForUrl(url);
      QString contentType = mineType.name();
      // Reply segment
      requestJob->reply(contentType.toLatin1(), reply);
    });
    connect(requestJob, &QObject::destroyed, reply, &QObject::deleteLater);
}