refactor(nodes): dedupe camera payload and node resolve helpers
This commit is contained in:
@@ -7,9 +7,8 @@ import {
|
||||
cameraTempPath,
|
||||
parseCameraClipPayload,
|
||||
parseCameraSnapPayload,
|
||||
writeBase64ToFile,
|
||||
writeCameraPayloadToFile,
|
||||
writeCameraClipPayloadToFile,
|
||||
writeUrlToFile,
|
||||
} from "../nodes-camera.js";
|
||||
import { parseDurationMs } from "../parse-duration.js";
|
||||
import { getNodesTheme, runNodesCommand } from "./cli-utils.js";
|
||||
@@ -166,14 +165,12 @@ export function registerNodesCameraCommands(nodes: Command) {
|
||||
facing,
|
||||
ext: payload.format === "jpeg" ? "jpg" : payload.format,
|
||||
});
|
||||
if (payload.url) {
|
||||
if (!node.remoteIp) {
|
||||
throw new Error("camera URL payload requires node remoteIp");
|
||||
}
|
||||
await writeUrlToFile(filePath, payload.url, { expectedHost: node.remoteIp });
|
||||
} else if (payload.base64) {
|
||||
await writeBase64ToFile(filePath, payload.base64);
|
||||
}
|
||||
await writeCameraPayloadToFile({
|
||||
filePath,
|
||||
payload,
|
||||
expectedHost: node.remoteIp,
|
||||
invalidPayloadMessage: "invalid camera.snap payload",
|
||||
});
|
||||
results.push({
|
||||
facing,
|
||||
path: filePath,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { Command } from "commander";
|
||||
import { callGateway, randomIdempotencyKey } from "../../gateway/call.js";
|
||||
import { resolveNodeIdFromCandidates } from "../../shared/node-match.js";
|
||||
import { resolveNodeFromNodeList } from "../../shared/node-resolve.js";
|
||||
import { GATEWAY_CLIENT_MODES, GATEWAY_CLIENT_NAMES } from "../../utils/message-channel.js";
|
||||
import { withProgress } from "../progress.js";
|
||||
import { parseNodeList, parsePairingList } from "./format.js";
|
||||
@@ -77,11 +77,6 @@ export async function resolveNodeId(opts: NodesRpcOpts, query: string) {
|
||||
}
|
||||
|
||||
export async function resolveNode(opts: NodesRpcOpts, query: string): Promise<NodeListNode> {
|
||||
const q = String(query ?? "").trim();
|
||||
if (!q) {
|
||||
throw new Error("node required");
|
||||
}
|
||||
|
||||
let nodes: NodeListNode[] = [];
|
||||
try {
|
||||
const res = await callGatewayCli("node.list", opts, {});
|
||||
@@ -97,6 +92,5 @@ export async function resolveNode(opts: NodesRpcOpts, query: string): Promise<No
|
||||
remoteIp: n.remoteIp,
|
||||
}));
|
||||
}
|
||||
const nodeId = resolveNodeIdFromCandidates(nodes, q);
|
||||
return nodes.find((node) => node.nodeId === nodeId) ?? { nodeId };
|
||||
return resolveNodeFromNodeList(nodes, query);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user