]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java
Remove deprecated --json parameter
[signal-cli] / src / main / java / org / asamk / signal / commands / GetUserStatusCommand.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.OutputType;
8 import org.asamk.signal.PlainTextWriterImpl;
9 import org.asamk.signal.commands.exceptions.CommandException;
10 import org.asamk.signal.commands.exceptions.IOErrorException;
11 import org.asamk.signal.manager.Manager;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
14
15 import java.io.IOException;
16 import java.util.HashSet;
17 import java.util.Map;
18 import java.util.Set;
19 import java.util.stream.Collectors;
20
21 public class GetUserStatusCommand implements LocalCommand {
22
23 private final static Logger logger = LoggerFactory.getLogger(GetUserStatusCommand.class);
24
25 @Override
26 public void attachToSubparser(final Subparser subparser) {
27 subparser.help("Check if the specified phone number/s have been registered");
28 subparser.addArgument("number").help("Phone number").nargs("+");
29 }
30
31 @Override
32 public Set<OutputType> getSupportedOutputTypes() {
33 return Set.of(OutputType.PLAIN_TEXT, OutputType.JSON);
34 }
35
36 @Override
37 public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
38 // Setup the json object mapper
39 var inJson = ns.get("output") == OutputType.JSON;
40
41 // Get a map of registration statuses
42 Map<String, Boolean> registered;
43 try {
44 registered = m.areUsersRegistered(new HashSet<>(ns.getList("number")));
45 } catch (IOException e) {
46 logger.debug("Failed to check registered users", e);
47 throw new IOErrorException("Unable to check if users are registered");
48 }
49
50 // Output
51 if (inJson) {
52 final var jsonWriter = new JsonWriter(System.out);
53
54 var jsonUserStatuses = registered.entrySet()
55 .stream()
56 .map(entry -> new JsonUserStatus(entry.getKey(), entry.getValue()))
57 .collect(Collectors.toList());
58
59 jsonWriter.write(jsonUserStatuses);
60 } else {
61 final var writer = new PlainTextWriterImpl(System.out);
62
63 for (var entry : registered.entrySet()) {
64 writer.println("{}: {}", entry.getKey(), entry.getValue());
65 }
66 }
67 }
68
69 private static final class JsonUserStatus {
70
71 public String name;
72
73 public boolean isRegistered;
74
75 public JsonUserStatus(String name, boolean isRegistered) {
76 this.name = name;
77 this.isRegistered = isRegistered;
78 }
79 }
80 }