aboutsummaryrefslogtreecommitdiff
path: root/src/schemes/NullRpcSchemeHandler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/schemes/NullRpcSchemeHandler.hpp')
-rw-r--r--src/schemes/NullRpcSchemeHandler.hpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/schemes/NullRpcSchemeHandler.hpp b/src/schemes/NullRpcSchemeHandler.hpp
new file mode 100644
index 0000000..b1d5168
--- /dev/null
+++ b/src/schemes/NullRpcSchemeHandler.hpp
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <QWebEngineUrlRequestJob>
+#include <QWebEngineUrlSchemeHandler>
+#include <QtCore>
+#include <qurlquery.h>
+
+class NullRPCSchemeHandler : public QWebEngineUrlSchemeHandler {
+ Q_OBJECT
+
+public:
+ static NullRPCSchemeHandler &instance() {
+ static NullRPCSchemeHandler handler;
+ return handler;
+ }
+
+ void requestStarted(QWebEngineUrlRequestJob *job) override {
+ auto url = job->requestUrl();
+ qDebug() << "REQ" << url << url.host();
+
+ if (url.host().isEmpty() || url.host() == "noop") {
+ job->reply("text/html", new QBuffer(job));
+ return;
+ }
+
+ if (url.host() == "log") {
+ qDebug() << url.query();
+ job->reply("text/plain", new QBuffer(job));
+ return;
+ }
+
+ QUrlQuery query(url.query());
+ emit message_received(url.host(), query);
+
+ QByteArray data = "{}";
+ QBuffer *buffer = new QBuffer(job);
+ buffer->setData(data);
+ buffer->open(QIODevice::ReadOnly);
+ job->reply("text/plain", buffer);
+ }
+
+signals:
+ void message_received(const QString &action, QUrlQuery params);
+
+private:
+ NullRPCSchemeHandler() = default;
+};