]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/ListAccountsCommand.java
3a04fb358faedfd7b9837966bbdcabd819e49926
[signal-cli] / src / main / java / org / asamk / signal / commands / ListAccountsCommand.java
1 package org.asamk.signal.commands;
2
3 import net.sourceforge.argparse4j.inf.Namespace;
4 import net.sourceforge.argparse4j.inf.Subparser;
5
6 import org.asamk.signal.JsonWriter;
7 import org.asamk.signal.OutputWriter;
8 import org.asamk.signal.PlainTextWriter;
9 import org.asamk.signal.commands.exceptions.CommandException;
10
11 import java.util.stream.Collectors;
12
13 public class ListAccountsCommand implements JsonRpcMultiLocalCommand {
14
15 @Override
16 public String getName() {
17 return "listAccounts";
18 }
19
20 @Override
21 public void attachToSubparser(final Subparser subparser) {
22 subparser.help("Show a list of registered accounts.");
23 }
24
25 @Override
26 public void handleCommand(
27 final Namespace ns, final SignalCreator c, final OutputWriter outputWriter
28 ) throws CommandException {
29 final var accountNumbers = c.getAccountNumbers();
30 if (outputWriter instanceof JsonWriter jsonWriter) {
31 final var jsonAccounts = accountNumbers.stream().map(JsonAccount::new).collect(Collectors.toList());
32 jsonWriter.write(jsonAccounts);
33 } else if (outputWriter instanceof PlainTextWriter plainTextWriter) {
34 for (final var number : accountNumbers) {
35 plainTextWriter.println("Number: {}", number);
36 }
37 }
38 }
39
40 private record JsonAccount(String number) {}
41 }