]> nmode's Git Repositories - signal-cli/commitdiff
Add --receive-mode parameter to jsonRpc command
authorAsamK <asamk@gmx.de>
Fri, 1 Sep 2023 10:08:56 +0000 (12:08 +0200)
committerAsamK <asamk@gmx.de>
Fri, 1 Sep 2023 10:08:56 +0000 (12:08 +0200)
CHANGELOG.md
graalvm-config-dir/reflect-config.json
man/signal-cli.1.adoc
src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java

index ec128f3eea5b10918e77a3b5f50d9193568438a6..d520e2737a9d968023f007b122f7fa31ca6ce052 100644 (file)
@@ -2,6 +2,10 @@
 
 ## [Unreleased]
 
+### Added
+
+- Added `--receive-mode` parameter for `jsonRpc` command
+
 ## [0.12.1] - 2023-08-26
 
 ### Added
index 989e6b905ccc3228b12e1e680eb6f47087460047..a449c4ff1bf6f7c939dcde659e5dc42e40f5997c 100644 (file)
   "allDeclaredFields":true,
   "allDeclaredMethods":true,
   "allDeclaredConstructors":true,
-  "methods":[{"name":"getError","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getJsonrpc","parameterTypes":[] }, {"name":"getResult","parameterTypes":[] }]
+  "methods":[{"name":"<init>","parameterTypes":[] }, {"name":"getError","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getJsonrpc","parameterTypes":[] }, {"name":"getResult","parameterTypes":[] }]
 },
 {
   "name":"org.asamk.signal.jsonrpc.JsonRpcResponse$Error",
index 56449d19521907f0902dbef5fc60eb99c46a9fce..0fbbe85586295e679b43fef9547a727b8786e080 100644 (file)
@@ -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.
index 34961bd3bbd32112952f753f5e67ad38b2ba4b65..21176af389a3389f3a556e3d0b68cb1f19b03ea9 100644 (file)
@@ -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.<ReceiveMode>get("receive-mode");
+        final var receiveConfig = getReceiveConfig(ns);
+        m.setReceiveConfig(receiveConfig);
 
         final var jsonOutputWriter = (JsonWriter) outputWriter;
-        final Supplier<String> 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<String> getLineSupplier() {
+        return IOUtils.getLineSupplier(new InputStreamReader(System.in, IOUtils.getConsoleCharset()));
+    }
 }