Dekko
Loading...
Searching...
No Matches
DekkoWebEngineUrlSchemeHandler.cpp
1#include "DekkoWebEngineUrlSchemeHandler.h"
2#include <QDebug>
3#include <QNetworkRequest>
4
5DekkoWebEngineUrlSchemeHandler::DekkoWebEngineUrlSchemeHandler(QWebEngineUrlSchemeHandler *parent) : QWebEngineUrlSchemeHandler(parent),
6 messageUid(""), pendingRequest(nullptr), customNetworkAccessManager(nullptr)
7{
8}
9
10void DekkoWebEngineUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
11{
12 auto requestUrl = request->requestUrl();
13 qDebug() << "Scheme handler called for " << requestUrl.toString();
14 if (this->testScheme("cid", requestUrl) && !requestUrl.toString().contains(this->messageUid))
15 {
16 requestUrl.setQuery("messageId=" + this->messageUid);
17 }
18
19 pendingRequest = request;
20
21 QNetworkRequest networkRequest;
22 networkRequest.setUrl(requestUrl);
23
24 if (!this->customNetworkAccessManager)
25 {
26 qDebug() << "I can get no network access manager...";
27 }
28 else
29 {
30 this->customNetworkAccessManager->get(networkRequest);
31 }
32}
33
34void DekkoWebEngineUrlSchemeHandler::onReply(QNetworkReply *reply)
35{
36 if (!pendingRequest)
37 {
38 return;
39 }
40 connect(this->pendingRequest, &QObject::destroyed, reply, &QObject::deleteLater);
41 this->pendingRequest->reply(QByteArrayLiteral("text/html"), reply);
42 this->pendingRequest = nullptr;
43}
44
45bool DekkoWebEngineUrlSchemeHandler::testScheme(const QString &scheme, const QUrl &url)
46{
47 return url.scheme() == scheme;
48}
49
50void DekkoWebEngineUrlSchemeHandler::setMessageUid(QString messageUid)
51{
52 this->messageUid = messageUid;
53}
54
55QString DekkoWebEngineUrlSchemeHandler::getMessageUid() const
56{
57 return this->messageUid;
58}
59
60void DekkoWebEngineUrlSchemeHandler::setNetworkAccessManager(QNetworkAccessManager * qnam)
61{
62 this->customNetworkAccessManager = qnam;
63
64 connect(this->customNetworkAccessManager, &QNetworkAccessManager::finished,
65 this, &DekkoWebEngineUrlSchemeHandler::onReply);
66}
67