mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Merge branch '2168-mailbox-pairing-backend' into 'master'
Implement backend for pairing mailbox Closes #2168 See merge request briar/briar!1587
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package org.briarproject.bramble.api.mailbox;
|
||||
|
||||
import org.briarproject.bramble.api.db.DbException;
|
||||
import org.briarproject.bramble.api.db.Transaction;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface MailboxManager {
|
||||
|
||||
/**
|
||||
* @return true if a mailbox is already paired.
|
||||
*/
|
||||
boolean isPaired(Transaction txn) throws DbException;
|
||||
|
||||
/**
|
||||
* @return the current status of the mailbox.
|
||||
*/
|
||||
MailboxStatus getMailboxStatus(Transaction txn) throws DbException;
|
||||
|
||||
/**
|
||||
* Returns the currently running pairing task,
|
||||
* or null if no pairing task is running.
|
||||
*/
|
||||
@Nullable
|
||||
MailboxPairingTask getCurrentPairingTask();
|
||||
|
||||
/**
|
||||
* Starts and returns a pairing task. If a pairing task is already running,
|
||||
* it will be returned and the argument will be ignored.
|
||||
*
|
||||
* @param qrCodePayload The ISO-8859-1 encoded bytes of the mailbox QR code.
|
||||
*/
|
||||
MailboxPairingTask startPairingTask(String qrCodePayload);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.briarproject.bramble.api.mailbox;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public abstract class MailboxPairingState {
|
||||
|
||||
/**
|
||||
* The QR code payload that was scanned by the user.
|
||||
* This is null if the code should not be re-used anymore in this state.
|
||||
*/
|
||||
@Nullable
|
||||
public final String qrCodePayload;
|
||||
|
||||
MailboxPairingState(@Nullable String qrCodePayload) {
|
||||
this.qrCodePayload = qrCodePayload;
|
||||
}
|
||||
|
||||
public static class QrCodeReceived extends MailboxPairingState {
|
||||
public QrCodeReceived(String qrCodePayload) {
|
||||
super(qrCodePayload);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Pairing extends MailboxPairingState {
|
||||
public Pairing(String qrCodePayload) {
|
||||
super(qrCodePayload);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Paired extends MailboxPairingState {
|
||||
public Paired() {
|
||||
super(null);
|
||||
}
|
||||
}
|
||||
|
||||
public static class InvalidQrCode extends MailboxPairingState {
|
||||
public InvalidQrCode() {
|
||||
super(null);
|
||||
}
|
||||
}
|
||||
|
||||
public static class MailboxAlreadyPaired extends MailboxPairingState {
|
||||
public MailboxAlreadyPaired() {
|
||||
super(null);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ConnectionError extends MailboxPairingState {
|
||||
public ConnectionError(String qrCodePayload) {
|
||||
super(qrCodePayload);
|
||||
}
|
||||
}
|
||||
|
||||
public static class UnexpectedError extends MailboxPairingState {
|
||||
public UnexpectedError(String qrCodePayload) {
|
||||
super(qrCodePayload);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package org.briarproject.bramble.api.mailbox;
|
||||
|
||||
import org.briarproject.bramble.api.Consumer;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
|
||||
@NotNullByDefault
|
||||
public interface MailboxPairingTask extends Runnable {
|
||||
|
||||
/**
|
||||
* Adds an observer to the task. The observer will be notified on the
|
||||
* event thread of the current state of the task and any subsequent state
|
||||
* changes.
|
||||
*/
|
||||
void addObserver(Consumer<MailboxPairingState> observer);
|
||||
|
||||
/**
|
||||
* Removes an observer from the task.
|
||||
*/
|
||||
void removeObserver(Consumer<MailboxPairingState> observer);
|
||||
|
||||
}
|
||||
@@ -8,19 +8,19 @@ import javax.annotation.concurrent.Immutable;
|
||||
@NotNullByDefault
|
||||
public class MailboxProperties {
|
||||
|
||||
private final String onionAddress;
|
||||
private final String baseUrl;
|
||||
private final MailboxAuthToken authToken;
|
||||
private final boolean owner;
|
||||
|
||||
public MailboxProperties(String onionAddress, MailboxAuthToken authToken,
|
||||
public MailboxProperties(String baseUrl, MailboxAuthToken authToken,
|
||||
boolean owner) {
|
||||
this.onionAddress = onionAddress;
|
||||
this.baseUrl = baseUrl;
|
||||
this.authToken = authToken;
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
public String getOnionAddress() {
|
||||
return onionAddress;
|
||||
public String getBaseUrl() {
|
||||
return baseUrl;
|
||||
}
|
||||
|
||||
public MailboxAuthToken getAuthToken() {
|
||||
|
||||
Reference in New Issue
Block a user