]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/Commands.java
Add submitRateLimitChallenge command
[signal-cli] / src / main / java / org / asamk / signal / commands / Commands.java
index 2e1d682181a3ae2c285791281cf23fa56153ed9e..5d637eee0c9833f18ea133bae4c38cb003c42e29 100644 (file)
@@ -1,70 +1,67 @@
 package org.asamk.signal.commands;
 
-import org.asamk.signal.OutputWriter;
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
 
 public class Commands {
 
-    private static final Map<String, CommandConstructor> commands = new HashMap<>();
+    private static final Map<String, Command> commands = new HashMap<>();
     private static final Map<String, SubparserAttacher> commandSubparserAttacher = new TreeMap<>();
 
     static {
-        addCommand("addDevice", AddDeviceCommand::new, AddDeviceCommand::attachToSubparser);
-        addCommand("block", BlockCommand::new, BlockCommand::attachToSubparser);
-        addCommand("daemon", DaemonCommand::new, DaemonCommand::attachToSubparser);
-        addCommand("getUserStatus", GetUserStatusCommand::new, GetUserStatusCommand::attachToSubparser);
-        addCommand("link", LinkCommand::new, LinkCommand::attachToSubparser);
-        addCommand("listContacts", ListContactsCommand::new, ListContactsCommand::attachToSubparser);
-        addCommand("listDevices", ListDevicesCommand::new, ListDevicesCommand::attachToSubparser);
-        addCommand("listGroups", ListGroupsCommand::new, ListGroupsCommand::attachToSubparser);
-        addCommand("listIdentities", ListIdentitiesCommand::new, ListIdentitiesCommand::attachToSubparser);
-        addCommand("joinGroup", JoinGroupCommand::new, JoinGroupCommand::attachToSubparser);
-        addCommand("quitGroup", QuitGroupCommand::new, QuitGroupCommand::attachToSubparser);
-        addCommand("receive", ReceiveCommand::new, ReceiveCommand::attachToSubparser);
-        addCommand("register", RegisterCommand::new, RegisterCommand::attachToSubparser);
-        addCommand("removeDevice", RemoveDeviceCommand::new, RemoveDeviceCommand::attachToSubparser);
-        addCommand("remoteDelete", RemoteDeleteCommand::new, RemoteDeleteCommand::attachToSubparser);
-        addCommand("removePin", RemovePinCommand::new, RemovePinCommand::attachToSubparser);
-        addCommand("send", SendCommand::new, SendCommand::attachToSubparser);
-        addCommand("sendContacts", SendContactsCommand::new, SendContactsCommand::attachToSubparser);
-        addCommand("sendReaction", SendReactionCommand::new, SendReactionCommand::attachToSubparser);
-        addCommand("sendSyncRequest", SendSyncRequestCommand::new, SendSyncRequestCommand::attachToSubparser);
-        addCommand("sendTyping", SendTypingCommand::new, SendTypingCommand::attachToSubparser);
-        addCommand("setPin", SetPinCommand::new, SetPinCommand::attachToSubparser);
-        addCommand("trust", TrustCommand::new, TrustCommand::attachToSubparser);
-        addCommand("unblock", UnblockCommand::new, UnblockCommand::attachToSubparser);
-        addCommand("unregister", UnregisterCommand::new, UnregisterCommand::attachToSubparser);
-        addCommand("updateAccount", UpdateAccountCommand::new, UpdateAccountCommand::attachToSubparser);
-        addCommand("updateContact", UpdateContactCommand::new, UpdateContactCommand::attachToSubparser);
-        addCommand("updateGroup", UpdateGroupCommand::new, UpdateGroupCommand::attachToSubparser);
-        addCommand("updateProfile", UpdateProfileCommand::new, UpdateProfileCommand::attachToSubparser);
-        addCommand("uploadStickerPack", UploadStickerPackCommand::new, UploadStickerPackCommand::attachToSubparser);
-        addCommand("verify", VerifyCommand::new, VerifyCommand::attachToSubparser);
+        addCommand(new AddDeviceCommand());
+        addCommand(new BlockCommand());
+        addCommand(new DaemonCommand());
+        addCommand(new GetUserStatusCommand());
+        addCommand(new JoinGroupCommand());
+        addCommand(new JsonRpcDispatcherCommand());
+        addCommand(new LinkCommand());
+        addCommand(new ListContactsCommand());
+        addCommand(new ListDevicesCommand());
+        addCommand(new ListGroupsCommand());
+        addCommand(new ListIdentitiesCommand());
+        addCommand(new QuitGroupCommand());
+        addCommand(new ReceiveCommand());
+        addCommand(new RegisterCommand());
+        addCommand(new RemoveDeviceCommand());
+        addCommand(new RemoteDeleteCommand());
+        addCommand(new RemovePinCommand());
+        addCommand(new SendCommand());
+        addCommand(new SendContactsCommand());
+        addCommand(new SendReactionCommand());
+        addCommand(new SendReceiptCommand());
+        addCommand(new SendSyncRequestCommand());
+        addCommand(new SendTypingCommand());
+        addCommand(new SetPinCommand());
+        addCommand(new SubmitRateLimitChallengeCommand());
+        addCommand(new TrustCommand());
+        addCommand(new UnblockCommand());
+        addCommand(new UnregisterCommand());
+        addCommand(new UpdateAccountCommand());
+        addCommand(new UpdateContactCommand());
+        addCommand(new UpdateGroupCommand());
+        addCommand(new UpdateProfileCommand());
+        addCommand(new UploadStickerPackCommand());
+        addCommand(new VerifyCommand());
+        addCommand(new VersionCommand());
     }
 
     public static Map<String, SubparserAttacher> getCommandSubparserAttachers() {
         return commandSubparserAttacher;
     }
 
-    public static Command getCommand(String commandKey, OutputWriter outputWriter) {
+    public static Command getCommand(String commandKey) {
         if (!commands.containsKey(commandKey)) {
             return null;
         }
-        return commands.get(commandKey).constructCommand(outputWriter);
-    }
-
-    private static void addCommand(
-            String name, CommandConstructor commandConstructor, SubparserAttacher subparserAttacher
-    ) {
-        commands.put(name, commandConstructor);
-        commandSubparserAttacher.put(name, subparserAttacher);
+        return commands.get(commandKey);
     }
 
-    private interface CommandConstructor {
-
-        Command constructCommand(OutputWriter outputWriter);
+    private static void addCommand(Command command) {
+        commands.put(command.getName(), command);
+        if (command instanceof CliCommand) {
+            commandSubparserAttacher.put(command.getName(), ((CliCommand) command)::attachToSubparser);
+        }
     }
 }