]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/ListIdentitiesCommand.java
Add CommandException to abstract cli return codes for errors
[signal-cli] / src / main / java / org / asamk / signal / commands / ListIdentitiesCommand.java
index 1f1b6258413401ececc34b28371df5d70019b9ac..dc2d92fb58db3ffa4ef34b5dda595b45f2f99d39 100644 (file)
@@ -5,6 +5,8 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 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;
@@ -13,7 +15,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
-import java.io.IOException;
+import java.util.List;
 
 public class ListIdentitiesCommand implements LocalCommand {
 
@@ -21,16 +23,12 @@ 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
@@ -39,24 +37,27 @@ public class ListIdentitiesCommand implements LocalCommand {
     }
 
     @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;
     }
 }