From c8daef51139cf112db6520d22713451a7d4a4c39 Mon Sep 17 00:00:00 2001 From: AsamK Date: Fri, 1 Sep 2023 12:08:56 +0200 Subject: [PATCH] Add --receive-mode parameter to jsonRpc command --- CHANGELOG.md | 4 +++ graalvm-config-dir/reflect-config.json | 2 +- man/signal-cli.1.adoc | 18 ++++++++++++ .../commands/JsonRpcDispatcherCommand.java | 29 ++++++++++++++----- 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec128f3e..d520e273 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Added + +- Added `--receive-mode` parameter for `jsonRpc` command + ## [0.12.1] - 2023-08-26 ### Added diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index 989e6b90..a449c4ff 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -1098,7 +1098,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"getError","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getJsonrpc","parameterTypes":[] }, {"name":"getResult","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"getError","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getJsonrpc","parameterTypes":[] }, {"name":"getResult","parameterTypes":[] }] }, { "name":"org.asamk.signal.jsonrpc.JsonRpcResponse$Error", diff --git a/man/signal-cli.1.adoc b/man/signal-cli.1.adoc index 56449d19..0fbbe855 100644 --- a/man/signal-cli.1.adoc +++ b/man/signal-cli.1.adoc @@ -717,6 +717,24 @@ Don’t print received messages to stdout. *--receive-mode*:: Specify when to start receiving messages (on-start, on-connection, manual) +=== jsonRpc + +Run in signal-cli in JSON-RPC mode. +Reads JSON-RPC requests on stdin and responds on stdout. +See **signal-cli-jsonrpc**(5) for info on the JSON-RPC interface. + +*--ignore-attachments*:: +Don’t download attachments of received messages. + +*--ignore-stories*:: +Don’t receive story messages from the server. + +*--send-read-receipts*:: +Send read receipts for all incoming data messages (in addition to the default delivery receipts) + +*--receive-mode*:: +Specify when to start receiving messages (on-start, manual) + === submitRateLimitChallenge When running into rate limits, sometimes the limit can be lifted, by solving a CAPTCHA. diff --git a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java index 34961bd3..21176af3 100644 --- a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java +++ b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java @@ -40,6 +40,10 @@ public class JsonRpcDispatcherCommand implements LocalCommand { subparser.addArgument("--send-read-receipts") .help("Send read receipts for all incoming data messages (in addition to the default delivery receipts)") .action(Arguments.storeTrue()); + subparser.addArgument("--receive-mode") + .help("Specify when to start receiving messages.") + .type(Arguments.enumStringType(ReceiveMode.class)) + .setDefault(ReceiveMode.ON_START); } @Override @@ -51,16 +55,27 @@ public class JsonRpcDispatcherCommand implements LocalCommand { public void handleCommand( final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { - final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); - final var ignoreStories = Boolean.TRUE.equals(ns.getBoolean("ignore-stories")); - final var sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts")); - m.setReceiveConfig(new ReceiveConfig(ignoreAttachments, ignoreStories, sendReadReceipts)); + final var receiveMode = ns.get("receive-mode"); + final var receiveConfig = getReceiveConfig(ns); + m.setReceiveConfig(receiveConfig); final var jsonOutputWriter = (JsonWriter) outputWriter; - final Supplier lineSupplier = IOUtils.getLineSupplier(new InputStreamReader(System.in, - IOUtils.getConsoleCharset())); + final var lineSupplier = getLineSupplier(); - final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, lineSupplier, false); + final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, + lineSupplier, + receiveMode == ReceiveMode.MANUAL); handler.handleConnection(m); } + + private static ReceiveConfig getReceiveConfig(final Namespace ns) { + final var ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); + final var ignoreStories = Boolean.TRUE.equals(ns.getBoolean("ignore-stories")); + final var sendReadReceipts = Boolean.TRUE.equals(ns.getBoolean("send-read-receipts")); + return new ReceiveConfig(ignoreAttachments, ignoreStories, sendReadReceipts); + } + + private static Supplier getLineSupplier() { + return IOUtils.getLineSupplier(new InputStreamReader(System.in, IOUtils.getConsoleCharset())); + } } -- 2.50.1