mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-09-24 04:32:15 -04:00
Be able to request some zim's metadata using a custom url.
Only favicon for now.
This commit is contained in:
parent
dd52ac8255
commit
a98ea49cac
@ -52,6 +52,33 @@ UrlSchemeHandler::handleContentRequest(QWebEngineUrlRequestJob *request)
|
|||||||
request->reply(mimeType, buffer);
|
request->reply(mimeType, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
UrlSchemeHandler::handleMetaRequest(QWebEngineUrlRequestJob* request)
|
||||||
|
{
|
||||||
|
auto qurl = request->requestUrl();
|
||||||
|
auto host = qurl.host();
|
||||||
|
auto parts = host.split('.');
|
||||||
|
auto zimId = parts[0];
|
||||||
|
auto metaName = parts[1];
|
||||||
|
|
||||||
|
auto library = KiwixApp::instance()->getLibrary();
|
||||||
|
auto reader = library->getReader(zimId+".zim");
|
||||||
|
if ( reader == nullptr) {
|
||||||
|
request->fail(QWebEngineUrlRequestJob::UrlNotFound);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (metaName == "favicon") {
|
||||||
|
std::string mimeType;
|
||||||
|
std::string content;
|
||||||
|
QBuffer* buffer = new QBuffer;
|
||||||
|
reader->getFavicon(content, mimeType);
|
||||||
|
buffer->setData(content.data(), content.size());
|
||||||
|
connect(buffer, &QIODevice::aboutToClose, buffer, &QObject::deleteLater);
|
||||||
|
request->reply(QByteArray::fromStdString(mimeType), buffer);
|
||||||
|
}
|
||||||
|
request->fail(QWebEngineUrlRequestJob::UrlNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
UrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
|
UrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
|
||||||
{
|
{
|
||||||
@ -59,6 +86,8 @@ UrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
|
|||||||
auto host = qurl.host();
|
auto host = qurl.host();
|
||||||
if (host.endsWith(".zim")) {
|
if (host.endsWith(".zim")) {
|
||||||
handleContentRequest(request);
|
handleContentRequest(request);
|
||||||
|
} else if (host.endsWith(".meta")) {
|
||||||
|
handleMetaRequest(request);
|
||||||
} else {
|
} else {
|
||||||
request->fail(QWebEngineUrlRequestJob::UrlNotFound);
|
request->fail(QWebEngineUrlRequestJob::UrlNotFound);
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ public:
|
|||||||
UrlSchemeHandler();
|
UrlSchemeHandler();
|
||||||
void requestStarted(QWebEngineUrlRequestJob *request);
|
void requestStarted(QWebEngineUrlRequestJob *request);
|
||||||
private:
|
private:
|
||||||
|
void handleMetaRequest(QWebEngineUrlRequestJob *request);
|
||||||
void handleContentRequest(QWebEngineUrlRequestJob *request);
|
void handleContentRequest(QWebEngineUrlRequestJob *request);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user