]> nmode's Git Repositories - signal-cli/commitdiff
Add listAccounts command
authorAsamK <asamk@gmx.de>
Wed, 10 Nov 2021 19:12:40 +0000 (20:12 +0100)
committerAsamK <asamk@gmx.de>
Wed, 10 Nov 2021 19:15:18 +0000 (20:15 +0100)
graalvm-config-dir/reflect-config.json
src/main/java/org/asamk/signal/commands/Commands.java
src/main/java/org/asamk/signal/commands/ListAccountsCommand.java [new file with mode: 0644]
src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java

index 7f3a5eec8ed89e6ba1e35f1d99a545fe45d8d4c9..3c02897933f6333b17e2746ef922f3238c54f63b 100644 (file)
   "allDeclaredMethods":true,
   "allDeclaredConstructors":true}
 ,
+{
+  "name":"org.asamk.signal.commands.ListAccountsCommand$JsonAccount",
+  "allDeclaredFields":true,
+  "queryAllDeclaredMethods":true,
+  "queryAllDeclaredConstructors":true,
+  "methods":[{"name":"number","parameterTypes":[] }]}
+,
 {
   "name":"org.asamk.signal.commands.ListContactsCommand$JsonContact",
   "allDeclaredFields":true,
index 1d6dd26df240478ab55cc01466c45e25a0d83b16..54d5bf80d758d47661c1003073df8a31279f13c2 100644 (file)
@@ -17,6 +17,7 @@ public class Commands {
         addCommand(new JoinGroupCommand());
         addCommand(new JsonRpcDispatcherCommand());
         addCommand(new LinkCommand());
+        addCommand(new ListAccountsCommand());
         addCommand(new ListContactsCommand());
         addCommand(new ListDevicesCommand());
         addCommand(new ListGroupsCommand());
diff --git a/src/main/java/org/asamk/signal/commands/ListAccountsCommand.java b/src/main/java/org/asamk/signal/commands/ListAccountsCommand.java
new file mode 100644 (file)
index 0000000..3a04fb3
--- /dev/null
@@ -0,0 +1,41 @@
+package org.asamk.signal.commands;
+
+import net.sourceforge.argparse4j.inf.Namespace;
+import net.sourceforge.argparse4j.inf.Subparser;
+
+import org.asamk.signal.JsonWriter;
+import org.asamk.signal.OutputWriter;
+import org.asamk.signal.PlainTextWriter;
+import org.asamk.signal.commands.exceptions.CommandException;
+
+import java.util.stream.Collectors;
+
+public class ListAccountsCommand implements JsonRpcMultiLocalCommand {
+
+    @Override
+    public String getName() {
+        return "listAccounts";
+    }
+
+    @Override
+    public void attachToSubparser(final Subparser subparser) {
+        subparser.help("Show a list of registered accounts.");
+    }
+
+    @Override
+    public void handleCommand(
+            final Namespace ns, final SignalCreator c, final OutputWriter outputWriter
+    ) throws CommandException {
+        final var accountNumbers = c.getAccountNumbers();
+        if (outputWriter instanceof JsonWriter jsonWriter) {
+            final var jsonAccounts = accountNumbers.stream().map(JsonAccount::new).collect(Collectors.toList());
+            jsonWriter.write(jsonAccounts);
+        } else if (outputWriter instanceof PlainTextWriter plainTextWriter) {
+            for (final var number : accountNumbers) {
+                plainTextWriter.println("Number: {}", number);
+            }
+        }
+    }
+
+    private record JsonAccount(String number) {}
+}
index d8a984f3e849be688f265a29394d8a9127a0a59a..d2debfe0e1871c87b9b267f235fba1a06e010943 100644 (file)
@@ -119,7 +119,7 @@ public class SignalJsonRpcDispatcherHandler {
             final ObjectMapper objectMapper, final String method, ContainerNode<?> params
     ) throws JsonRpcException {
         var command = getCommand(method);
-        // TODO implement listAccounts, register, verify, link
+        // TODO implement register, verify, link
         if (c != null && command instanceof JsonRpcMultiCommand<?> jsonRpcCommand) {
             return runCommand(objectMapper, params, new MultiCommandRunnerImpl<>(c, jsonRpcCommand));
         }