mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-09-22 11:37:56 -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);
|
||||
}
|
||||
|
||||
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
|
||||
UrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
|
||||
{
|
||||
@ -59,6 +86,8 @@ UrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)
|
||||
auto host = qurl.host();
|
||||
if (host.endsWith(".zim")) {
|
||||
handleContentRequest(request);
|
||||
} else if (host.endsWith(".meta")) {
|
||||
handleMetaRequest(request);
|
||||
} else {
|
||||
request->fail(QWebEngineUrlRequestJob::UrlNotFound);
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ public:
|
||||
UrlSchemeHandler();
|
||||
void requestStarted(QWebEngineUrlRequestJob *request);
|
||||
private:
|
||||
void handleMetaRequest(QWebEngineUrlRequestJob *request);
|
||||
void handleContentRequest(QWebEngineUrlRequestJob *request);
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user