]> nmode's Git Repositories - signal-cli/commitdiff
Move all dbus interaction to dbus package
authorAsamK <asamk@gmx.de>
Fri, 10 Nov 2023 14:44:42 +0000 (15:44 +0100)
committerAsamK <asamk@gmx.de>
Fri, 10 Nov 2023 14:44:42 +0000 (15:44 +0100)
src/main/java/org/asamk/signal/App.java
src/main/java/org/asamk/signal/commands/JoinGroupCommand.java
src/main/java/org/asamk/signal/dbus/DbusCommandHandler.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java

index 83c0ef56061d2418391d58151270f48159b64daf..d9ffa6222bf8f3cdcce98871643d9d5fd3d38049 100644 (file)
@@ -16,7 +16,6 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
-import org.asamk.signal.dbus.DbusCommandHandler;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.RegistrationManager;
 import org.asamk.signal.manager.Settings;
@@ -29,11 +28,6 @@ import org.asamk.signal.output.JsonWriterImpl;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriterImpl;
 import org.asamk.signal.util.IOUtils;
-import org.freedesktop.dbus.connections.impl.DBusConnection;
-import org.freedesktop.dbus.connections.impl.DBusConnectionBuilder;
-import org.freedesktop.dbus.errors.ServiceUnknown;
-import org.freedesktop.dbus.exceptions.DBusException;
-import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,6 +38,7 @@ import java.io.OutputStreamWriter;
 import java.util.Set;
 
 import static net.sourceforge.argparse4j.DefaultSettings.VERSION_0_9_0_DEFAULT_SETTINGS;
+import static org.asamk.signal.dbus.DbusCommandHandler.initDbusClient;
 
 public class App {
 
@@ -331,24 +326,6 @@ public class App {
         }
     }
 
-    private void initDbusClient(
-            final Command command, final String account, final boolean systemBus, final CommandHandler commandHandler
-    ) throws CommandException {
-        try {
-            final var busType = systemBus ? DBusConnection.DBusBusType.SYSTEM : DBusConnection.DBusBusType.SESSION;
-            try (var dBusConn = DBusConnectionBuilder.forType(busType).build()) {
-                DbusCommandHandler.handleCommand(command, account, dBusConn, commandHandler);
-            }
-        } catch (ServiceUnknown e) {
-            throw new UserErrorException("signal-cli DBus daemon not running on "
-                    + (systemBus ? "system" : "session")
-                    + " bus: "
-                    + e.getMessage(), e);
-        } catch (DBusExecutionException | DBusException | IOException e) {
-            throw new UnexpectedErrorException("Dbus client failed: " + e.getMessage(), e);
-        }
-    }
-
     /**
      * @return the default data directory to be used by signal-cli.
      */
index 7a5b2601f3057fb1884a3e4eee33ff9de7e5224d..f9e9f513bda3f2d10ac82e9627d2833b89e93b2e 100644 (file)
@@ -5,7 +5,6 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
-import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.GroupInviteLinkUrl;
@@ -15,7 +14,6 @@ import org.asamk.signal.output.JsonWriter;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriter;
 import org.asamk.signal.util.SendMessageResultUtils;
-import org.freedesktop.dbus.exceptions.DBusExecutionException;
 
 import java.io.IOException;
 import java.util.Map;
@@ -93,9 +91,6 @@ public class JoinGroupCommand implements JsonRpcLocalCommand {
                     + " ("
                     + e.getClass().getSimpleName()
                     + ")", e);
-        } catch (DBusExecutionException e) {
-            throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass()
-                    .getSimpleName() + ")", e);
         } catch (InactiveGroupLinkException e) {
             throw new UserErrorException("Group link is not valid: " + e.getMessage());
         } catch (PendingAdminApprovalException e) {
index 6e7a6ee1be8d848e69b0a7dbd119e8da20c34987..f8a65e7eef0d0c6d5169b3a296bc57bdcad62b9f 100644 (file)
@@ -13,12 +13,34 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
+import org.freedesktop.dbus.connections.impl.DBusConnectionBuilder;
+import org.freedesktop.dbus.errors.ServiceUnknown;
 import org.freedesktop.dbus.errors.UnknownMethod;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.freedesktop.dbus.exceptions.DBusExecutionException;
 
+import java.io.IOException;
+
 public class DbusCommandHandler {
 
+    public static void initDbusClient(
+            final Command command, final String account, final boolean systemBus, final CommandHandler commandHandler
+    ) throws CommandException {
+        try {
+            final var busType = systemBus ? DBusConnection.DBusBusType.SYSTEM : DBusConnection.DBusBusType.SESSION;
+            try (var dBusConn = DBusConnectionBuilder.forType(busType).build()) {
+                handleCommand(command, account, dBusConn, commandHandler);
+            }
+        } catch (ServiceUnknown e) {
+            throw new UserErrorException("signal-cli DBus daemon not running on "
+                    + (systemBus ? "system" : "session")
+                    + " bus: "
+                    + e.getMessage(), e);
+        } catch (DBusExecutionException | DBusException | IOException e) {
+            throw new UnexpectedErrorException("Dbus client failed: " + e.getMessage(), e);
+        }
+    }
+
     public static void handleCommand(
             final Command command,
             final String account,
index cd6c67150bd260a2377273cd483ac10b066b9058..ea09dba4a9b40e9366829fa45a5438d76650794e 100644 (file)
@@ -50,6 +50,7 @@ import org.freedesktop.dbus.DBusMap;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
 import org.freedesktop.dbus.exceptions.DBusException;
+import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.freedesktop.dbus.interfaces.DBusInterface;
 import org.freedesktop.dbus.interfaces.DBusSigHandler;
 import org.freedesktop.dbus.types.Variant;
@@ -342,8 +343,13 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public Pair<GroupId, SendGroupMessageResults> joinGroup(final GroupInviteLinkUrl inviteLinkUrl) throws IOException, InactiveGroupLinkException {
-        final var newGroupId = signal.joinGroup(inviteLinkUrl.getUrl());
-        return new Pair<>(GroupId.unknownVersion(newGroupId), new SendGroupMessageResults(0, List.of()));
+        try {
+            final var newGroupId = signal.joinGroup(inviteLinkUrl.getUrl());
+            return new Pair<>(GroupId.unknownVersion(newGroupId), new SendGroupMessageResults(0, List.of()));
+        } catch (DBusExecutionException e) {
+            throw new IOException("Failed to join group: " + e.getMessage() + " (" + e.getClass().getSimpleName() + ")",
+                    e);
+        }
     }
 
     @Override