X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/8a216e324571db898a83f7e127018b22a0318ac5..HEAD:/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 4e3514f7..ac1f6d50 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -22,62 +22,87 @@ public interface Signal extends DBusInterface { String getSelfNumber(); + void subscribeReceive(); + + void unsubscribeReceive(); + long sendMessage( - String message, List attachments, String recipient + String message, + List attachments, + String recipient ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; long sendMessage( - String message, List attachments, List recipients + String message, + List attachments, + List recipients ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; - void sendTyping( - String recipient, boolean stop - ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity; + void sendTyping(String recipient, boolean stop) throws Error.Failure, Error.UntrustedIdentity; - void sendReadReceipt( - String recipient, List messageIds - ) throws Error.Failure, Error.UntrustedIdentity; + void sendReadReceipt(String recipient, List messageIds) throws Error.Failure, Error.UntrustedIdentity; - void sendViewedReceipt( - 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; + long sendRemoteDeleteMessage(long targetSentTimestamp, String recipient) throws Error.Failure, Error.InvalidNumber; long sendRemoteDeleteMessage( - long targetSentTimestamp, List recipients + long targetSentTimestamp, + List recipients ) throws Error.Failure, Error.InvalidNumber; - long sendGroupRemoteDeleteMessage( - long targetSentTimestamp, byte[] groupId - ) throws Error.Failure, Error.GroupNotFound, Error.InvalidGroupId; - long sendMessageReaction( - String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, String recipient + String emoji, + boolean remove, + String targetAuthor, + long targetSentTimestamp, + String recipient ) throws Error.InvalidNumber, Error.Failure; long sendMessageReaction( - String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, List recipients + String emoji, + boolean remove, + String targetAuthor, + long targetSentTimestamp, + List recipients ) throws Error.InvalidNumber, Error.Failure; + long sendPaymentNotification(byte[] receipt, String note, String recipient) throws Error.Failure; + void sendContacts() throws Error.Failure; void sendSyncRequest() throws Error.Failure; - long sendNoteToSelfMessage( - String message, List attachments - ) throws Error.AttachmentInvalid, Error.Failure; + long sendNoteToSelfMessage(String message, List attachments) throws Error.AttachmentInvalid, Error.Failure; 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 + String message, + List attachments, + byte[] groupId ) throws Error.GroupNotFound, Error.Failure, Error.AttachmentInvalid, Error.InvalidGroupId; + void sendGroupTyping( + final byte[] groupId, + final boolean stop + ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity; + + long sendGroupRemoteDeleteMessage( + long targetSentTimestamp, + byte[] groupId + ) throws Error.Failure, Error.GroupNotFound, Error.InvalidGroupId; + long sendGroupMessageReaction( - String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, byte[] groupId + String emoji, + boolean remove, + String targetAuthor, + long targetSentTimestamp, + byte[] groupId ) throws Error.GroupNotFound, Error.Failure, Error.InvalidNumber, Error.InvalidGroupId; String getContactName(String number) throws Error.InvalidNumber; @@ -105,14 +130,20 @@ public interface Signal extends DBusInterface { List getGroupMembers(byte[] groupId) throws Error.InvalidGroupId; byte[] createGroup( - String name, List members, String avatar + String name, + List members, + String avatar ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber; @Deprecated byte[] updateGroup( - byte[] groupId, String name, List members, String avatar + byte[] groupId, + String name, + List members, + String avatar ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.GroupNotFound, Error.InvalidGroupId; + @Deprecated boolean isRegistered() throws Error.Failure, Error.InvalidNumber; boolean isRegistered(String number) throws Error.Failure, Error.InvalidNumber; @@ -123,6 +154,10 @@ public interface Signal extends DBusInterface { DBusPath getDevice(long deviceId); + DBusPath getIdentity(String number); + + List listIdentities(); + List listDevices() throws Error.Failure; DBusPath getThisDevice(); @@ -137,7 +172,11 @@ public interface Signal extends DBusInterface { ) throws Error.Failure; void updateProfile( - String name, String about, String aboutEmoji, String avatarPath, boolean removeAvatar + String name, + String about, + String aboutEmoji, + String avatarPath, + boolean removeAvatar ) throws Error.Failure; void removePin(); @@ -167,6 +206,10 @@ public interface Signal extends DBusInterface { 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; @@ -212,6 +255,58 @@ public interface Signal extends DBusInterface { } } + class EditMessageReceived extends DBusSignal { + + private final long timestamp; + private final long targetSentTimestamp; + private final String sender; + private final byte[] groupId; + private final String message; + private final Map> extras; + + public EditMessageReceived( + String objectpath, + long timestamp, + final long targetSentTimestamp, + String sender, + byte[] groupId, + String message, + final Map> extras + ) throws DBusException { + super(objectpath, timestamp, targetSentTimestamp, sender, groupId, message, extras); + this.timestamp = timestamp; + this.targetSentTimestamp = targetSentTimestamp; + this.sender = sender; + this.groupId = groupId; + this.message = message; + this.extras = extras; + } + + public long getTimestamp() { + return timestamp; + } + + public long getTargetSentTimestamp() { + return targetSentTimestamp; + } + + public String getSender() { + return sender; + } + + public byte[] getGroupId() { + return groupId; + } + + public String getMessage() { + return message; + } + + public Map> getExtras() { + return extras; + } + } + class MessageReceived extends DBusSignal { private final long timestamp; @@ -422,13 +517,13 @@ public interface Signal extends DBusInterface { class StructDevice extends Struct { @Position(0) - DBusPath objectPath; + final DBusPath objectPath; @Position(1) - Long id; + final Long id; @Position(2) - String name; + final String name; public StructDevice(final DBusPath objectPath, final Long id, final String name) { this.objectPath = objectPath; @@ -449,7 +544,7 @@ public interface Signal extends DBusInterface { } } - @DBusProperty(name = "Id", type = Long.class, access = DBusProperty.Access.READ) + @DBusProperty(name = "Id", type = Integer.class, access = DBusProperty.Access.READ) @DBusProperty(name = "Name", type = String.class) @DBusProperty(name = "Created", type = String.class, access = DBusProperty.Access.READ) @DBusProperty(name = "LastSeen", type = String.class, access = DBusProperty.Access.READ) @@ -467,13 +562,13 @@ public interface Signal extends DBusInterface { class StructGroup extends Struct { @Position(0) - DBusPath objectPath; + final DBusPath objectPath; @Position(1) - byte[] id; + final byte[] id; @Position(2) - String name; + final String name; public StructGroup(final DBusPath objectPath, final byte[] id, final String name) { this.objectPath = objectPath; @@ -506,6 +601,7 @@ public interface Signal extends DBusInterface { @DBusProperty(name = "PendingMembers", type = String[].class, access = DBusProperty.Access.READ) @DBusProperty(name = "RequestingMembers", type = String[].class, access = DBusProperty.Access.READ) @DBusProperty(name = "Admins", type = String[].class, access = DBusProperty.Access.READ) + @DBusProperty(name = "Banned", type = String[].class, access = DBusProperty.Access.READ) @DBusProperty(name = "PermissionAddMember", type = String.class) @DBusProperty(name = "PermissionEditDetails", type = String.class) @DBusProperty(name = "PermissionSendMessage", type = String.class) @@ -514,6 +610,8 @@ public interface Signal extends DBusInterface { void quitGroup() throws Error.Failure, Error.LastGroupAdmin; + void deleteGroup() throws Error.Failure; + void addMembers(List recipients) throws Error.Failure; void removeMembers(List recipients) throws Error.Failure; @@ -529,6 +627,50 @@ public interface Signal extends DBusInterface { void enableLink(boolean requiresApproval) throws Error.Failure; } + class StructIdentity extends Struct { + + @Position(0) + final DBusPath objectPath; + + @Position(1) + final String uuid; + + @Position(2) + final String number; + + public StructIdentity(final DBusPath objectPath, final String uuid, final String number) { + this.objectPath = objectPath; + this.uuid = uuid; + this.number = number; + } + + public DBusPath getObjectPath() { + return objectPath; + } + + public String getUuid() { + return uuid; + } + + public String getNumber() { + return number; + } + } + + @DBusProperty(name = "Number", type = String.class, access = DBusProperty.Access.READ) + @DBusProperty(name = "Uuid", type = String.class, access = DBusProperty.Access.READ) + @DBusProperty(name = "Fingerprint", type = Byte[].class, access = DBusProperty.Access.READ) + @DBusProperty(name = "SafetyNumber", type = String.class, access = DBusProperty.Access.READ) + @DBusProperty(name = "TrustLevel", type = String.class, access = DBusProperty.Access.READ) + @DBusProperty(name = "AddedDate", type = Long.class, access = DBusProperty.Access.READ) + @DBusProperty(name = "ScannableSafetyNumber", type = Byte[].class, access = DBusProperty.Access.READ) + interface Identity extends DBusInterface, Properties { + + void trust() throws Error.Failure; + + void trustVerified(String safetyNumber) throws Error.Failure; + } + interface Error { class AttachmentInvalid extends DBusExecutionException { @@ -570,6 +712,13 @@ public interface Signal extends DBusInterface { } } + class NotAGroupMember extends DBusExecutionException { + + public NotAGroupMember(final String message) { + super("Not a group member: " + message); + } + } + class InvalidGroupId extends DBusExecutionException { public InvalidGroupId(final String message) { @@ -597,5 +746,12 @@ public interface Signal extends DBusInterface { super("Untrusted identity: " + message); } } + + class UnregisteredRecipient extends DBusExecutionException { + + public UnregisteredRecipient(final String message) { + super("Unregistered recipient: " + message); + } + } } }