X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/00cda598c849ac0dd5301a961ee4113093b533c8..805f976d9e3de22e4842df1622941584c7f7c041:/src/main/java/org/asamk/signal/dbus/DbusRegistrationManagerImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusRegistrationManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusRegistrationManagerImpl.java new file mode 100644 index 00000000..aa27fc27 --- /dev/null +++ b/src/main/java/org/asamk/signal/dbus/DbusRegistrationManagerImpl.java @@ -0,0 +1,53 @@ +package org.asamk.signal.dbus; + +import org.asamk.SignalControl; +import org.asamk.signal.manager.RegistrationManager; +import org.asamk.signal.manager.api.CaptchaRequiredException; +import org.asamk.signal.manager.api.IncorrectPinException; +import org.asamk.signal.manager.api.PinLockedException; +import org.freedesktop.dbus.connections.impl.DBusConnection; + +import java.io.IOException; + +/** + * This class implements the RegistrationManager interface using the DBus Signal interface, where possible. + * It's used for the signal-cli dbus client mode (--dbus, --dbus-system) + */ +public class DbusRegistrationManagerImpl implements RegistrationManager { + + private final String number; + private final SignalControl signalControl; + private final DBusConnection connection; + + public DbusRegistrationManagerImpl(String number, final SignalControl signalControl, DBusConnection connection) { + this.number = number; + this.signalControl = signalControl; + this.connection = connection; + } + + @Override + public void register( + final boolean voiceVerification, final String captcha + ) throws IOException, CaptchaRequiredException { + if (captcha == null) { + signalControl.register(number, voiceVerification); + } else { + signalControl.registerWithCaptcha(number, voiceVerification, captcha); + } + } + + @Override + public void verifyAccount( + final String verificationCode, final String pin + ) throws IOException, PinLockedException, IncorrectPinException { + if (pin == null) { + signalControl.verify(number, verificationCode); + } else { + signalControl.verifyWithPin(number, verificationCode, pin); + } + } + + @Override + public void close() { + } +}