X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/1efdf04394d8f5daf919e3ba739d5b32186093ce..4acab9043c1f479adf735e193f9404a014b52ed7:/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 02fc22dd..b19fba8d 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -1,32 +1,157 @@ package org.asamk; -import org.asamk.signal.AttachmentInvalidException; -import org.asamk.signal.GroupNotFoundException; -import org.freedesktop.dbus.DBusInterface; -import org.freedesktop.dbus.DBusSignal; import org.freedesktop.dbus.exceptions.DBusException; -import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions; +import org.freedesktop.dbus.exceptions.DBusExecutionException; +import org.freedesktop.dbus.interfaces.DBusInterface; +import org.freedesktop.dbus.messages.DBusSignal; -import java.io.IOException; import java.util.List; +/** + * DBus interface for the org.asamk.Signal service. + * Including emitted Signals and returned Errors. + */ public interface Signal extends DBusInterface { - void sendMessage(String message, List attachments, String recipient) throws EncapsulatedExceptions, AttachmentInvalidException, IOException; - void sendMessage(String message, List attachments, List recipients) throws EncapsulatedExceptions, AttachmentInvalidException, IOException; + long sendMessage( + String message, List attachments, String recipient + ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; - void sendEndSessionMessage(List recipients) throws IOException, EncapsulatedExceptions; + long sendMessage( + String message, List attachments, List recipients + ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; - void sendGroupMessage(String message, List attachments, byte[] groupId) throws EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException, IOException; + void sendTyping( + String recipient, boolean stop + ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity; + + void sendReadReceipt( + String recipient, List targetSentTimestamp + ) throws Error.Failure, Error.UntrustedIdentity; + + long sendRemoteDeleteMessage( + long targetSentTimestamp, String recipient + ) throws Error.Failure, Error.InvalidNumber; + + long sendRemoteDeleteMessage( + 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 + ) throws Error.InvalidNumber, Error.Failure; + + long sendMessageReaction( + String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, List recipients + ) throws Error.InvalidNumber, Error.Failure; + + void sendContacts() throws Error.Failure; + + void sendSyncRequest() throws Error.Failure; + + long sendNoteToSelfMessage( + String message, List attachments + ) throws Error.AttachmentInvalid, Error.Failure; + + void sendEndSessionMessage(List recipients) throws Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity; + + long sendGroupMessage( + String message, List attachments, byte[] groupId + ) throws Error.GroupNotFound, Error.Failure, Error.AttachmentInvalid, Error.InvalidGroupId; + + long sendGroupMessageReaction( + 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; + + void setContactName(String number, String name) throws Error.InvalidNumber; + + void setExpirationTimer(final String number, final int expiration) throws Error.Failure; + + void setContactBlocked(String number, boolean blocked) throws Error.InvalidNumber; + + void setGroupBlocked(byte[] groupId, boolean blocked) throws Error.GroupNotFound, Error.InvalidGroupId; + + List getGroupIds(); + + String getGroupName(byte[] groupId) throws Error.InvalidGroupId; + + List getGroupMembers(byte[] groupId) throws Error.InvalidGroupId; + + byte[] updateGroup( + byte[] groupId, String name, List members, String avatar + ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.GroupNotFound, Error.InvalidGroupId; + + boolean isRegistered() throws Error.Failure, Error.InvalidNumber; + + boolean isRegistered(String number) throws Error.Failure, Error.InvalidNumber; + + List isRegistered(List numbers) throws Error.Failure, Error.InvalidNumber; + + void addDevice(String uri) throws Error.InvalidUri; + + void removeDevice(int deviceId) throws Error.Failure; + + List listDevices() throws Error.Failure; + + void updateDeviceName(String deviceName) throws Error.Failure; + + void updateProfile( + String givenName, + String familyName, + String about, + String aboutEmoji, + String avatarPath, + boolean removeAvatar + ) throws Error.Failure; + + void updateProfile( + String name, String about, String aboutEmoji, String avatarPath, boolean removeAvatar + ) throws Error.Failure; + + void removePin(); + + void setPin(String registrationLockPin); + + String version(); + + List listNumbers(); + + List getContactNumber(final String name) throws Error.Failure; + + void quitGroup(final byte[] groupId) throws Error.GroupNotFound, Error.Failure, Error.InvalidGroupId; + + boolean isContactBlocked(final String number) throws Error.InvalidNumber; + + boolean isGroupBlocked(final byte[] groupId) throws Error.InvalidGroupId; + + boolean isMember(final byte[] groupId) throws Error.InvalidGroupId; + + byte[] joinGroup(final String groupLink) throws Error.Failure; + + String uploadStickerPack(String stickerPackPath) throws Error.Failure; class MessageReceived extends DBusSignal { - private long timestamp; - private String sender; - private byte[] groupId; - private String message; - private List attachments; - public MessageReceived(String objectpath, long timestamp, String sender, byte[] groupId, String message, List attachments) throws DBusException { + private final long timestamp; + private final String sender; + private final byte[] groupId; + private final String message; + private final List attachments; + + public MessageReceived( + String objectpath, + long timestamp, + String sender, + byte[] groupId, + String message, + List attachments + ) throws DBusException { super(objectpath, timestamp, sender, groupId, message, attachments); this.timestamp = timestamp; this.sender = sender; @@ -55,4 +180,128 @@ public interface Signal extends DBusInterface { return attachments; } } + + class ReceiptReceived extends DBusSignal { + + private final long timestamp; + private final String sender; + + public ReceiptReceived(String objectpath, long timestamp, String sender) throws DBusException { + super(objectpath, timestamp, sender); + this.timestamp = timestamp; + this.sender = sender; + } + + public long getTimestamp() { + return timestamp; + } + + public String getSender() { + return sender; + } + } + + class SyncMessageReceived extends DBusSignal { + + private final long timestamp; + private final String source; + private final String destination; + private final byte[] groupId; + private final String message; + private final List attachments; + + public SyncMessageReceived( + String objectpath, + long timestamp, + String source, + String destination, + byte[] groupId, + String message, + List attachments + ) throws DBusException { + super(objectpath, timestamp, source, destination, groupId, message, attachments); + this.timestamp = timestamp; + this.source = source; + this.destination = destination; + this.groupId = groupId; + this.message = message; + this.attachments = attachments; + } + + 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 List getAttachments() { + return attachments; + } + } + + interface Error { + + class AttachmentInvalid extends DBusExecutionException { + + public AttachmentInvalid(final String message) { + super(message); + } + } + + class InvalidUri extends DBusExecutionException { + + public InvalidUri(final String message) { + super(message); + } + } + + class Failure extends DBusExecutionException { + + public Failure(final String message) { + super(message); + } + } + + class GroupNotFound extends DBusExecutionException { + + public GroupNotFound(final String message) { + super(message); + } + } + + class InvalidGroupId extends DBusExecutionException { + + public InvalidGroupId(final String message) { + super(message); + } + } + + class InvalidNumber extends DBusExecutionException { + + public InvalidNumber(final String message) { + super(message); + } + } + + class UntrustedIdentity extends DBusExecutionException { + + public UntrustedIdentity(final String message) { + super(message); + } + } + } }