]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/dbus/DbusProvisioningManagerImpl.java
Show better error message when sending fails due to missing pre keys
[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,
31 DBusConnection connection,
32 URI deviceLinkUri
33 ) {
34 this.signalControl = signalControl;
35 this.connection = connection;
36 this.deviceLinkUri = deviceLinkUri;
37 }
38
39 @Override
40 public URI getDeviceLinkUri() throws TimeoutException, IOException {
41 try {
42 deviceLinkUri = new URI(signalControl.startLink());
43 return deviceLinkUri;
44 } catch (URISyntaxException e) {
45 throw new IOException(e);
46 }
47 }
48
49 @Override
50 public String finishDeviceLink(final String deviceName) throws IOException, TimeoutException, UserAlreadyExistsException {
51 return signalControl.finishLink(deviceLinkUri.toString(), deviceName);
52 }
53 }