]> nmode's Git Repositories - signal-cli/commitdiff
Check if output type is supported by command
authorAsamK <asamk@gmx.de>
Sat, 16 Jan 2021 20:12:01 +0000 (21:12 +0100)
committerAsamK <asamk@gmx.de>
Sat, 16 Jan 2021 20:12:01 +0000 (21:12 +0100)
src/main/java/org/asamk/signal/Cli.java
src/main/java/org/asamk/signal/commands/Command.java
src/main/java/org/asamk/signal/commands/DaemonCommand.java
src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java
src/main/java/org/asamk/signal/commands/ListGroupsCommand.java
src/main/java/org/asamk/signal/commands/ReceiveCommand.java

index fa21bec57bbc9c12c99b82558f3a34632e0aa225..f8e2e9ab63eafd95a2148f53da3822d137565d21 100644 (file)
@@ -91,6 +91,12 @@ public class Cli {
             return 1;
         }
 
+        OutputType outputType = ns.get("output");
+        if (!command.getSupportedOutputTypes().contains(outputType)) {
+            logger.error("Command doesn't support output type {}", outputType.toString());
+            return 1;
+        }
+
         String username = ns.getString("username");
 
         final boolean useDbus = ns.getBoolean("dbus");
index 1e4abc19df1ed24b4ce96d69fd5758471d4ad032..fc55cbe242963bdfdf3271a22cf4f8b13af2d8ff 100644 (file)
@@ -2,7 +2,15 @@ package org.asamk.signal.commands;
 
 import net.sourceforge.argparse4j.inf.Subparser;
 
+import org.asamk.signal.OutputType;
+
+import java.util.Set;
+
 public interface Command {
 
     void attachToSubparser(Subparser subparser);
+
+    default Set<OutputType> getSupportedOutputTypes() {
+        return Set.of(OutputType.PLAIN_TEXT);
+    }
 }
index 7de0a71f0b46c34d5c8bf46eaf0c1004a4bd832d..19859d4585b3a238ce4d2dba3988a11495fdb44e 100644 (file)
@@ -18,6 +18,7 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 public class DaemonCommand implements MultiLocalCommand {
@@ -37,6 +38,11 @@ public class DaemonCommand implements MultiLocalCommand {
                 .action(Arguments.storeTrue());
     }
 
+    @Override
+    public Set<OutputType> getSupportedOutputTypes() {
+        return Set.of(OutputType.PLAIN_TEXT, OutputType.JSON);
+    }
+
     @Override
     public int handleCommand(final Namespace ns, final Manager m) {
         boolean inJson = ns.get("output") == OutputType.JSON || ns.getBoolean("json");
index 103d10275d2c6025b5234421e32c9a900b572f90..4bc209cd798c74a7e12a9f921c38611154e89759 100644 (file)
@@ -14,6 +14,7 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 public class GetUserStatusCommand implements LocalCommand {
@@ -29,6 +30,11 @@ public class GetUserStatusCommand implements LocalCommand {
                 .action(Arguments.storeTrue());
     }
 
+    @Override
+    public Set<OutputType> getSupportedOutputTypes() {
+        return Set.of(OutputType.PLAIN_TEXT, OutputType.JSON);
+    }
+
     @Override
     public int handleCommand(final Namespace ns, final Manager m) {
         // Setup the json object mapper
index b178b09c2a8b5de84b898b7b3344d7f08788e161..e0086cae6a7b4bd99b8bb569618144573482fd18 100644 (file)
@@ -62,6 +62,11 @@ public class ListGroupsCommand implements LocalCommand {
         subparser.help("List group information including names, ids, active status, blocked status and members");
     }
 
+    @Override
+    public Set<OutputType> getSupportedOutputTypes() {
+        return Set.of(OutputType.PLAIN_TEXT, OutputType.JSON);
+    }
+
     @Override
     public int handleCommand(final Namespace ns, final Manager m) {
         if (ns.get("output") == OutputType.JSON) {
index 445b17c92388a4e472b3e914b2e43f31106b604c..5d41dde0a5d4f269ebc01911d0aafef4f2fcede3 100644 (file)
@@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.Base64;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import static org.asamk.signal.util.ErrorUtils.handleAssertionError;
@@ -41,6 +42,11 @@ public class ReceiveCommand implements ExtendedDbusCommand, LocalCommand {
                 .action(Arguments.storeTrue());
     }
 
+    @Override
+    public Set<OutputType> getSupportedOutputTypes() {
+        return Set.of(OutputType.PLAIN_TEXT, OutputType.JSON);
+    }
+
     public int handleCommand(final Namespace ns, final Signal signal, DBusConnection dbusconnection) {
         boolean inJson = ns.get("output") == OutputType.JSON || ns.getBoolean("json");