1#include "DekkoWebEngineUrlSchemeHandler.h"
3#include <QNetworkRequest>
5DekkoWebEngineUrlSchemeHandler::DekkoWebEngineUrlSchemeHandler(QWebEngineUrlSchemeHandler *parent) : QWebEngineUrlSchemeHandler(parent),
6 messageUid(
""), pendingRequest(nullptr), customNetworkAccessManager(nullptr)
10void DekkoWebEngineUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
12 auto requestUrl = request->requestUrl();
13 qDebug() <<
"Scheme handler called for " << requestUrl.toString();
14 if (this->testScheme(
"cid", requestUrl) && !requestUrl.toString().contains(this->messageUid))
16 requestUrl.setQuery(
"messageId=" + this->messageUid);
19 pendingRequest = request;
21 QNetworkRequest networkRequest;
22 networkRequest.setUrl(requestUrl);
24 if (!this->customNetworkAccessManager)
26 qDebug() <<
"I can get no network access manager...";
30 this->customNetworkAccessManager->get(networkRequest);
34void DekkoWebEngineUrlSchemeHandler::onReply(QNetworkReply *reply)
40 connect(this->pendingRequest, &QObject::destroyed, reply, &QObject::deleteLater);
41 this->pendingRequest->reply(QByteArrayLiteral(
"text/html"), reply);
42 this->pendingRequest =
nullptr;
45bool DekkoWebEngineUrlSchemeHandler::testScheme(
const QString &scheme,
const QUrl &url)
47 return url.scheme() == scheme;
50void DekkoWebEngineUrlSchemeHandler::setMessageUid(QString messageUid)
52 this->messageUid = messageUid;
55QString DekkoWebEngineUrlSchemeHandler::getMessageUid()
const
57 return this->messageUid;
60void DekkoWebEngineUrlSchemeHandler::setNetworkAccessManager(QNetworkAccessManager * qnam)
62 this->customNetworkAccessManager = qnam;
64 connect(this->customNetworkAccessManager, &QNetworkAccessManager::finished,
65 this, &DekkoWebEngineUrlSchemeHandler::onReply);