import org.asamk.signal.PlainTextWriter;
import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.commands.exceptions.CommandException;
+import org.asamk.signal.commands.exceptions.UserErrorException;
import org.asamk.signal.manager.Manager;
import org.asamk.signal.manager.storage.protocol.IdentityInfo;
import org.asamk.signal.util.Hex;
import org.slf4j.LoggerFactory;
import org.whispersystems.signalservice.api.util.InvalidNumberException;
-import java.io.IOException;
+import java.util.List;
public class ListIdentitiesCommand implements LocalCommand {
private static void printIdentityFingerprint(PlainTextWriter writer, Manager m, IdentityInfo theirId) {
var digits = Util.formatSafetyNumber(m.computeSafetyNumber(theirId.getAddress(), theirId.getIdentityKey()));
- try {
- writer.println("{}: {} Added: {} Fingerprint: {} Safety Number: {}",
- theirId.getAddress().getNumber().orNull(),
- theirId.getTrustLevel(),
- theirId.getDateAdded(),
- Hex.toString(theirId.getFingerprint()),
- digits);
- } catch (IOException e) {
- e.printStackTrace();
- }
+ writer.println("{}: {} Added: {} Fingerprint: {} Safety Number: {}",
+ theirId.getAddress().getNumber().orNull(),
+ theirId.getTrustLevel(),
+ theirId.getDateAdded(),
+ Hex.toString(theirId.getFingerprint()),
+ digits);
}
@Override
}
@Override
- public int handleCommand(final Namespace ns, final Manager m) {
+ public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
final var writer = new PlainTextWriterImpl(System.out);
- if (ns.get("number") == null) {
+ var number = ns.getString("number");
+
+ if (number == null) {
for (var identity : m.getIdentities()) {
printIdentityFingerprint(writer, m, identity);
}
- } else {
- var number = ns.getString("number");
- try {
- var identities = m.getIdentities(number);
- for (var id : identities) {
- printIdentityFingerprint(writer, m, id);
- }
- } catch (InvalidNumberException e) {
- System.err.println("Invalid number: " + e.getMessage());
- }
+ return;
+ }
+
+ List<IdentityInfo> identities;
+ try {
+ identities = m.getIdentities(number);
+ } catch (InvalidNumberException e) {
+ throw new UserErrorException("Invalid number: " + e.getMessage());
+ }
+
+ for (var id : identities) {
+ printIdentityFingerprint(writer, m, id);
}
- return 0;
}
}