From: AsamK Date: Wed, 10 Nov 2021 19:12:40 +0000 (+0100) Subject: Add listAccounts command X-Git-Tag: v0.10.0~57 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/62dd2ee49ebcc182fb3892648c3f3f3840d38652 Add listAccounts command --- diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index 7f3a5eec..3c028979 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -449,6 +449,13 @@ "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, diff --git a/src/main/java/org/asamk/signal/commands/Commands.java b/src/main/java/org/asamk/signal/commands/Commands.java index 1d6dd26d..54d5bf80 100644 --- a/src/main/java/org/asamk/signal/commands/Commands.java +++ b/src/main/java/org/asamk/signal/commands/Commands.java @@ -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 index 00000000..3a04fb35 --- /dev/null +++ b/src/main/java/org/asamk/signal/commands/ListAccountsCommand.java @@ -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) {} +} diff --git a/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java b/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java index d8a984f3..d2debfe0 100644 --- a/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java +++ b/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java @@ -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)); }