]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/dbus/DbusProvisioningManagerImpl.java
Implement dbus support for listIdentities
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusProvisioningManagerImpl.java
1 package org.asamk.signal.dbus;
2
3 import org.asamk.SignalControl;
4 import org.asamk.signal.manager.ProvisioningManager;
5 import org.asamk.signal.manager.api.UserAlreadyExistsException;
6 import org.freedesktop.dbus.connections.impl.DBusConnection;
7
8 import java.io.IOException;
9 import java.net.URI;
10 import java.net.URISyntaxException;
11 import java.util.concurrent.TimeoutException;
12
13 /**
14 * This class implements the ProvisioningManager interface using the DBus Signal interface, where possible.
15 * It's used for the signal-cli dbus client mode (--dbus, --dbus-system)
16 */
17 public class DbusProvisioningManagerImpl implements ProvisioningManager {
18
19 private final SignalControl signalControl;
20 private final DBusConnection connection;
21
22 private URI deviceLinkUri;
23
24 public DbusProvisioningManagerImpl(final SignalControl signalControl, DBusConnection connection) {
25 this.signalControl = signalControl;
26 this.connection = connection;
27 }
28
29 public DbusProvisioningManagerImpl(
30 final SignalControl signalControl, DBusConnection connection, URI deviceLinkUri
31 ) {
32 this.signalControl = signalControl;
33 this.connection = connection;
34 this.deviceLinkUri = deviceLinkUri;
35 }
36
37 @Override
38 public URI getDeviceLinkUri() throws TimeoutException, IOException {
39 try {
40 deviceLinkUri = new URI(signalControl.startLink());
41 return deviceLinkUri;
42 } catch (URISyntaxException e) {
43 throw new IOException(e);
44 }
45 }
46
47 @Override
48 public String finishDeviceLink(final String deviceName) throws IOException, TimeoutException, UserAlreadyExistsException {
49 return signalControl.finishLink(deviceLinkUri.toString(), deviceName);
50 }
51 }