From: AsamK Date: Sat, 16 Jan 2021 20:12:01 +0000 (+0100) Subject: Check if output type is supported by command X-Git-Tag: v0.7.3~7 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/a2debdb2347b103c6b49b5b2dacfcfabb27fff71 Check if output type is supported by command --- diff --git a/src/main/java/org/asamk/signal/Cli.java b/src/main/java/org/asamk/signal/Cli.java index fa21bec5..f8e2e9ab 100644 --- a/src/main/java/org/asamk/signal/Cli.java +++ b/src/main/java/org/asamk/signal/Cli.java @@ -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"); diff --git a/src/main/java/org/asamk/signal/commands/Command.java b/src/main/java/org/asamk/signal/commands/Command.java index 1e4abc19..fc55cbe2 100644 --- a/src/main/java/org/asamk/signal/commands/Command.java +++ b/src/main/java/org/asamk/signal/commands/Command.java @@ -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 getSupportedOutputTypes() { + return Set.of(OutputType.PLAIN_TEXT); + } } diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 7de0a71f..19859d45 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -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 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"); diff --git a/src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java b/src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java index 103d1027..4bc209cd 100644 --- a/src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java +++ b/src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java @@ -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 getSupportedOutputTypes() { + return Set.of(OutputType.PLAIN_TEXT, OutputType.JSON); + } + @Override public int handleCommand(final Namespace ns, final Manager m) { // Setup the json object mapper diff --git a/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java b/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java index b178b09c..e0086cae 100644 --- a/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java +++ b/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java @@ -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 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) { diff --git a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java index 445b17c9..5d41dde0 100644 --- a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java +++ b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java @@ -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 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");