mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 21:44:38 +00:00
49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
// Minimal mock of the Tauri-side webview_apis WS server. Lets you curl
|
|
// `openhuman.webview_apis_gmail_*` against the core binary without
|
|
// bringing up the full Tauri shell. Usage:
|
|
// node scripts/mock-webview-bridge.mjs 9826
|
|
|
|
import { WebSocketServer } from 'ws';
|
|
|
|
const port = Number(process.argv[2] ?? 9826);
|
|
const wss = new WebSocketServer({ host: '127.0.0.1', port });
|
|
|
|
console.log(`[mock-bridge] listening on ws://127.0.0.1:${port}`);
|
|
|
|
wss.on('connection', (sock, req) => {
|
|
console.log(`[mock-bridge] conn from ${req.socket.remoteAddress}`);
|
|
sock.on('message', (raw) => {
|
|
const msg = JSON.parse(raw.toString());
|
|
console.log(`[mock-bridge] <- ${msg.method} id=${msg.id}`);
|
|
const reply = { kind: 'response', id: msg.id };
|
|
switch (msg.method) {
|
|
case 'gmail.list_labels':
|
|
reply.ok = true;
|
|
reply.result = [
|
|
{ id: 'INBOX', name: 'Inbox', kind: 'system', unread: 3 },
|
|
{ id: 'STARRED', name: 'Starred', kind: 'system', unread: null },
|
|
{ id: 'Receipts', name: 'Receipts', kind: 'user', unread: 1 },
|
|
];
|
|
break;
|
|
case 'gmail.list_messages':
|
|
reply.ok = true;
|
|
reply.result = [
|
|
{
|
|
id: 'm-001', thread_id: 't-001',
|
|
from: 'alice@example.com', to: ['you@example.com'], cc: [],
|
|
subject: 'Hello from the mock', snippet: 'mock snippet',
|
|
body: null, date_ms: Date.now(),
|
|
labels: ['INBOX'], unread: true,
|
|
},
|
|
];
|
|
break;
|
|
default:
|
|
reply.ok = false;
|
|
reply.error = `mock-bridge: unhandled method '${msg.method}'`;
|
|
}
|
|
sock.send(JSON.stringify(reply));
|
|
console.log(`[mock-bridge] -> ${msg.method} id=${msg.id} ok=${reply.ok}`);
|
|
});
|
|
});
|