mirror of
https://github.com/NohamR/RMHook.git
synced 2026-04-08 07:59:58 +00:00
Add native HTTP server, CLI scripts and docs
Implement a native macOS HTTP server for RMHook and wire it into the app. Adds HttpServer.h/.mm (CFSocket-based) with start/stop/isRunning APIs, broadcasts incoming POST /exportFile and /documentAccepted requests to the QML MessageBroker, and starts the server on port 8080 from reMarkable.m. Update CMakeLists to include HttpServer.mm and link Qt Qml when building qmlrebuild mode. Add documentation (docs/HTTP_SERVER.md) and QML snippets for MessageBroker integration, plus Python helper scripts (scripts/http_server.py and scripts/test_http_server.py) for invoking the endpoints. Also add small MessageBroker examples (src/utils/mb.m, src/utils/mb.qml) and update ResourceUtils to include additional QML resources.
This commit is contained in:
67
docs/ExportDialog_MessageBroker_snippet.qml
Normal file
67
docs/ExportDialog_MessageBroker_snippet.qml
Normal file
@@ -0,0 +1,67 @@
|
||||
// Add this MessageBroker to ExportDialog.qml after the PopupDialog definition
|
||||
// This should be added near the top of the component, after property definitions
|
||||
|
||||
import net.noham.MessageBroker
|
||||
|
||||
// ... existing properties ...
|
||||
|
||||
// MessageBroker for HTTP server export requests
|
||||
MessageBroker {
|
||||
id: exportBroker
|
||||
listeningFor: ["exportFile"]
|
||||
|
||||
onSignalReceived: (signal, message) => {
|
||||
console.log("[ExportDialog.MessageBroker] Received signal:", signal);
|
||||
console.log("[ExportDialog.MessageBroker] Message data:", message);
|
||||
|
||||
try {
|
||||
// Parse JSON message from HTTP server
|
||||
const data = JSON.parse(message);
|
||||
console.log("[ExportDialog.MessageBroker] Parsed export request:", JSON.stringify(data));
|
||||
|
||||
// Extract parameters
|
||||
const target = data.target || "";
|
||||
const documentId = data.id || data.documentId || "";
|
||||
const format = data.format !== undefined ? data.format : PlatformHelpers.ExportPdf;
|
||||
const password = data.password || "";
|
||||
const keepPassword = data.keepPassword !== undefined ? data.keepPassword : true;
|
||||
const grayscale = data.grayscale !== undefined ? data.grayscale : false;
|
||||
const pageSelection = data.pageSelection || [];
|
||||
|
||||
console.log("[ExportDialog.MessageBroker] Export parameters:");
|
||||
console.log("[ExportDialog.MessageBroker] target:", target);
|
||||
console.log("[ExportDialog.MessageBroker] documentId:", documentId);
|
||||
console.log("[ExportDialog.MessageBroker] format:", format);
|
||||
console.log("[ExportDialog.MessageBroker] keepPassword:", keepPassword);
|
||||
console.log("[ExportDialog.MessageBroker] grayscale:", grayscale);
|
||||
console.log("[ExportDialog.MessageBroker] pageSelection:", JSON.stringify(pageSelection));
|
||||
|
||||
// Validate required parameters
|
||||
if (!target) {
|
||||
console.error("[ExportDialog.MessageBroker] ERROR: Missing 'target' parameter");
|
||||
return;
|
||||
}
|
||||
if (!documentId) {
|
||||
console.error("[ExportDialog.MessageBroker] ERROR: Missing 'id' or 'documentId' parameter");
|
||||
return;
|
||||
}
|
||||
|
||||
// Call PlatformHelpers.exportFile
|
||||
console.log("[ExportDialog.MessageBroker] Calling PlatformHelpers.exportFile...");
|
||||
|
||||
if (pageSelection && pageSelection.length > 0) {
|
||||
console.log("[ExportDialog.MessageBroker] Exporting with page selection");
|
||||
PlatformHelpers.exportFile(target, documentId, format, password, keepPassword, grayscale, pageSelection);
|
||||
} else {
|
||||
console.log("[ExportDialog.MessageBroker] Exporting full document");
|
||||
PlatformHelpers.exportFile(target, documentId, format, password, keepPassword, grayscale);
|
||||
}
|
||||
|
||||
console.log("[ExportDialog.MessageBroker] Export completed successfully");
|
||||
|
||||
} catch (error) {
|
||||
console.error("[ExportDialog.MessageBroker] ERROR parsing export request:", error);
|
||||
console.error("[ExportDialog.MessageBroker] Message was:", message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user