diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-07-27 15:57:24 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-07-27 15:57:24 +0530 |
| commit | e3f1325b9da8c7d67c6d4aaefba625479fbce3d8 (patch) | |
| tree | d71ca81541a6c3044e84b5f3f94332b8c5a851cb | |
| parent | f34ca241eeab56679f49dde006abe10cbc15e314 (diff) | |
| download | null-browser-e3f1325b9da8c7d67c6d4aaefba625479fbce3d8.tar.gz null-browser-e3f1325b9da8c7d67c6d4aaefba625479fbce3d8.zip | |
Minor refactor for null rpc scheme handler
| -rw-r--r-- | src/schemes/NullRpcSchemeHandler.cpp | 44 | ||||
| -rw-r--r-- | src/schemes/NullRpcSchemeHandler.hpp | 34 |
2 files changed, 49 insertions, 29 deletions
diff --git a/src/schemes/NullRpcSchemeHandler.cpp b/src/schemes/NullRpcSchemeHandler.cpp new file mode 100644 index 0000000..0b4d993 --- /dev/null +++ b/src/schemes/NullRpcSchemeHandler.cpp @@ -0,0 +1,44 @@ +#include "NullRpcSchemeHandler.hpp" + +const QStringList NullRPCSchemeHandler::allowed_origin_schemes = { + "nullrpc", +}; + +void NullRPCSchemeHandler::requestStarted(QWebEngineUrlRequestJob *job) { + auto url = job->requestUrl(); + auto origin = job->initiator(); + qDebug() << "RPC Msg:" << url << " | From: " << job->initiator(); + + auto is_origin_allowed = allowed_origin_schemes.contains(origin.scheme()); + if (!is_origin_allowed || url.host().isEmpty()) { + send_empty_response(job); + return; + } + + if (url.host() == "noop") { + send_empty_response(job, "text/html"); + return; + } + + if (url.host() == "log") { + qInfo() << url.query(); + send_empty_response(job); + return; + } + + NullRPCMessage message{ + .name = url.host(), + .params = QUrlQuery(url.query()), + }; + emit message_received(message); + + // TODO: responses managed with request ids + send_empty_response(job); +} + +void NullRPCSchemeHandler::send_empty_response(QWebEngineUrlRequestJob *job, + const QByteArray &content_type) { + QBuffer *buffer = new QBuffer(job); + buffer->open(QIODevice::ReadOnly); + job->reply(content_type, new QBuffer(job)); +} diff --git a/src/schemes/NullRpcSchemeHandler.hpp b/src/schemes/NullRpcSchemeHandler.hpp index b2b22cb..38716f7 100644 --- a/src/schemes/NullRpcSchemeHandler.hpp +++ b/src/schemes/NullRpcSchemeHandler.hpp @@ -19,39 +19,15 @@ public: return handler; } - void requestStarted(QWebEngineUrlRequestJob *job) override { - auto url = job->requestUrl(); - auto origin = job->initiator(); - qDebug() << "REQ" << url << " | From: " << job->initiator(); - - if (origin.scheme() != "nullrpc" || 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; - } - - NullRPCMessage message{ - .name = url.host(), - .params = QUrlQuery(url.query()), - }; - emit message_received(message); - - // TODO: responses managed with request ids - QByteArray data = "{}"; - QBuffer *buffer = new QBuffer(job); - buffer->setData(data); - buffer->open(QIODevice::ReadOnly); - job->reply("text/plain", buffer); - } + void requestStarted(QWebEngineUrlRequestJob *job) override; signals: void message_received(NullRPCMessage message); private: NullRPCSchemeHandler() = default; + static const QStringList allowed_origin_schemes; + + void send_empty_response(QWebEngineUrlRequestJob *job, + const QByteArray &content_type = "text/plain"); }; |
