X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/37c65ca6b4d86c918740de323be797bd8246ffc9..ca33249170118be0d2fe3e9deed4ad23b34ac875:/lib/src/main/java/org/asamk/signal/manager/Manager.java diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index ac88e2bc..ccb661e1 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -1,10 +1,14 @@ package org.asamk.signal.manager; +import com.google.i18n.phonenumbers.PhoneNumberUtil; + import org.asamk.signal.manager.api.AlreadyReceivingException; import org.asamk.signal.manager.api.AttachmentInvalidException; +import org.asamk.signal.manager.api.CaptchaRejectedException; import org.asamk.signal.manager.api.CaptchaRequiredException; import org.asamk.signal.manager.api.Configuration; import org.asamk.signal.manager.api.Device; +import org.asamk.signal.manager.api.DeviceLimitExceededException; import org.asamk.signal.manager.api.DeviceLinkUrl; import org.asamk.signal.manager.api.Group; import org.asamk.signal.manager.api.GroupId; @@ -26,6 +30,7 @@ import org.asamk.signal.manager.api.NotAGroupMemberException; import org.asamk.signal.manager.api.NotPrimaryDeviceException; import org.asamk.signal.manager.api.Pair; import org.asamk.signal.manager.api.PendingAdminApprovalException; +import org.asamk.signal.manager.api.PinLockMissingException; import org.asamk.signal.manager.api.PinLockedException; import org.asamk.signal.manager.api.RateLimitException; import org.asamk.signal.manager.api.ReceiveConfig; @@ -34,6 +39,7 @@ import org.asamk.signal.manager.api.RecipientIdentifier; import org.asamk.signal.manager.api.SendGroupMessageResults; import org.asamk.signal.manager.api.SendMessageResults; import org.asamk.signal.manager.api.StickerPack; +import org.asamk.signal.manager.api.StickerPackId; import org.asamk.signal.manager.api.StickerPackInvalidException; import org.asamk.signal.manager.api.StickerPackUrl; import org.asamk.signal.manager.api.TypingAction; @@ -42,9 +48,10 @@ import org.asamk.signal.manager.api.UpdateGroup; import org.asamk.signal.manager.api.UpdateProfile; import org.asamk.signal.manager.api.UserStatus; import org.asamk.signal.manager.api.UsernameLinkUrl; +import org.asamk.signal.manager.api.UsernameStatus; +import org.asamk.signal.manager.api.VerificationMethodNotAvailableException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.whispersystems.signalservice.api.util.PhoneNumberFormatter; import java.io.Closeable; import java.io.File; @@ -60,7 +67,7 @@ import java.util.Set; public interface Manager extends Closeable { static boolean isValidNumber(final String e164Number, final String countryCode) { - return PhoneNumberFormatter.isValidNumber(e164Number, countryCode); + return PhoneNumberUtil.getInstance().isPossibleNumber(e164Number, countryCode); } static boolean isSignalClientAvailable() { @@ -89,7 +96,14 @@ public interface Manager extends Closeable { */ Map getUserStatus(Set numbers) throws IOException, RateLimitException; - void updateAccountAttributes(String deviceName) throws IOException; + Map getUsernameStatus(Set usernames) throws IOException; + + void updateAccountAttributes( + String deviceName, + Boolean unrestrictedUnidentifiedSender, + final Boolean discoverableByNumber, + final Boolean numberSharing + ) throws IOException; Configuration getConfiguration(); @@ -118,41 +132,52 @@ public interface Manager extends Closeable { void deleteUsername() throws IOException; void startChangeNumber( - String newNumber, boolean voiceVerification, String captcha - ) throws RateLimitException, IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException, NotPrimaryDeviceException; + String newNumber, + boolean voiceVerification, + String captcha + ) throws RateLimitException, IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException, NotPrimaryDeviceException, VerificationMethodNotAvailableException; void finishChangeNumber( - String newNumber, String verificationCode, String pin - ) throws IncorrectPinException, PinLockedException, IOException, NotPrimaryDeviceException; + String newNumber, + String verificationCode, + String pin + ) throws IncorrectPinException, PinLockedException, IOException, NotPrimaryDeviceException, PinLockMissingException; void unregister() throws IOException; void deleteAccount() throws IOException; - void submitRateLimitRecaptchaChallenge(String challenge, String captcha) throws IOException; + void submitRateLimitRecaptchaChallenge( + String challenge, + String captcha + ) throws IOException, CaptchaRejectedException; List getLinkedDevices() throws IOException; - void removeLinkedDevices(int deviceId) throws IOException; + void removeLinkedDevices(int deviceId) throws IOException, NotPrimaryDeviceException; - void addDeviceLink(DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException, NotPrimaryDeviceException; + void addDeviceLink(DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException, NotPrimaryDeviceException, DeviceLimitExceededException; void setRegistrationLockPin(Optional pin) throws IOException, NotPrimaryDeviceException; List getGroups(); SendGroupMessageResults quitGroup( - GroupId groupId, Set groupAdmins + GroupId groupId, + Set groupAdmins ) throws GroupNotFoundException, IOException, NotAGroupMemberException, LastGroupAdminException, UnregisteredRecipientException; void deleteGroup(GroupId groupId) throws IOException; Pair createGroup( - String name, Set members, String avatarFile + String name, + Set members, + String avatarFile ) throws IOException, AttachmentInvalidException, UnregisteredRecipientException; SendGroupMessageResults updateGroup( - final GroupId groupId, final UpdateGroup updateGroup + final GroupId groupId, + final UpdateGroup updateGroup ) throws IOException, GroupNotFoundException, AttachmentInvalidException, NotAGroupMemberException, GroupSendingNotAllowedException, UnregisteredRecipientException; Pair joinGroup( @@ -160,27 +185,29 @@ public interface Manager extends Closeable { ) throws IOException, InactiveGroupLinkException, PendingAdminApprovalException; SendMessageResults sendTypingMessage( - TypingAction action, Set recipients + TypingAction action, + Set recipients ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException; - SendMessageResults sendReadReceipt( - RecipientIdentifier.Single sender, List messageIds - ); + SendMessageResults sendReadReceipt(RecipientIdentifier.Single sender, List messageIds); - SendMessageResults sendViewedReceipt( - RecipientIdentifier.Single sender, List messageIds - ); + SendMessageResults sendViewedReceipt(RecipientIdentifier.Single sender, List messageIds); SendMessageResults sendMessage( - Message message, Set recipients + Message message, + Set recipients, + boolean notifySelf ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException, InvalidStickerException; SendMessageResults sendEditMessage( - Message message, Set recipients, long editTargetTimestamp + Message message, + Set recipients, + long editTargetTimestamp ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException, InvalidStickerException; SendMessageResults sendRemoteDeleteMessage( - long targetSentTimestamp, Set recipients + long targetSentTimestamp, + Set recipients ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException; SendMessageResults sendMessageReaction( @@ -193,11 +220,18 @@ public interface Manager extends Closeable { ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException; SendMessageResults sendPaymentNotificationMessage( - byte[] receipt, String note, RecipientIdentifier.Single recipient + byte[] receipt, + String note, + RecipientIdentifier.Single recipient ) throws IOException; SendMessageResults sendEndSessionMessage(Set recipients) throws IOException; + SendMessageResults sendMessageRequestResponse( + MessageEnvelope.Sync.MessageRequestResponse.Type type, + Set recipientIdentifiers + ); + void hideRecipient(RecipientIdentifier.Single recipient); void deleteRecipient(RecipientIdentifier.Single recipient); @@ -205,22 +239,30 @@ public interface Manager extends Closeable { void deleteContact(RecipientIdentifier.Single recipient); void setContactName( - RecipientIdentifier.Single recipient, String givenName, final String familyName + final RecipientIdentifier.Single recipient, + final String givenName, + final String familyName, + final String nickGivenName, + final String nickFamilyName, + final String note ) throws NotPrimaryDeviceException, UnregisteredRecipientException; void setContactsBlocked( - Collection recipient, boolean blocked + Collection recipient, + boolean blocked ) throws NotPrimaryDeviceException, IOException, UnregisteredRecipientException; void setGroupsBlocked( - Collection groupId, boolean blocked + Collection groupId, + boolean blocked ) throws GroupNotFoundException, IOException, NotPrimaryDeviceException; /** * Change the expiration timer for a contact */ void setExpirationTimer( - RecipientIdentifier.Single recipient, int messageExpirationTimer + RecipientIdentifier.Single recipient, + int messageExpirationTimer ) throws IOException, UnregisteredRecipientException; /** @@ -259,7 +301,9 @@ public interface Manager extends Closeable { * Receive new messages from server, returns if no new message arrive in a timespan of timeout. */ void receiveMessages( - Optional timeout, Optional maxMessages, ReceiveMessageHandler handler + Optional timeout, + Optional maxMessages, + ReceiveMessageHandler handler ) throws IOException, AlreadyReceivingException; void stopReceiveMessages(); @@ -291,7 +335,8 @@ public interface Manager extends Closeable { * @param recipient account of the identity */ boolean trustIdentityVerified( - RecipientIdentifier.Single recipient, IdentityVerificationCode verificationCode + RecipientIdentifier.Single recipient, + IdentityVerificationCode verificationCode ) throws UnregisteredRecipientException; /** @@ -307,6 +352,14 @@ public interface Manager extends Closeable { InputStream retrieveAttachment(final String id) throws IOException; + InputStream retrieveContactAvatar(final RecipientIdentifier.Single recipient) throws IOException, UnregisteredRecipientException; + + InputStream retrieveProfileAvatar(final RecipientIdentifier.Single recipient) throws IOException, UnregisteredRecipientException; + + InputStream retrieveGroupAvatar(final GroupId groupId) throws IOException; + + InputStream retrieveSticker(final StickerPackId stickerPackId, final int stickerId) throws IOException; + @Override void close();