X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/997b4f0c3fe371efe08e92ed4678835bc62538bf..861f47d734a2c416ca3231ad72f9f129da5a706f:/src/main/java/org/asamk/Signal.java diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index 349671b3..421e5de5 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -1,6 +1,5 @@ package org.asamk; -import org.asamk.signal.commands.exceptions.IOErrorException; import org.freedesktop.dbus.DBusPath; import org.freedesktop.dbus.Struct; import org.freedesktop.dbus.annotations.DBusProperty; @@ -10,8 +9,10 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException; import org.freedesktop.dbus.interfaces.DBusInterface; import org.freedesktop.dbus.interfaces.Properties; import org.freedesktop.dbus.messages.DBusSignal; +import org.freedesktop.dbus.types.Variant; import java.util.List; +import java.util.Map; /** * DBus interface for the org.asamk.Signal service. @@ -21,6 +22,10 @@ public interface Signal extends DBusInterface { String getSelfNumber(); + void subscribeReceive(); + + void unsubscribeReceive(); + long sendMessage( String message, List attachments, String recipient ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; @@ -37,6 +42,10 @@ public interface Signal extends DBusInterface { String recipient, List messageIds ) throws Error.Failure, Error.UntrustedIdentity; + void sendViewedReceipt( + String recipient, List messageIds + ) throws Error.Failure, Error.UntrustedIdentity; + long sendRemoteDeleteMessage( long targetSentTimestamp, String recipient ) throws Error.Failure, Error.InvalidNumber; @@ -67,6 +76,10 @@ public interface Signal extends DBusInterface { void sendEndSessionMessage(List recipients) throws Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; + void deleteRecipient(final String recipient) throws Error.Failure; + + void deleteContact(final String recipient) throws Error.Failure; + long sendGroupMessage( String message, List attachments, byte[] groupId ) throws Error.GroupNotFound, Error.Failure, Error.AttachmentInvalid, Error.InvalidGroupId; @@ -160,7 +173,56 @@ public interface Signal extends DBusInterface { String uploadStickerPack(String stickerPackPath) throws Error.Failure; - void submitRateLimitChallenge(String challenge, String captchaString) throws IOErrorException; + void submitRateLimitChallenge(String challenge, String captchaString) throws Error.Failure; + + void unregister() throws Error.Failure; + + void deleteAccount() throws Error.Failure; + + class MessageReceivedV2 extends DBusSignal { + + private final long timestamp; + private final String sender; + private final byte[] groupId; + private final String message; + private final Map> extras; + + public MessageReceivedV2( + String objectpath, + long timestamp, + String sender, + byte[] groupId, + String message, + final Map> extras + ) throws DBusException { + super(objectpath, timestamp, sender, groupId, message, extras); + this.timestamp = timestamp; + this.sender = sender; + this.groupId = groupId; + this.message = message; + this.extras = extras; + } + + public long getTimestamp() { + return timestamp; + } + + public String getSender() { + return sender; + } + + public byte[] getGroupId() { + return groupId; + } + + public String getMessage() { + return message; + } + + public Map> getExtras() { + return extras; + } + } class MessageReceived extends DBusSignal { @@ -227,6 +289,44 @@ public interface Signal extends DBusInterface { } } + class ReceiptReceivedV2 extends DBusSignal { + + private final long timestamp; + private final String sender; + private final String type; + private final Map> extras; + + public ReceiptReceivedV2( + String objectpath, + long timestamp, + String sender, + final String type, + final Map> extras + ) throws DBusException { + super(objectpath, timestamp, sender, type, extras); + this.timestamp = timestamp; + this.sender = sender; + this.type = type; + this.extras = extras; + } + + public long getTimestamp() { + return timestamp; + } + + public String getSender() { + return sender; + } + + public String getReceiptType() { + return type; + } + + public Map> getExtras() { + return extras; + } + } + class SyncMessageReceived extends DBusSignal { private final long timestamp; @@ -279,6 +379,58 @@ public interface Signal extends DBusInterface { } } + class SyncMessageReceivedV2 extends DBusSignal { + + private final long timestamp; + private final String source; + private final String destination; + private final byte[] groupId; + private final String message; + private final Map> extras; + + public SyncMessageReceivedV2( + String objectpath, + long timestamp, + String source, + String destination, + byte[] groupId, + String message, + final Map> extras + ) throws DBusException { + super(objectpath, timestamp, source, destination, groupId, message, extras); + this.timestamp = timestamp; + this.source = source; + this.destination = destination; + this.groupId = groupId; + this.message = message; + this.extras = extras; + } + + public long getTimestamp() { + return timestamp; + } + + public String getSource() { + return source; + } + + public String getDestination() { + return destination; + } + + public byte[] getGroupId() { + return groupId; + } + + public String getMessage() { + return message; + } + + public Map> getExtras() { + return extras; + } + } + class StructDevice extends Struct { @Position(0) @@ -318,6 +470,12 @@ public interface Signal extends DBusInterface { void removeDevice() throws Error.Failure; } + @DBusProperty(name = "ReadReceipts", type = Boolean.class) + @DBusProperty(name = "UnidentifiedDeliveryIndicators", type = Boolean.class) + @DBusProperty(name = "TypingIndicators", type = Boolean.class) + @DBusProperty(name = "LinkPreviews", type = Boolean.class) + interface Configuration extends DBusInterface, Properties {} + class StructGroup extends Struct { @Position(0) @@ -388,63 +546,67 @@ public interface Signal extends DBusInterface { class AttachmentInvalid extends DBusExecutionException { public AttachmentInvalid(final String message) { - super(message); + super("Invalid attachment: " + message); } } class InvalidUri extends DBusExecutionException { public InvalidUri(final String message) { - super(message); + super("Invalid uri: " + message); } } class Failure extends DBusExecutionException { + public Failure(final Exception e) { + super("Failure: " + e.getMessage() + " (" + e.getClass().getSimpleName() + ")"); + } + public Failure(final String message) { - super(message); + super("Failure: " + message); } } class DeviceNotFound extends DBusExecutionException { public DeviceNotFound(final String message) { - super(message); + super("Device not found: " + message); } } class GroupNotFound extends DBusExecutionException { public GroupNotFound(final String message) { - super(message); + super("Group not found: " + message); } } class InvalidGroupId extends DBusExecutionException { public InvalidGroupId(final String message) { - super(message); + super("Invalid group id: " + message); } } class LastGroupAdmin extends DBusExecutionException { public LastGroupAdmin(final String message) { - super(message); + super("Last group admin: " + message); } } class InvalidNumber extends DBusExecutionException { public InvalidNumber(final String message) { - super(message); + super("Invalid number: " + message); } } class UntrustedIdentity extends DBusExecutionException { public UntrustedIdentity(final String message) { - super(message); + super("Untrusted identity: " + message); } } }